diff --git a/src/allotropy/allotrope/schema_mappers/adm/spectrophotometry/benchling/_2023/_12/spectrophotometry.py b/src/allotropy/allotrope/schema_mappers/adm/spectrophotometry/benchling/_2023/_12/spectrophotometry.py index 4a8ed81465..4f41ee72f1 100644 --- a/src/allotropy/allotrope/schema_mappers/adm/spectrophotometry/benchling/_2023/_12/spectrophotometry.py +++ b/src/allotropy/allotrope/schema_mappers/adm/spectrophotometry/benchling/_2023/_12/spectrophotometry.py @@ -127,6 +127,7 @@ class MeasurementGroup: container_type: str | None = None processed_data: ProcessedData | None = None + custom_info: dict[str, Any] | None = None @dataclass(frozen=True) @@ -194,16 +195,19 @@ def _get_technique_document( ) -> SpectrophotometryDocumentItem: return SpectrophotometryDocumentItem( analyst=measurement_group.analyst, - measurement_aggregate_document=MeasurementAggregateDocument( - measurement_time=self.get_date_time( - assert_not_none(measurement_group.measurement_time) + measurement_aggregate_document=add_custom_information_document( + MeasurementAggregateDocument( + measurement_time=self.get_date_time( + assert_not_none(measurement_group.measurement_time) + ), + experiment_type=measurement_group.experiment_type, + container_type=metadata.container_type, + measurement_document=[ + self._get_measurement_document_item(measurement, metadata) + for measurement in measurement_group.measurements + ], ), - experiment_type=measurement_group.experiment_type, - container_type=metadata.container_type, - measurement_document=[ - self._get_measurement_document_item(measurement, metadata) - for measurement in measurement_group.measurements - ], + measurement_group.custom_info, ), ) diff --git a/src/allotropy/parsers/thermo_fisher_visionlite/thermo_fisher_visionlite_structure.py b/src/allotropy/parsers/thermo_fisher_visionlite/thermo_fisher_visionlite_structure.py index caa112f610..2e1852310e 100644 --- a/src/allotropy/parsers/thermo_fisher_visionlite/thermo_fisher_visionlite_structure.py +++ b/src/allotropy/parsers/thermo_fisher_visionlite/thermo_fisher_visionlite_structure.py @@ -124,6 +124,9 @@ def create( analyst=header.analyst, measurement_time=header.measurement_time, experiment_type=experiment_type.value, + custom_info=reader.header.get_unread(skip={"File Name"}) + if reader.header + else {}, measurements=[ Measurement( type_=experiment_type.measurement_type, @@ -139,7 +142,7 @@ def create( for _, row in data.iterrows(): row_data = SeriesData(row) measurements = _get_absorbance_measurements( - row_data, experiment_type, wavelength_cols + row_data, experiment_type, wavelength_cols, reader.header ) measurement_groups.append( MeasurementGroup( @@ -196,6 +199,7 @@ def _get_absorbance_measurements( data: SeriesData, experiment_type: ExperimentType, wavelength_cols: dict[int, str], + header: SeriesData | None = None, ) -> list[Measurement]: if experiment_type == ExperimentType.QUANT: ordinate_col = "Ordinate [A]" @@ -232,6 +236,10 @@ def _get_absorbance_measurements( absorbance=measurement.absorbance, dilution_factor_setting=data.get(float, "Dilution factor"), detector_wavelength_setting=try_float_or_none(measurement.wavelength), + custom_info={ + **data.get_unread(skip={"Result"}), + **(header.get_unread(skip={"File Name"}) if header else {}), + }, ) for measurement in absorbance_measurements ]