Skip to main content
Metaseed

Metaseed

CI codecov

Schema-driven metadata management from YAML specifications.

Documentation | Introduction Slides

What is Metaseed?

A schema-driven metadata management system that:

  • Defines entity schemas in human-readable YAML
  • Generates Pydantic models dynamically at runtime
  • Validates with composable rules
  • Supports multiple metadata standards (MIAPPE, ISA, Darwin Core, ...)
  • Exports a dataset as a DCAT catalog card (JSON-LD / Turtle) for data portals and FAIR assessment
YAML specs → Pydantic models → Validation → Serialization

Installation

Requires Python 3.11+

# Install from GitHub
uv tool install git+https://github.com/sorenwacker/metaseed.git

# Or for development
git clone https://github.com/sorenwacker/metaseed.git
cd metaseed
uv sync --extra dev

Supported Profiles

Counts are for the latest version of each profile.

Profile Versions Entities Fields Domain
MIAPPE 1.1, 1.2 14 163 Plant phenotyping
MIAPPE-HTP 1.0 28 137 High-throughput plant phenotyping
ISA 1.0 22 139 Life science
Darwin Core 1.0 10 189 Biodiversity
DiSSCo 0.4 16 261 Digital specimens
ENA 1.0 11 109 Nucleotide archive
MetaboLights 1.0 13 71 Metabolomics
PRIDE 1.0 9 61 Proteomics
SEEK 1.0 24 229 Systems biology (the FAIRDOM-SEEK data model)
SEEK-ready template 1.0, 2.0 4 26 Minimal ISA shape for SEEK upload

User-defined profiles supported in ~/.local/share/metaseed/specs/

Integrations

Adapters connect a dataset to an external service or format. They are separate from profiles: a profile is a metadata standard, an adapter is a route in or out.

Adapter Direction What it does
FAIRDOM-SEEK export Push ISA content over the JSON:API, or export SEEK-importable ISA RDF (guide)
DCAT export Export a dataset's catalogue record as DCAT (JSON-LD / Turtle)
ENA import Import public metadata for a European Nucleotide Archive accession
PRIDE both Import a PRIDE Archive proteomics project; export submission.px + SDRF
MetaboLights import Import a MetaboLights metabolomics study document
BrAPI import Import a BrAPI v2 plant-breeding server's studies into the miappe profile

Modi Operandi

Metaseed operates in four modes:

Mode Interface Use Case
CLI metaseed Script automation
Web UI Browser Visual editing
REST API HTTP System integration
Python API Library Programmatic access
MCP Server AI Claude integration

CLI Mode

# List entities in a profile
metaseed entities miappe 1.2

# Generate entity template
metaseed template miappe 1.2 Investigation

# Validate a dataset
metaseed validate dataset.yaml --profile miappe --version 1.2

# Start web UI
metaseed ui

# Start MCP server (for Claude Desktop)
metaseed mcp --transport stdio

Python API

from metaseed import MetaseedClient

client = MetaseedClient("miappe", "1.2")

# Create root entity
inv = client.create_entity("Investigation", {
    "unique_id": "INV001",
    "title": "Drought Tolerance Study",
    "description": "Multi-year field trial..."
})

# Create child with parent linkage
study = client.create_entity("Study", {
    "unique_id": "STU001",
    "title": "Field Trial 2024",
    "start_date": "2024-03-01"
}, parent_id=inv.id)

# Validate entire dataset
result = client.validate()
print(f"Valid: {result.is_valid}, Errors: {len(result.errors)}")

Architecture

graph LR
    subgraph interfaces["Interfaces"]
        direction RL
        CLI["CLI"]
        UI["Web UI"]
        API["REST API"]
        MCP["MCP Server"]
    end

    subgraph core["Core"]
        Client["MetaseedClient"]
        Facade["ProfileFacade"]
        Factory["Model Factory"]
        Validators["Validation Engine"]
    end

    subgraph data["Data Layer"]
        Specs["YAML Specs"]
        Repo["Entity Storage"]
        Storage["JSON/YAML Files"]
    end

    interfaces --> Client
    Client --> Facade
    Facade --> Factory
    Facade --> Validators
    Factory --> Specs
    Validators --> Repo
    Repo --> Storage

Validation

Composable validation rules defined in YAML:

  • Required field checking
  • Pattern matching (regex)
  • Range validation (min/max)
  • Date range validation
  • Coordinate pair validation
  • Uniqueness constraints (within parent or global)
  • Referential integrity (foreign keys)
  • Conditional rules
validation:
  - type: uniqueness
    entity: Study
    field: unique_id
    scope: parent

  - type: referential_integrity
    entity: ObservationUnit
    field: study_id
    references:
      entity: Study
      field: unique_id

MCP Integration

Model Context Protocol enables AI-assisted metadata extraction with Claude.

Tool categories:

  • Profile Discovery — list_profiles, get_profile_schema
  • File Extraction — parse_source_file, extract_entities
  • Entity CRUD — create_entity, update_entity, delete_entity
  • Validation — validate_entity, validate_dataset
  • Ontology — search_ontology, suggest_ontology_term

Technology Stack

Layer Technologies
Core Python 3.11+, Pydantic 2.0+
Interfaces FastAPI, Typer, HTMX, Jinja2
Data PyYAML, openpyxl
Agent mcp, FastMCP
Dev uv, pytest, ruff, pre-commit

Development

make setup    # Install dependencies + pre-commit hooks
make dev      # Start development server
make test     # Run tests
make lint     # Run linter
make docs     # Serve documentation locally

Data sources and attribution

Ontology term lookup and validation use the EMBL-EBI Ontology Lookup Service (OLS4). Term data is retrieved from the public OLS4 API and remains the property of the respective source ontologies. Use of OLS is subject to the EMBL-EBI Terms of Use.

Metaseed is a considerate API client: it caches results, rate-limits requests, and identifies itself with a descriptive User-Agent. For bulk or high-volume term resolution, prefer downloading the source ontologies or running a local OLS instance rather than the public API.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metaseed-0.39.0.tar.gz (724.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

metaseed-0.39.0-py3-none-any.whl (886.2 kB view details)

Uploaded Python 3

File details

Details for the file metaseed-0.39.0.tar.gz.

File metadata

  • Download URL: metaseed-0.39.0.tar.gz
  • Upload date:
  • Size: 724.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for metaseed-0.39.0.tar.gz
Algorithm Hash digest
SHA256 0838645d922c02454e5f0e2961c761753e9f6959d97ce03a8cd1db12d92f7913
MD5 cc0c952849ee99c57d7a95bc71165034
BLAKE2b-256 dec5d1884657987715c00573a7ae9491cf2d85d3fe4c3dc1d57a3969946131cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for metaseed-0.39.0.tar.gz:

Publisher: release.yml on sorenwacker/metaseed

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file metaseed-0.39.0-py3-none-any.whl.

File metadata

  • Download URL: metaseed-0.39.0-py3-none-any.whl
  • Upload date:
  • Size: 886.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for metaseed-0.39.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3125d3ad4c59f039a9e739de2014aba391e8d69dea28864dd36c90b38096a206
MD5 7b681136d2943615f5fa43eb2b6eca81
BLAKE2b-256 1f74936cba2450ae8bd545fbc8076e1b91cc5e93bcc1b4423a6d617b29124b12

See more details on using hashes here.

Provenance

The following attestation bundles were made for metaseed-0.39.0-py3-none-any.whl:

Publisher: release.yml on sorenwacker/metaseed

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.48.0

2 files

0.47.0

2 files

0.46.0

2 files

0.45.0

2 files

0.44.0

2 files

0.43.0

2 files

0.42.0

2 files

0.41.0

2 files

0.40.0

2 files

This release

0.39.0 This release

2 files

0.38.0

2 files

0.37.0

2 files

0.36.0

2 files

0.35.0

2 files

0.34.0

2 files

0.33.0

2 files

0.32.1

2 files

0.32.0

2 files

0.31.0

2 files

0.30.0

2 files

0.29.0

2 files

0.28.0

2 files

0.27.0

2 files

0.26.0

2 files

0.25.0

2 files

0.24.0

2 files

0.23.0

2 files

0.22.1

2 files

0.22.0

2 files

0.21.1

2 files

0.21.0

2 files

0.20.1

2 files

0.20.0

2 files

0.19.0

2 files

0.18.0

2 files

0.17.0

2 files

0.16.1

2 files

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