openstudio-analysis 1.0.0.pat2 → 1.0.0.pre.rc2
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|