From 95c156ade696dda33732649b32c49a40bee6026e Mon Sep 17 00:00:00 2001 From: Mikkel Pedersen Date: Wed, 15 Feb 2023 17:42:22 +0100 Subject: [PATCH] fix(postprocess): Add multiple functions for vis-metadata --- pollination/honeybee_radiance/post_process.py | 42 +++++++++++++++ tests/post_process_test.py | 52 ++++++++++++++++++- 2 files changed, 93 insertions(+), 1 deletion(-) diff --git a/pollination/honeybee_radiance/post_process.py b/pollination/honeybee_radiance/post_process.py index ea66006..48c71ee 100644 --- a/pollination/honeybee_radiance/post_process.py +++ b/pollination/honeybee_radiance/post_process.py @@ -570,6 +570,34 @@ def create_point_in_time_config(self): cfg_file = Outputs.file(description='Output config file.', path='config.json') +@dataclass +class CumulativeRadiationVisMetadata(Function): + """Create a visualization metadata file for cumulative radiation.""" + + @command + def create_cumulative_radiation_vis_data(self): + return 'honeybee-radiance post-process cumulative-radiation-vis-metadata ' \ + '--output-file vis_metadata.json' + + # outputs + cfg_file = Outputs.file( + description='Output visualization metadata file.', path='vis_metadata.json') + + +@dataclass +class AverageIrradianceVisMetadata(Function): + """Create a visualization metadata file for average irradiance.""" + + @command + def create_average_irradiance_vis_data(self): + return 'honeybee-radiance post-process average-irradiance-vis-metadata ' \ + '--output-file vis_metadata.json' + + # outputs + cfg_file = Outputs.file( + description='Output visualization metadata file.', path='vis_metadata.json') + + @dataclass class CumulativeRadiationConfig(Function): """Create a config file for cumulative-radiation results.""" @@ -614,6 +642,20 @@ def create_point_in_time_config(self): cfg_file = Outputs.file(description='Output config file.', path='config.json') +@dataclass +class SkyViewVisMetadata(Function): + """Create a visualization metadata file for sky view.""" + + @command + def create_sky_view_vis_data(self): + return 'honeybee-radiance post-process sky-view-vis-metadata ' \ + '--output-file vis_metadata.json' + + # outputs + cfg_file = Outputs.file( + description='Output visualization metadata file.', path='vis_metadata.json') + + @dataclass class SkyViewConfig(Function): """Create a config file for sky-view results.""" diff --git a/tests/post_process_test.py b/tests/post_process_test.py index 6825ed6..a8871f6 100644 --- a/tests/post_process_test.py +++ b/tests/post_process_test.py @@ -4,7 +4,9 @@ from pollination.honeybee_radiance.post_process import ConvertToBinary, SumRow, \ AnnualIrradianceMetrics, AnnualDaylightMetrics, LeedIlluminanceCredits, \ SolarTrackingSynthesis, DaylightFactorConfig, DaylightFactorVisMetadata, \ - ImagelessAnnualGlareVisMetadata, PointInTimeVisMetadata + ImagelessAnnualGlareVisMetadata, PointInTimeVisMetadata, \ + CumulativeRadiationVisMetadata, AverageIrradianceVisMetadata, \ + SkyViewVisMetadata from queenbee.plugin.function import Function @@ -99,3 +101,51 @@ def test_point_in_time_vis_metadata(): assert output_file.is_file() nukedir(folder) + +def test_cumulative_radiation_vis_metadata(): + function = CumulativeRadiationVisMetadata() + qb_function = function.queenbee + assert qb_function.name == 'cumulative-radiation-vis-metadata' + assert isinstance(qb_function, Function) + + inputs = {} # inputs is empty for this function + folder = Path('./tests/assets/temp') + if not folder.exists(): + folder.mkdir(parents=True) + output_file = folder.joinpath('vis_metadata.json') + function._try(inputs, folder=folder) + assert output_file.is_file() + + nukedir(folder) + +def test_average_irradiance_vis_metadata(): + function = AverageIrradianceVisMetadata() + qb_function = function.queenbee + assert qb_function.name == 'average-irradiance-vis-metadata' + assert isinstance(qb_function, Function) + + inputs = {} # inputs is empty for this function + folder = Path('./tests/assets/temp') + if not folder.exists(): + folder.mkdir(parents=True) + output_file = folder.joinpath('vis_metadata.json') + function._try(inputs, folder=folder) + assert output_file.is_file() + + nukedir(folder) + +def test_sky_view_vis_metadata(): + function = SkyViewVisMetadata() + qb_function = function.queenbee + assert qb_function.name == 'sky-view-vis-metadata' + assert isinstance(qb_function, Function) + + inputs = {} # inputs is empty for this function + folder = Path('./tests/assets/temp') + if not folder.exists(): + folder.mkdir(parents=True) + output_file = folder.joinpath('vis_metadata.json') + function._try(inputs, folder=folder) + assert output_file.is_file() + + nukedir(folder)