hoa_tools.metadata
Metadata model for dataset metadata.
Age
Citation
pydantic-model
Bases: BaseModel
Fields:
-
title(str) -
contributors(list[Contributor]) -
doi(str | None) -
author_list(list[str])
author_list
pydantic-field
Author list. If citing this data, please use this authorship list in the order given
contributors
pydantic-field
contributors: list[Contributor]
Dataset contributors, listed alphabetically by name.
Contributor
pydantic-model
Bases: BaseModel
Fields:
-
first_name(str) -
last_name(str) -
orcid(Orcid | None) -
roles(list[Literal['Conceptualization', 'Data curation', 'Formal analysis', 'Funding acquisition', 'Investigation', 'Methodology', 'Project administration', 'Resources', 'Software', 'Supervision', 'Validation', 'Vlisualization', 'Writing - original draft', 'Writing - review & editing']])
roles
pydantic-field
roles: list[Literal['Conceptualization', 'Data curation', 'Formal analysis', 'Funding acquisition', 'Investigation', 'Methodology', 'Project administration', 'Resources', 'Software', 'Supervision', 'Validation', 'Vlisualization', 'Writing - original draft', 'Writing - review & editing']]
Contributor role(s), following the Contributor Role Taxonomy (CReditT)
CurrentStart
Data
pydantic-model
Bases: BaseModel
Fields:
gcs_url
pydantic-field
gcs_url: str
URL to data in Google Cloud Storage. Starts with either n5:// or zarr:// to specify whether data is in N5 or OME-Zarr 0.4 format.
DistanceSampleDetector
DistanceSourceSample
Donor
pydantic-model
Bases: BaseModel
Config:
extra:forbid
Fields:
-
id(str) -
age(Age | Literal['<18', '>18'] | None) -
sex(Literal['M', 'F'] | None) -
weight(Weight | None) -
height(Height | None) -
cause_of_death(str | None) -
medical_history(str | None) -
diabetes(Literal['Type 2', 'No', 'Yes'] | None) -
hypertension(Literal['Yes', 'No'] | None) -
smoker(Literal['Never', 'Yes'] | None)
model_config
class-attribute
instance-attribute
model_config = ConfigDict(extra='forbid')
Energy
ExposureTime
HOAMetadata
pydantic-model
Bases: BaseModel
Fields:
-
name(str) -
dataset_type(Literal['overview', 'zoom']) -
voi(str) -
data(Data) -
sample(Sample) -
donor(Donor) -
scan(Scan) -
proposal(Proposal) -
registration(Registration | None) -
citation(Citation) -
metadata_version(Literal['1.1'])
dataset_type
pydantic-field
dataset_type: Literal['overview', 'zoom']
Type of dataset. Overview datasets contain the full sample. Zoom datasets contain a zoom into a particular volume of interest within the sample.
model_config
class-attribute
instance-attribute
model_config = ConfigDict(extra='forbid')
registration
pydantic-field
registration: Registration | None
Metadata mapping high resolution volume of interest datasets to a full organ dataset. Not present for full organ datasets.
voi
pydantic-field
voi: str
Volume of interest name. For zoom datasets this gives a unique identifier among zoom datasets taken within the same sample.
Height
LatencyTime
NDark
NFrames
NRef
NScans
NSubframes
OpticMagnification
Orcid
PostMortemIntervalHours
Proposal
pydantic-model
Bases: BaseModel
Fields:
Registration
pydantic-model
Bases: BaseModel
Fields:
-
source_dataset(str) -
target_dataset(str) -
translation(list) -
rotation(float) -
scale(float)
Sample
pydantic-model
Bases: BaseModel
Fields:
-
organ(Literal['achillesTendon', 'arm', 'brain', 'breast', 'clitoris', 'colon', 'eye', 'femaleGenitalia', 'heart', 'kidney', 'knee', 'larynx', 'liver', 'lung', 'oesophagus', 'pancreas', 'placenta', 'prostate', 'soleus', 'spinalCord', 'spine', 'spleen', 'testis', 'thoracicBlock', 'tibia', 'uterus', 'vagina']) -
organ_context(str | None) -
post_mortem_interval_hours(PostMortemIntervalHours | None) -
fixation_method(Literal['immersion', 'perfusion'] | None) -
fixation_medium(Literal['formalin', 'ethanol', 'paraformaldehyde'] | None) -
organ_infilled(bool | str | None) -
stabilisation_medium(Literal['agar', 'agar spaghetti', 'agar cubes', 'crushed agar', 'acrylamic spheres', 'paraffin', 'liquid'] | None) -
degassing_method(Literal['inline', 'vacuum', 'vacuum+inline', 'not degassed'] | None) -
scan_solvent(Literal['formalin', 'ethanol', 'paraffin block'] | None) -
scan_solvent_concentration(float | None) -
scan_temperature(str | float | None)
degassing_method
pydantic-field
degassing_method: Literal['inline', 'vacuum', 'vacuum+inline', 'not degassed'] | None
fixation_medium
pydantic-field
fixation_medium: Literal['formalin', 'ethanol', 'paraformaldehyde'] | None
Fixation medium
fixation_method
pydantic-field
fixation_method: Literal['immersion', 'perfusion'] | None
Fixation preparation method.
organ
pydantic-field
organ: Literal['achillesTendon', 'arm', 'brain', 'breast', 'clitoris', 'colon', 'eye', 'femaleGenitalia', 'heart', 'kidney', 'knee', 'larynx', 'liver', 'lung', 'oesophagus', 'pancreas', 'placenta', 'prostate', 'soleus', 'spinalCord', 'spine', 'spleen', 'testis', 'thoracicBlock', 'tibia', 'uterus', 'vagina']
Organ name.
organ_context
pydantic-field
organ_context: str | None
Human-readable context for location of the dataset within the whole organ. Only present for some zoom datasets.
post_mortem_interval_hours
pydantic-field
post_mortem_interval_hours: PostMortemIntervalHours | None
Interval between death and fixation, in hours.
scan_solvent
pydantic-field
scan_solvent: Literal['formalin', 'ethanol', 'paraffin block'] | None
Scan medium solvent.
scan_solvent_concentration
pydantic-field
scan_solvent_concentration: float | None
Scan medium solvent concentration in percent.
scan_temperature
pydantic-field
Temperature during scan, in degrees celsius (if a number).
stabilisation_medium
pydantic-field
stabilisation_medium: Literal['agar', 'agar spaghetti', 'agar cubes', 'crushed agar', 'acrylamic spheres', 'paraffin', 'liquid'] | None
Scan
pydantic-model
Bases: BaseModel
Fields:
-
date(date) -
beamline(Literal['BM05', 'BM18']) -
energy(Energy | None) -
current_start(CurrentStart | None) -
filling_mode(Literal['16 bunch', '7/8 multibunch', 'uniform multibunch', '28*12+1 bunch', '4 bunch', '2*1/3 multibunch'] | None) -
n_frames(NFrames | None) -
n_ref(NRef | None) -
n_dark(NDark | None) -
latency_time(LatencyTime | None) -
exposure_time(ExposureTime | None) -
subframe_time(SubframeTime | None) -
n_subframes(NSubframes | None) -
scan_type(Literal['helical', 'zseries']) -
scan_range(float) -
n_scans(NScans | None) -
acquisition(Literal['half', 'quarter'] | None) -
z_step(float | None) -
scan_time(ScanTime | None) -
filters(list[str] | None) -
scintillator(Literal['LuAG:Ce 1000um', 'LuAG:Ce 100um', 'LuAG:Ce 100um, reflective', 'LuAG:Ce 100um, lead glass meniscus', 'LuAG:Ce 2000um', 'LuAG:Ce 2000um, reflective', 'Multi LuAG:Ce 2000um, reflective', 'LuAG:Ce 200um', 'LuAG:Ce 250um', 'LuAG:Ce 250um, reflective', 'LuAG:Ce 25um', 'LuAG:Ce 50um', 'LuAG:Ce 50um, reflective', 'LuAG:Ce 500um', 'LySO:Ce 8.5um', 'LySO:Ce 23um', 'LySO:Ce 2000um, reflective', 'LySO:Ce 24um', 'Gadox 60um', 'CSI trixell structured 650um, 5um pitch', 'GGG 8um', 'GGG 20um', 'GAGG 1000um, reflective', 'GAGG 250um, reflective', 'GAGG 100um, reflective', 'GAGG 50um, reflective', 'Dual LySO:Ce 5000um, reflective'] | None) -
optic(Literal['Zoom', 'DZoom', '10x 0.4NA reflective optic', 'Hasselblad tandem optic 100mm/300mm', 'Hasselblad revolved 100 100', 'LAFIP2 optic with canon 50mm', 'Fixed x10', 'Fixed x2.85', 'Fixed x2', 'Fixed x1', 'Fixed x0.5', 'Fixed x0.125', 'Fixed x0.1', 'Twinmic 5', 'Twinmic 10', 'Twinmic 20', 'Triplemic 10', 'Otus 1x'] | None) -
optic_magnification(OpticMagnification | None) -
distance_source_sample(DistanceSourceSample | None) -
distance_sample_detector(DistanceSampleDetector | None) -
psho(float | None) -
sensor_name(Literal['PCO edge 4.2 CLHS', 'Iris15'] | None) -
sensor_mode(Literal['rolling shutter', 'FFM'] | None) -
sensor_roi_x_size(SensorRoiXSize | None) -
sensor_roi_y_size(SensorRoiYSize | None) -
sensor_binning(SensorBinning | None) -
pixel_size(float) -
xray_magnification(XrayMagnification | None) -
technique(Literal['Hierarchical Phase-Contrast Tomography (HiP-CT)']) -
experiment_type(str | None)
acquisition
pydantic-field
acquisition: Literal['half', 'quarter'] | None
Type of tomographic acquisition.
current_start
pydantic-field
current_start: CurrentStart | None
Current of the synchrotron at the start of the scan, measured in mA.
distance_sample_detector
pydantic-field
distance_sample_detector: DistanceSampleDetector | None
Distance between the sample and the detector, measured in millimeters.
distance_source_sample
pydantic-field
distance_source_sample: DistanceSourceSample | None
Distance between the source and the sample, measured in millimeters.
exposure_time
pydantic-field
exposure_time: ExposureTime | None
Exposure time of a single frame, measured in seconds. This is the sub-frame time multiplied by the number of sub-frames.
filling_mode
pydantic-field
filling_mode: Literal['16 bunch', '7/8 multibunch', 'uniform multibunch', '28*12+1 bunch', '4 bunch', '2*1/3 multibunch'] | None
Mode of filling used in the synchrotron storage ring.
latency_time
pydantic-field
latency_time: LatencyTime | None
Inactive time between active sensor times, measured in seconds.
n_dark
pydantic-field
n_dark: NDark | None
Number of dark images (without illumination) collected during the scan.
n_scans
pydantic-field
n_scans: NScans | None
Total number of scans. For a helical scan this is always 1. For a zseries this is the total number of scans concatenated to make the full data volume.
n_subframes
pydantic-field
n_subframes: NSubframes | None
Number of frames accumulated per exposure.
optic
pydantic-field
optic: Literal['Zoom', 'DZoom', '10x 0.4NA reflective optic', 'Hasselblad tandem optic 100mm/300mm', 'Hasselblad revolved 100 100', 'LAFIP2 optic with canon 50mm', 'Fixed x10', 'Fixed x2.85', 'Fixed x2', 'Fixed x1', 'Fixed x0.5', 'Fixed x0.125', 'Fixed x0.1', 'Twinmic 5', 'Twinmic 10', 'Twinmic 20', 'Triplemic 10', 'Otus 1x'] | None
Optical components used during the scan
optic_magnification
pydantic-field
optic_magnification: OpticMagnification | None
Magnification in the optical setup.
scintillator
pydantic-field
scintillator: Literal['LuAG:Ce 1000um', 'LuAG:Ce 100um', 'LuAG:Ce 100um, reflective', 'LuAG:Ce 100um, lead glass meniscus', 'LuAG:Ce 2000um', 'LuAG:Ce 2000um, reflective', 'Multi LuAG:Ce 2000um, reflective', 'LuAG:Ce 200um', 'LuAG:Ce 250um', 'LuAG:Ce 250um, reflective', 'LuAG:Ce 25um', 'LuAG:Ce 50um', 'LuAG:Ce 50um, reflective', 'LuAG:Ce 500um', 'LySO:Ce 8.5um', 'LySO:Ce 23um', 'LySO:Ce 2000um, reflective', 'LySO:Ce 24um', 'Gadox 60um', 'CSI trixell structured 650um, 5um pitch', 'GGG 8um', 'GGG 20um', 'GAGG 1000um, reflective', 'GAGG 250um, reflective', 'GAGG 100um, reflective', 'GAGG 50um, reflective', 'Dual LySO:Ce 5000um, reflective'] | None
Scintillator used for converting X-rays to visible light.
sensor_mode
pydantic-field
sensor_mode: Literal['rolling shutter', 'FFM'] | None
Operating mode of the sensor during the scan.
sensor_name
pydantic-field
sensor_name: Literal['PCO edge 4.2 CLHS', 'Iris15'] | None
Name of the sensor used during the scan.
sensor_roi_x_size
pydantic-field
sensor_roi_x_size: SensorRoiXSize | None
Number of pixels in the x-dimension of the sensor's region of interest (ROI).
sensor_roi_y_size
pydantic-field
sensor_roi_y_size: SensorRoiYSize | None
Number of pixels in the y-dimension of the sensor's region of interest (ROI).
subframe_time
pydantic-field
subframe_time: SubframeTime | None
Exposure time of a single sub-frame, measured in seconds.
xray_magnification
pydantic-field
xray_magnification: XrayMagnification | None
Magnification of X-rays due to divergence between the source and detector.