openstudio-analysis 1.0.0 → 1.0.5
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 +5 -5
- data/.gitignore +2 -1
- data/.rubocop.yml +1 -1
- data/.travis.yml +2 -2
- data/CHANGELOG.md +28 -1
- data/Gemfile +1 -5
- data/LICENSE.md +28 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/lib/openstudio-analysis.rb +2 -1
- data/lib/openstudio/analysis.rb +23 -27
- data/lib/openstudio/analysis/algorithm_attributes.rb +1 -1
- data/lib/openstudio/analysis/formulation.rb +1 -1
- data/lib/openstudio/analysis/server_api.rb +8 -14
- data/lib/openstudio/analysis/support_files.rb +1 -1
- data/lib/openstudio/analysis/translator/datapoints.rb +24 -38
- data/lib/openstudio/analysis/translator/excel.rb +2 -2
- data/lib/openstudio/analysis/translator/workflow.rb +9 -13
- data/lib/openstudio/analysis/version.rb +2 -2
- data/lib/openstudio/analysis/workflow.rb +9 -18
- data/lib/openstudio/analysis/workflow_step.rb +67 -78
- data/lib/openstudio/helpers/hash.rb +1 -1
- data/lib/openstudio/helpers/string.rb +1 -1
- data/{spec/openstudio/support_files_spec.rb → lib/openstudio/helpers/utils.rb} +26 -48
- data/lib/openstudio/weather/epw.rb +2 -2
- data/openstudio-analysis.gemspec +18 -16
- data/update_license.rb +5 -4
- metadata +48 -200
- data/LGPL-2.1.txt +0 -502
- data/LICENSE.txt +0 -65
- 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/analysis/examples/discrete_lhs_example.json +0 -809
- data/spec/files/analysis/examples/medium_office_example.json +0 -1674
- data/spec/files/analysis/examples/medium_office_workflow.json +0 -1298
- data/spec/files/measures/ActualMeasureNoJson/measure.rb +0 -80
- data/spec/files/measures/ActualMeasureNoJson/measure.xml +0 -2
- data/spec/files/measures/ExampleMeasure/measure.json +0 -3
- data/spec/files/measures/ExampleMeasure/measure.rb +0 -5
- data/spec/files/measures/ExampleMeasure/measure.xml +0 -1
- data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.json +0 -36
- data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.rb +0 -22
- data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.xml +0 -5
- data/spec/files/measures/NoMeasureRbFile/.gitkeep +0 -0
- data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.json +0 -3
- data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.rb +0 -5
- data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.xml +0 -1
- data/spec/files/measures/SetThermostatSchedules/measure.json +0 -63
- data/spec/files/measures/SetThermostatSchedules/measure.rb +0 -254
- data/spec/files/measures/SetThermostatSchedules/measure.xml +0 -2
- data/spec/files/measures/example_measure_auto_directory_name/measure.json +0 -3
- data/spec/files/measures/example_measure_auto_directory_name/measure.rb +0 -5
- data/spec/files/measures/example_measure_auto_directory_name/measure.xml +0 -1
- data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.json +0 -3
- data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.rb +0 -5
- data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.xml +0 -1
- data/spec/files/measures/reduce_space_infiltration_by_percentage/measure.rb +0 -5
- data/spec/files/measures/reduce_space_infiltration_by_percentage/measure.xml +0 -1
- data/spec/files/measures/rotate_building/measure.rb +0 -5
- data/spec/files/measures/rotate_building/measure.xml +0 -1
- data/spec/files/measures/set_window_to_wall_ratio_by_facade/measure.rb +0 -5
- data/spec/files/measures/set_window_to_wall_ratio_by_facade/measure.xml +0 -1
- data/spec/files/measures_second_path/measure_in_another_dir/measure.json +0 -3
- data/spec/files/measures_second_path/measure_in_another_dir/measure.rb +0 -5
- data/spec/files/measures_second_path/measure_in_another_dir/measure.xml +0 -1
- data/spec/files/partial_weather.epw +0 -32
- data/spec/files/partial_weather_2.epw +0 -32
- data/spec/files/small_seed.osm +0 -4622
- data/spec/files/worker_init/first_file.rb +0 -15
- data/spec/files/worker_init/second_file.sh +0 -4
- data/spec/files/workflow/analysis.osa +0 -1334
- data/spec/files/workflow/datapoint_0.osd +0 -65
- data/spec/files/workflow/datapoint_1.osd +0 -65
- data/spec/files/workflow/datapoint_2.osd +0 -65
- data/spec/files/workflow/datapoint_wrong_osa_id.osd +0 -65
- data/spec/integration/server_api_spec.rb +0 -83
- data/spec/openstudio/excel_spec.rb +0 -606
- data/spec/openstudio/formulation_spec.rb +0 -200
- data/spec/openstudio/hash_spec.rb +0 -56
- data/spec/openstudio/osw_spec.rb +0 -129
- data/spec/openstudio/server_api_spec.rb +0 -68
- data/spec/openstudio/string_spec.rb +0 -34
- data/spec/openstudio/weather_spec.rb +0 -80
- data/spec/openstudio/workflow_spec.rb +0 -126
- data/spec/openstudio/workflow_step_spec.rb +0 -158
- data/spec/schema/osa.json +0 -613
- data/spec/schema/osa.png +0 -0
- data/spec/schema/osd.json +0 -110
- data/spec/schema/osd.png +0 -0
- data/spec/spec_helper.rb +0 -21
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 76642f1d452e8e46218af9c36e388da0033e43469ec2063d6c61f4e4cd9b99fd
|
|
4
|
+
data.tar.gz: 40b243f4b0375a79e726bf4105913f75fc3ce65d09134aa27e5a927c36984b57
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5a9bbb7d5567cf1a7ecb6b243490e4eb3c50b0dd28cdad09fec821eaece6803fb45a3cb554ad975cca257e84644b8fe28630a5243ec4c62c4fc371583c01f638
|
|
7
|
+
data.tar.gz: 5a245e5b8c151fe7f079cc26af188115da571e420fc7a8df0b02a2c859bbd72ca2b91bff0aacac675677e86c7cf0d553463980ecf75ddc78e926221471f3b418
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,37 @@
|
|
|
1
1
|
OpenStudio Analysis Gem Change Log
|
|
2
2
|
==================================
|
|
3
3
|
|
|
4
|
+
Version 1.0.5
|
|
5
|
+
-------------
|
|
6
|
+
* Upgrade to latest BCL (0.6.1)
|
|
7
|
+
* Remove the need for the measure.json (which has been deprecated in BCL gem). Now parses the measure.xml.
|
|
8
|
+
* Upgrade Faraday (1.0.1)
|
|
9
|
+
* Remove dependency on Nokogiri.
|
|
10
|
+
|
|
11
|
+
Version 1.0.4
|
|
12
|
+
-------------
|
|
13
|
+
* Update dependency Nokogiri
|
|
14
|
+
|
|
15
|
+
Version 1.0.3
|
|
16
|
+
-------------
|
|
17
|
+
* Update dependencies roo and rubyzip
|
|
18
|
+
|
|
19
|
+
Version 1.0.2
|
|
20
|
+
-------------
|
|
21
|
+
* Updates required for OpenStudio 3x
|
|
22
|
+
* Require Ruby ~> 2.5.1
|
|
23
|
+
* Update to Nokogiri ~> 1.8.2 (required for Ruby 2.5 on Windows)
|
|
24
|
+
|
|
25
|
+
Version 1.0.1
|
|
26
|
+
-------------
|
|
27
|
+
* Add support for Ruby 2.5.1 (keeping support for 2.2)
|
|
28
|
+
* Lock version of Roo to older version
|
|
29
|
+
* Updated copyright dates and remove old LGPL license. License is not LGPL but a BSD-style license.
|
|
30
|
+
|
|
4
31
|
Version 1.0.0
|
|
5
32
|
-------------
|
|
6
33
|
This is the first official release in quite some time. This includes many changes which unfortunately have not been
|
|
7
|
-
|
|
34
|
+
cataloged. The changes from 0.4.5 include:
|
|
8
35
|
|
|
9
36
|
* Requires ruby > 2.1.
|
|
10
37
|
* Default path to ServerApi logfile to ~/os_server_api.log. This can be overridden by setting the log_path options key in the initializer.
|
data/Gemfile
CHANGED
|
@@ -3,8 +3,7 @@ source 'http://rubygems.org'
|
|
|
3
3
|
gemspec
|
|
4
4
|
|
|
5
5
|
gem 'colored', '~> 1.2'
|
|
6
|
-
gem '
|
|
7
|
-
gem 'openstudio-aws', '0.4.2'
|
|
6
|
+
gem 'openstudio-aws', '~> 0.4.2'
|
|
8
7
|
|
|
9
8
|
group :test do
|
|
10
9
|
# Don't install coveralls on window because requires devkit for json
|
|
@@ -12,7 +11,4 @@ group :test do
|
|
|
12
11
|
gem 'coveralls', require: false
|
|
13
12
|
end
|
|
14
13
|
gem 'ci_reporter_rspec'
|
|
15
|
-
gem 'rspec', '~> 3.4'
|
|
16
|
-
gem 'rubocop'
|
|
17
|
-
gem 'rubocop-checkstyle_formatter'
|
|
18
14
|
end
|
data/LICENSE.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC. All rights reserved.
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
|
4
|
+
that the following conditions are met:
|
|
5
|
+
|
|
6
|
+
(1) Redistributions of source code must retain the above copyright notice, this list of conditions and
|
|
7
|
+
the following disclaimer.
|
|
8
|
+
|
|
9
|
+
(2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
|
10
|
+
the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
11
|
+
|
|
12
|
+
(3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or
|
|
13
|
+
promote products derived from this software without specific prior written permission from the respective
|
|
14
|
+
party.
|
|
15
|
+
|
|
16
|
+
(4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other
|
|
17
|
+
derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar
|
|
18
|
+
designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
21
|
+
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
22
|
+
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED
|
|
23
|
+
STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY
|
|
24
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
25
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
27
|
+
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
|
28
|
+
DAMAGE.
|
data/README.md
CHANGED
|
@@ -30,7 +30,7 @@ There are two ways to create an OpenStudio Analysis description:
|
|
|
30
30
|
|
|
31
31
|
# add measures to the workflow
|
|
32
32
|
wf = analysis.workflow
|
|
33
|
-
def add_measure_from_path(instance_name, instance_display_name, local_path_to_measure)
|
|
33
|
+
# def add_measure_from_path(instance_name, instance_display_name, local_path_to_measure)
|
|
34
34
|
wf.add_measure_from_path('instance_name', 'Display name', 'path_to_measure')
|
|
35
35
|
wf.add_measure_from_path('instance_name_2', 'Display name two', 'path_to_measure_2')
|
|
36
36
|
|
data/Rakefile
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
data/lib/openstudio-analysis.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -70,6 +70,7 @@ require 'openstudio/analysis/translator/workflow'
|
|
|
70
70
|
# helpers / core_ext
|
|
71
71
|
require 'openstudio/helpers/string'
|
|
72
72
|
require 'openstudio/helpers/hash'
|
|
73
|
+
require 'openstudio/helpers/utils'
|
|
73
74
|
|
|
74
75
|
# weather file parsing
|
|
75
76
|
require 'openstudio/weather/epw'
|
data/lib/openstudio/analysis.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -130,35 +130,31 @@ module OpenStudio
|
|
|
130
130
|
new_wfi[:description] = wf[:description] if wf[:description]
|
|
131
131
|
new_wfi[:arguments] = []
|
|
132
132
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
wfi_arg[:units] = '' # should be haystack compatible unit strings
|
|
133
|
+
wf[:arguments]&.each do |arg|
|
|
134
|
+
wfi_arg = {}
|
|
135
|
+
wfi_arg[:display_name] = arg[:display_name] if arg[:display_name]
|
|
136
|
+
wfi_arg[:display_name_short] = arg[:display_name_short] if arg[:display_name_short]
|
|
137
|
+
wfi_arg[:name] = arg[:name] if arg[:name]
|
|
138
|
+
wfi_arg[:data_type] = arg[:value_type] if arg[:value_type]
|
|
139
|
+
wfi_arg[:default_value] = nil
|
|
140
|
+
wfi_arg[:description] = ''
|
|
141
|
+
wfi_arg[:display_units] = '' # should be haystack compatible unit strings
|
|
142
|
+
wfi_arg[:units] = '' # should be haystack compatible unit strings
|
|
144
143
|
|
|
145
|
-
|
|
146
|
-
end
|
|
144
|
+
new_wfi[:arguments] << wfi_arg
|
|
147
145
|
end
|
|
148
146
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
new_wfi[:arguments] << wfi_var
|
|
161
|
-
end
|
|
147
|
+
wf[:variables]&.each do |arg|
|
|
148
|
+
wfi_var = {}
|
|
149
|
+
wfi_var[:display_name] = arg[:argument][:display_name] if arg[:argument][:display_name]
|
|
150
|
+
wfi_var[:display_name_short] = arg[:argument][:display_name_short] if arg[:argument][:display_name_short]
|
|
151
|
+
wfi_var[:name] = arg[:argument][:name] if arg[:argument][:name]
|
|
152
|
+
wfi_var[:default_value] = nil
|
|
153
|
+
wfi_var[:data_type] = arg[:argument][:value_type] if arg[:argument][:value_type]
|
|
154
|
+
wfi_var[:description] = ''
|
|
155
|
+
wfi_var[:display_units] = arg[:units] if arg[:units]
|
|
156
|
+
wfi_var[:units] = '' # should be haystack compatible unit strings
|
|
157
|
+
new_wfi[:arguments] << wfi_var
|
|
162
158
|
end
|
|
163
159
|
|
|
164
160
|
measure_metadata << new_wfi
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -152,10 +152,8 @@ module OpenStudio
|
|
|
152
152
|
response = @conn.get "/projects/#{project_id}.json"
|
|
153
153
|
if response.status == 200
|
|
154
154
|
analyses = JSON.parse(response.body, symbolize_names: true, max_nesting: false)
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
analysis_ids << analysis[:_id]
|
|
158
|
-
end
|
|
155
|
+
analyses[:analyses]&.each do |analysis|
|
|
156
|
+
analysis_ids << analysis[:_id]
|
|
159
157
|
end
|
|
160
158
|
end
|
|
161
159
|
|
|
@@ -467,16 +465,12 @@ module OpenStudio
|
|
|
467
465
|
|
|
468
466
|
formulation_json[:analysis][:problem][:workflow].each do |wf|
|
|
469
467
|
wf[:uuid] = SecureRandom.uuid
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
arg[:uuid] = SecureRandom.uuid
|
|
473
|
-
end
|
|
468
|
+
wf[:arguments]&.each do |arg|
|
|
469
|
+
arg[:uuid] = SecureRandom.uuid
|
|
474
470
|
end
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
var[:argument][:uuid] = SecureRandom.uuid if var[:argument]
|
|
479
|
-
end
|
|
471
|
+
wf[:variables]&.each do |var|
|
|
472
|
+
var[:uuid] = SecureRandom.uuid
|
|
473
|
+
var[:argument][:uuid] = SecureRandom.uuid if var[:argument]
|
|
480
474
|
end
|
|
481
475
|
end
|
|
482
476
|
else
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -58,7 +58,7 @@ module OpenStudio
|
|
|
58
58
|
attr_accessor :name
|
|
59
59
|
attr_reader :analysis_name
|
|
60
60
|
|
|
61
|
-
require '
|
|
61
|
+
require 'rexml/document'
|
|
62
62
|
|
|
63
63
|
# Pass in the filename to read
|
|
64
64
|
def initialize(csv_filename)
|
|
@@ -368,16 +368,16 @@ module OpenStudio
|
|
|
368
368
|
data = []
|
|
369
369
|
measures.each_with_index do |measure, measure_index|
|
|
370
370
|
data[measure_index] = {}
|
|
371
|
-
|
|
371
|
+
measure_parsed = find_measure(measure.to_s)
|
|
372
372
|
|
|
373
|
-
raise "Could not find measure #{measure} xml in measure_paths: '#{@measure_paths.join("\n")}'" unless
|
|
373
|
+
raise "Could not find measure #{measure} xml in measure_paths: '#{@measure_paths.join("\n")}'" unless measure_parsed
|
|
374
374
|
measure_data = {}
|
|
375
|
-
measure_data[:classname] =
|
|
376
|
-
measure_data[:name] =
|
|
377
|
-
measure_data[:display_name] =
|
|
378
|
-
measure_data[:measure_type] = measure_type
|
|
379
|
-
measure_data[:uid] =
|
|
380
|
-
measure_data[:version_id] =
|
|
375
|
+
measure_data[:classname] = measure_parsed[:classname]
|
|
376
|
+
measure_data[:name] = measure_parsed[:name]
|
|
377
|
+
measure_data[:display_name] = measure_parsed[:display_name]
|
|
378
|
+
measure_data[:measure_type] = measure_parsed[:measure_type]
|
|
379
|
+
measure_data[:uid] = measure_parsed[:uid]
|
|
380
|
+
measure_data[:version_id] = measure_parsed[:version_id]
|
|
381
381
|
data[measure_index][:measure_data] = measure_data
|
|
382
382
|
data[measure_index][:vars] = []
|
|
383
383
|
vars = measure_map[measure]
|
|
@@ -389,8 +389,8 @@ module OpenStudio
|
|
|
389
389
|
next if var.to_s == 'None'
|
|
390
390
|
var_hash = {}
|
|
391
391
|
found_arg = nil
|
|
392
|
-
|
|
393
|
-
if var.to_s == '__SKIP__' || arg
|
|
392
|
+
measure_parsed[:arguments].each do |arg|
|
|
393
|
+
if var.to_s == '__SKIP__' || arg[:name] == var.to_s
|
|
394
394
|
found_arg = arg
|
|
395
395
|
break
|
|
396
396
|
end
|
|
@@ -404,8 +404,8 @@ module OpenStudio
|
|
|
404
404
|
var_type = 'boolean'
|
|
405
405
|
var_units = ''
|
|
406
406
|
else
|
|
407
|
-
var_type = found_arg.
|
|
408
|
-
var_units = found_arg
|
|
407
|
+
var_type = found_arg[:variable_type].downcase
|
|
408
|
+
var_units = found_arg[:units]
|
|
409
409
|
end
|
|
410
410
|
|
|
411
411
|
var_hash[:name] = var.to_s
|
|
@@ -437,7 +437,8 @@ module OpenStudio
|
|
|
437
437
|
var_hash[:distribution][:type] = 'discrete'
|
|
438
438
|
var_hash[:distribution][:units] = var_hash[:units]
|
|
439
439
|
if var_hash[:type] == 'choice'
|
|
440
|
-
var_hash[:distribution][:enumerations] = found_arg.xpath('choices/choice').map { |s| s.xpath('value').text }
|
|
440
|
+
# var_hash[:distribution][:enumerations] = found_arg.xpath('choices/choice').map { |s| s.xpath('value').text }
|
|
441
|
+
# This would need to be updated if we want to do this again... sorry.
|
|
441
442
|
elsif var_hash[:type] == 'bool'
|
|
442
443
|
var_hash[:distribution][:enumerations] = []
|
|
443
444
|
var_hash[:distribution][:enumerations] << true
|
|
@@ -447,13 +448,13 @@ module OpenStudio
|
|
|
447
448
|
end
|
|
448
449
|
data[measure_index][:args] = []
|
|
449
450
|
|
|
450
|
-
|
|
451
|
+
measure_parsed[:arguments].each do |arg_xml|
|
|
451
452
|
arg = {}
|
|
452
|
-
arg[:value_type] = arg_xml
|
|
453
|
-
arg[:name] = arg_xml
|
|
454
|
-
arg[:display_name] = arg_xml
|
|
453
|
+
arg[:value_type] = arg_xml[:variable_type]
|
|
454
|
+
arg[:name] = arg_xml[:name]
|
|
455
|
+
arg[:display_name] = arg_xml[:display_name].downcase
|
|
455
456
|
arg[:display_name_short] = arg[:display_name]
|
|
456
|
-
arg[:default_value] = arg_xml
|
|
457
|
+
arg[:default_value] = arg_xml[:default_value].downcase
|
|
457
458
|
arg[:value] = arg[:default_value]
|
|
458
459
|
data[measure_index][:args] << arg
|
|
459
460
|
end
|
|
@@ -470,27 +471,12 @@ module OpenStudio
|
|
|
470
471
|
measure_xml = File.join(mp, measure_name, 'measure.xml')
|
|
471
472
|
measure_rb = File.join(mp, measure_name, 'measure.rb')
|
|
472
473
|
if File.exist?(measure_xml) && File.exist?(measure_rb)
|
|
473
|
-
|
|
474
|
+
measure_parsed = parse_measure_xml(measure_xml)
|
|
475
|
+
return measure_parsed
|
|
474
476
|
end
|
|
475
477
|
end
|
|
476
478
|
|
|
477
|
-
return nil
|
|
478
|
-
end
|
|
479
|
-
|
|
480
|
-
def parse_measure_type(measure_filename)
|
|
481
|
-
measure_string = File.read(measure_filename)
|
|
482
|
-
|
|
483
|
-
if measure_string =~ /OpenStudio::Ruleset::WorkspaceUserScript/
|
|
484
|
-
return 'EnergyPlusMeasure'
|
|
485
|
-
elsif measure_string =~ /OpenStudio::Ruleset::ModelUserScript/
|
|
486
|
-
return 'RubyMeasure'
|
|
487
|
-
elsif measure_string =~ /OpenStudio::Ruleset::ReportingUserScript/
|
|
488
|
-
return 'ReportingMeasure'
|
|
489
|
-
elsif measure_string =~ /OpenStudio::Ruleset::UtilityUserScript/
|
|
490
|
-
return 'UtilityUserScript'
|
|
491
|
-
else
|
|
492
|
-
raise "measure type is unknown with an inherited class in #{measure_filename}"
|
|
493
|
-
end
|
|
479
|
+
return nil
|
|
494
480
|
end
|
|
495
481
|
end
|
|
496
482
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -536,7 +536,7 @@ module OpenStudio
|
|
|
536
536
|
tmp_m_name = SecureRandom.uuid
|
|
537
537
|
end
|
|
538
538
|
# Only add models if the row is flagged
|
|
539
|
-
if row[0]
|
|
539
|
+
if row[0]&.casecmp('model')&.zero?
|
|
540
540
|
model_path = row[3]
|
|
541
541
|
unless (Pathname.new model_path).absolute?
|
|
542
542
|
model_path = File.expand_path(File.join(@root_path, model_path))
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# *******************************************************************************
|
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
3
|
# All rights reserved.
|
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
|
@@ -80,11 +80,9 @@ module OpenStudio
|
|
|
80
80
|
step_hash[:measure_dir_name] = File.basename(step[:measure_definition_directory])
|
|
81
81
|
step_hash[:arguments] = {}
|
|
82
82
|
# Measures can have no arguments -- make sure to catch it
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
step_hash[:arguments][arg[:name].to_sym] = arg[:value]
|
|
87
|
-
end
|
|
83
|
+
@osa[:problem][:workflow][i][:arguments]&.each do |arg|
|
|
84
|
+
next if arg[:value].nil?
|
|
85
|
+
step_hash[:arguments][arg[:name].to_sym] = arg[:value]
|
|
88
86
|
end
|
|
89
87
|
step_hash[:name] = step[:name] if step[:name]
|
|
90
88
|
step_hash[:description] = step[:description] if step[:description]
|
|
@@ -98,7 +96,7 @@ module OpenStudio
|
|
|
98
96
|
step_hash[:modeler_description] = step[:modeler_description] if step[:modeler_description]
|
|
99
97
|
step_hash[:taxonomy] = step[:taxonomy] if step[:taxonomy]
|
|
100
98
|
step_hash[:measure_type] = step[:measure_type]
|
|
101
|
-
step_hash[:measure_type] = 'ModelMeasure'
|
|
99
|
+
step_hash[:measure_type] = 'ModelMeasure'
|
|
102
100
|
@steps << step_hash
|
|
103
101
|
end
|
|
104
102
|
end
|
|
@@ -160,12 +158,10 @@ module OpenStudio
|
|
|
160
158
|
def process_datapoints(osd_filename_array)
|
|
161
159
|
r = []
|
|
162
160
|
osd_filename_array.each do |osd_file|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
puts "Warning: Failed to process datapoint #{osd_file} with error #{e.message} in #{e.backtrace.join('\n')}"
|
|
168
|
-
end
|
|
161
|
+
r << process_datapoint(osd_file)
|
|
162
|
+
rescue StandardError => e
|
|
163
|
+
r << nil
|
|
164
|
+
puts "Warning: Failed to process datapoint #{osd_file} with error #{e.message} in #{e.backtrace.join('\n')}"
|
|
169
165
|
end
|
|
170
166
|
|
|
171
167
|
r
|