openstudio-analysis 1.0.0.pat2 → 1.0.0.pre.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/Gemfile +1 -1
- data/README.md +1 -1
- data/lib/openstudio/analysis/translator/datapoints.rb +57 -26
- data/lib/openstudio/analysis/translator/excel.rb +176 -160
- data/lib/openstudio/analysis/translator/workflow.rb +2 -1
- data/lib/openstudio/analysis/version.rb +1 -1
- data/lib/openstudio/analysis/workflow_step.rb +4 -1
- data/lib/openstudio/helpers/string.rb +10 -5
- data/openstudio-analysis.gemspec +2 -2
- data/spec/files/0_1_09_no_variables.xlsx +0 -0
- data/spec/files/0_1_09_outputvars.xlsx +0 -0
- data/spec/files/0_1_09_setup_version_2.xlsx +0 -0
- data/spec/files/0_1_09_small_list.xlsx +0 -0
- data/spec/files/0_1_09_small_list_incomplete.xlsx +0 -0
- data/spec/files/0_1_09_small_list_repeat_vars.xlsx +0 -0
- data/spec/files/0_1_09_small_list_validation_errors.xlsx +0 -0
- data/spec/files/0_1_10_proxy.xlsx +0 -0
- data/spec/files/0_1_10_proxy_user.xlsx +0 -0
- data/spec/files/0_1_10_template_input.xlsx +0 -0
- data/spec/files/0_1_11_discrete_variables.xlsx +0 -0
- data/spec/files/0_1_12_discrete_dynamic_columns.xlsx +0 -0
- data/spec/files/0_2_0_template.xlsx +0 -0
- data/spec/files/0_2_0_template_simpletest.xlsx +0 -0
- data/spec/files/0_3_0_dynamic_uuids.xlsx +0 -0
- data/spec/files/0_3_0_measure_existence.xlsx +0 -0
- data/spec/files/0_3_0_outputs.xlsx +0 -0
- data/spec/files/0_3_3_short_names.xlsx +0 -0
- data/spec/files/0_3_5_multiple_measure_paths.xlsx +0 -0
- data/spec/files/0_3_7_unique_measure_names.xlsx +0 -0
- data/spec/files/0_3_7_worker_init_final.xlsx +0 -0
- data/spec/files/0_4_0_lhs_discrete_continuous.xlsx +0 -0
- data/spec/files/0_4_0_multiple_seeds.xlsx +0 -0
- data/spec/files/0_4_0_pivot_test.xlsx +0 -0
- data/spec/files/workflow/datapoint_0.osd +60 -58
- data/spec/files/workflow/datapoint_1.osd +60 -58
- data/spec/files/workflow/datapoint_2.osd +60 -58
- data/spec/files/workflow/datapoint_wrong_osa_id.osd +62 -62
- data/spec/openstudio/excel_spec.rb +2 -8
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c950b711edf77a4d8d93f709d8010e3793b0773
|
4
|
+
data.tar.gz: 8cb014f35322edfff1102e710e144bea94d50e21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 696f140221118442a52a8cbc8a728d566da1fe1e080f7ef4338fae661f79081eb6723fb76a5314eb583b8bc554402e4e5f336c7146301acdf4c88ca80af298ef
|
7
|
+
data.tar.gz: 7694b6fa457d97619594e0986836e4f9aab76734e38a9275ad471c4c722859f37f090705a6160255acd4ad06fc4d9d4817d4c981066a5ff2e4d665bbecda1e14
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
OpenStudio Analysis Gem Change Log
|
2
2
|
==================================
|
3
3
|
|
4
|
-
Version
|
4
|
+
Version 1.0.0.pre.rc2
|
5
5
|
--------------------------------
|
6
|
+
* Note that pre.rc1 was yanked from Rubygems.
|
6
7
|
* Remove allow_multiple_jobs and server_as_worker options. These are by defaulted to true now.
|
7
8
|
* Remove uncertain strings from end of uncertainty distributions
|
8
9
|
* Remove measures eval path for CSV import
|
@@ -11,6 +12,12 @@ Version Unreleased (Version 0.5)
|
|
11
12
|
* Add json extension to formulation name upon save if none exists
|
12
13
|
* Add zip extension to formulation zip upon save if none exists
|
13
14
|
* In upload_datapoint, allows set the analysis_id in the file to the one passed.
|
15
|
+
* Remove reading JSON from custom_csv method.
|
16
|
+
|
17
|
+
Version 1.0.0-pat2
|
18
|
+
------------------------------
|
19
|
+
* Fixed bug in workflow translator which caused errors in server models
|
20
|
+
* Updated gem versions to converge across the OpenStudio Analysis Framework platforms
|
14
21
|
|
15
22
|
Version 0.4.4
|
16
23
|
------------------
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -47,7 +47,7 @@ There are two ways to create an OpenStudio Analysis description:
|
|
47
47
|
analysis.save_static_data_point("#{run_dir}/data_point.zip")
|
48
48
|
```
|
49
49
|
|
50
|
-
* Running
|
50
|
+
* Running Datapoints with Workflow Gem
|
51
51
|
|
52
52
|
```
|
53
53
|
require 'openstudio-workflow'
|
@@ -23,7 +23,7 @@ module OpenStudio
|
|
23
23
|
attr_accessor :name
|
24
24
|
attr_reader :analysis_name
|
25
25
|
|
26
|
-
|
26
|
+
require 'nokogiri'
|
27
27
|
|
28
28
|
# Pass in the filename to read
|
29
29
|
def initialize(csv_filename)
|
@@ -334,35 +334,46 @@ module OpenStudio
|
|
334
334
|
data = []
|
335
335
|
measures.each_with_index do |measure, measure_index|
|
336
336
|
data[measure_index] = {}
|
337
|
-
|
337
|
+
measure_xml = ''
|
338
338
|
for i in 0..(@measure_paths.length - 1)
|
339
|
-
if File.exist? File.join(@measure_paths[i], measure.to_s, 'measure.
|
340
|
-
|
339
|
+
if File.exist? File.join(@measure_paths[i], measure.to_s, 'measure.xml')
|
340
|
+
measure_xml = Nokogiri::XML File.read(File.join(@measure_paths[i], measure.to_s, 'measure.xml'))
|
341
341
|
break
|
342
342
|
end
|
343
343
|
end
|
344
|
-
fail "Could not find measure
|
344
|
+
fail "Could not find measure #{measure} xml in measure_paths: '#{@measure_paths.join("\n")}'" if measure_xml == ''
|
345
345
|
measure_data = {}
|
346
|
-
measure_data[:classname] =
|
347
|
-
measure_data[:name] =
|
348
|
-
measure_data[:display_name] =
|
349
|
-
measure_data[:measure_type] =
|
350
|
-
measure_data[:uid] =
|
351
|
-
measure_data[:version_id] =
|
346
|
+
measure_data[:classname] = measure_xml.xpath('/measure/class_name').text
|
347
|
+
measure_data[:name] = measure_xml.xpath('/measure/name').text
|
348
|
+
measure_data[:display_name] = measure_xml.xpath('/measure/display_name').text
|
349
|
+
measure_data[:measure_type] = parse_measure_type(File.join(@measure_paths[i], measure.to_s, 'measure.rb'))
|
350
|
+
measure_data[:uid] = measure_xml.xpath('/measure/uid').text
|
351
|
+
measure_data[:version_id] = measure_xml.xpath('/measure/version_id').text
|
352
352
|
data[measure_index][:measure_data] = measure_data
|
353
353
|
data[measure_index][:vars] = []
|
354
354
|
vars = measure_map[measure]
|
355
|
+
|
356
|
+
# construct the list of variables
|
355
357
|
vars.each do |var|
|
356
358
|
var = var[0]
|
357
359
|
var_hash = {}
|
358
|
-
|
359
|
-
|
360
|
+
found_arg = nil
|
361
|
+
measure_xml.xpath('/measure/arguments/argument').each do |arg|
|
362
|
+
if arg.xpath('name').text == var.to_s
|
363
|
+
found_arg = arg
|
364
|
+
break
|
365
|
+
end
|
366
|
+
end
|
367
|
+
|
368
|
+
# var_json = measure_json['arguments'].select { |hash| hash['local_variable'] == var.to_s }[0]
|
369
|
+
fail "measure.xml for measure #{measure} does not have an argument with argument == #{var}" unless found_arg
|
370
|
+
var_hash[:name] = var.to_s
|
360
371
|
var_hash[:variable_type] = 'variable'
|
361
372
|
var_hash[:display_name] = measure_rows[2][measure_map[measure][var]]
|
362
373
|
var_hash[:display_name_short] = var_hash[:display_name]
|
363
|
-
var_hash[:name] = var_json['local_variable']
|
364
|
-
var_hash[:type] =
|
365
|
-
var_hash[:units] =
|
374
|
+
# var_hash[:name] = var_json['local_variable']
|
375
|
+
var_hash[:type] = found_arg.xpath('type').text.downcase
|
376
|
+
var_hash[:units] = found_arg.xpath('units')
|
366
377
|
var_hash[:distribution] = {}
|
367
378
|
case var_hash[:type].downcase
|
368
379
|
when 'bool', 'boolean' # is 'boolean' necessary? it's not in the enum catch
|
@@ -385,29 +396,49 @@ module OpenStudio
|
|
385
396
|
var_hash[:distribution][:type] = 'discrete'
|
386
397
|
var_hash[:distribution][:units] = var_hash[:units]
|
387
398
|
if var_hash[:type] == 'choice'
|
388
|
-
var_hash[:distribution][:enumerations] =
|
399
|
+
var_hash[:distribution][:enumerations] = found_arg.xpath('choices/choice').map { |s| s.xpath('value').text }
|
389
400
|
elsif var_hash[:type] == 'bool'
|
390
401
|
var_hash[:distribution][:enumerations] = []
|
391
|
-
var_hash[:distribution][:enumerations] <<
|
392
|
-
var_hash[:distribution][:enumerations] <<
|
402
|
+
var_hash[:distribution][:enumerations] << true
|
403
|
+
var_hash[:distribution][:enumerations] << false
|
393
404
|
end
|
394
405
|
data[measure_index][:vars] << var_hash
|
395
406
|
end
|
396
407
|
data[measure_index][:args] = []
|
397
|
-
|
408
|
+
|
409
|
+
|
410
|
+
measure_xml.xpath('/measure/arguments/argument').each do |arg_xml|
|
398
411
|
arg = {}
|
399
|
-
arg[:value_type] =
|
400
|
-
arg[:name] =
|
401
|
-
arg[:display_name] =
|
402
|
-
arg[:display_name_short] =
|
403
|
-
arg[:default_value] =
|
404
|
-
arg[:value] =
|
412
|
+
arg[:value_type] = arg_xml.xpath('type').text.downcase
|
413
|
+
arg[:name] = arg_xml.xpath('name').text.downcase
|
414
|
+
arg[:display_name] = arg_xml.xpath('display_name').text.downcase
|
415
|
+
arg[:display_name_short] = arg[:display_name]
|
416
|
+
arg[:default_value] = arg_xml.xpath('default_value').text.downcase
|
417
|
+
arg[:value] = arg[:default_value]
|
405
418
|
data[measure_index][:args] << arg
|
406
419
|
end
|
407
420
|
end
|
408
421
|
|
409
422
|
data
|
410
423
|
end
|
424
|
+
|
425
|
+
private
|
426
|
+
|
427
|
+
def parse_measure_type(measure_filename)
|
428
|
+
measure_string = File.read(measure_filename)
|
429
|
+
|
430
|
+
if measure_string =~ /OpenStudio::Ruleset::WorkspaceUserScript/
|
431
|
+
return 'EnergyPlusMeasure'
|
432
|
+
elsif measure_string =~ /OpenStudio::Ruleset::ModelUserScript/
|
433
|
+
return 'RubyMeasure'
|
434
|
+
elsif measure_string =~ /OpenStudio::Ruleset::ReportingUserScript/
|
435
|
+
return 'ReportingMeasure'
|
436
|
+
elsif measure_string =~ /OpenStudio::Ruleset::UtilityUserScript/
|
437
|
+
return 'UtilityUserScript'
|
438
|
+
else
|
439
|
+
fail "measure type is unknown with an inherited class in #{measure_filename}"
|
440
|
+
end
|
441
|
+
end
|
411
442
|
end
|
412
443
|
end
|
413
444
|
end
|
@@ -155,6 +155,16 @@ module OpenStudio
|
|
155
155
|
if variable['distribution']['discrete_values'].nil? || variable['distribution']['discrete_values'] == ''
|
156
156
|
fail "Variable #{measure['name']}:#{variable['name']} needs discrete values"
|
157
157
|
end
|
158
|
+
elsif variable['distribution']['type'] == 'integer_sequence'
|
159
|
+
if variable['distribution']['mean'].nil? || variable['distribution']['mean'] == ''
|
160
|
+
fail "Variable #{measure['name']}:#{variable['name']} must have a mean/mode"
|
161
|
+
end
|
162
|
+
if variable['distribution']['min'].nil? || variable['distribution']['min'] == ''
|
163
|
+
fail "Variable #{measure['name']}:#{variable['name']} must have a minimum"
|
164
|
+
end
|
165
|
+
if variable['distribution']['max'].nil? || variable['distribution']['max'] == ''
|
166
|
+
fail "Variable #{measure['name']}:#{variable['name']} must have a maximum"
|
167
|
+
end
|
158
168
|
else
|
159
169
|
if variable['distribution']['mean'].nil? || variable['distribution']['mean'] == ''
|
160
170
|
fail "Variable #{measure['name']}:#{variable['name']} must have a mean"
|
@@ -542,140 +552,140 @@ module OpenStudio
|
|
542
552
|
rows = nil
|
543
553
|
begin
|
544
554
|
if @version >= '0.3.3'.to_version
|
545
|
-
rows = @xls.sheet('Variables').parse(enabled:
|
546
|
-
measure_name_or_var_type:
|
547
|
-
measure_file_name_or_var_display_name:
|
548
|
-
measure_file_name_directory:
|
549
|
-
measure_type_or_parameter_name_in_measure:
|
550
|
-
display_name_short:
|
551
|
-
# sampling_method:
|
552
|
-
variable_type:
|
553
|
-
units:
|
554
|
-
default_value:
|
555
|
-
enums:
|
556
|
-
min:
|
557
|
-
max:
|
558
|
-
mode:
|
559
|
-
stddev:
|
560
|
-
delta_x:
|
561
|
-
discrete_values:
|
562
|
-
discrete_weights:
|
563
|
-
distribution:
|
564
|
-
source:
|
565
|
-
notes:
|
566
|
-
relation_to_eui:
|
555
|
+
rows = @xls.sheet('Variables').parse(enabled: /# variable/i,
|
556
|
+
measure_name_or_var_type: /type/i,
|
557
|
+
measure_file_name_or_var_display_name: /parameter\sdisplay\sname.*/i,
|
558
|
+
measure_file_name_directory: /measure\sdirectory/i,
|
559
|
+
measure_type_or_parameter_name_in_measure: /parameter\sname\sin\smeasure/i,
|
560
|
+
display_name_short: /parameter\sshort\sdisplay\sname/i,
|
561
|
+
# sampling_method: /sampling\smethod/i,
|
562
|
+
variable_type: /variable\stype/i,
|
563
|
+
units: /units/i,
|
564
|
+
default_value: /static.default\svalue/i,
|
565
|
+
enums: /enumerations/i,
|
566
|
+
min: /min/i,
|
567
|
+
max: /max/i,
|
568
|
+
mode: /mean|mode/i,
|
569
|
+
stddev: /std\sdev/i,
|
570
|
+
delta_x: /delta.x/i,
|
571
|
+
discrete_values: /discrete\svalues/i,
|
572
|
+
discrete_weights: /discrete\sweights/i,
|
573
|
+
distribution: /distribution/i,
|
574
|
+
source: /data\ssource/i,
|
575
|
+
notes: /notes/i,
|
576
|
+
relation_to_eui: /typical\svar\sto\seui\srelationship/i,
|
567
577
|
clean: true)
|
568
|
-
elsif @version >= '0.3.0'.to_version
|
569
|
-
rows = @xls.sheet('Variables').parse(enabled:
|
570
|
-
measure_name_or_var_type:
|
571
|
-
measure_file_name_or_var_display_name:
|
572
|
-
measure_file_name_directory:
|
573
|
-
measure_type_or_parameter_name_in_measure:
|
574
|
-
# sampling_method:
|
575
|
-
variable_type:
|
576
|
-
units:
|
577
|
-
default_value:
|
578
|
-
enums:
|
579
|
-
min:
|
580
|
-
max:
|
581
|
-
mode:
|
582
|
-
stddev:
|
583
|
-
delta_x:
|
584
|
-
discrete_values:
|
585
|
-
discrete_weights:
|
586
|
-
distribution:
|
587
|
-
source:
|
588
|
-
notes:
|
589
|
-
relation_to_eui:
|
578
|
+
elsif @version >= '0.3.0'.to_version
|
579
|
+
rows = @xls.sheet('Variables').parse(enabled: /# variable/i,
|
580
|
+
measure_name_or_var_type: /type/i,
|
581
|
+
measure_file_name_or_var_display_name: /parameter\sdisplay\sname.*/i,
|
582
|
+
measure_file_name_directory: /measure\sdirectory/i,
|
583
|
+
measure_type_or_parameter_name_in_measure: /parameter\sname\sin\smeasure/i,
|
584
|
+
# sampling_method: /sampling\smethod/i,
|
585
|
+
variable_type: /variable\stype/i,
|
586
|
+
units: /units/i,
|
587
|
+
default_value: /static.default\svalue/i,
|
588
|
+
enums: /enumerations/i,
|
589
|
+
min: /min/i,
|
590
|
+
max: /max/i,
|
591
|
+
mode: /mean|mode/i,
|
592
|
+
stddev: /std\sdev/i,
|
593
|
+
delta_x: /delta.x/i,
|
594
|
+
discrete_values: /discrete\svalues/i,
|
595
|
+
discrete_weights: /discrete\sweights/i,
|
596
|
+
distribution: /distribution/i,
|
597
|
+
source: /data\ssource/i,
|
598
|
+
notes: /notes/i,
|
599
|
+
relation_to_eui: /typical\svar\sto\seui\srelationship/i,
|
590
600
|
clean: true)
|
591
601
|
elsif @version >= '0.2.0'.to_version
|
592
|
-
rows = @xls.sheet('Variables').parse(enabled:
|
593
|
-
measure_name_or_var_type:
|
594
|
-
measure_file_name_or_var_display_name:
|
595
|
-
measure_file_name_directory:
|
596
|
-
measure_type_or_parameter_name_in_measure:
|
597
|
-
sampling_method:
|
598
|
-
variable_type:
|
599
|
-
units:
|
600
|
-
default_value:
|
601
|
-
enums:
|
602
|
-
min:
|
603
|
-
max:
|
604
|
-
mode:
|
605
|
-
stddev:
|
606
|
-
delta_x:
|
607
|
-
discrete_values:
|
608
|
-
discrete_weights:
|
609
|
-
distribution:
|
610
|
-
source:
|
611
|
-
notes:
|
612
|
-
relation_to_eui:
|
602
|
+
rows = @xls.sheet('Variables').parse(enabled: /# variable/i,
|
603
|
+
measure_name_or_var_type: /type/i,
|
604
|
+
measure_file_name_or_var_display_name: /parameter\sdisplay\sname.*/i,
|
605
|
+
measure_file_name_directory: /measure\sdirectory/i,
|
606
|
+
measure_type_or_parameter_name_in_measure: /parameter\sname\sin\smeasure/i,
|
607
|
+
sampling_method: /sampling\smethod/i,
|
608
|
+
variable_type: /variable\stype/i,
|
609
|
+
units: /units/i,
|
610
|
+
default_value: /static.default\svalue/i,
|
611
|
+
enums: /enumerations/i,
|
612
|
+
min: /min/i,
|
613
|
+
max: /max/i,
|
614
|
+
mode: /mean|mode/i,
|
615
|
+
stddev: /std\sdev/i,
|
616
|
+
delta_x: /delta.x/i,
|
617
|
+
discrete_values: /discrete\svalues/i,
|
618
|
+
discrete_weights: /discrete\sweights/i,
|
619
|
+
distribution: /distribution/i,
|
620
|
+
source: /data\ssource/i,
|
621
|
+
notes: /notes/i,
|
622
|
+
relation_to_eui: /typical\svar\sto\seui\srelationship/i,
|
613
623
|
clean: true)
|
614
624
|
elsif @version >= '0.1.12'.to_version
|
615
|
-
rows = @xls.sheet('Variables').parse(enabled:
|
616
|
-
measure_name_or_var_type:
|
617
|
-
measure_file_name_or_var_display_name:
|
618
|
-
measure_type_or_parameter_name_in_measure:
|
619
|
-
sampling_method:
|
620
|
-
variable_type:
|
621
|
-
units:
|
622
|
-
default_value:
|
623
|
-
enums:
|
624
|
-
min:
|
625
|
-
max:
|
626
|
-
mode:
|
627
|
-
stddev:
|
628
|
-
delta_x:
|
629
|
-
discrete_values:
|
630
|
-
discrete_weights:
|
631
|
-
distribution:
|
632
|
-
source:
|
633
|
-
notes:
|
634
|
-
relation_to_eui:
|
625
|
+
rows = @xls.sheet('Variables').parse(enabled: /# variable/i,
|
626
|
+
measure_name_or_var_type: /type/i,
|
627
|
+
measure_file_name_or_var_display_name: /parameter\sdisplay\sname.*/i,
|
628
|
+
measure_type_or_parameter_name_in_measure: /parameter\sname\sin\smeasure/i,
|
629
|
+
sampling_method: /sampling\smethod/i,
|
630
|
+
variable_type: /variable\stype/i,
|
631
|
+
units: /units/i,
|
632
|
+
default_value: /static.default\svalue/i,
|
633
|
+
enums: /enumerations/i,
|
634
|
+
min: /min/i,
|
635
|
+
max: /max/i,
|
636
|
+
mode: /mean|mode/i,
|
637
|
+
stddev: /std\sdev/i,
|
638
|
+
delta_x: /delta.x/i,
|
639
|
+
discrete_values: /discrete\svalues/i,
|
640
|
+
discrete_weights: /discrete\sweights/i,
|
641
|
+
distribution: /distribution/i,
|
642
|
+
source: /data\ssource/i,
|
643
|
+
notes: /notes/i,
|
644
|
+
relation_to_eui: /typical\svar\sto\seui\srelationship/i,
|
635
645
|
clean: true)
|
636
646
|
elsif @version >= '0.1.11'.to_version
|
637
|
-
rows = @xls.sheet('Variables').parse(enabled:
|
638
|
-
measure_name_or_var_type:
|
639
|
-
measure_file_name_or_var_display_name:
|
640
|
-
measure_type_or_parameter_name_in_measure:
|
641
|
-
sampling_method:
|
642
|
-
variable_type:
|
643
|
-
units:
|
644
|
-
default_value:
|
645
|
-
enums:
|
646
|
-
min:
|
647
|
-
max:
|
648
|
-
mode:
|
649
|
-
stddev:
|
650
|
-
|
651
|
-
discrete_values:
|
652
|
-
discrete_weights:
|
653
|
-
distribution:
|
654
|
-
source:
|
655
|
-
notes:
|
656
|
-
relation_to_eui:
|
647
|
+
rows = @xls.sheet('Variables').parse(enabled: /# variable/i,
|
648
|
+
measure_name_or_var_type: /type/i,
|
649
|
+
measure_file_name_or_var_display_name: /parameter\sdisplay\sname.*/i,
|
650
|
+
measure_type_or_parameter_name_in_measure: /parameter\sname\sin\smeasure/i,
|
651
|
+
sampling_method: /sampling\smethod/i,
|
652
|
+
variable_type: /variable\stype/i,
|
653
|
+
units: /units/i,
|
654
|
+
default_value: /static.default\svalue/i,
|
655
|
+
enums: /enumerations/i,
|
656
|
+
min: /min/i,
|
657
|
+
max: /max/i,
|
658
|
+
mode: /mean|mode/i,
|
659
|
+
stddev: /std\sdev/i,
|
660
|
+
# delta_x: /delta.x/i,
|
661
|
+
discrete_values: /discrete\svalues/i,
|
662
|
+
discrete_weights: /discrete\sweights/i,
|
663
|
+
distribution: /distribution/i,
|
664
|
+
source: /data\ssource/i,
|
665
|
+
notes: /notes/i,
|
666
|
+
relation_to_eui: /typical\svar\sto\seui\srelationship/i,
|
657
667
|
clean: true)
|
658
668
|
else
|
659
|
-
rows = @xls.sheet('Variables').parse(enabled:
|
660
|
-
measure_name_or_var_type:
|
661
|
-
measure_file_name_or_var_display_name:
|
662
|
-
measure_type_or_parameter_name_in_measure:
|
663
|
-
sampling_method:
|
664
|
-
variable_type:
|
665
|
-
units:
|
666
|
-
default_value:
|
667
|
-
enums:
|
668
|
-
min:
|
669
|
-
max:
|
670
|
-
mode:
|
671
|
-
stddev:
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
distribution:
|
676
|
-
source:
|
677
|
-
notes:
|
678
|
-
relation_to_eui:
|
669
|
+
rows = @xls.sheet('Variables').parse(enabled: /# variable/i,
|
670
|
+
measure_name_or_var_type: /type/i,
|
671
|
+
measure_file_name_or_var_display_name: /parameter\sdisplay\sname.*/i,
|
672
|
+
measure_type_or_parameter_name_in_measure: /parameter\sname\sin\smeasure/i,
|
673
|
+
sampling_method: /sampling\smethod/i,
|
674
|
+
variable_type: /variable\stype/i,
|
675
|
+
units: /units/i,
|
676
|
+
default_value: /static.default\svalue/i,
|
677
|
+
enums: /enumerations/i,
|
678
|
+
min: /min/i,
|
679
|
+
max: /max/i,
|
680
|
+
mode: /mean|mode/i,
|
681
|
+
stddev: /std\sdev/i,
|
682
|
+
# delta_x: /delta.x/i,
|
683
|
+
# discrete_values: /discrete\svalues/i,
|
684
|
+
# discrete_weights: /discrete\sweights/i,
|
685
|
+
distribution: /distribution/i,
|
686
|
+
source: /data\ssource/i,
|
687
|
+
notes: /notes/i,
|
688
|
+
relation_to_eui: /typical\svar\sto\seui\srelationship/i,
|
679
689
|
clean: true)
|
680
690
|
end
|
681
691
|
rescue => e
|
@@ -773,7 +783,7 @@ module OpenStudio
|
|
773
783
|
measure_name = display_name.downcase.strip.tr('-', '_').tr(' ', '_').gsub('__', '_')
|
774
784
|
data['data'][measure_index]['display_name'] = display_name
|
775
785
|
data['data'][measure_index]['name'] = measure_name
|
776
|
-
data['data'][measure_index]['enabled'] = row[:enabled]
|
786
|
+
data['data'][measure_index]['enabled'] = row[:enabled]
|
777
787
|
data['data'][measure_index]['measure_file_name'] = row[:measure_file_name_or_var_display_name]
|
778
788
|
if row[:measure_file_name_directory]
|
779
789
|
data['data'][measure_index]['measure_file_name_directory'] = row[:measure_file_name_directory]
|
@@ -787,45 +797,51 @@ module OpenStudio
|
|
787
797
|
end
|
788
798
|
end
|
789
799
|
|
790
|
-
# puts data.inspect
|
791
800
|
data
|
792
801
|
end
|
793
802
|
|
794
803
|
def parse_outputs
|
795
804
|
rows = nil
|
796
805
|
if @version >= '0.3.3'.to_version
|
797
|
-
rows = @xls.sheet('Outputs').parse(display_name:
|
798
|
-
display_name_short:
|
799
|
-
metadata_id:
|
800
|
-
name:
|
801
|
-
units:
|
802
|
-
visualize:
|
803
|
-
export:
|
804
|
-
variable_type:
|
805
|
-
objective_function:
|
806
|
-
objective_function_target:
|
807
|
-
scaling_factor:
|
808
|
-
objective_function_group:
|
806
|
+
rows = @xls.sheet('Outputs').parse(display_name: /variable\sdisplay\sname/i,
|
807
|
+
display_name_short: /short\sdisplay\sname/i,
|
808
|
+
metadata_id: /taxonomy\sidentifier/i,
|
809
|
+
name: /^name$/i,
|
810
|
+
units: /units/i,
|
811
|
+
visualize: /visualize/i,
|
812
|
+
export: /export/i,
|
813
|
+
variable_type: /variable\stype/i,
|
814
|
+
objective_function: /objective\sfunction/i,
|
815
|
+
objective_function_target: /objective\sfunction\starget/i,
|
816
|
+
scaling_factor: /scale/i,
|
817
|
+
objective_function_group: /objective\sfunction\sgroup/i)
|
809
818
|
elsif @version >= '0.3.0'.to_version
|
810
|
-
rows = @xls.sheet('Outputs').parse(display_name:
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
819
|
+
rows = @xls.sheet('Outputs').parse(display_name: /variable\sdisplay\sname/i,
|
820
|
+
# display_name_short: /short\sdisplay\sname/i,
|
821
|
+
metadata_id: /taxonomy\sidentifier/i,
|
822
|
+
name: /^name$/i,
|
823
|
+
units: /units/i,
|
824
|
+
visualize: /visualize/i,
|
825
|
+
export: /export/i,
|
826
|
+
variable_type: /variable\stype/i,
|
827
|
+
objective_function: /objective\sfunction/i,
|
828
|
+
objective_function_target: /objective\sfunction\starget/i,
|
829
|
+
scaling_factor: /scale/i,
|
830
|
+
objective_function_group: /objective\sfunction\sgroup/i)
|
821
831
|
else
|
822
|
-
rows = @xls.sheet('Outputs').parse(display_name:
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
832
|
+
rows = @xls.sheet('Outputs').parse(display_name: /variable\sdisplay\sname/i,
|
833
|
+
# display_name_short: /short\sdisplay\sname/i,
|
834
|
+
# metadata_id: /taxonomy\sidentifier/i,
|
835
|
+
name: /^name$/i,
|
836
|
+
units: /units/i,
|
837
|
+
# visualize: /visualize/i,
|
838
|
+
# export: /export/i,
|
839
|
+
# variable_type: /variable\stype/i,
|
840
|
+
objective_function: /objective\sfunction/i,
|
841
|
+
objective_function_target: /objective\sfunction\starget/i,
|
842
|
+
scaling_factor: /scale/i,
|
843
|
+
objective_function_group: /objective/i)
|
844
|
+
|
829
845
|
end
|
830
846
|
|
831
847
|
unless rows
|
@@ -847,10 +863,10 @@ module OpenStudio
|
|
847
863
|
var['metadata_id'] = row[:metadata_id]
|
848
864
|
var['name'] = row[:name]
|
849
865
|
var['units'] = row[:units]
|
850
|
-
var['visualize'] = row[:visualize]
|
851
|
-
var['export'] = row[:export]
|
866
|
+
var['visualize'] = row[:visualize]
|
867
|
+
var['export'] = row[:export]
|
852
868
|
var['variable_type'] = row[:variable_type].downcase if row[:variable_type]
|
853
|
-
var['objective_function'] = row[:objective_function]
|
869
|
+
var['objective_function'] = row[:objective_function]
|
854
870
|
var['objective_function_target'] = row[:objective_function_target]
|
855
871
|
var['scaling_factor'] = row[:scaling_factor]
|
856
872
|
|
@@ -54,8 +54,9 @@ module OpenStudio
|
|
54
54
|
|
55
55
|
def process_datapoint(osd_filename)
|
56
56
|
# Try to read the osd json file
|
57
|
+
osd = nil
|
57
58
|
if File.exist?(osd_filename)
|
58
|
-
warn('data_point selector in ods will be changed to datapoint in version 1.0')
|
59
|
+
# warn('data_point selector in ods will be changed to datapoint in version 1.0') # NL this isn't true anymore.
|
59
60
|
osd = ::JSON.parse(File.read(osd_filename), {symbolize_names: true})[:data_point]
|
60
61
|
else
|
61
62
|
fail "File #{osd_filename} does not exist"
|