diff --git a/src/allotropy/allotrope/schema_mappers/adm/liquid_chromatography/benchling/_2023/_09/liquid_chromatography.py b/src/allotropy/allotrope/schema_mappers/adm/liquid_chromatography/benchling/_2023/_09/liquid_chromatography.py index d8a2a27aa2..8550e50836 100644 --- a/src/allotropy/allotrope/schema_mappers/adm/liquid_chromatography/benchling/_2023/_09/liquid_chromatography.py +++ b/src/allotropy/allotrope/schema_mappers/adm/liquid_chromatography/benchling/_2023/_09/liquid_chromatography.py @@ -146,6 +146,7 @@ class Fraction: field_type: str | None = None retention_time: float | None = None retention_volume: float | None = None + custom_info: dict[str, Any] | None = None @dataclass(frozen=True) @@ -155,6 +156,7 @@ class Log: log_entry: str | None = None retention_time: float | None = None retention_volume: float | None = None + custom_info: dict[str, Any] | None = None @dataclass(frozen=True) @@ -236,6 +238,7 @@ class Measurement: injection_custom_info: dict[str, Any] | None = None column_custom_info: dict[str, Any] | None = None measurement_custom_info: dict[str, Any] | None = None + processed_data_custom_info: dict[str, Any] | None = None @dataclass(frozen=True) @@ -361,11 +364,9 @@ def _get_measurement_document_item( for device_control_doc in measurement.device_control_docs ] ), - chromatogram_data_cube=( - get_data_cube( - measurement.chromatogram_data_cube, - ChromatogramDataCube, - ) + chromatogram_data_cube=get_data_cube( + measurement.chromatogram_data_cube, + ChromatogramDataCube, ), ), measurement.measurement_custom_info, @@ -547,17 +548,27 @@ def build_data_document_item( if pdd and get_data_processing_documents(pdd) else None ) - item = ProcessedDataDocumentItem( - chromatogram_data_cube=get_data_cube( - measurement.processed_data_chromatogram_data_cube, TDatacube - ), - derived_column_pressure_data_cube=get_data_cube( - measurement.derived_column_pressure_data_cube, - DerivedColumnPressureDataCube, + item = add_custom_information_document( + ProcessedDataDocumentItem( + chromatogram_data_cube=add_custom_information_document( + get_data_cube( + measurement.processed_data_chromatogram_data_cube, TDatacube + ), + getattr( + measurement.processed_data_chromatogram_data_cube, + "custom_info", + None, + ), + ), + derived_column_pressure_data_cube=get_data_cube( + measurement.derived_column_pressure_data_cube, + DerivedColumnPressureDataCube, + ), + processed_data_identifier=measurement.processed_data_identifier, + peak_list=build_peak_list(), + data_processing_aggregate_document=data_processing, ), - processed_data_identifier=measurement.processed_data_identifier, - peak_list=build_peak_list(), - data_processing_aggregate_document=data_processing, + measurement.processed_data_custom_info, ) return ( add_custom_information_document(item, pdd.custom_info) if pdd else item @@ -670,7 +681,7 @@ def _get_fraction_aggregate_document( ) def _get_fraction_document(self, fraction_doc: Fraction) -> FractionDocumentItem: - return FractionDocumentItem( + fraction_doc_item = FractionDocumentItem( index=fraction_doc.index, fraction_role=fraction_doc.fraction_role, field_type=fraction_doc.field_type, @@ -682,6 +693,10 @@ def _get_fraction_document(self, fraction_doc: Fraction) -> FractionDocumentItem ), ) + return add_custom_information_document( + fraction_doc_item, fraction_doc.custom_info + ) + def _get_log_aggregate_document( self, logs: list[Log] | None ) -> LogAggregateDocument | None: @@ -693,7 +708,7 @@ def _get_log_aggregate_document( ) def _get_log_document(self, log_doc: Log) -> LogDocumentItem: - return LogDocumentItem( + log_doc_item = LogDocumentItem( index=log_doc.index, method_identifier=log_doc.method_identifier, log_entry=log_doc.log_entry, @@ -704,3 +719,4 @@ def _get_log_document(self, log_doc: Log) -> LogDocumentItem: TQuantityValueMilliliter, log_doc.retention_volume ), ) + return add_custom_information_document(log_doc_item, log_doc.custom_info) diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurement_group.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurement_group.py index 0467a5ef92..2279889762 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurement_group.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurement_group.py @@ -63,14 +63,34 @@ def create_measurement_groups( TemperatureMeasurement.create_or_none(handler, elements, static_docs), ] - return [ + measurement_group = [ MeasurementGroup( measurements=[measurement for measurement in measurements if measurement], fractions=create_fractions(event_curves) if event_curves else None, logs=create_logs(event_curves) if event_curves else None, + measurement_aggregate_custom_info={}, ) ] + chrom_1.mark_read({"element:TimeUnit", "element:VolumeUnit", "element:IsReadonly"}) + custom_info = chrom_1.get_unread() + + if measurement_group[0].measurement_aggregate_custom_info is not None: + custom_info.pop("UNICORNVersion") + custom_info.update( + { + "RunIndex": results.get_sub_text_or_none("RunIndex"), + "RunType": results.get_sub_text_or_none("RunType"), + "Name": results.get_sub_text_or_none("Name"), + } + ) + custom_info_sorted = dict(sorted(custom_info.items())) + measurement_group[0].measurement_aggregate_custom_info.update( + custom_info_sorted + ) + + return measurement_group + def create_fractions(event_curves: StrictXmlElement) -> list[Fraction]: event_curve_fraction = None @@ -94,6 +114,7 @@ def create_fractions(event_curves: StrictXmlElement) -> list[Fraction]: else t_min * 60 ), retention_volume=event.get_sub_float_or_none("EventVolume"), + custom_info=event.get_unread(), ) for idx, event in enumerate(events.findall("Event"), start=1) if event.get_attr_or_none("EventType") in ["Fraction", "Method"] @@ -144,6 +165,7 @@ def create_logs(event_curves: StrictXmlElement) -> list[Log]: else t_min * 60 ), retention_volume=event.get_sub_float_or_none("EventVolume"), + custom_info=event.get_unread(), ) ) diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/absorbance.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/absorbance.py index ecff7dfc37..6973a80be8 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/absorbance.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/absorbance.py @@ -57,7 +57,7 @@ def create_or_none( elements: list[StrictXmlElement], static_docs: StaticDocs, ) -> UnicornMeasurement: - return cls.get_measurement( + measurement = cls.get_measurement( static_docs=static_docs, chromatogram_data_cube=assert_not_none( cls.get_data_cube_or_none( @@ -75,10 +75,15 @@ def create_or_none( DeviceControlDoc( device_type=DEVICE_TYPE, start_time=static_docs.start_time, + device_control_custom_info={}, ) ], peaks=cls.get_peaks(handler), ) + cls.add_custom_info( + measurement, cls.filter_curve_or_none(elements, cls.get_curve_regex()) + ) + return measurement class AbsorbanceMeasurement1(AbsorbanceMeasurement): @@ -150,8 +155,9 @@ def get_peaks_custom_info( def get_peaks(cls, handler: UnicornZipHandler) -> list[Peak]: chrom_1 = handler.get_chrom_1() peaks = chrom_1.recursive_find_or_none(["PeakTables", "PeakTable", "Peaks"]) - return [ - Peak( + output = [] + for idx, peak in enumerate(peaks.findall("Peak") if peaks else [], start=1): + peak_obj = Peak( identifier=random_uuid_str(), index=f"Peak {idx}", end=peak.get_sub_float_or_none("EndPeakRetention"), @@ -172,8 +178,10 @@ def get_peaks(cls, handler: UnicornZipHandler) -> list[Peak]: chromatographic_asymmetry=peak.get_sub_float_or_none("Assymetry"), custom_info=cls.get_peaks_custom_info(peak), ) - for idx, peak in enumerate(peaks.findall("Peak") if peaks else [], start=1) - ] + if peak_obj.custom_info is not None: + peak_obj.custom_info.update(peak.get_unread()) + output.append(peak_obj) + return output class AbsorbanceMeasurement2(AbsorbanceMeasurement): diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/concentration.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/concentration.py index 0af375bc0f..9cc6dbd8b1 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/concentration.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/concentration.py @@ -43,9 +43,13 @@ def create_or_none( unit="%", ), ), + device_control_custom_info={}, ), ], ) + cls.add_custom_info( + measurement, cls.filter_curve_or_none(elements, r"^Conc B$") + ) return measurement if cls.is_valid(cls.get_data_cubes(measurement)) else None @classmethod diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/conductivity.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/conductivity.py index f06c74defa..cc772885c3 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/conductivity.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/conductivity.py @@ -56,9 +56,11 @@ def create_or_none( DeviceControlDoc( device_type=DEVICE_TYPE, start_time=static_docs.start_time, + device_control_custom_info={}, ) ], ) + cls.add_custom_info(measurement, cls.filter_curve_or_none(elements, r"^Cond$")) return measurement if cls.is_valid(cls.get_data_cubes(measurement)) else None @classmethod diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/flow.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/flow.py index 3fe3ab40ac..57439410c8 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/flow.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/flow.py @@ -36,6 +36,7 @@ def create_device_control( start_time=start_time, sample_flow_data_cube=sample_flow_data_cube, system_flow_data_cube=system_flow_data_cube, + device_control_custom_info={}, ) @classmethod diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/generic.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/generic.py index 5fbb3f9c4e..ddcf78dd6d 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/generic.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/generic.py @@ -27,6 +27,66 @@ class UnicornMeasurement(Measurement): + @classmethod + def add_custom_info( + cls, measurement: Measurement, base_element: StrictXmlElement | None + ) -> None: + if base_element: + device_control_custom_info = { + "ColumnVolume": base_element.get_sub_text_or_none("ColumnVolume"), + "ScanInterval": base_element.get_sub_text_or_none("ScanInterval"), + } + + processed_data_custom_info = { + "AmplitudePrecision": base_element.get_sub_text_or_none( + "AmplitudePrecision" + ), + "AmplitudeUnit": base_element.get_sub_text_or_none("AmplitudeUnit"), + "ChromatogramID": base_element.get_sub_text_or_none("ChromatogramID"), + "ChromatogramName": base_element.get_sub_text_or_none( + "ChromatogramName" + ), + "ChromatogramStartTime": base_element.get_sub_text_or_none( + "ChromatogramStartTime" + ), + "ChromatogramStartTimeUtcOffsetMinutes": base_element.get_sub_text_or_none( + "ChromatogramStartTimeUtcOffsetMinutes" + ), + "ColumnVolumeUnitName": base_element.get_sub_text_or_none( + "ColumnVolumeUnitName" + ), + "CurveDataType": base_element.get_sub_text_or_none("CurveDataType"), + "CurveNumber": base_element.get_sub_text_or_none("CurveNumber"), + "DistanceBetweenPoints": base_element.get_sub_text_or_none( + "DistanceBetweenPoints" + ), + "DistancetoStartPoints": base_element.get_sub_text_or_none( + "DistancetoStartPoints" + ), + "IsExternal": base_element.get_sub_text_or_none("IsExternal"), + "IsOriginalData": base_element.get_sub_text_or_none("IsOriginalData"), + "IsReadOnly": base_element.get_sub_text_or_none("IsReadOnly"), + "IsoChroneType": base_element.get_sub_text_or_none("IsoChroneType"), + "MethodStartTime": base_element.get_sub_text_or_none("MethodStartTime"), + "MethodStartTimeUtcOffsetMinutes": base_element.get_sub_text_or_none( + "MethodStartTimeUtcOffsetMinutes" + ), + "TimeUnit": base_element.get_sub_text_or_none("TimeUnit"), + "VolumeUnit": base_element.get_sub_text_or_none("VolumeUnit"), + } + if ( + measurement.device_control_docs[0].device_control_custom_info + is not None + ): + measurement.device_control_docs[0].device_control_custom_info.update( + device_control_custom_info + ) + if measurement.processed_data_custom_info is not None: + processed_data_custom_info.update(base_element.get_unread()) + measurement.processed_data_custom_info.update( + processed_data_custom_info + ) + @classmethod def filter_curve_or_none( cls, curve_elements: list[StrictXmlElement], pattern: str @@ -61,13 +121,15 @@ def get_data_cube_or_none( if data_cube_handler := cls.get_data_cube_handler_or_none(handler, curve): name_element = curve.find("Name") + if name := name_element.get_text_or_none(): - return create_data_cube( + data_cube = create_data_cube( data_cube_handler, name, data_cube_component, transformation, ) + return data_cube return None @classmethod @@ -104,6 +166,7 @@ def get_measurement( "sample_volume_3": static_docs.sample_volume_3, }, peaks=peaks, + processed_data_custom_info={}, ) @classmethod diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/ph.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/ph.py index 7aae000ae9..12f7bbe0ff 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/ph.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/ph.py @@ -43,9 +43,11 @@ def create_or_none( DeviceControlDoc( device_type=DEVICE_TYPE, start_time=static_docs.start_time, + device_control_custom_info={}, ) ], ) + cls.add_custom_info(measurement, cls.filter_curve_or_none(elements, r"^pH$")) return measurement if cls.is_valid(cls.get_data_cubes(measurement)) else None @classmethod diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/pressure.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/pressure.py index eb18128995..d7805f99bd 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/pressure.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/pressure.py @@ -79,9 +79,13 @@ def create_or_none( unit="MPa", ), ), + device_control_custom_info={}, ), ], ) + cls.add_custom_info( + measurement, cls.filter_curve_or_none(elements, r"^DeltaC pressure$") + ) return measurement if cls.is_valid(cls.get_data_cubes(measurement)) else None @classmethod diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/temperature.py b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/temperature.py index c1d9478052..18474c977c 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/measurements/temperature.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/measurements/temperature.py @@ -43,9 +43,13 @@ def create_or_none( unit="degC", ), ), + device_control_custom_info={}, ), ], ) + cls.add_custom_info( + measurement, cls.filter_curve_or_none(elements, r"^Cond temp$") + ) return measurement if cls.is_valid(cls.get_data_cubes(measurement)) else None @classmethod diff --git a/src/allotropy/parsers/cytiva_unicorn/structure/metadata.py b/src/allotropy/parsers/cytiva_unicorn/structure/metadata.py index ce8b230ab5..f89e88cd35 100644 --- a/src/allotropy/parsers/cytiva_unicorn/structure/metadata.py +++ b/src/allotropy/parsers/cytiva_unicorn/structure/metadata.py @@ -36,8 +36,11 @@ def create_metadata( system_name = results.find_or_none("SystemName") firmware_version = instrument_config_data.find_or_none("FirmwareVersion") + results.mark_read( + {"element:RunIndex", "element:RunType", "element:BatchId", "element:Name"} + ) - return Metadata( + metadata = Metadata( asset_management_identifier=instrument_config.get_attr("Description"), product_manufacturer="Cytiva Life Sciences", device_identifier=system_name.get_text_or_none() if system_name else None, @@ -47,4 +50,13 @@ def create_metadata( analyst=get_audit_trail_entry_user(handler), file_name=Path(file_path).name, unc_path=file_path, + data_system_custom_info={}, + software_version=results.get_attr("UNICORNVersion"), + device_system_custom_info={ + "SystemTypeName": results.get_sub_text_or_none("SystemTypeName") + }, ) + + if metadata.data_system_custom_info is not None: + metadata.data_system_custom_info.update(results.get_unread()) + return metadata diff --git a/src/allotropy/parsers/utils/strict_xml_element.py b/src/allotropy/parsers/utils/strict_xml_element.py index 5814a3d495..ab8b8e8a8c 100644 --- a/src/allotropy/parsers/utils/strict_xml_element.py +++ b/src/allotropy/parsers/utils/strict_xml_element.py @@ -205,9 +205,16 @@ def get_unread( - attribute names without "attr:" prefix - namespaced attribute names without "ns_attr:" prefix """ + all_keys = self._get_all_available_keys() attribute_keys = self._get_all_attribute_keys() + non_attribute_keys = all_keys - attribute_keys self._handle_skip_keys(skip) - matching_keys = self._apply_regex_filter(attribute_keys, regex) + + matching_keys_attribute = self._apply_regex_filter(attribute_keys, regex) + matching_keys_non_attribute = self._apply_regex_filter( + non_attribute_keys, regex + ) + matching_keys = matching_keys_attribute | matching_keys_non_attribute unread_keys: dict[str, str | None] = {} processed_attrs: set[str] = set() @@ -217,9 +224,15 @@ def get_unread( self._process_attr_key(key, matching_keys, unread_keys, processed_attrs) elif key.startswith("ns_attr:"): self._process_ns_attr_key(key, unread_keys, processed_attrs) + elif key.startswith("element:"): + if self.should_process_element_key(key): + self._process_element_key(key, unread_keys) + else: + continue self._mark_processed_keys_as_read(matching_keys, unread_keys) - return unread_keys + + return dict(sorted(unread_keys.items())) def _get_all_attribute_keys(self) -> set[str]: """Get all attribute keys with appropriate prefixes.""" @@ -299,6 +312,57 @@ def _process_ns_attr_key( unread_keys[clean_key] = self.element.get(full_attr_name) processed_attrs.add(full_attr_name) + def _process_element_key( + self, key: str, unread_keys: dict[str, str | None] + ) -> None: + """Process an 'element:' prefixed key.""" + element_name = key.replace("element:", "") # Remove "element:" prefix + element = getattr(self.find_or_none(element_name), "element", None) + if element is None: + return + value_for_key = element.text + if value_for_key is not None: + unread_keys[element_name] = value_for_key + + def should_process_element_key(self, key: str) -> bool: + """ + Check if an XML element key should be processed. + + Returns False if: + - The element has children + - The element's text content appears to be XML formatted + + Returns True otherwise. + """ + # Extract element name from key + element_name = key.replace("element:", "") + + # Find the element + element_wrapper = self.find_or_none(element_name) + element = getattr(element_wrapper, "element", None) + if element is None: + return False + + # Check if element has children + if len(element) > 0: + return False + + # Check if element text looks like XML + text = element.text + if text: + text = text.strip() + if text: + # Check for basic XML patterns + if text.startswith("<") and text.endswith(">"): + return False + + # Check for XML-like patterns with regex + xml_pattern = re.compile(r"<[^>]+>.*]+>", re.DOTALL) + if xml_pattern.search(text): + return False + + return True + def _is_attr_already_processed( self, attr_name: str, processed_attrs: set[str] ) -> bool: diff --git a/tests/parsers/cytiva_unicorn/testdata/unicorn_1.json b/tests/parsers/cytiva_unicorn/testdata/unicorn_1.json index 4709208fb0..6569403ac5 100644 --- a/tests/parsers/cytiva_unicorn/testdata/unicorn_1.json +++ b/tests/parsers/cytiva_unicorn/testdata/unicorn_1.json @@ -10,7 +10,11 @@ "device control document": [ { "device type": "HPLC", - "start time setting": "2024-01-02T11:00:00+00:00" + "start time setting": "2024-01-02T11:00:00+00:00", + "custom information document": { + "ColumnVolume": "4", + "ScanInterval": "0" + } } ] }, @@ -123,7 +127,10 @@ "average conductivity": { "value": 1.691657, "unit": "S/m" - } + }, + "EndPeakLimitType": "DropLine", + "IsStandardPeak": "false", + "StartPeakLimitType": "BaseLine" } }, { @@ -209,7 +216,10 @@ "average conductivity": { "value": 1.700847, "unit": "S/m" - } + }, + "EndPeakLimitType": "DropLine", + "IsStandardPeak": "false", + "StartPeakLimitType": "DropLine" } }, { @@ -295,7 +305,10 @@ "average conductivity": { "value": 1.701128, "unit": "S/m" - } + }, + "EndPeakLimitType": "DropLine", + "IsStandardPeak": "false", + "StartPeakLimitType": "DropLine" } }, { @@ -381,10 +394,32 @@ "average conductivity": { "value": 1.701361, "unit": "S/m" - } + }, + "EndPeakLimitType": "DropLine", + "IsStandardPeak": "false", + "StartPeakLimitType": "DropLine" } } ] + }, + "custom information document": { + "AmplitudePrecision": "3", + "AmplitudeUnit": "mAU", + "ChromatogramStartTime": "2024-01-02T11:00:00.000", + "ChromatogramStartTimeUtcOffsetMinutes": "-300", + "ColumnVolumeUnitName": "ml", + "CurveDataType": "UV", + "CurveNumber": "1", + "DistanceBetweenPoints": "0.001666667", + "IsExternal": "false", + "IsOriginalData": "true", + "IsReadOnly": "false", + "IsoChroneType": "Time", + "MethodStartTime": "2024-01-02T11:00:00.000", + "MethodStartTimeUtcOffsetMinutes": "-300", + "TimeUnit": "min", + "VolumeUnit": "ml", + "DistanceToStartPoint": "0.06833267" } } ] @@ -430,7 +465,11 @@ "device control document": [ { "device type": "HPLC", - "start time setting": "2024-01-02T11:00:00+00:00" + "start time setting": "2024-01-02T11:00:00+00:00", + "custom information document": { + "ColumnVolume": "4", + "ScanInterval": "0" + } } ] }, @@ -500,7 +539,11 @@ "device control document": [ { "device type": "HPLC", - "start time setting": "2024-01-02T11:00:00+00:00" + "start time setting": "2024-01-02T11:00:00+00:00", + "custom information document": { + "ColumnVolume": "4", + "ScanInterval": "0" + } } ] }, @@ -570,7 +613,11 @@ "device control document": [ { "device type": "HPLC", - "start time setting": "2024-01-02T11:00:00+00:00" + "start time setting": "2024-01-02T11:00:00+00:00", + "custom information document": { + "ColumnVolume": "4", + "ScanInterval": "0" + } } ] }, @@ -628,6 +675,25 @@ [31.154701232910156, 31.13396453857422, 30.91810417175293] ] } + }, + "custom information document": { + "AmplitudePrecision": "2", + "AmplitudeUnit": "mS/cm", + "ChromatogramStartTime": "2024-01-02T11:00:00.000", + "ChromatogramStartTimeUtcOffsetMinutes": "-300", + "ColumnVolumeUnitName": "ml", + "CurveDataType": "Conduction", + "CurveNumber": "4", + "DistanceBetweenPoints": "0.003333333", + "IsExternal": "false", + "IsOriginalData": "true", + "IsReadOnly": "false", + "IsoChroneType": "Time", + "MethodStartTime": "2024-01-02T11:00:00.000", + "MethodStartTimeUtcOffsetMinutes": "-300", + "TimeUnit": "min", + "VolumeUnit": "ml", + "DistanceToStartPoint": "0" } } ] @@ -673,7 +739,11 @@ "device control document": [ { "device type": "HPLC", - "start time setting": "2024-01-02T11:00:00+00:00" + "start time setting": "2024-01-02T11:00:00+00:00", + "custom information document": { + "ColumnVolume": "4", + "ScanInterval": "0" + } } ] }, @@ -770,6 +840,10 @@ [0.0, 0.0, 0.0] ] } + }, + "custom information document": { + "ColumnVolume": "4", + "ScanInterval": "0" } } ] @@ -921,6 +995,10 @@ [0.1649095118045807, 0.13285210728645325, 0.10079468786716461] ] } + }, + "custom information document": { + "ColumnVolume": "4", + "ScanInterval": "0" } } ] @@ -979,6 +1057,25 @@ [0.06312736868858337, 0.06418673694133759, 0.03745259717106819] ] } + }, + "custom information document": { + "AmplitudePrecision": "3", + "AmplitudeUnit": "MPa", + "ChromatogramStartTime": "2024-01-02T11:00:00.000", + "ChromatogramStartTimeUtcOffsetMinutes": "-300", + "ColumnVolumeUnitName": "ml", + "CurveDataType": "Pressure", + "CurveNumber": "27", + "DistanceBetweenPoints": "0.01666667", + "IsExternal": "false", + "IsOriginalData": "true", + "IsReadOnly": "false", + "IsoChroneType": "Time", + "MethodStartTime": "2024-01-02T11:00:00.000", + "MethodStartTimeUtcOffsetMinutes": "-300", + "TimeUnit": "min", + "VolumeUnit": "ml", + "DistanceToStartPoint": "0.08499908" } } ] @@ -1210,6 +1307,10 @@ [27.713348388671875, 27.648590087890625, 27.536712646484375] ] } + }, + "custom information document": { + "ColumnVolume": "4", + "ScanInterval": "0" } } ] @@ -1262,7 +1363,11 @@ "unit": "mL" }, "fraction role": "Out-Waste", - "@type": "Fraction" + "@type": "Fraction", + "custom information document": { + "EventSubType": "Undefined", + "InstructionFeedback": "0" + } }, { "index": "Fraction Event 2", @@ -1274,7 +1379,11 @@ "value": 73.47809, "unit": "mL" }, - "@type": "Method" + "@type": "Method", + "custom information document": { + "EventSubType": "Undefined", + "InstructionFeedback": "0" + } }, { "index": "Fraction Event 3", @@ -1286,7 +1395,11 @@ "value": 385.0173, "unit": "mL" }, - "@type": "Method" + "@type": "Method", + "custom information document": { + "EventSubType": "Undefined", + "InstructionFeedback": "0" + } }, { "index": "Fraction Event 4", @@ -1298,7 +1411,11 @@ "value": 385.154, "unit": "mL" }, - "@type": "Method" + "@type": "Method", + "custom information document": { + "EventSubType": "Undefined", + "InstructionFeedback": "0" + } }, { "index": "Fraction Event 5", @@ -1310,7 +1427,11 @@ "value": 455.8084, "unit": "mL" }, - "@type": "Method" + "@type": "Method", + "custom information document": { + "EventSubType": "Undefined", + "InstructionFeedback": "0" + } }, { "index": "Fraction Event 6", @@ -1322,7 +1443,11 @@ "value": 586.219, "unit": "mL" }, - "@type": "Method" + "@type": "Method", + "custom information document": { + "EventSubType": "Undefined", + "InstructionFeedback": "0" + } }, { "index": "Fraction Event 7", @@ -1335,7 +1460,11 @@ "unit": "mL" }, "fraction role": "Frac", - "@type": "Fraction" + "@type": "Fraction", + "custom information document": { + "EventSubType": "Undefined", + "InstructionFeedback": "0" + } }, { "index": "Fraction Event 8", @@ -1348,7 +1477,11 @@ "unit": "mL" }, "fraction role": "Out-Waste", - "@type": "Fraction" + "@type": "Fraction", + "custom information document": { + "EventSubType": "Undefined", + "InstructionFeedback": "0" + } } ] }, @@ -1364,7 +1497,10 @@ "value": 0.3665924, "unit": "mL" }, - "log entry": "Batch ID: " + "log entry": "Batch ID: ", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 83", @@ -1376,7 +1512,10 @@ "value": 4.948364, "unit": "mL" }, - "log entry": ")" + "log entry": ")", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 91", @@ -1388,7 +1527,10 @@ "value": 5.014816, "unit": "mL" }, - "log entry": "Alarm air sensors Enabled Enabled Disabled (Completed) (Manual)" + "log entry": "Alarm air sensors Enabled Enabled Disabled (Completed) (Manual)", + "custom information document": { + "InstructionFeedback": "262144" + } }, { "index": "Run Log Event 92", @@ -1400,7 +1542,10 @@ "value": 5.014816, "unit": "mL" }, - "log entry": "Continue 2(Issued) (Manual)" + "log entry": "Continue 2(Issued) (Manual)", + "custom information document": { + "InstructionFeedback": "65536" + } }, { "index": "Run Log Event 93", @@ -1412,7 +1557,10 @@ "value": 5.014816, "unit": "mL" }, - "log entry": "Continue (Processing) (Manual)" + "log entry": "Continue (Processing) (Manual)", + "custom information document": { + "InstructionFeedback": "131072" + } }, { "index": "Run Log Event 94", @@ -1424,7 +1572,10 @@ "value": 5.014816, "unit": "mL" }, - "log entry": "Continue 0 (Completed) (Manual)" + "log entry": "Continue 0 (Completed) (Manual)", + "custom information document": { + "InstructionFeedback": "262144" + } }, { "index": "Run Log Event 95", @@ -1436,7 +1587,10 @@ "value": 73.47809, "unit": "mL" }, - "log entry": "Peak start (System)" + "log entry": "Peak start (System)", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 96", @@ -1448,7 +1602,10 @@ "value": 364.9618, "unit": "mL" }, - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 97", @@ -1460,7 +1617,10 @@ "value": 364.9618, "unit": "mL" }, - "log entry": "Block Finalize sample injection (Issued) (Processing) (Completed)" + "log entry": "Block Finalize sample injection (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 98", @@ -1472,7 +1632,10 @@ "value": 364.9618, "unit": "mL" }, - "log entry": "Base Volume, ColumnSameAsMain" + "log entry": "Base Volume, ColumnSameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 99", @@ -1484,7 +1647,10 @@ "value": 364.9618, "unit": "mL" }, - "log entry": "Sample inlet Buffer (Issued) (Processing)" + "log entry": "Sample inlet Buffer (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 100", @@ -1496,7 +1662,10 @@ "value": 364.9884, "unit": "mL" }, - "log entry": "Sample inlet Buffer (Completed)" + "log entry": "Sample inlet Buffer (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 101", @@ -1508,7 +1677,10 @@ "value": 384.9723, "unit": "mL" }, - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 102", @@ -1520,7 +1692,10 @@ "value": 384.9723, "unit": "mL" }, - "log entry": "Sample flow 0.00 {ml/min} Off (Issued) (Processing)" + "log entry": "Sample flow 0.00 {ml/min} Off (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 103", @@ -1532,7 +1707,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "Sample flow 0.00 {ml/min} Off (Completed)" + "log entry": "Sample flow 0.00 {ml/min} Off (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 104", @@ -1544,7 +1722,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "Injection valve Manual load (Issued) (Processing)" + "log entry": "Injection valve Manual load (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 105", @@ -1556,7 +1737,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "The method flow is now calculated based on the system flow. (System)" + "log entry": "The method flow is now calculated based on the system flow. (System)", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 106", @@ -1568,7 +1752,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "Injection valve Manual load (Completed)" + "log entry": "Injection valve Manual load (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 107", @@ -1580,7 +1767,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "Block Stop frac (Sample Appl) (Issued) (Processing) (Completed)" + "log entry": "Block Stop frac (Sample Appl) (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 108", @@ -1592,7 +1782,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 109", @@ -1604,7 +1797,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "Stop peak frac in outlet valve (Issued) (Processing)" + "log entry": "Stop peak frac in outlet valve (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 110", @@ -1616,7 +1812,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "Stop peak frac in outlet valve (Completed)" + "log entry": "Stop peak frac in outlet valve (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 111", @@ -1628,7 +1827,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 112", @@ -1640,7 +1842,10 @@ "value": 385.0173, "unit": "mL" }, - "log entry": "End Phase (Issued) (Processing) (Completed)" + "log entry": "End Phase (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 113", @@ -1653,7 +1858,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Phase Column Wash (Issued) (Processing) (Completed)" + "log entry": "Phase Column Wash (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 114", @@ -1666,7 +1874,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 115", @@ -1679,7 +1890,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Inlet A A2 (Issued) (Processing)" + "log entry": "Inlet A A2 (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 116", @@ -1692,7 +1906,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Inlet A A2 (Completed)" + "log entry": "Inlet A A2 (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 117", @@ -1705,7 +1922,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Inlet B B1 (Issued) (Processing)" + "log entry": "Inlet B B1 (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 118", @@ -1718,7 +1938,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Inlet B B1 (Completed)" + "log entry": "Inlet B B1 (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 119", @@ -1731,7 +1954,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Issued) (Processing)" + "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 120", @@ -1744,7 +1970,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Completed)" + "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 121", @@ -1757,7 +1986,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "System flow 10.00 {ml/min} Off (Issued) (Processing)" + "log entry": "System flow 10.00 {ml/min} Off (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 122", @@ -1770,7 +2002,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "System flow 10.00 {ml/min} Off (Completed)" + "log entry": "System flow 10.00 {ml/min} Off (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 123", @@ -1783,7 +2018,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Block Start frac (Column Wash) (Issued) (Processing) (Completed)" + "log entry": "Block Start frac (Column Wash) (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 124", @@ -1796,7 +2034,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 125", @@ -1809,7 +2050,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Peak fractionation parameters Level 0.125 {min} 50.000 {mAU} 100.000 {mAU/min} 75.000 {mAU} 75.000 {mAU/min} (Issued) (Processing)" + "log entry": "Peak fractionation parameters Level 0.125 {min} 50.000 {mAU} 100.000 {mAU/min} 75.000 {mAU} 75.000 {mAU/min} (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 126", @@ -1822,7 +2066,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Peak fractionation is performed using the UV1 signal. (System)" + "log entry": "Peak fractionation is performed using the UV1 signal. (System)", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 127", @@ -1835,7 +2082,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Peak fractionation parameters Level 0.125 {min} 50.000 {mAU} 100.000 {mAU/min} 75.000 {mAU} 75.000 {mAU/min} (Completed)" + "log entry": "Peak fractionation parameters Level 0.125 {min} 50.000 {mAU} 100.000 {mAU/min} 75.000 {mAU} 75.000 {mAU/min} (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 128", @@ -1848,7 +2098,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Peak frac in outlet valve Out 1 9 700.00 {ml} (Issued) (Processing)" + "log entry": "Peak frac in outlet valve Out 1 9 700.00 {ml} (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 129", @@ -1861,7 +2114,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Peak frac in outlet valve Out 1 9 700.00 {ml} (Completed)" + "log entry": "Peak frac in outlet valve Out 1 9 700.00 {ml} (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 130", @@ -1874,7 +2130,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 131", @@ -1887,7 +2146,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Block Wash (Issued) (Processing) (Completed)" + "log entry": "Block Wash (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 132", @@ -1900,7 +2162,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 133", @@ -1913,7 +2178,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Peak start (System)" + "log entry": "Peak start (System)", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 134", @@ -1926,7 +2194,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Peak end (System)" + "log entry": "Peak end (System)", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 135", @@ -1939,7 +2210,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 136", @@ -1952,7 +2226,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Block Stop frac (Column Wash) (Issued) (Processing) (Completed)" + "log entry": "Block Stop frac (Column Wash) (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 137", @@ -1965,7 +2242,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 138", @@ -1978,7 +2258,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Stop peak frac in outlet valve (Issued) (Processing)" + "log entry": "Stop peak frac in outlet valve (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 139", @@ -1991,7 +2274,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "Stop peak frac in outlet valve (Completed)" + "log entry": "Stop peak frac in outlet valve (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 140", @@ -2004,7 +2290,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 141", @@ -2017,7 +2306,10 @@ "unit": "mL" }, "method identifier": "Column Wash", - "log entry": "End Phase (Issued) (Processing) (Completed)" + "log entry": "End Phase (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 142", @@ -2030,7 +2322,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Phase CIP & Storage (Issued) (Processing) (Completed)" + "log entry": "Phase CIP & Storage (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 143", @@ -2043,7 +2338,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 144", @@ -2056,7 +2354,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "pH valve Off-line Off-line (Issued) (Processing)" + "log entry": "pH valve Off-line Off-line (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 145", @@ -2069,7 +2370,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "The instruction 'pH valve' will be executed after the delay volume has been collected. (System)" + "log entry": "The instruction 'pH valve' will be executed after the delay volume has been collected. (System)", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 146", @@ -2082,7 +2386,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "pH valve Off-line Off-line (Completed)" + "log entry": "pH valve Off-line Off-line (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 147", @@ -2095,7 +2402,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Block Column maintenance step_(1) (Issued) (Processing) (Completed)" + "log entry": "Block Column maintenance step_(1) (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 148", @@ -2108,7 +2418,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 149", @@ -2121,7 +2434,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Message \"Maintenance solution: \" (Issued) (Processing) (Completed)" + "log entry": "Message \"Maintenance solution: \" (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 150", @@ -2134,7 +2450,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet A A4 (Issued) (Processing)" + "log entry": "Inlet A A4 (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 151", @@ -2147,7 +2466,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet A A4 (Completed)" + "log entry": "Inlet A A4 (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 152", @@ -2160,7 +2482,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet B B1 (Issued) (Processing)" + "log entry": "Inlet B B1 (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 153", @@ -2173,7 +2498,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet B B1 (Completed)" + "log entry": "Inlet B B1 (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 154", @@ -2186,7 +2514,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Column position Position 3 Down flow (Issued) (Processing)" + "log entry": "Column position Position 3 Down flow (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 155", @@ -2199,7 +2530,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Column position Position 3 Down flow (Completed)" + "log entry": "Column position Position 3 Down flow (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 156", @@ -2212,7 +2546,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Outlet valve Out-Waste (Issued) (Processing)" + "log entry": "Outlet valve Out-Waste (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 157", @@ -2225,7 +2562,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Outlet valve Out-Waste (Completed)" + "log entry": "Outlet valve Out-Waste (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 158", @@ -2238,7 +2578,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "System flow 15.00 {ml/min} Off (Issued) (Processing)" + "log entry": "System flow 15.00 {ml/min} Off (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 159", @@ -2251,7 +2594,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "System flow 15.00 {ml/min} Off (Completed)" + "log entry": "System flow 15.00 {ml/min} Off (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 160", @@ -2264,7 +2610,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Issued) (Processing)" + "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 161", @@ -2277,7 +2626,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Completed)" + "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 162", @@ -2290,7 +2642,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 163", @@ -2303,7 +2658,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Block Column maintenance step_(2) (Issued) (Processing) (Completed)" + "log entry": "Block Column maintenance step_(2) (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 164", @@ -2316,7 +2674,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 165", @@ -2329,7 +2690,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Message \"Maintenance solution: RODI\" (Issued) (Processing) (Completed)" + "log entry": "Message \"Maintenance solution: RODI\" (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 166", @@ -2342,7 +2706,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet A A6 (Issued) (Processing)" + "log entry": "Inlet A A6 (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 167", @@ -2355,7 +2722,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet A A6 (Completed)" + "log entry": "Inlet A A6 (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 168", @@ -2368,7 +2738,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet B B1 (Issued) (Processing)" + "log entry": "Inlet B B1 (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 169", @@ -2381,7 +2754,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet B B1 (Completed)" + "log entry": "Inlet B B1 (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 170", @@ -2394,7 +2770,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Column position Position 3 Down flow (Issued) (Processing)" + "log entry": "Column position Position 3 Down flow (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 171", @@ -2407,7 +2786,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Column position Position 3 Down flow (Completed)" + "log entry": "Column position Position 3 Down flow (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 172", @@ -2420,7 +2802,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Outlet valve Out-Waste (Issued) (Processing)" + "log entry": "Outlet valve Out-Waste (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 173", @@ -2433,7 +2818,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Outlet valve Out-Waste (Completed)" + "log entry": "Outlet valve Out-Waste (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 174", @@ -2446,7 +2834,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "System flow 15.00 {ml/min} Off (Issued) (Processing)" + "log entry": "System flow 15.00 {ml/min} Off (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 175", @@ -2459,7 +2850,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "System flow 15.00 {ml/min} Off (Completed)" + "log entry": "System flow 15.00 {ml/min} Off (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 176", @@ -2472,7 +2866,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Issued) (Processing)" + "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 177", @@ -2485,7 +2882,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Completed)" + "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 178", @@ -2498,7 +2898,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 179", @@ -2511,7 +2914,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Block Column maintenance step_(3) (Issued) (Processing) (Completed)" + "log entry": "Block Column maintenance step_(3) (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 180", @@ -2524,7 +2930,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Base SameAsMain" + "log entry": "Base SameAsMain", + "custom information document": { + "InstructionFeedback": "0" + } }, { "index": "Run Log Event 181", @@ -2537,7 +2946,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Message \"Maintenance solution: 20% EtOH\" (Issued) (Processing) (Completed)" + "log entry": "Message \"Maintenance solution: 20% EtOH\" (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 182", @@ -2550,7 +2962,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet A A5 (Issued) (Processing)" + "log entry": "Inlet A A5 (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 183", @@ -2563,7 +2978,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet A A5 (Completed)" + "log entry": "Inlet A A5 (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 184", @@ -2576,7 +2994,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet B B1 (Issued) (Processing)" + "log entry": "Inlet B B1 (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 185", @@ -2589,7 +3010,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Inlet B B1 (Completed)" + "log entry": "Inlet B B1 (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 186", @@ -2602,7 +3026,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Column position Position 3 Down flow (Issued) (Processing)" + "log entry": "Column position Position 3 Down flow (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 187", @@ -2615,7 +3042,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Column position Position 3 Down flow (Completed)" + "log entry": "Column position Position 3 Down flow (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 188", @@ -2628,7 +3058,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Outlet valve Fraction collector (Issued) (Processing)" + "log entry": "Outlet valve Fraction collector (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 189", @@ -2641,7 +3074,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Outlet valve Fraction collector (Completed)" + "log entry": "Outlet valve Fraction collector (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 190", @@ -2654,7 +3090,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "System flow 8.00 {ml/min} Off (Issued) (Processing)" + "log entry": "System flow 8.00 {ml/min} Off (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 191", @@ -2667,7 +3106,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "System flow 8.00 {ml/min} Off (Completed)" + "log entry": "System flow 8.00 {ml/min} Off (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 192", @@ -2680,7 +3122,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Issued) (Processing)" + "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 193", @@ -2693,7 +3138,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Completed)" + "log entry": "Gradient 0.0 {%B} 0.00 {CV} (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 194", @@ -2706,7 +3154,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "End_Block (Issued) (Processing) (Completed)" + "log entry": "End_Block (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 195", @@ -2719,7 +3170,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Column position Position 3 Down flow (Issued) (Processing)" + "log entry": "Column position Position 3 Down flow (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 196", @@ -2732,7 +3186,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Column position Position 3 Down flow (Completed)" + "log entry": "Column position Position 3 Down flow (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 197", @@ -2745,7 +3202,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Outlet valve Out-Waste (Issued) (Processing)" + "log entry": "Outlet valve Out-Waste (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 198", @@ -2758,7 +3218,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "Outlet valve Out-Waste (Completed)" + "log entry": "Outlet valve Out-Waste (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 199", @@ -2771,7 +3234,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "pH valve In-line Off-line (Issued) (Processing)" + "log entry": "pH valve In-line Off-line (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 200", @@ -2780,7 +3246,10 @@ "unit": "s" }, "method identifier": "CIP & Storage", - "log entry": "pH valve In-line Off-line (Completed)" + "log entry": "pH valve In-line Off-line (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } }, { "index": "Run Log Event 201", @@ -2793,7 +3262,10 @@ "unit": "mL" }, "method identifier": "CIP & Storage", - "log entry": "End Phase (Issued) (Processing) (Completed)" + "log entry": "End Phase (Issued) (Processing) (Completed)", + "custom information document": { + "InstructionFeedback": "458753" + } }, { "index": "Run Log Event 202", @@ -2805,7 +3277,10 @@ "value": 908.8585, "unit": "mL" }, - "log entry": "End (Issued) (Processing)" + "log entry": "End (Issued) (Processing)", + "custom information document": { + "InstructionFeedback": "196609" + } }, { "index": "Run Log Event 203", @@ -2817,9 +3292,22 @@ "value": 908.8585, "unit": "mL" }, - "log entry": "End (Completed)" + "log entry": "End (Completed)", + "custom information document": { + "InstructionFeedback": "262145" + } } ] + }, + "custom information document": { + "ChromatogramID": "100", + "ChromatogramName": "Chrom.1", + "Created": "2024-01-01T10:00:00.000", + "CreatedUtcOffsetMinutes": "-300", + "FormatVersion": "9", + "Name": "Capto Adhere Polishing 100ppm Sample", + "RunIndex": "100", + "RunType": "Method" } }, "analyst": "Default" @@ -2827,15 +3315,28 @@ ], "data system document": { "ASM converter name": "allotropy_cytiva_unicorn", - "ASM converter version": "0.1.85", + "ASM converter version": "0.1.102", "file name": "unicorn_1.zip", - "UNC path": "tests/parsers/cytiva_unicorn/testdata/unicorn_1.zip" + "software version": "100.100.100.100", + "UNC path": "tests/parsers/cytiva_unicorn/testdata/unicorn_1.zip", + "custom information document": { + "FolderPath": "/DefaultHome", + "FormatVersion": "100", + "IsArchived": "false", + "IsReadOnly": "false", + "ResultFormatVersion": "100", + "ResultPurpose": "100", + "ResultState": "Evaluated" + } }, "device system document": { "asset management identifier": "AKTA avant", "product manufacturer": "Cytiva Life Sciences", "device identifier": "Avant1", - "firmware version": "100.100.100.100" + "firmware version": "100.100.100.100", + "custom information document": { + "SystemTypeName": "NEXTAKTAchromatography" + } } } }