Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,12 @@ class Measurement:
sample_custom_info: dict[str, Any] | None = None
custom_info: dict[str, Any] | None = None

# Custom information documents
device_control_custom_info: dict[str, Any] | None = None
image_processing_custom_info: dict[str, Any] | None = None
data_processing_custom_info: dict[str, Any] | None = None
processed_data_custom_info: dict[str, Any] | None = None


@dataclass(frozen=True)
class MeasurementGroup:
Expand Down Expand Up @@ -223,21 +229,23 @@ def _get_technique_document(
def _get_measurement_document(
self, measurement: Measurement, metadata: Metadata
) -> MeasurementDocument:
device_control_doc = DeviceControlDocumentItem(
device_type=metadata.device_type,
detection_type=metadata.detection_type,
sample_volume_setting=quantity_or_none(
TQuantityValueMicroliter,
measurement.sample_volume_setting,
),
)
device_control_doc = add_custom_information_document(
device_control_doc, measurement.device_control_custom_info or {}
)
measurement_document = MeasurementDocument(
measurement_time=self.get_date_time(measurement.timestamp),
measurement_identifier=measurement.measurement_identifier,
sample_document=self._get_sample_document(measurement),
device_control_aggregate_document=DeviceControlAggregateDocument(
device_control_document=[
DeviceControlDocumentItem(
device_type=metadata.device_type,
detection_type=metadata.detection_type,
sample_volume_setting=quantity_or_none(
TQuantityValueMicroliter,
measurement.sample_volume_setting,
),
)
]
device_control_document=[device_control_doc]
),
processed_data_aggregate_document=self._get_processed_data_aggregate_document(
measurement
Expand All @@ -247,12 +255,16 @@ def _get_measurement_document(
),
image_aggregate_document=ImageAggregateDocument(
image_document=[
ImageDocumentItem(
experimental_data_identifier=measurement.experimental_data_identifier
add_custom_information_document(
ImageDocumentItem(
experimental_data_identifier=measurement.experimental_data_identifier
),
measurement.image_processing_custom_info or {},
)
],
)
if measurement.experimental_data_identifier
or measurement.image_processing_custom_info
else None,
)
return add_custom_information_document(
Expand Down Expand Up @@ -322,20 +334,23 @@ def _get_processed_data_aggregate_document(
TQuantityValueUnitless, measurement.debris_index
),
}
data_processing_document = DataProcessingDocument(
cell_type_processing_method=measurement.cell_type_processing_method,
minimum_cell_diameter_setting=quantity_or_none(
TQuantityValueMicrometer,
measurement.minimum_cell_diameter_setting,
),
maximum_cell_diameter_setting=quantity_or_none(
TQuantityValueMicrometer,
measurement.maximum_cell_diameter_setting,
),
cell_density_dilution_factor=quantity_or_none(
TQuantityValueUnitless,
measurement.cell_density_dilution_factor,
data_processing_document = add_custom_information_document(
DataProcessingDocument(
cell_type_processing_method=measurement.cell_type_processing_method,
minimum_cell_diameter_setting=quantity_or_none(
TQuantityValueMicrometer,
measurement.minimum_cell_diameter_setting,
),
maximum_cell_diameter_setting=quantity_or_none(
TQuantityValueMicrometer,
measurement.maximum_cell_diameter_setting,
),
cell_density_dilution_factor=quantity_or_none(
TQuantityValueUnitless,
measurement.cell_density_dilution_factor,
),
),
measurement.data_processing_custom_info or {},
)
processed_data_document = ProcessedDataDocumentItem(
processed_data_identifier=measurement.processed_data_identifier,
Expand Down Expand Up @@ -389,7 +404,8 @@ def _get_processed_data_aggregate_document(
return ProcessedDataAggregateDocument(
processed_data_document=[
add_custom_information_document(
processed_data_document, custom_document
processed_data_document,
custom_document | (measurement.processed_data_custom_info or {}),
)
]
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,28 @@ def create_measurement_group(data: SeriesData) -> MeasurementGroup:
average_viable_cell_circularity=data.get(
float, "Average viable circularity"
),
device_control_custom_info=data.get_custom_keys(
{"Wash", "Mixing cycles", "Aspiration cycles"}
),
image_processing_custom_info=data.get_custom_keys(
{"Images", "Images for analysis"}
),
data_processing_custom_info=data.get_custom_keys(
{
"Decluster degree",
"Minimum circularity",
"Viable spot area (%)",
"Viable spot brightness (%)",
"Cell sharpness",
"Average background intensity",
"Bubble count",
"Cluster count",
}
),
processed_data_custom_info=data.get_custom_keys(
{"Average cells per image"}
),
custom_info=data.get_unread(),
)
],
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@
"device control document": [
{
"device type": "brightfield imager (cell counter)",
"detection type": "brightfield"
"detection type": "brightfield",
"custom information document": {
"Wash": "Normal Wash",
"Aspiration cycles": 3.0,
"Mixing cycles": 3.0
}
}
]
},
Expand All @@ -32,6 +37,16 @@
"maximum cell diameter setting": {
"value": 30.0,
"unit": "µm"
},
"custom information document": {
"Bubble count": 0.0,
"Minimum circularity": 0.1,
"Cluster count": 0.0,
"Decluster degree": "Medium",
"Viable spot brightness (%)": 50.0,
"Viable spot area (%)": 5.0,
"Average background intensity": 134.0,
"Cell sharpness": 7.0
}
},
"viability (cell counter)": {
Expand Down Expand Up @@ -69,12 +84,25 @@
"average viable cell circularity": {
"value": 0.88,
"unit": "(unitless)"
},
"custom information document": {
"Average cells per image": 21.0
}
}
]
},
"sample document": {
"sample identifier": "CLB001"
},
"image aggregate document": {
"image document": [
{
"custom information document": {
"Images": 100.0,
"Images for analysis": 100.0
}
}
]
}
}
]
Expand All @@ -88,7 +116,7 @@
"file name": "Beckman_Vi-Cell-BLU_different_mu_character.csv",
"UNC path": "tests/parsers/beckman_vi_cell_blu/testdata/Beckman_Vi-Cell-BLU_different_mu_character.csv",
"ASM converter name": "allotropy_beckman_coulter_vi_cell_blu",
"ASM converter version": "0.1.69",
"ASM converter version": "0.1.97",
"software name": "Vi-Cell BLU"
},
"device system document": {
Expand Down
Loading
Loading