Skip to main content

aind-metadata-validator

This package includes helper functions for validating metadata from aind-data-schema, individual files in a metadata.json file, and the fields within each file.

All validation returns a MetadataState enum, see utils.py

Get status

By ID

Use aind-data-access-api [todo]

Full table

You can get the entire redshift status table by running:

from aind_data_access_api.rds_tables import RDSCredentials
from aind_data_access_api.rds_tables import Client
import pandas as pd

DEV_OR_PROD = "dev" if "test" in API_GATEWAY_HOST else "prod"
REDSHIFT_SECRETS = f"/aind/{DEV_OR_PROD}/redshift/credentials/readwrite"
RDS_TABLE_NAME = f"metadata_status_{DEV_OR_PROD}"

rds_client = Client(
        credentials=RDSCredentials(
            aws_secrets_name=REDSHIFT_SECRETS
        ),
    )

class MetadataState(int, Enum):
    VALID = 2  # validates as it's class
    PRESENT = 1  # present
    OPTIONAL = 0  # missing, but it's optional
    MISSING = -1  # missing, and it's required
    CORRUPT = -3  # corrupt, can't be loaded from json


def _get_status() -> pd.DataFrame:
    """Get the status of the metadata
    """
    response = rds_client.read_table(RDS_TABLE_NAME)

    # returns int values, can be compared against MetadataState
    return response

Metadata validation

Returns a dictionary where each key is metadata, a file, or a file.field and the value is the MetadataState.

from aind_metadata_validator.metadata_validator import validate_metadata

m = Metadata()

results_df = validate_metadata(m.model_dump())

Redshift sync

Run on Code Ocean

Two code ocean capsules run the sync nightly: https://codeocean.allenneuraldynamics.org/capsule/0257223/tree and https://codeocean.allenneuraldynamics-test.org/capsule/3640490/tree

Run locally

The package also includes a function run() in sync.py that will validate the entire DocDB and push the results to redshift.

pip install aind-metadata-validator

from aind_metadata_validator.sync import run

run()

Metadata

Release files for aind-metadata-validator 0.11.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aind-metadata-validator 0.11.11
File Size Uploaded
aind_metadata_validator-0.11.11.tar.gz 92.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aind-metadata-validator 0.11.11
File Interpreter ABI Platform
aind_metadata_validator-0.11.11-py3-none-any.whl Python 3 none any Details

Total release size: 103.7 kB

Release files / aind_metadata_validator-0.11.11.tar.gz

Download URL aind_metadata_validator-0.11.11.tar.gz
Size 92.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ebc02b50258c5e92ddf5cef2b261aec9e8c33c7ec4b73cdc8e7a95774d345b4a
BLAKE2b-256 checksum
How to use checksums
c7b1f7d67d93fe03128a62b59a724c2d4f31a6a56d145000f45c8afdb0a9f253
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / aind_metadata_validator-0.11.11-py3-none-any.whl

Download URL aind_metadata_validator-0.11.11-py3-none-any.whl
Size 11.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d701c29a3c28ad257cf6e286faa4470c22ddbdf5685ce965cd789d09979e5914
BLAKE2b-256 checksum
How to use checksums
f5b7b4591b91ed9a14056670f739f827cfb615a4d32a551876c47d3d41a44421
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page