Possible Metadata Attributes
Each metadatum is characterised by a series of attributes to describe and define its use and boundary conditions.
If necessary, further specifications by nested attributes can be given. All units of the metadata are stated in the {International System of Units} (SI units) unless otherwise specified.
Condition
Constraints of an attribute that limit its value range (e.g. the acquisition wavelengths must the of the same size as the acquired measurements)
Description
A short description of the attribute.
dtype
Data type of the attribute.
Measurement Device Attribute
A specific type of nested attribute that describes measurement device details if required. Measurement device attributes are always optional. They include:
Calibration Date
A timestamp referring to the date when the measurement device was last calibrated. Timestamps are given in seconds with the elapsed time since epoch (Jan 1st 1970, 00:00).
Measurement Device Manufacturer
A string literal describing the manufacturer of the measurement device, e.g. ‘Thorlabs’.
Measurement Device Serial Number
A string literal comprising the serial number of the measurement device.
Measurement Device Type
A string literal describing the measurement device for this attribute, e.g. ‘pyroelectric sensor’ or ‘wavemeter’.
Method Name
The name of the function/method that can be called in any programming language to obtain information on a specific attribute.
Necessity
‘Minimal’ or ‘Report if present’ condition for the metadatum. Minimal parameters are all parameters that are required to reconstruct an image from the raw time series data. Any additional information should be reported in the metadata if available.
Nested Attribute
A sub-attribute that further describes an attribute.
Units
SI units of the attribute if applicable.
Binary Data Metadata
The binary data are formatted as: [detectors, samples, wavelengths, measurements]. Depending on the binary data metadata, the size of these arrays varies. The interpretation of the measurement field depends on the dimensionality field.
Data Type
The Data Type field represents the datatype of the binary data. This field is given in the C++ data type naming convention, e.g. ‘short’, ‘unsigned short’, ‘int’, ‘unsigned int’, ‘long’, ‘unsigned long’, ‘long long’, ‘float’, ‘double’, ‘long double’.
Necessity |
Minimal |
dtype |
String |
Method Name |
get_data_type() |
Dimensionality
The Dimensionality field represents the definition of the ‘measurement’ field and can be either [‘time’, ‘space’, or ‘time and space’].
Necessity |
Minimal |
dtype |
String |
Method Name |
get_dimensionality() |
Sizes
The Sizes field quantifies the number of data points in each of the dimensions specified in the dimensionality field. As such, it defines the respective sizes of each element of the binary data which are: [detectors, samples, wavelengths, measurements].
Necessity |
Minimal |
dtype |
Integer array |
Units |
Dimensionless Quantity (the units can be inferred in combination with Dimensionality and the detection and illumination geometry). |
Method Name |
get_sizes() |
File Container Format
The container format metadata refer to the inherent features of the file format which specify the organisation ofhow the different elements of metadata are combined in a computer file.
Encoding
The Encoding field defines the character set that was used to encode the binary data and the metadata, e.g. one of ‘UTF-8’, ‘ASCII’, ‘CP-1252’ etc.
Necessity |
Minimal |
dtype |
String |
Method Name |
get_encoding() |
Compression
The Compression field defines the compression method that was used to compress the binary data, e.g. one of ‘raw’, ‘gzip etc.
Necessity |
Minimal |
dtype |
String |
Method Name |
get_compression() |
Universally Unique Identifier
The Universally Unique Identifier (UUID) field is a unique identifier of the data that can be referenced.
Necessity |
Minimal |
dtype |
String |
Condition |
128-bit Integer displayed as a hexadecimal string in 5 groups separated by hyphens, in the form 8-4-4-4-12 for a total of 36 characters. The UUID is randomly generated using the UUID version 4 standard. |
Method Name |
get_data_UUID() |
Acquisition Metadata
A/D (Analog/Digital) Sampling Rate
The A/D Sampling Rate field refers to the rate at which samples of the analogue signal are taken to be converted into digital form.
Necessity |
Minimal |
dtype |
Double |
Units |
Hertz [Hz] (samples / second) |
Method Name |
get_sampling_rate() |
Acoustic Coupling Agent
The Acoustic Coupling Agent field is a string representation of the acoustic coupling agent that is used, e.g. D2O, H2O, gel, etc.
Necessity |
Report if present |
dtype |
String |
Method Name |
get_coupling_agent() |
Acquisition Optical Wavelengths
The Acquisition Optical Wavelengths field is an array of all wavelengths used for image acquisition.
Necessity |
Minimal |
dtype |
Array |
Units |
Meters [m] |
Method Name |
get_wavelengths() |
Element-dependent Gain
The Element-dependent Gain field is a 2D array that contains the relative factors which are used for apodization or detection element-wise sensitivity corrections.
Necessity |
Report if present |
dtype |
Double array [num_detectors] |
Units |
Dimensionless unit |
Condition |
The element-dependent gain is a double array that has the same dimension as the number of detectors. |
Method Name |
get_element_dependent_gain() |
Frequency Domain Filter
The Frequency Domain Filter field specifies an array defining the frequency threshold levels that are applied to filter the raw time series data, containing [lower, higher] -3 dB points of the filter in Hertz. [lower, -1] denotes a high-pass filter and [-1, higher] denotes a low-pass filter.
Necessity |
Report if present |
dtype |
Double array |
Units |
Hertz [Hz] (samples / second) |
Method Name |
get_frequency_filter() |
Measurements Per Image
The Measurements Per Image field specifies a single value describing the number of measurements that constitute the dataset corresponding to one image
Necessity |
Report if present |
dtype |
Integer |
Units |
Dimensionless unit |
Method Name |
get_measurements_per_image() |
Measurement Spatial Pose
The Measurement Spatial Pose field specifies coordinates describing the position and orientation changes of the acquisition system relative to the measurement of reference (first measurement). The entire coordinate system is moved based on the spatial positions. If the frame stays constant, N equals 0.
Necessity |
Report if present |
dtype |
2D double array of 6D coordinates (N, 6) |
Units |
Meters [m] |
Condition |
Array size must be the same as the size of ‘measurements’ specified in the sizes field. |
Method Name |
get_measurement_spatial_pose() |
Measurement Timestamps
The Measurement Timestamps field specifies the time at which a measurement was recorded.
Necessity |
Report if present |
dtype |
Double array |
Units |
Seconds [s] |
Condition |
Array size must be the same as the size of ‘measurements’ specified in the sizes field. Timestamps are given in seconds with the elapsed time since epoch (Jan 1st 1970, 00:00). |
Method Name |
get_time_stamps() |
Overall Gain
The Overall Gain field is a single value describing a factor used to modify the amplitude of the raw time series data.
Necessity |
Report if present |
dtype |
Double |
Units |
Dimensionless unit |
Method Name |
get_overall_gain() |
Photoacoustic Imaging Device Reference
The Photoacoustic Imaging Device Reference field specifies a reference to the UUID of the PA imaging device description as defined in part 1. This field will be used for future versions of the data format, where the device metadata may not be stored within the file but will be accessible via a web service.
Necessity |
Report if present |
dtype |
String |
Method Name |
get_device_reference() |
Pulse Laser Energy
The Pulse Laser Energy field specifies the pulse energy used to generate the PA signal. If the pulse energies are averaged over many pulses, the average value must be specified. If the pulse laser energy has already been accounted for, the array must read [0].
Necessity |
Report if present |
dtype |
Double array |
Units |
Joule [J] |
Condition |
Array size must be the same as the size of ‘measurements’’ specified in the sizes field, except for the case of [0]. It can also be of shape [detection_elements, measurements] in case that laser pulses are fired individually for each detection element. |
Method Name |
get_pulse_laser_energy() |
Regions of Interest
The Regions of Interest field specifies a list of named regions within the underlying 3D Cartesian coordinate system (cf. Device Metadata). Strings containing the region names are mapped to arrays that define either an approximate cuboid area (cf. Field of View) or a list of coordinates describing a set of 3D Cartesian coordinates surrounding the named region. This field aims to facilitate the delineation of, e.g. distinct tissue types, potential lesions or phantom components. Regions of Interest are defined independently from the Field of View, and could be also outside the Field of View.
Necessity |
Report if present |
dtype |
Dictionary [String, 2D double array (6, 3)] where the first number in the array represents the number of coordinates and the second number represents the coordinate values. |
Units |
Meter [m] |
Method Name |
get_region_of_interest() |
Scanning Method
The Scanning Method field is a string representation of the scanning method that was used. The following descriptions can be used: (“composite_scan”, “full_scan”). This flag determines the way the metadatum “measurement” is defined.
Necessity |
Report if present |
dtype |
String |
Method Name |
get_scanning_method() |
Speed of Sound
The Speed of Sound field specifies either a single value representing the mean global speed of sound in the entire imaged medium or a 3D array representing a heterogeneous speed of sound map in the device coordinate system. This definition covers both the imaged medium and the coupling agent.
Necessity |
Report if present |
dtype |
Double or double array |
Units |
Meters per second [m/s] |
Method Name |
get_speed_of_sound() |
Temperature Control
The Temperature Control field specifies the temperature of the imaged space (covering both the imaged medium and the coupling agent) for each measurement.
Necessity |
Report if present |
dtype |
Double array |
Units |
Kelvin [K] |
Condition |
The temperature control array either has the same dimension as the number of ‘measurements’, or is a single value indicating a constant temperature over all measurements. |
Method Name |
get_temperature() |
Time Gain Compensation
The Time Gain Compensation field is a 1D array that contains relative factors which are used to correct the time series data for the effect of acoustic attenuation.
Necessity |
Report if present |
dtype |
Double array |
Units |
Dimensionless unit |
Condition |
The time gain compensation array has the same dimension as the samples dimension [samples]. It can also be of shape [detection_elements, samples] if measurements are acquired individually for each detection element. |
Method Name |
get_time_gain_compensation() |
Device Metadata
The device metadata is split into three categories: Some general metadata parameters, metadata information on the detection geometry, and metadata information on the illumination geometry.
General Parameters
Field of View
The Field of View field defines an approximate cuboid (3D) area detectable by the PA imaging device in 3D cartesian coordinates [x1start, x1end, x2start, x2end, x3start, x3end]. A 2D Field of View can be defined by setting the start and end coordinate of the respective dimension to the same value.
Necessity |
Minimal |
dtype |
2D double array of length 6 |
Units |
Meter [m] |
Method Name |
get_field_of_view() |
Number of Detection Elements
The Number of Detection Elements field quantifies the number of transducer elements used for detection in the PA imaging device. Each of these transducer elements is described by a set of detection geometry parameters.
Necessity |
Minimal |
dtype |
Integer |
Units |
Dimensionless unit |
Method Name |
get_number_of_detection_elements() |
Number of Illumination Elements
The Number of Illumination Elements field quantifies the number of illuminators that are used in the PA imaging device. Each of these illuminators is described by a set of illumination geometry parameters.
Necessity |
Report if present |
dtype |
Integer |
Units |
Dimensionless unit |
Method Name |
get_number_of_illumination_elements() |
Universally Unique Identifier
The Universally Unique Identifier (UUID) for the device that can be referenced.
Necessity |
Minimal |
dtype |
String |
Condition |
128-bit Integer displayed as a hexadecimal string in 5 groups separated by hyphens, in the form 8-4-4-4-12 for a total of 36 characters. The UUID is randomly generated using the UUID version 4 standard. |
Method Name |
get_device_uuid() |
Detection Element
Detector Geometry
The Detector Geometry field defines the shape of the detector elements. The data type and the contents of the shape field are determined by the Detector Geometry Type field. The given coordinates are interpreted relative to the Detector Position.
Necessity |
Report if present |
dtype |
Double, double array, or byte array |
Units |
Meter [m] |
Method Name |
get_detector_geometry() |
Detector Geometry Type
The Detector Geometry Type field defines the interpretation of the data in the detector geometry field. The following geometry types are currently supported:
“CIRCULAR” - defined by a single value that determines the radius of the circle
“SPHERE” - defined by a single value that determines the radius of the sphere
“CUBOID” - defined by three values that determine the extent of the cuboid in x1, x2, and x3 dimensions before the position and orientation transforms.
“MESH” - defined by an STL-formatted string that determines the positions of points and faces before the position and orientation transforms.
Necessity |
Report if present |
dtype |
String |
Method Name |
get_detector_geometry_type() |
Detector Orientation
The Detector Orientation field defines the direction unit vector of the detector in 3D Cartesian coordinates [xd, yd, zd] .
Necessity |
Report if present |
dtype |
Double array |
Units |
Meter [m] |
Method Name |
get_detector_orientation() |
Detector Position
The DetectorPosition field defines the position of the detection element centroid in 3D Cartesian coordinates [x1, x2, x3] .
Necessity |
Minimal |
dtype |
Double array |
Units |
Meter [m] |
Method Name |
get_detector_position() |
Detection Element Properties
Angular Response
The Angular Response field characterises the angular sensitivity of the detection element to the incident angle (relative to the element’s orientation) of the incoming pressure wave. If only one value (the angle [a]) is given, the value can be interpreted as a=limiting angle (where the response drops to -6 dB).
Necessity |
Report if present |
dtype |
Array with two components, where the first component is the incident angle in radians and the second component is the normalised response value. |
Units |
Radians [rad], Normalised Units (to the maximum efficiency) |
Method Name |
get_angular_response() |
Frequency Response
The Frequency Response field describes a function of frequency that characterises the response of the detection element with respect to the frequency of incident pressure waves. If the response is only sparsely defined, the values can be linearly interpolated between the closest neighbours. If the value is of shape [c, b], it can be interpreted as c=centre frequency and b=bandwidth (measured at -6 dB).
Necessity |
Report if present |
dtype |
Array with two components, where the first component is the frequency (in Hertz [s-1]) and the second component is the response value (in normalised units). |
Units |
Hertz [s-1], normalised units (to the maximum intensity) |
Method Name |
get_frequency_response() |
Illumination Element
Illuminator Geometry
The Illuminator Geometry field defines the numerical geometry of the optical fibre (bundle) output. The data type and content of this metadatum are determined by the illuminator geometry type field. The given coordinates are interpreted relative to the illuminator position.
Necessity |
Report if present |
dtype |
Double, double array, or byte array |
Units |
Meter [m] |
Method Name |
get_illuminator_geometry() |
Illuminator Geometry Type
The Illuminator Geometry Type field defines the shape of the optical fibre (bundle) output. It determines the interpretation of the data in the illuminator geometry field. The following geometry types are currently supported:
“CIRCULAR” - defined by a single value that determines the radius of the circle.
“SPHERE” - defined by a single value that determines the radius of the sphere.
“CUBOID” - defined by three values that determine the extent of the cuboid in x1, x2, and x3 dimensions before the position and orientation transforms.
“MESH” - defined by an STL-formatted string that determines the positions of points and faces before the position and orientation transforms.
Necessity |
Report if present |
dtype |
String |
Method Name |
get_illuminator_geometry_type() |
Illuminator Orientation
The Illuminator Orientation field defines the direction unit vector of the illuminator in 3D Cartesian coordinates [x1d, x2d, x3d] . This unit vector is the normal of the planar illuminator surface.
Necessity |
Report if present |
dtype |
1D double array |
Units |
Meter [m] |
Method Name |
get_illuminator_orientation() |
Illuminator Position
The Illuminator Position field defines the position of the illuminator centroid in 3D cartesian coordinates [x1, x2, x3] .
Necessity |
Report if present |
dtype |
1D double array |
Units |
Meter [m] |
Method Name |
get_illuminator_position() |
Illuminator Properties
Beam Divergence Angles
The Beam Divergence Angles field represents the opening angles of the laser beam from the illuminator shape with respect to the orientation vector. This angle is represented by the standard deviation of the beam divergence.
Necessity |
Report if present |
dtype |
Double |
Units |
Radians [rad] |
Method Name |
get_beam_divergence() |
Beam Intensity Profile
The Beam Intensity Profile field is a function of a spatial position that specifies the relative laser beam intensity according to the planar emitting surface of the illuminator shape at the distance defined in intensity profile distance. For points between specified positions, it is assumed that the values are linearly interpolated from their closest neighbours. The positions are generally in 2D.
Necessity |
Report if present |
dtype |
Array of two double arrays [positions, intensities] with intensities and their corresponding positions. |
Units |
Normalised units (to the maximum intensity) |
Method Name |
get_beam_profile() |
Intensity Profile Distance
The Intensity Profile Distance field describes the distance from the light source for measuring its beam intensity profile. This distance is to be measured from the Illuminator Position along with the Illuminator Orientation.
Necessity |
Report if present |
dtype |
Double |
Units |
Meters [m] |
Method Name |
get_beam_profile_distance() |
Laser Energy Profile
The Laser Energy Profile field is a discretized function of the wavelength (nm) describing the laser energy of the illuminator. Thereby, systematic differences in multispectral image acquisitions can be accounted for.
Necessity |
Report if present |
dtype |
Array of two 1D double arrays [wavelengths, energies], where the first array comprises the wavelengths and the second array comprises the laser energies. |
Units |
Joule [J] |
Condition |
The laser energy profile function is well defined and non-negative in the wavelength range. |
Method Name |
get_energy_profile() |
Laser Stability Profile
The Laser Stability Profile field is a function of the wavelength (nm) and represents the standard deviation of the pulse-to-pulse laser energy of the illuminator.
Necessity |
Report if present |
dtype |
Array of two 1D double arrays [wavelengths, energies], where the first array comprises the wavelengths and the second array comprises the laser energies. |
Units |
Joule [J] |
Condition |
The laser stability profile function is well defined and non-negative in the wavelength range. |
Method Name |
get_stability_profile() |
Pulse Duration / Width
The Pulse Duration /Width field describes the total length of a laser pulse measured as the time interval between the half-power points on the leading and trailing edges of the pulse.
Necessity |
Report if present |
dtype |
Double |
Units |
Seconds [s] |
Method Name |
get_pulse_width() |
Wavelength Range
The Wavelength Range field quantifies the wavelengths that can be generated by the illuminator. Three values can be reported: the minimum wavelength max, the maximum wavelength max and a metric for the accuracy accuracy: (min, max, accuracy). These parameters could be for instance (700, 900, 1.2), meaning that this illuminator can be tuned from 700 nm to 900 nm with an accuracy of 1.2 nm. Single-wavelength elements are specified as: (actual, actual, accuracy).
Necessity |
Report if present |
dtype |
1D double array |
Units |
Meters [m] |
Method Name |
get_wavelength_range() |