adios_db.models.common package
Submodules
adios_db.models.common.measurement module
Generic Measurement Types
These are structures that handle an individual measurment:
They have a value, a unit type and a unit.
They can be converted to other units if need be.
They can accommodate a single value, or a range of values
They can also accommodate a standard deviation and number of replicates.
- class adios_db.models.common.measurement.AngularVelocity(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'angularvelocity'
- class adios_db.models.common.measurement.AnyUnit(*args, **kwargs)
Bases:
MeasurementBase
This is a type for data that could be any unit_type
- validate()
a kludge – this should probably create the correct Measurement when created instead
- class adios_db.models.common.measurement.Concentration(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'concentration'
- class adios_db.models.common.measurement.Density(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'density'
- class adios_db.models.common.measurement.Dimensionless(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
This is a type that can be converted to generic fractional amounts, but does not refer to a particular measurable quantity.
- unit_type: str = 'dimensionless'
- class adios_db.models.common.measurement.DynamicViscosity(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'dynamicviscosity'
- class adios_db.models.common.measurement.InterfacialTension(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'interfacialtension'
- class adios_db.models.common.measurement.KinematicViscosity(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'kinematicviscosity'
- class adios_db.models.common.measurement.Length(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'length'
- class adios_db.models.common.measurement.Mass(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'mass'
- class adios_db.models.common.measurement.MassFraction(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'massfraction'
- class adios_db.models.common.measurement.MassOrVolumeFraction(*args, **kwargs)
Bases:
MeasurementBase
This could be Mass or Volume Fraction, or unspecified.
- Unit_type must be one of:
MassFraction
VolumeFraction
Concentration (could be either mass or volume – who knows?)
- Parameters:
unit_type – the value itself
value – the value itself
unit – the value itself
min_value – the value itself
max_value – the value itself
standard_deviation – the value itself
replicates – the value itself
unit_type – the type of unit – must be “massfraction”, “volumefraction” or “concentration”
- copy()
copy an instance
This needs to be special, to preserve the unit_type attribute
- class adios_db.models.common.measurement.NeedleAdhesion(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'needleadhesion'
- validate()
Function to validate a dataclass with fields that have validate methods. The validate methods are expected to return a list of validation messages.
The top-level validator extends the existing list
- class adios_db.models.common.measurement.Pressure(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'pressure'
- class adios_db.models.common.measurement.Temperature(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- convert_to(new_unit)
Convert this Measurement object to the specified new unit
The object is mutated in place.
If the conversion can not be performed, an Exception will be raised, and the object not altered.
This will also return the object (self) – but that is a deprecated feature – do not use it!
If you want a new object, use converted_to instead
- fixCK = False
- fix_C_K()
This is a bit of a kludge:
The correct conversion from C to K is 273.16
But a lot of data sources (notably the ADIOS2 database) used 273.0.
So we end up with temps like: -0.15 C instead of 0.0 C This function will “correct” that.
Note: it also converts to C
- unit_type: str = 'temperature'
- validate()
Function to validate a dataclass with fields that have validate methods. The validate methods are expected to return a list of validation messages.
The top-level validator extends the existing list
- class adios_db.models.common.measurement.Time(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
- unit_type: str = 'time'
- class adios_db.models.common.measurement.Unitless(value: float = None, unit: str = None, min_value: float = None, max_value: float = None, standard_deviation: float = None, replicates: int = None, unit_type: str = None)
Bases:
MeasurementBase
This is a type for data with no unit at all.
- convert_to(*args, **kwargs)
Convert this Measurement object to the specified new unit
The object is mutated in place.
If the conversion can not be performed, an Exception will be raised, and the object not altered.
This will also return the object (self) – but that is a deprecated feature – do not use it!
If you want a new object, use converted_to instead
- unit_type: str = 'unitless'
- validate()
Function to validate a dataclass with fields that have validate methods. The validate methods are expected to return a list of validation messages.
The top-level validator extends the existing list
adios_db.models.common.utilities module
Tools for helping make our data models.
So far: making dataclasses read/writable as JSON
- class adios_db.models.common.utilities.JSON_List(iterable=(), /)
Bases:
list
just like a list, but with the ability to turn it into JSON
A regular list can only be converted to JSON if it has JSON-able objects in it.
Note: must be subclassed, and the item_type attribute set
- classmethod from_py_json(py_json, allow_none=False)
create a JSON_List from json array of objects that may be json-able.
- item_type = None
- py_json(sparse=True)
- validate()
- adios_db.models.common.utilities.dataclass_to_json(cls)
class decorator that adds the ability to save a dataclass as JSON
All fields must be either JSON-able Python types or have be a type with a _to_json method
- adios_db.models.common.utilities.something(val)
much like python’s “Truthy” and Falsey”, but we want some values to not be false like zero, for instance
adios_db.models.common.validators module
- class adios_db.models.common.validators.EnumValidator(valid_items, err_msg, case_insensitive=False)
Bases:
object
validator for Enum values: a value that can only be one of a set
- class adios_db.models.common.validators.FloatRangeValidator(min_value, max_value, err_msg=None)
Bases:
object
Validator for float values that can only be a given range
range is inclusive (<= and >=)
- class adios_db.models.common.validators.YearValidator(min_year, max_year, err_msg=None)
Bases:
object
Validator for float values that can only be a given range
range is inclusive (<= and >=)
adios_db.models.common.vocabulary module
- adios_db.models.common.vocabulary.read_file_content(filename)