validation¶
Helpers for validation and checking of SBML and libsbml operations.
ScopedLossCollector
¶
Bases: Generic[K, V]
Collect the losses of one document and report them once per group.
Writing a document can lose the same thing over and over: an annotation resource of a collection which cannot be canonicalized, an attribute the level and version of the document does not have. Reporting each of them on its own buries the one decision which fixes all of them under thousands of lines. Inside a scope every loss is collected under a key and the detail is logged at debug by the caller; when the outermost scope ends, one report per key is emitted, in the order of the keys. Outside a scope there is nothing to report at the end, so the caller reports the loss directly.
The collection is held in a ContextVar rather than in a module global:
it belongs to the code which writes one document, and a thread starts
with a fresh context in which the variable holds its default, so writing
one document does not collect into the report of another.
The type variable K is the key the losses are grouped under, a string
or a tuple of them, and V is what is collected for one key.
Construct a collector.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
the name of the |
required |
report
|
Callable[[K, V], None]
|
called once per key when the outermost scope ends, in the order of the keys |
required |
scope
¶
Collect the losses recorded inside and report them when it ends.
A scope inside an active one collects into it and reports nothing of its own, so that a document which is created and then annotated from a file is still reported once.
Yields:
| Type | Description |
|---|---|
None
|
None |
group
¶
Get the group of a key inside a scope, None outside one.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key
|
K
|
the key the loss is grouped under |
required |
create
|
Callable[[], V]
|
builds the group when the key is seen for the first time |
required |
Returns:
| Type | Description |
|---|---|
V | None
|
the group to record the loss in, |
V | None
|
the caller has to report the loss itself |
ValidationOptions
dataclass
¶
ValidationOptions(
log_errors=True,
internal_consistency=True,
general_consistency=True,
identifier_consistency=True,
mathml_consistency=True,
units_consistency=True,
sbo_consistency=True,
overdetermined_model=True,
modeling_practice=True,
)
Options for SBML validator.
Controls the consistency checks that are performed when SBMLDocument.checkConsistency() is called.
-
general_consistency: Correctness and consistency of specific SBML language constructs. Performing this set of checks is highly recommended. With respect to the SBML specification, these concern failures in applying the validation rules numbered 2xxxx in the Level 2 Versions 2-4 and Level 3 Versions 1-2 specifications. -
ìdentifier_consistency: Correctness and consistency of identifiers used for model entities. An example of inconsistency would be using a species identifier in a reaction rate formula without first having declared the species. With respect to the SBML specification, these concern failures in applying the validation rules numbered 103xx in the Level 2 Versions 2-4 and Level 3 Versions 1-2 specifications. -
units_consistency: Consistency of measurement units associated with quantities in a model. With respect to the SBML specification, these concern failures in applying the validation rules numbered 105xx in the Level 2 Versions 2-4 and Level 3 Versions 1-2 specifications. -
mathml_consistency: Syntax of MathML constructs. With respect to the SBML specification, these concern failures in applying the validation rules numbered 102xx in the Level 2 Versions 2-4 and Level 3 Versions 1-2 specifications. -
sbo_consistency: Consistency and validity of SBO identifiers (if any) used in the model. With respect to the SBML specification, these concern failures in applying the validation rules numbered 107xx in the Level 2 Versions 2-4 and Level 3 Versions 1-2 specifications. -
overdetermined_model: Static analysis of whether the system of equations implied by a model is mathematically overdetermined. With respect to the SBML specification, this is validation rule #10601 in the Level 2 Versions 2-4 and Level 3 Versions 1-2 specifications. -
modeling_practise: Additional checks for recommended good modeling practice. (These are tests performed by libSBML and do not have equivalent SBML validation rules.) By default, all validation checks are applied to the model in an SBMLDocument object unless SBMLDocument.setConsistencyChecks() is called to indicate that only a subset should be applied. Further, this default (i.e., performing all checks) applies separately to each new SBMLDocument object created. In other words, each time a model is read using SBMLReader.readSBML(), SBMLReader.readSBMLFromString(), or the global functions readSBML() and readSBMLFromString(), a new SBMLDocument is created and for that document, a call to SBMLDocument.checkConsistency() will default to applying all possible checks. Calling programs must invoke SBMLDocument.setConsistencyChecks() for each such new model if they wish to change the consistency checks applied. -
internal_consistency: Additional checks that model is consistent XML. -
log_errorsBoolean flag to log errors.
ValidationResult
¶
Results of an SBMLDocument validation.
Initialize ValidationResult.
check
¶
Check the libsbml return value and prints message if something happened.
If 'value' is None, prints an error message constructed using 'message' and then exits with status code 1. If 'value' is an integer, it assumes it is a libSBML return status code. If the code value is LIBSBML_OPERATION_SUCCESS, returns without further action; if it is not, prints an error message constructed using 'message' along with text from libSBML explaining the meaning of the code, and exits with status code 1.
validate_doc
¶
Validate SBMLDocument.
:param doc: SBMLDocument to check :param title: identifier or path for validation report :param options: validation options and settings.
:return: ValidationResult