Artifact envelopes and store
The artifact models are Pydantic envelopes for stable cache files:
ReplicateArtifact: output from one replicate;ConditionArtifact: aggregate over replicates for one condition;ComparisonArtifact: cross-condition statistical result;ArtifactSidecarRef: validated reference to an artifact-owned sidecar.
ArtifactStore reads and writes canonical result.json, manifest files, and
sidecars. Sidecar references are relative paths with recorded size and SHA-256
hashes.
Artifact envelope models for MDAnalysis extension-layer results.
- polyzymd.analyses.mda.artifacts.is_raw_mdanalysis_results(value)[source]
Return whether a value is an MDAnalysis raw results container.
Detection is intentionally import-light and relies on module/class metadata so artifact validation never imports MDAnalysis.
- Parameters:
value (Any) – Candidate value to inspect.
- Returns:
Truewhenvaluelooks like an MDAnalysisResultsobject.- Return type:
- polyzymd.analyses.mda.artifacts.raw_mdanalysis_results_path(value)[source]
Return the nested path to raw MDAnalysis results, if present.
- Parameters:
value (Any) – Candidate artifact field value.
- Returns:
Human-readable nested path to the first raw results container, or
Nonewhen no raw results are present.- Return type:
str or None
- polyzymd.analyses.mda.artifacts.reject_raw_mdanalysis_results(value, *, field_name)[source]
Reject raw MDAnalysis
Resultsobjects in artifact fields.- Parameters:
value (Any) – Candidate artifact field value.
field_name (str) – Name used in validation diagnostics.
- Returns:
The original value when no raw results are found.
- Return type:
Any
- Raises:
ValueError – Raised when raw MDAnalysis results are found recursively.
- polyzymd.analyses.mda.artifacts.validate_artifact_relative_path(value)[source]
Validate an artifact-relative POSIX path string.
- Parameters:
value (str) – Candidate path stored in a JSON artifact.
- Returns:
Normalized relative path using POSIX separators.
- Return type:
- Raises:
ValueError – Raised when the path is empty, absolute, or contains parent traversal.
- class polyzymd.analyses.mda.artifacts.ArtifactSidecarRef(*, path, sha256, size_bytes, media_type=None, metadata=<factory>, **extra_data)[source]
Bases:
BaseModelRelative reference to a sidecar file owned by an artifact store.
- path: str
- sha256: str
- size_bytes: int
- model_config = {'extra': 'allow'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class polyzymd.analyses.mda.artifacts.ArtifactManifest(*, schema_version='1', analysis_name, artifact_id=None, artifact_type='manifest', polyzymd_version=None, mdanalysis_version=None, inputs=<factory>, provenance=<factory>, sidecars=<factory>, metadata=<factory>, **extra_data)[source]
Bases:
BaseModelManifest for one artifact directory and its sidecar files.
- schema_version: str
- analysis_name: str
- artifact_type: str
- sidecars: list[ArtifactSidecarRef]
- model_config = {'extra': 'allow'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class polyzymd.analyses.mda.artifacts.ArtifactEnvelope(*, schema_version='1', artifact_type='artifact', analysis_name, payload=<factory>, sidecars=<factory>, provenance=<factory>, metadata=<factory>, warnings=<factory>, **extra_data)[source]
Bases:
BaseModelExtensible JSON envelope for MDAnalysis extension-layer artifacts.
- schema_version: str
- artifact_type: str
- analysis_name: str
- sidecars: list[ArtifactSidecarRef]
- model_config = {'extra': 'allow'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class polyzymd.analyses.mda.artifacts.ReplicateArtifact(*, schema_version='1', artifact_type='replicate', analysis_name, payload=<factory>, sidecars=<factory>, provenance=<factory>, metadata=<factory>, warnings=<factory>, condition_label, replicate, **extra_data)[source]
Bases:
ArtifactEnvelopeResult artifact produced for one replicate trajectory.
- artifact_type: Literal['replicate']
- condition_label: str
- replicate: int
- model_config = {'extra': 'allow'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class polyzymd.analyses.mda.artifacts.ConditionArtifact(*, schema_version='1', artifact_type='condition', analysis_name, payload=<factory>, sidecars=<factory>, provenance=<factory>, metadata=<factory>, warnings=<factory>, condition_label, replicates=<factory>, source_replicates=<factory>, skipped_replicates=<factory>, **extra_data)[source]
Bases:
ArtifactEnvelopeAggregated artifact produced for one simulation condition.
- artifact_type: Literal['condition']
- condition_label: str
- model_config = {'extra': 'allow'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class polyzymd.analyses.mda.artifacts.ComparisonArtifact(*, schema_version='1', artifact_type='comparison', analysis_name, payload=<factory>, sidecars=<factory>, provenance=<factory>, metadata=<factory>, warnings=<factory>, conditions=<factory>, control_label=None, effective_control=None, **extra_data)[source]
Bases:
ArtifactEnvelopeCross-condition comparison artifact.
- artifact_type: Literal['comparison']
- model_config = {'extra': 'allow'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
Filesystem artifact store for MDAnalysis extension-layer outputs.
- exception polyzymd.analyses.mda.store.ArtifactStoreError[source]
Bases:
MDAnalysisExtensionErrorError raised when artifact-store path or validation checks fail.
- class polyzymd.analyses.mda.store.ArtifactStore(root)[source]
Bases:
objectStore JSON artifacts and relative sidecars under one root directory.
- __init__(root)[source]
Create an artifact store rooted at
root.- Parameters:
root (str or Path) – Directory that owns artifact JSON files and sidecars.
- write_replicate_result(artifact, path='result.json')[source]
Write a replicate artifact JSON file.
- Parameters:
artifact (ReplicateArtifact) – Replicate artifact envelope to serialize.
path (str or Path, optional) – Store-relative JSON path, by default
"result.json".
- Returns:
Absolute path to the written JSON file.
- Return type:
Path
- read_replicate_result(path='result.json')[source]
Read a replicate artifact JSON file.
- Parameters:
path (str or Path, optional) – Store-relative JSON path, by default
"result.json".- Returns:
Deserialized replicate artifact.
- Return type:
ReplicateArtifact
- write_condition_result(artifact, path='result.json')[source]
Write a condition artifact JSON file.
- Parameters:
artifact (ConditionArtifact) – Condition artifact envelope to serialize.
path (str or Path, optional) – Store-relative JSON path, by default
"result.json".
- Returns:
Absolute path to the written JSON file.
- Return type:
Path
- read_condition_result(path='result.json')[source]
Read a condition artifact JSON file.
- Parameters:
path (str or Path, optional) – Store-relative JSON path, by default
"result.json".- Returns:
Deserialized condition artifact.
- Return type:
ConditionArtifact
- write_comparison_result(artifact, path='result.json')[source]
Write a comparison artifact JSON file.
- Parameters:
artifact (ComparisonArtifact) – Comparison artifact envelope to serialize.
path (str or Path, optional) – Store-relative JSON path, by default
"result.json".
- Returns:
Absolute path to the written JSON file.
- Return type:
Path
- read_comparison_result(path='result.json')[source]
Read a comparison artifact JSON file.
- Parameters:
path (str or Path, optional) – Store-relative JSON path, by default
"result.json".- Returns:
Deserialized comparison artifact.
- Return type:
ComparisonArtifact
- write_manifest(manifest, path='manifest.json')[source]
Write an artifact manifest JSON file.
- Parameters:
manifest (ArtifactManifest) – Manifest to serialize.
path (str or Path, optional) – Store-relative JSON path, by default
"manifest.json".
- Returns:
Absolute path to the written manifest.
- Return type:
Path
- read_manifest(path='manifest.json')[source]
Read an artifact manifest JSON file.
- Parameters:
path (str or Path, optional) – Store-relative JSON path, by default
"manifest.json".- Returns:
Deserialized manifest.
- Return type:
ArtifactManifest
- register_sidecar(path, *, media_type=None, metadata=None)[source]
Register an existing store-relative sidecar file.
- Parameters:
- Returns:
Relative sidecar reference with streamed SHA-256 and size metadata.
- Return type:
ArtifactSidecarRef
- write_npz_sidecar(path, *, compressed=True, media_type='application/x-npz', metadata=None, **arrays)[source]
Write NumPy arrays to an NPZ sidecar and register it.
- Parameters:
path (str or Path) – Store-relative sidecar path.
compressed (bool, optional) – Whether to use
numpy.savez_compressed, by default True.media_type (str or None, optional) – Sidecar media type stored in the reference.
metadata (dict[str, Any] or None, optional) – Additional sidecar metadata.
**arrays (Any) – Named arrays forwarded to NumPy.
- Returns:
Registered NPZ sidecar reference.
- Return type:
ArtifactSidecarRef
- resolve_sidecar(ref)[source]
Resolve a sidecar reference to an absolute path under the store root.
- Parameters:
ref (ArtifactSidecarRef or str or Path) – Sidecar reference or store-relative path.
- Returns:
Absolute sidecar path under the store root.
- Return type:
Path
- validate_sidecar(ref)[source]
Validate sidecar existence, size, path containment, and SHA-256.
- Parameters:
ref (ArtifactSidecarRef) – Sidecar reference to validate.
- Returns:
Absolute sidecar path when validation passes.
- Return type:
Path
- load_npz_sidecar(ref)[source]
Validate and open an NPZ sidecar.
- Parameters:
ref (ArtifactSidecarRef) – Sidecar reference to validate before loading.
- Returns:
Open
numpy.loadhandle. Callers should use it as a context manager to close the underlying file promptly.- Return type:
Any
- source_artifact_ref(path='result.json')[source]
Return a hashed reference for an artifact JSON file.