From 68e95e8423d71272648392b55ac94a111075eba1 Mon Sep 17 00:00:00 2001 From: Braden Date: Wed, 3 Jul 2024 10:37:46 -0600 Subject: [PATCH 1/5] Removed legacy measurement data from DistanceOpticScreen and updated documentation. --- opencsp/app/sofast/lib/DistanceOpticScreen.py | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/opencsp/app/sofast/lib/DistanceOpticScreen.py b/opencsp/app/sofast/lib/DistanceOpticScreen.py index f62148844..c7ffbe3f1 100644 --- a/opencsp/app/sofast/lib/DistanceOpticScreen.py +++ b/opencsp/app/sofast/lib/DistanceOpticScreen.py @@ -19,7 +19,7 @@ class DistanceOpticScreen(h5.HDF5_IO_Abstract): dist_optic_screen: float = 0 """ Optic-screen distance, meters. """ - def save_to_hdf(self, file: str, prefix: str) -> None: + def save_to_hdf(self, file: str, prefix: str = '') -> None: """Saves data to given file. Data is stored as: PREFIX + Folder/Field_1 Parameters @@ -30,14 +30,14 @@ def save_to_hdf(self, file: str, prefix: str) -> None: Prefix to append to folder path within HDF file (folders must be separated by "/"). Default is empty string ''. """ - datasets = [prefix + '/v_measure_point_facet', prefix + '/dist_optic_screen'] + datasets = [prefix + 'v_measure_point_facet', prefix + 'dist_optic_screen'] data = [self.v_measure_point_facet.data.squeeze(), self.dist_optic_screen] # Save data h5.save_hdf5_datasets(data, datasets, file) @classmethod - def load_from_hdf(cls, file: str, prefix: str): + def load_from_hdf(cls, file: str, prefix: str = ''): """Loads data from given file. Assumes data is stored as: PREFIX + Folder/Field_1 Parameters @@ -48,26 +48,10 @@ def load_from_hdf(cls, file: str, prefix: str): Prefix to append to folder path within HDF file (folders must be separated by "/"). Default is empty string ''. """ - groups, file_names_and_shapes = h5.get_groups_and_datasets(file) - file_names = [name for name, shape in file_names_and_shapes] - datasets = [] - for s in ['/measure_point', '/v_measure_point_facet', '/dist_optic_screen', '/optic_screen_dist']: - dataset = prefix + s - if dataset in file_names: - datasets.append(dataset) + datasets = [prefix + 'v_measure_point_facet', prefix + 'dist_optic_screen'] - # Load grid data - # datasets = [prefix + '/measure_point', prefix + '/dist_optic_screen'] + # Load data kwargs = h5.load_hdf5_datasets(datasets, file) - - # TODO update all existing HDF5 files to use consistent naming - if 'measure_point' in kwargs: - kwargs['v_measure_point_facet'] = kwargs['measure_point'] - del kwargs['measure_point'] - if 'optic_screen_dist' in kwargs: - kwargs['dist_optic_screen'] = kwargs['optic_screen_dist'] - del kwargs['optic_screen_dist'] - kwargs['v_measure_point_facet'] = Vxyz(kwargs['v_measure_point_facet']) return cls(**kwargs) From ecfce48176fc5a6332bccdcbe89e6af8dc9cb7c6 Mon Sep 17 00:00:00 2001 From: Braden Date: Wed, 3 Jul 2024 10:38:30 -0600 Subject: [PATCH 2/5] Udated documentation and fixed prefix in AbstractMeasurementSofast --- .../sofast/lib/AbstractMeasurementSofast.py | 28 ++++--------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/opencsp/app/sofast/lib/AbstractMeasurementSofast.py b/opencsp/app/sofast/lib/AbstractMeasurementSofast.py index 483c39083..64c20e1dc 100644 --- a/opencsp/app/sofast/lib/AbstractMeasurementSofast.py +++ b/opencsp/app/sofast/lib/AbstractMeasurementSofast.py @@ -56,18 +56,9 @@ def dist_optic_screen(self): return self.dist_optic_screen_measure.dist_optic_screen @classmethod - def _load_from_hdf(cls, file: str, prefix: str) -> dict[str, any]: - """ - Loads from HDF file - - Parameters - ---------- - file : string - HDF file to load - - """ + def _load_from_hdf(cls, file: str, prefix: str = '') -> dict[str, any]: # Load grid data - datasets = [prefix + '/date', prefix + '/name'] + datasets = [prefix + 'date', prefix + 'name'] kwargs = h5.load_hdf5_datasets(datasets, file) kwargs['dist_optic_screen_measure'] = sod.DistanceOpticScreen.load_from_hdf(file, prefix) @@ -75,18 +66,9 @@ def _load_from_hdf(cls, file: str, prefix: str) -> dict[str, any]: return kwargs - def _save_to_hdf(self, file: str, prefix: str) -> None: - """ - Saves to HDF file - - Parameters - ---------- - file : string - HDF file to save - - NOTE: Collection date is saved as string in iso-format. - """ - datasets = [prefix + '/date', prefix + '/name'] + def _save_to_hdf(self, file: str, prefix: str = '') -> None: + # NOTE: Collection date is saved as string in iso-format. + datasets = [prefix + 'date', prefix + 'name'] data = [self.date.isoformat(), self.name] # Save data From 0131967e9f755193ad390c8b1cd0775b323136be Mon Sep 17 00:00:00 2001 From: Braden Date: Wed, 3 Jul 2024 10:39:04 -0600 Subject: [PATCH 3/5] Udated documentation and fixed prefix in MeasurementSofastFixed --- .../app/sofast/lib/MeasurementSofastFixed.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/opencsp/app/sofast/lib/MeasurementSofastFixed.py b/opencsp/app/sofast/lib/MeasurementSofastFixed.py index 0263e507c..4c43d1761 100644 --- a/opencsp/app/sofast/lib/MeasurementSofastFixed.py +++ b/opencsp/app/sofast/lib/MeasurementSofastFixed.py @@ -41,37 +41,42 @@ def __init__( self.origin = origin @classmethod - def load_from_hdf(cls, file: str, prefix='') -> 'MeasurementSofastFixed': + def load_from_hdf(cls, file: str, prefix: str = '') -> 'MeasurementSofastFixed': """ - Loads from HDF file + Loads data from given file. Assumes data is stored as: PREFIX + MeasurementSofastFringe/Field_1 Parameters ---------- file : string HDF file to load - + prefix : str, optional + Prefix to append to folder path within HDF file (folders must be separated by "/"). + Default is empty string ''. """ # Load grid data datasets = [prefix + 'MeasurementSofastFixed/image', prefix + 'MeasurementSofastFixed/origin'] kwargs = hdf5_tools.load_hdf5_datasets(datasets, file) - kwargs.update(super()._load_from_hdf(file, prefix + 'MeasurementSofastFixed')) + kwargs.update(super()._load_from_hdf(file, prefix + 'MeasurementSofastFixed/')) kwargs['origin'] = Vxy(kwargs['origin']) return cls(**kwargs) - def save_to_hdf(self, file: str, prefix='') -> None: + def save_to_hdf(self, file: str, prefix: str = '') -> None: """ - Saves to HDF file + Saves data to given file. Data is stored as: PREFIX + MeasurementSofastFringe/Field_1 Parameters ---------- file : string HDF file to save + prefix : str, optional + Prefix to append to folder path within HDF file (folders must be separated by "/"). + Default is empty string ''. """ datasets = [prefix + 'MeasurementSofastFixed/image', prefix + 'MeasurementSofastFixed/origin'] data = [self.image, self.origin.data.squeeze()] # Save data hdf5_tools.save_hdf5_datasets(data, datasets, file) - super()._save_to_hdf(file, prefix + 'MeasurementSofastFixed') + super()._save_to_hdf(file, prefix + 'MeasurementSofastFixed/') From c5d2251004b57676d648f7c08c334b4994be17b3 Mon Sep 17 00:00:00 2001 From: Braden Date: Wed, 3 Jul 2024 10:39:18 -0600 Subject: [PATCH 4/5] Udated documentation and fixed prefix in MeasurementSofastFringe --- .../app/sofast/lib/MeasurementSofastFringe.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/opencsp/app/sofast/lib/MeasurementSofastFringe.py b/opencsp/app/sofast/lib/MeasurementSofastFringe.py index 1ffe10a0a..5428e9c5d 100644 --- a/opencsp/app/sofast/lib/MeasurementSofastFringe.py +++ b/opencsp/app/sofast/lib/MeasurementSofastFringe.py @@ -119,15 +119,17 @@ def calibrate_fringe_images(self, calibration: ImageCalibrationAbstract, **kwarg self._fringe_images_calibrated = calibration.apply_to_images(self, **kwargs) @classmethod - def load_from_hdf(cls, file: str, prefix='') -> 'MeasurementSofastFringe': + def load_from_hdf(cls, file: str, prefix: str = '') -> 'MeasurementSofastFringe': """ - Loads from HDF file + Loads data from given file. Assumes data is stored as: PREFIX + MeasurementSofastFringe/Field_1 Parameters ---------- file : string HDF file to load - + prefix : str, optional + Prefix to append to folder path within HDF file (folders must be separated by "/"). + Default is empty string ''. """ # Load grid data datasets = [ @@ -137,18 +139,21 @@ def load_from_hdf(cls, file: str, prefix='') -> 'MeasurementSofastFringe': prefix + 'MeasurementSofastFringe/fringe_periods_y', ] kwargs = hdf5_tools.load_hdf5_datasets(datasets, file) - kwargs.update(super()._load_from_hdf(file, prefix + 'MeasurementSofastFringe')) + kwargs.update(super()._load_from_hdf(file, prefix + 'MeasurementSofastFringe/')) return cls(**kwargs) - def save_to_hdf(self, file: str, prefix='') -> None: + def save_to_hdf(self, file: str, prefix: str = '') -> None: """ - Saves to HDF file + Saves data to given file. Data is stored as: PREFIX + MeasurementSofastFringe/Field_1 Parameters ---------- file : string HDF file to save + prefix : str, optional + Prefix to append to folder path within HDF file (folders must be separated by "/"). + Default is empty string ''. """ datasets = [ prefix + 'MeasurementSofastFringe/mask_images', @@ -160,4 +165,4 @@ def save_to_hdf(self, file: str, prefix='') -> None: # Save data hdf5_tools.save_hdf5_datasets(data, datasets, file) - super()._save_to_hdf(file, prefix + 'MeasurementSofastFringe') + super()._save_to_hdf(file, prefix + 'MeasurementSofastFringe/') From 67da2ef53e3a04ba55419ce70ac3b388ff5b721c Mon Sep 17 00:00:00 2001 From: Braden Date: Wed, 3 Jul 2024 10:39:31 -0600 Subject: [PATCH 5/5] Updated unit test Sofast measurements. --- .../pose_1.h5 | Bin 4294620 -> 4294948 bytes .../pose_3.h5 | Bin 4294620 -> 4294948 bytes .../pose_4.h5 | Bin 4294620 -> 4294948 bytes .../data_measurement/measurement_ensemble.h5 | Bin 1073660 -> 1074340 bytes .../data_measurement/measurement_facet.h5 | Bin 1073660 -> 1074340 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/opencsp/test/data/display_shape_calibration/data_measurement/screen_shape_sofast_measurements/pose_1.h5 b/opencsp/test/data/display_shape_calibration/data_measurement/screen_shape_sofast_measurements/pose_1.h5 index 9cb41f35ecb66a08af9e669ebc80c908b208774b..cd82a8d272d77014d54ac175a1d26acaee554543 100644 GIT binary patch delta 451 zcmXxgxlRIM5WsQ1#YI*{#rr-{7QDb4?`>?gQ>&HW8i)}HpuvvB1Y)K56~2IpHPM9D z#>CPGAkj|Wz}CMKC;4S2nWLD>bzZr@%_}#$;<+mMJ$9kU9s96*%T|p_!T2lQN~KRB zqiVC*f4op%6rsvZr%!yz1I;U=&TR2HdzsS;IZZ%;9W_wlKrNj3ovA}T8sI`Bn$Qe4 zTF{C%w4(!^=t4Jo(2G9wV*rB~!Z1cK3J=CG4li{0;Ku|eF@y-p3a8IfmYGb%;u-Te9I-NVk7DVJ xnMh`05i=c0SysHd`G3K7SPtsOx8tF*X9VPj>JWDM?)1rkri(YJY2M=V>kt0agj@gs delta 383 zcmXZSIZnes0EJ=3gYh^C`@SR)2-pdm17Tl+8$<^k93e;)lps-9LQ3dxn8Fu8qP9TF z3Fs&|fD4q1z>nZbU-6{>`KfLsk98w-jieEm3Q`DtD)XWi$KOIk9 t3)|SiF7~jG1014?qgG)1Z^u!kEl;AWGvABu+ER(IRd#*HdP&ZG?+0MNb0h!& diff --git a/opencsp/test/data/display_shape_calibration/data_measurement/screen_shape_sofast_measurements/pose_3.h5 b/opencsp/test/data/display_shape_calibration/data_measurement/screen_shape_sofast_measurements/pose_3.h5 index 95d7b02842ada94a3a82e9ba49c5aee97edfb36a..5dc1ea9a7f08015033c2219a536d3566f95fada7 100644 GIT binary patch delta 451 zcmXxgxlRIM5WsQ1#YI*{#rr-{7QDb4?`>?gQ>&HW8i)}HpuvvB1Y)K56~2IpHPM9D z#>CPGAkj|Wz}CMKC;4S2nWLD>bzZr@%_}#$;<+mMJ$9kU9s96*%T|p_!T2lQN~KRB zqiVC*f4op%6rsvZr%!yz1I;U=&TR2HdzsS;IZZ%;9W_wlKrNj3ovA}T8sI`Bn$Qe4 zTF{C%w4(!^=t4Jo(2G9wV*rB~!Z1cK3J=CG4li{0;Ku|eF@y-p3a8IfmYGb%;u-Te9I-NVk7DVJ xnMh`05i=c0SysHd`G3K7SPtsOx8tF*X9VPj>JWDM?)1rkri(YJY2M=V>kt0agj@gs delta 383 zcmXZSIZnes0EJ=3gYh^C`@SR)2-pdm17Tl+8$<^k93e;)lps-9LQ3dxn8Fu8qP9TF z3Fs&|fD4q1z>nZbU-6{>`KfLsk98w-jieEm3Q`DtD)XWi$KOIk9 t3)|SiF7~jG1014?qgG)1Z^u!kEl;AWGvABu+ER(IRd#*HdP&ZG?+0MNb0h!& diff --git a/opencsp/test/data/display_shape_calibration/data_measurement/screen_shape_sofast_measurements/pose_4.h5 b/opencsp/test/data/display_shape_calibration/data_measurement/screen_shape_sofast_measurements/pose_4.h5 index 543648039939dd0318178e2582c92f9bb797371f..432c35d85432f3135d83841e04ddbc211f53540f 100644 GIT binary patch delta 451 zcmXxgxlRIM5WsQ1#YI*{#rr-{7QDb4?`>?gQ>&HW8i)}HpuvvB1Y)K56~2IpHPM9D z#>CPGAkj|Wz}CMKC;4S2nWLD>bzZr@%_}#$;<+mMJ$9kU9s96*%T|p_!T2lQN~KRB zqiVC*f4op%6rsvZr%!yz1I;U=&TR2HdzsS;IZZ%;9W_wlKrNj3ovA}T8sI`Bn$Qe4 zTF{C%w4(!^=t4Jo(2G9wV*rB~!Z1cK3J=CG4li{0;Ku|eF@y-p3a8IfmYGb%;u-Te9I-NVk7DVJ xnMh`05i=c0SysHd`G3K7SPtsOx8tF*X9VPj>JWDM?)1rkri(YJY2M=V>kt0agj@gs delta 383 zcmXZSIZnes0EJ=3gYh^C`@SR)2-pdm17Tl+8$<^k93e;)lps-9LQ3dxn8Fu8qP9TF z3Fs&|fD4q1z>nZbU-6{>`KfLsk98w-jieEm3Q`DtD)XWi$KOIk9 t3)|SiF7~jG1014?qgG)1Z^u!kEl;AWGvABu+ER(IRd#*HdP&ZG?+0MNb0h!& diff --git a/opencsp/test/data/sofast_fringe/data_measurement/measurement_ensemble.h5 b/opencsp/test/data/sofast_fringe/data_measurement/measurement_ensemble.h5 index 29adbc9fef0617bf4c3595fa36a8572543672f7c..05cf10318e2165d6567efe5329a80ddf88524ea3 100644 GIT binary patch delta 275 zcmex!*m228#|autOHwv!sW3A#P4;J26m(#KfS6gIh-?Ie zV)&CNFmYq-<_D~COpL6P?Kw0VS4@uNRG*x|Q8DpAMRNmZdjlsU5HkTWGZ3=?F)I+W z0Wmuea{w_&4Hpn|12GQ}^8zs+5c6+u;1sBdnEr>6F@pC1)ItpqJw1_$QQNXCJ~uV7 zxU?uWz92s{uOvP#F*&saD4UX5ToRvOP?DJ(Uz}W&nwkgI3UxZef{7caPkzA4#>hPR VK8NOH15ORb36nWF)h8Y}0RXgvN+SRO delta 178 zcmZ2-((%t>#|aute-bxpsW3A#PWES3WX#yO@js*R1_lV20HyyhGEUqWyZHfY91|nQ zWP1+H$rCs#xHzD)8tfA{%5g_Pd2bkiYGo(;{pXlIC0Rg$F=KKjhkA1ZXL|!DBM>tI qF*6Xe05K~NvjH(X5OV-ANDUVda|1CC5c2{t9}x3zZ{QTDi2wi>1Ta(p diff --git a/opencsp/test/data/sofast_fringe/data_measurement/measurement_facet.h5 b/opencsp/test/data/sofast_fringe/data_measurement/measurement_facet.h5 index ea03e3037e7abfa8dd58da2f54d054e6eff50ab8..d895221a9589f9ab7418a0a2ea3b67567c47d2f6 100644 GIT binary patch delta 275 zcmex!*m228#|autOHwv!sW3A#P4;J26m(#KfS6gIh-?Ie zV)&CNFmYq-<_D~COpL6P?Kw0VS4@uNRG*x|Q8DpAMRNmZdjlsU5HkTWGZ3=?F)I+W z0Wmuea{w_&4Hpn|12GQ}^8zs+5c6+u;1sBdnEr>6F@pC1)ItpqJw1_$QQNXCJ~uV7 zxU?uWz92s{uOvP#F*&saD4UX5ToRvOP?DJ(Uz}W&nwkgI3UxZef{7caPkzA4#>hPR VK8NOH15ORb36nWF)h8Y}0RXgvN+SRO delta 178 zcmZ2-((%t>#|aute-bxpsW3A#PWES3WX#yO@js*R1_lV20HyyhGEUqWyZHfY91|nQ zWP1+H$rCs#xHzD)8tfA{%5g_Pd2bkiYGo(;{pXlIC0Rg$F=KKjhkA1ZXL|!DBM>tI qF*6Xe05K~NvjH(X5OV-ANDUVda|1CC5c2{t9}x3zZ{QTDi2wi>1Ta(p