openstudio-calibration 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c9f3936d6c653d0aaef4528bd66e45bdf38834952e8ad6b0e0fd3a6b4b2df86
4
- data.tar.gz: d765f69fad47aa01086b1633faece3dd4189720bd37b66149f3aa812e44a6317
3
+ metadata.gz: be0df7d570194eed01d351ecfdd17e247146dfffbbb83cf08805bbbde18db340
4
+ data.tar.gz: 4894b51e9cfac730ad5e13e70e9412521ba4ff5090bf50c6cd240162603c193f
5
5
  SHA512:
6
- metadata.gz: 27ef6f98c10492eb33de9bff35c50b7432c48f2f6a80c27ebcb2379b92a62cf23805b2be4e2f8e6fa0d38099aacb20c6bc45eeabe9c0c0dff1fa2e8efcec7fdd
7
- data.tar.gz: 4fb41b04ae7f426f8792f2422e693fd9a5ab478cc8d54c4ce9fca917704fa9f4b78fc62eed8733a8f855ec71d6f90258b7e746ad5d5fb43f34241c10bd94f05a
6
+ metadata.gz: 2f8d4c10fa883f5e9afbb42392cfba46674a485858bcfe827bd9d8e1f9516700d9b29f210eaddbe4de8e3b78f100871a8f8cf1e5c861c05aad94d720f22b9937
7
+ data.tar.gz: 44ae3592dbf26e616e927395cd009f4b45741a6f777a19036514a22cd16eb5db8eb824cdf110b7ae315eeac4a1edbb384fcdb3476cced9eb29332844ca25cc08
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # OpenStudio Calibration Measures Gem
2
2
 
3
+ ## Version 0.9.0
4
+ * Updating dependencies and licenses for OpenStudio 3.7 (upgrade to standards gem 0.5.0, extension gem 0.7.0)
5
+ * Fixed [#54]( https://github.com/NREL/openstudio-calibration-gem/issues/54 ), OS API changes break some measures
6
+
3
7
  ## Version 0.8.0
4
8
  * Fixed [#52]( https://github.com/NREL/openstudio-calibration-gem/pull/52 ), Specify date format in AddMonthlyUtilityData
5
9
  * Fixed [#55]( https://github.com/NREL/openstudio-calibration-gem/pull/55 ), Api change
data/README.md CHANGED
@@ -24,6 +24,7 @@ Or install it yourself as:
24
24
 
25
25
  |OpenStudio Calibration Gem|OpenStudio|Ruby|
26
26
  |:--------------:|:----------:|:--------:|
27
+ | 0.9.0 | 3.7 | 2.7 |
27
28
  | 0.8.0 | 3.6 | 2.7 |
28
29
  | 0.7.0 | 3.5 | 2.7 |
29
30
  | 0.6.0 | 3.4 | 2.7 |
@@ -18,6 +18,56 @@ ReportingMeasure
18
18
 
19
19
  ## Arguments
20
20
 
21
+ **verbose_messages** will display all the runner.registerInfo statements for the metered value, simulated value and their difference at EVERY timestep. while this is useful for debugging the usage of the Measure, it has a MAJOR impact on performance and will slow the running of the measure. Turn to False for production runs.
22
+
23
+ **csv_name** is the file path, relative to the Measure at runtime, to the CSV data. If this run is taking place on an OS-Server or (OSAF) instance, where the project data is zipped up into an OSA.zip file and posted to the OS-Server Web node (in a directory called **calibration_data**), then relative path to the data would be: '../../../lib/calibration_data/electric_json.json'. Notice the **lib** in the path name for the OSAF use case.
24
+
25
+ **csv_time_header** is the Header Value in the CSV file with metered data for the TIMESTAMP, ex: "timestamp"
26
+
27
+ **csv_var**, is the column name of the metered data, ex: "Electricity:Facility[J]"
28
+
29
+ **convert_data** is used to convert the units in the CSV from 'F to C', 'WH to J', 'CFM to m3/s', 'PSI to Pa' or **None**
30
+
31
+ The timestamp of the CSV data should follow a mm/dd/yyyy hh:mm:ss format with NO AM/PM
32
+
33
+ **year** (true) Is the Year in the csv data timestamp => mm/dd/yyyy or mm/dd
34
+
35
+ **seconds** (true) Is the Seconds in the csv data timestamp => hh:mm:ss or hh:mm
36
+
37
+ The model output variables/meters are listed in the eplusout.rdd and .mdd files.
38
+
39
+ The Measure argument **find_avail** (true) will print out ALL the available RunPeriods (EnvPeriod), ReportingFrequencies, Variables and key values in the run.log file:
40
+
41
+ `[15:11:26.640379 INFO] environment_periods: ["Run Period 1"]`\
42
+ `[15:11:26.640418 INFO] available timeseries: ["Electricity:Facility", "NaturalGas:Facility", "Surface Inside Face Temperature", "Zone Outdoor Air Drybulb Temperature"]`\
43
+ `[15:11:26.640424 INFO] `\
44
+ `[15:11:26.640443 INFO] available EnvPeriod: Run Period 1, available ReportingFrequencies: ["Daily", "Hourly", "Zone Timestep"]`\
45
+ `[15:11:26.640454 INFO] available ReportingFrequency: Daily, available variable names: ["Electricity:Facility", "NaturalGas:Facility"]`\
46
+ `[15:11:26.640463 INFO] variable names: Electricity:Facility`\
47
+ `[15:11:26.640469 INFO] available key value: [""]`\
48
+ `[15:11:26.640476 INFO] variable names: NaturalGas:Facility`\
49
+ `[15:11:26.640481 INFO] available key value: [""]`\
50
+ `[15:11:26.640493 INFO] available ReportingFrequency: Hourly, available variable names: ["Electricity:Facility", "NaturalGas:Facility", "Surface Inside Face Temperature", "Zone Outdoor Air Drybulb Temperature"]`\
51
+ `[15:11:26.640499 INFO] variable names: Electricity:Facility`\
52
+ `[15:11:26.640505 INFO] available key value: [""]`\
53
+ `[15:11:26.640511 INFO] variable names: NaturalGas:Facility`\
54
+ `[15:11:26.640516 INFO] available key value: [""]`\
55
+ `[15:11:26.640526 INFO] variable names: Surface Inside Face Temperature`\
56
+ `[15:11:26.640539 INFO] available key value: ["SUB SURFACE 1", "SUB SURFACE 2", "SURFACE 1"]`\
57
+ `[15:11:26.640546 INFO] variable names: Zone Outdoor Air Drybulb Temperature`\
58
+ `[15:11:26.640552 INFO] available key value: ["THERMAL ZONE 1"]`\
59
+ `[15:11:26.640561 INFO] available ReportingFrequency: Zone Timestep, available variable names: ["Electricity:Facility", "NaturalGas:Facility"]`\
60
+ `[15:11:26.640567 INFO] variable names: Electricity:Facility`\
61
+ `[15:11:26.640573 INFO] available key value: [""]`\
62
+ `[15:11:26.640579 INFO] variable names: NaturalGas:Facility`\
63
+ `[15:11:26.640585 INFO] available key value: [""]`\
64
+
65
+ * The name of the variable/timeseries to be compared is used in the **timeseries_name** measure argument.
66
+ * Some variables require a further **key_value** to narrow down the results to a specific object like a Surface or Zone. Some Meter based outputs have no key, i.e, Electricity:Facility. For those, use the value **no_key**
67
+ * RunPeriods/EnvPeriod are set in the **environment_period** measure argument.
68
+ * ReportingFrequencies ["Daily", "Hourly", "Zone Timestep"] are set in the **reporting_frequency** measure argument.
69
+
70
+
21
71
 
22
72
  ### Path to CSV file for the metered data
23
73
  Path to CSV file including file name.
@@ -60,7 +110,7 @@ CSV variable display name. Not yet Implemented
60
110
  **Model Dependent:** false
61
111
 
62
112
  ### Year in csv data timestamp
63
- Is the Year in the csv data timestamp => mm:dd:yy or mm:dd (true/false)
113
+ Is the Year in the csv data timestamp => mm/dd/yyyy or mm/dd (true/false)
64
114
  **Name:** year,
65
115
  **Type:** Boolean,
66
116
  **Units:** ,
@@ -15,17 +15,17 @@ require 'erb'
15
15
  class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
16
16
  # human readable name
17
17
  def name
18
- 'TimeSeries Objective Function'
18
+ return 'TimeSeries Objective Function'
19
19
  end
20
20
 
21
21
  # human readable description
22
22
  def description
23
- 'Creates Objective Function from Timeseries Data'
23
+ return 'Creates Objective Function from Timeseries Data'
24
24
  end
25
25
 
26
26
  # human readable description of modeling approach
27
27
  def modeler_description
28
- "Creates Objective Function from Timeseries Data. The measure applies a Norm at each timestep between the difference of CSV metered data and SQL model data. A timeseries plot can also be created. Possible outputs are 'cvrmse', 'nmbe', 'simdata' = sum of the simulated data, 'csvdata' = sum of metered data, 'diff' = P Norm between the metered and simulated data if Norm is 1 or 2, else its just the Difference."
28
+ return "Creates Objective Function from Timeseries Data. The measure applies a Norm at each timestep between the difference of CSV metered data and SQL model data. A timeseries plot can also be created. Possible outputs are 'cvrmse', 'nmbe', 'simdata' = sum of the simulated data, 'csvdata' = sum of metered data, 'diff' = P Norm between the metered and simulated data if Norm is 1 or 2, else its just the Difference."
29
29
  end
30
30
 
31
31
  # define the arguments that the user will input
@@ -71,7 +71,7 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
71
71
 
72
72
  years = OpenStudio::Measure::OSArgument.makeBoolArgument('year', true)
73
73
  years.setDisplayName('Year in csv data timestamp')
74
- years.setDescription('Is the Year in the csv data timestamp => mm:dd:yy or mm:dd (true/false)')
74
+ years.setDescription('Is the Year in the csv data timestamp => mm/dd/yyyy or mm/dd (true/false)')
75
75
  years.setDefaultValue(true)
76
76
  args << years
77
77
 
@@ -82,9 +82,9 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
82
82
  args << seconds
83
83
 
84
84
  sql_key = OpenStudio::Measure::OSArgument.makeStringArgument('key_value', true)
85
- sql_key.setDisplayName('SQL key value')
85
+ sql_key.setDisplayName('SQL key value. use no_key if there is no key, i.e. Electricity:Facility')
86
86
  sql_key.setDescription('SQL key value for the SQL query to find the variable in the SQL file')
87
- sql_key.setDefaultValue('')
87
+ sql_key.setDefaultValue('no_key')
88
88
  args << sql_key
89
89
 
90
90
  sql_var = OpenStudio::Measure::OSArgument.makeStringArgument('timeseries_name', true)
@@ -95,7 +95,7 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
95
95
 
96
96
  reportfreq_chs = OpenStudio::StringVector.new
97
97
  reportfreq_chs << 'Detailed'
98
- reportfreq_chs << 'Timestep'
98
+ reportfreq_chs << 'Zone Timestep'
99
99
  reportfreq_chs << 'Hourly'
100
100
  reportfreq_chs << 'Daily'
101
101
  reportfreq_chs << 'Monthly'
@@ -145,7 +145,7 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
145
145
  plot_name = OpenStudio::Measure::OSArgument.makeStringArgument('plot_name', true)
146
146
  plot_name.setDisplayName('Plot name')
147
147
  plot_name.setDescription('Name to include in reporting file name.')
148
- plot_name.setDefaultValue('')
148
+ plot_name.setDefaultValue('plot_name')
149
149
  args << plot_name
150
150
 
151
151
  verbose_messages = OpenStudio::Measure::OSArgument.makeBoolArgument('verbose_messages', true)
@@ -262,6 +262,11 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
262
262
  convert_data = runner.getStringArgumentValue('convert_data', user_arguments)
263
263
  last_zero = runner.getBoolArgumentValue('add_last_zero_for_plots', user_arguments)
264
264
  first_zero = runner.getBoolArgumentValue('add_first_zero_for_plots', user_arguments)
265
+
266
+ # remove leading and trailing double quotes
267
+ # windows users can shift + right click a file to copy as path, which has double quotes
268
+ csv_name.gsub!('"', '')
269
+
265
270
  @name = plot_name
266
271
  # Method to translate from OpenStudio's time formatting
267
272
  # to Javascript time formatting
@@ -338,11 +343,11 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
338
343
  runner.registerInfo("available EnvPeriod: #{env_s}, available ReportingFrequencies: #{freqs}")
339
344
  freqs.each do |freq|
340
345
  vn = sql.availableVariableNames(env_s, freq.to_s)
341
- runner.registerInfo("available variable names: #{vn}")
346
+ runner.registerInfo(" available ReportingFrequency: #{freq}, available variable names: #{vn}")
342
347
  vn.each do |v|
343
348
  kv = sql.availableKeyValues(env_s, freq.to_s, v)
344
- runner.registerInfo("variable names: #{v}")
345
- runner.registerInfo("available key value: #{kv}")
349
+ runner.registerInfo(" variable names: #{v}")
350
+ runner.registerInfo(" available key value: #{kv}")
346
351
  end
347
352
  end
348
353
  end
@@ -350,63 +355,63 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
350
355
  runner.registerInfo("year: #{years}")
351
356
  runner.registerInfo("seconds: #{seconds}")
352
357
  if !years && seconds
353
- # mm:dd hh:mm:ss
358
+ # mm/dd hh:mm:ss
354
359
  # check day time splits into two valid parts
355
360
  if !csv[1][0].split(' ')[0].nil? && !csv[1][0].split(' ')[1].nil?
356
361
  # check remaining splits are valid
357
362
  if !csv[1][0].split(' ')[0].split('/')[0].nil? && !csv[1][0].split(' ')[0].split('/')[1].nil? && !csv[1][0].split(' ')[1].split(':')[0].nil? && !csv[1][0].split(' ')[1].split(':')[1].nil? && !csv[1][0].split(' ')[1].split(':')[2].nil?
358
- runner.registerInfo("CSV Time format is correct: #{csv[1][0]} mm:dd hh:mm:ss")
363
+ runner.registerInfo("CSV Time format is correct: #{csv[1][0]} mm/dd hh:mm:ss")
359
364
  else
360
- runner.registerError("CSV Time format not correct: #{csv[1][0]}. Selected format is mm:dd hh:mm:ss")
365
+ runner.registerError("CSV Time format not correct: #{csv[1][0]}. Selected format is mm/dd hh:mm:ss")
361
366
  return false
362
367
  end
363
368
  else
364
- runner.registerError("CSV Time format not correct: #{csv[1][0]}. Does not split into 'day time'. Selected format is mm:dd hh:mm:ss")
369
+ runner.registerError("CSV Time format not correct: #{csv[1][0]}. Does not split into 'day time'. Selected format is mm/dd hh:mm:ss")
365
370
  return false
366
371
  end
367
372
  elsif !years && !seconds
368
- # mm:dd hh:mm
373
+ # mm/dd hh:mm
369
374
  # check day time splits into two valid parts
370
375
  if !csv[1][0].split(' ')[0].nil? && !csv[1][0].split(' ')[1].nil?
371
376
  # check remaining splits are valid
372
377
  if !csv[1][0].split(' ')[0].split('/')[0].nil? && !csv[1][0].split(' ')[0].split('/')[1].nil? && !csv[1][0].split(' ')[1].split(':')[0].nil? && !csv[1][0].split(' ')[1].split(':')[1].nil?
373
- runner.registerInfo("CSV Time format is correct: #{csv[1][0]} mm:dd hh:mm")
378
+ runner.registerInfo("CSV Time format is correct: #{csv[1][0]} mm/dd hh:mm")
374
379
  else
375
- runner.registerError("CSV Time format not correct: #{csv[1][0]}. Selected format is mm:dd hh:mm")
380
+ runner.registerError("CSV Time format not correct: #{csv[1][0]}. Selected format is mm/dd hh:mm")
376
381
  return false
377
382
  end
378
383
  else
379
- runner.registerError("CSV Time format not correct: #{csv[1][0]}. Does not split into 'day time'. Selected format is mm:dd hh:mm")
384
+ runner.registerError("CSV Time format not correct: #{csv[1][0]}. Does not split into 'day time'. Selected format is mm/dd hh:mm")
380
385
  return false
381
386
  end
382
387
  elsif years && !seconds
383
- # mm:dd:yy hh:mm
388
+ # mm/dd/yyyy hh:mm
384
389
  # check day time splits into two valid parts
385
390
  if !csv[1][0].split(' ')[0].nil? && !csv[1][0].split(' ')[1].nil?
386
391
  # check remaining splits are valid
387
392
  if !csv[1][0].split(' ')[0].split('/')[0].nil? && !csv[1][0].split(' ')[0].split('/')[1].nil? && !csv[1][0].split(' ')[0].split('/')[2].nil? && !csv[1][0].split(' ')[1].split(':')[0].nil? && !csv[1][0].split(' ')[1].split(':')[1].nil?
388
- runner.registerInfo("CSV Time format is correct: #{csv[1][0]} mm:dd:yy hh:mm")
393
+ runner.registerInfo("CSV Time format is correct: #{csv[1][0]} mm/dd/yyyy hh:mm")
389
394
  else
390
- runner.registerError("CSV Time format not correct: #{csv[1][0]}. Selected format is mm:dd:yy hh:mm")
395
+ runner.registerError("CSV Time format not correct: #{csv[1][0]}. Selected format is mm/dd/yyyy hh:mm")
391
396
  return false
392
397
  end
393
398
  else
394
- runner.registerError("CSV Time format not correct: #{csv[1][0]}. Does not split into 'day time'. Selected format is mm:dd:yy hh:mm")
399
+ runner.registerError("CSV Time format not correct: #{csv[1][0]}. Does not split into 'day time'. Selected format is mm/dd/yyyy hh:mm")
395
400
  return false
396
401
  end
397
402
  elsif years && seconds
398
- # mm:dd:yy hh:mm:ss
403
+ # mm/dd/yyyy hh:mm:ss
399
404
  # check day time splits into two valid parts
400
405
  if !csv[1][0].split(' ')[0].nil? && !csv[1][0].split(' ')[1].nil?
401
406
  # check remaining splits are valid
402
407
  if !csv[1][0].split(' ')[0].split('/')[0].nil? && !csv[1][0].split(' ')[0].split('/')[1].nil? && !csv[1][0].split(' ')[0].split('/')[2].nil? && !csv[1][0].split(' ')[1].split(':')[0].nil? && !csv[1][0].split(' ')[1].split(':')[1].nil? && !csv[1][0].split(' ')[1].split(':')[2].nil?
403
- runner.registerInfo("CSV Time format is correct: #{csv[1][0]} mm:dd:yy hh:mm:ss")
408
+ runner.registerInfo("CSV Time format is correct: #{csv[1][0]} mm/dd/yyyy hh:mm:ss")
404
409
  else
405
- runner.registerError("CSV Time format not correct: #{csv[1][0]}. Selected format is mm:dd:yy hh:mm:ss")
410
+ runner.registerError("CSV Time format not correct: #{csv[1][0]}. Selected format is mm/dd/yyyy hh:mm:ss")
406
411
  return false
407
412
  end
408
413
  else
409
- runner.registerError("CSV Time format not correct: #{csv[1][0]}. Does not split into 'day time'. Selected format is mm:dd:yy hh:mm:ss")
414
+ runner.registerError("CSV Time format not correct: #{csv[1][0]}. Does not split into 'day time'. Selected format is mm/dd/yyyy hh:mm:ss")
410
415
  return false
411
416
  end
412
417
  end
@@ -511,9 +516,7 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
511
516
  if year.nil?
512
517
  dat = OpenStudio::Date.new(OpenStudio::MonthOfYear.new(cal[mon]), day)
513
518
  else
514
- # dat = OpenStudio::Date.new(OpenStudio::MonthOfYear.new(cal[mon]),day,year)
515
- # hack since year is not in the sql file correctly
516
- dat = OpenStudio::Date.new(OpenStudio::MonthOfYear.new(cal[mon]), day)
519
+ dat = OpenStudio::Date.new(OpenStudio::MonthOfYear.new(cal[mon]),day,year)
517
520
  end
518
521
  tim = if sec.nil?
519
522
  OpenStudio::Time.new(0, hou, min, 0)
@@ -629,7 +632,7 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
629
632
 
630
633
  if algorithm_download
631
634
  require 'csv'
632
- CSV.open("timeseries#{plot_name}.csv", 'wb') do |csv|
635
+ CSV.open("timeseries_#{plot_name}.csv", 'wb') do |csv|
633
636
  csv << ['Simulation Time', 'Simulated Value', 'Metered time', 'Metered Value']
634
637
  data.size.times do |i|
635
638
  csv << [data[i]['time'], data[i]['y'], data2[i]['time'], data2[i]['y']]
@@ -658,7 +661,7 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
658
661
  Dir.mkdir(directory_name) unless File.exist?(directory_name)
659
662
  FileUtils.cp("timeseries_#{csv_var}.json", directory_name)
660
663
  FileUtils.cp("allseries_#{csv_var}.json", directory_name)
661
- FileUtils.cp("timeseries#{plot_name}.csv", directory_name)
664
+ FileUtils.cp("timeseries_#{plot_name}.csv", directory_name)
662
665
  end
663
666
  end
664
667
  diff = Math.sqrt(diff) if norm == 2
@@ -1,10 +1,10 @@
1
1
  <?xml version="1.0"?>
2
2
  <measure>
3
- <schema_version>3.0</schema_version>
3
+ <schema_version>3.1</schema_version>
4
4
  <name>timeseries_objective_function</name>
5
- <uid>6804217d-4737-45f3-82df-b81393c29ce3</uid>
6
- <version_id>cf028dfa-bc19-4d7e-9dfd-0ab2db4ab658</version_id>
7
- <version_modified>20230602T154653Z</version_modified>
5
+ <uid>6804217d-4737-45f3-82df-b81393c29ce4</uid>
6
+ <version_id>aa90f481-25bf-4ba0-a6cd-ceece394f503</version_id>
7
+ <version_modified>2023-10-11T15:24:04Z</version_modified>
8
8
  <xml_checksum>FFE04372</xml_checksum>
9
9
  <class_name>TimeseriesObjectiveFunction</class_name>
10
10
  <display_name>TimeSeries Objective Function</display_name>
@@ -81,7 +81,7 @@
81
81
  <argument>
82
82
  <name>year</name>
83
83
  <display_name>Year in csv data timestamp</display_name>
84
- <description>Is the Year in the csv data timestamp =&gt; mm:dd:yy or mm:dd (true/false)</description>
84
+ <description>Is the Year in the csv data timestamp =&gt; mm/dd/yyyy or mm/dd (true/false)</description>
85
85
  <type>Boolean</type>
86
86
  <required>true</required>
87
87
  <model_dependent>false</model_dependent>
@@ -259,7 +259,7 @@
259
259
  <type>String</type>
260
260
  <required>true</required>
261
261
  <model_dependent>false</model_dependent>
262
- <default_value></default_value>
262
+ <default_value>plot_name</default_value>
263
263
  </argument>
264
264
  <argument>
265
265
  <name>verbose_messages</name>
@@ -398,33 +398,33 @@
398
398
  </attributes>
399
399
  <files>
400
400
  <file>
401
- <filename>README.md.erb</filename>
402
- <filetype>erb</filetype>
403
- <usage_type>readmeerb</usage_type>
404
- <checksum>703C9964</checksum>
401
+ <filename>LICENSE.md</filename>
402
+ <filetype>md</filetype>
403
+ <usage_type>license</usage_type>
404
+ <checksum>BFFB1AA6</checksum>
405
405
  </file>
406
406
  <file>
407
407
  <filename>README.md</filename>
408
408
  <filetype>md</filetype>
409
409
  <usage_type>readme</usage_type>
410
- <checksum>3F176FE0</checksum>
410
+ <checksum>1A2DB569</checksum>
411
411
  </file>
412
412
  <file>
413
- <filename>LICENSE.md</filename>
414
- <filetype>md</filetype>
415
- <usage_type>license</usage_type>
416
- <checksum>BFFB1AA6</checksum>
413
+ <filename>README.md.erb</filename>
414
+ <filetype>erb</filetype>
415
+ <usage_type>readmeerb</usage_type>
416
+ <checksum>703C9964</checksum>
417
417
  </file>
418
418
  <file>
419
419
  <version>
420
420
  <software_program>OpenStudio</software_program>
421
- <identifier>2.1.0</identifier>
422
- <min_compatible>2.1.0</min_compatible>
421
+ <identifier>3.6.1</identifier>
422
+ <min_compatible>3.6.1</min_compatible>
423
423
  </version>
424
424
  <filename>measure.rb</filename>
425
425
  <filetype>rb</filetype>
426
426
  <usage_type>script</usage_type>
427
- <checksum>46D0F702</checksum>
427
+ <checksum>C6A94521</checksum>
428
428
  </file>
429
429
  <file>
430
430
  <filename>report.html.erb</filename>
@@ -432,5 +432,11 @@
432
432
  <usage_type>resource</usage_type>
433
433
  <checksum>062A5AA5</checksum>
434
434
  </file>
435
+ <file>
436
+ <filename>timeseries_data.csv</filename>
437
+ <filetype>csv</filetype>
438
+ <usage_type>test</usage_type>
439
+ <checksum>3E875A75</checksum>
440
+ </file>
435
441
  </files>
436
442
  </measure>
@@ -5,6 +5,6 @@
5
5
 
6
6
  module OpenStudio
7
7
  module Calibration
8
- VERSION = '0.8.0'.freeze
8
+ VERSION = '0.9.0'.freeze
9
9
  end
10
10
  end
@@ -30,8 +30,8 @@ Gem::Specification.new do |spec|
30
30
  spec.required_ruby_version = '~> 2.7.0'
31
31
 
32
32
  spec.add_dependency 'bundler', '~> 2.1'
33
- spec.add_dependency 'openstudio-extension', '~> 0.6.1'
34
- spec.add_dependency 'openstudio-standards', '~> 0.4.0'
33
+ spec.add_dependency 'openstudio-extension', '~> 0.7.0'
34
+ spec.add_dependency 'openstudio-standards', '~> 0.5.0'
35
35
 
36
36
  spec.add_development_dependency 'rake', '~> 13.0'
37
37
  spec.add_development_dependency 'rspec', '~> 3.9'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-calibration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Ball
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-06-12 00:00:00.000000000 Z
12
+ date: 2023-12-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -31,28 +31,28 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.6.1
34
+ version: 0.7.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.6.1
41
+ version: 0.7.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: openstudio-standards
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.4.0
48
+ version: 0.5.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 0.4.0
55
+ version: 0.5.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -253,7 +253,6 @@ files:
253
253
  - lib/measures/RoofThermalPropertiesPercentChange/measure.xml
254
254
  - lib/measures/TimeseriesObjectiveFunction/LICENSE.md
255
255
  - lib/measures/TimeseriesObjectiveFunction/README.md
256
- - lib/measures/TimeseriesObjectiveFunction/README.md.erb
257
256
  - lib/measures/TimeseriesObjectiveFunction/measure.rb
258
257
  - lib/measures/TimeseriesObjectiveFunction/measure.xml
259
258
  - lib/measures/TimeseriesObjectiveFunction/resources/report.html.erb
@@ -295,7 +294,7 @@ licenses: []
295
294
  metadata:
296
295
  bug_tracker_uri: https://github.com/NREL/openstudio-calibration-gem/issues
297
296
  changelog_uri: https://github.com/NREL/openstudio-calibration-gem/blob/develop/CHANGELOG.md
298
- source_code_uri: https://github.com/NREL/openstudio-calibration-gem/tree/v0.8.0
297
+ source_code_uri: https://github.com/NREL/openstudio-calibration-gem/tree/v0.9.0
299
298
  post_install_message:
300
299
  rdoc_options: []
301
300
  require_paths:
@@ -1,42 +0,0 @@
1
- <%#= README.md.erb is used to auto-generate README.md. %>
2
- <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3
- ###### (Automatically generated documentation)
4
-
5
- # <%= name %>
6
-
7
- ## Description
8
- <%= description %>
9
-
10
- ## Modeler Description
11
- <%= modelerDescription %>
12
-
13
- ## Measure Type
14
- <%= measureType %>
15
-
16
- ## Taxonomy
17
- <%= taxonomy %>
18
-
19
- ## Arguments
20
-
21
- <% arguments.each do |argument| %>
22
- ### <%= argument[:display_name] %>
23
- <%= argument[:description] %>
24
- **Name:** <%= argument[:name] %>,
25
- **Type:** <%= argument[:type] %>,
26
- **Units:** <%= argument[:units] %>,
27
- **Required:** <%= argument[:required] %>,
28
- **Model Dependent:** <%= argument[:model_dependent] %>
29
- <% end %>
30
-
31
- <% if arguments.size == 0 %>
32
- <%= "This measure does not have any user arguments" %>
33
- <% end %>
34
-
35
- <% if outputs.size > 0 %>
36
- ## Outputs
37
- <% output_names = [] %>
38
- <% outputs.each do |output| %>
39
- <% output_names << output[:display_name] %>
40
- <% end %>
41
- <%= output_names.join(", ") %>
42
- <% end %>