Skip to main content
Metaseed

Metaseed

CI codecov PyPI Python 3.11+ License: MIT

Metaseed creates, edits, and validates scientific metadata against a standard, from a YAML specification of that standard.

Documentation · Introduction slides · Try it hosted · Changelog

What it does

A metadata standard such as MIAPPE or ISA is written as a profile: a YAML file that names the entity types, their fields, the parent–child hierarchy, and the validation rules. From that file, Metaseed:

  • Generates Pydantic models for every entity type at runtime.
  • Validates a dataset with composable rules: required fields, patterns, ranges, uniqueness, referential integrity, and conditions.
  • Serializes datasets to JSON, YAML, and Excel, and back.
  • Exports to the formats repositories take: ISA-Tab, ENA XML, PRIDE submission.px with SDRF, DCAT, and SEEK's ISA RDF.
  • Pushes a dataset into a running FAIRDOM-SEEK instance, or to a shared metaseed-hub.

You work with it from a command line, a web interface, a Python API, or an MCP server for an AI agent. All four reach the same library functions, and a test fails when one of them falls behind the others.

Install

Metaseed requires Python 3.11 or later.

uv tool install metaseed

To include every integration, install metaseed[all]. To pick individual integrations, name their extras: for example, metaseed[seek,dcat] adds the FAIRDOM-SEEK and DCAT adapters. The Plugins page in the web interface lists which adapters are available.

For development:

git clone https://github.com/sorenwacker/metaseed.git
cd metaseed
make setup

Profiles

The package ships these profiles. Counts refer to each profile's latest version.

Profile --profile Versions Entities Fields Domain
MIAPPE miappe 1.1, 1.2 14 163 Plant phenotyping
ISA isa 1.0 22 139 Life science investigations
Darwin Core darwin-core 1.0 10 189 Biodiversity
DiSSCo dissco 0.4 16 261 Digital specimens
ENA ena 1.0 12 113 Nucleotide archive submissions
MetaboLights metabolights 1.0 13 71 Metabolomics
PRIDE pride 1.0, 2.0 9 61 Proteomics
REMBI rembi 1.5 14 101 Biological imaging
Health-RI core health-ri-core 2.0 13 156 Health data catalogues (DCAT-AP)
SEEK seek 1.0 24 229 The FAIRDOM-SEEK data model
SEEK-ready template seek-ready-template 1.0, 2.0, 3.0 6 33 Minimal ISA shape for a SEEK upload

Profiles you write yourself go under ~/.local/share/metaseed/specs/. The web interface's spec builder and the metaseed spec commands author them; the explorer compares them; metaseed merge combines them.

Integrations

An adapter is a route in or out of a dataset. A profile is a standard; an adapter is a service or file format. Each adapter is a pip extra of the same name.

Adapter Direction What it does
FAIRDOM-SEEK push, export Creates Sample Types and Extended Metadata on a SEEK instance and pushes a dataset as ISA content; exports SEEK-importable ISA RDF (guide)
Metaseed Hub push, pull Pushes datasets and profiles to a metaseed-hub and pulls them back, never overwriting without being asked (guide)
DCAT export Exports a dataset's catalogue record as DCAT, in JSON-LD and Turtle
ENA import, export Imports the metadata of a European Nucleotide Archive accession; exports ENA XML
PRIDE import, export Imports a PRIDE Archive project; exports submission.px and SDRF
MetaboLights import Imports a MetaboLights study document
BrAPI import Imports a BrAPI v2 server's studies into the MIAPPE profile

Use it

Command line

The CLI is grouped by what you act on. Every group prints its own help, for example metaseed dataset --help.

metaseed profiles                                  # the profiles and their versions
metaseed profile schema --profile miappe -v 1.2    # entity types and fields
metaseed dataset create test-drought --profile miappe -v 1.2
metaseed entity create test-drought Investigation --set unique_id=INV001 --set title="Drought trial"
metaseed dataset validate test-drought
metaseed dataset export test-drought --format dcat -o out/
metaseed ui                                        # the web interface
metaseed mcp --transport stdio                     # the MCP server, for Claude Desktop

Output is JSON, so a script reads what a person reads. The CLI reference lists every command; Capability parity records which command, MCP tool, and web route serve each capability.

Python

from metaseed import MetaseedClient

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

investigation = client.create_entity(
    "Investigation",
    {"unique_id": "INV001", "title": "Drought tolerance trial"},
)
client.create_entity(
    "Study",
    {"unique_id": "STU001", "title": "Field trial 2024", "start_date": "2024-03-01"},
    parent_id=investigation.id,
)

result = client.validate()
print(result.valid, [issue.message for issue in result.issues])

The Python API reference covers the client; the public API contract lists what is stable.

Web interface

metaseed ui serves the datasets overview, entity forms and tables, validation, the graph view, the profile explorer, the spec builder, and the Plugins page for the adapters.

MCP server

metaseed mcp exposes the same capabilities as tools for an AI agent: profile discovery, dataset and entity editing, extraction from source files, validation, ontology lookup, and specification authoring. See the MCP setup guide.

Validation

Rules are part of the profile, in YAML:

validation_rules:
  - name: study_unique_within_investigation
    type: uniqueness
    applies_to: [Study]
    field: unique_id
    unique_within: parent

  - name: observation_unit_names_a_study
    type: referential_integrity
    applies_to: [ObservationUnit]
    field: study_id
    reference: Study.unique_id

Rule types cover required fields, patterns, numeric and date ranges, coordinate pairs, uniqueness within a parent or globally, referential integrity, and conditions.

Architecture

graph LR
    subgraph interfaces["Interfaces"]
        direction RL
        CLI["CLI"]
        UI["Web interface"]
        MCP["MCP server"]
    end

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

    subgraph data["Data"]
        Specs["YAML profiles"]
        Repo["Entity repository"]
        Storage["JSON and YAML files"]
    end

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

The architecture overview describes each layer.

Development

make setup    # dependencies and pre-commit hooks
make dev      # the web interface with reload
make test     # the test suite
make lint     # ruff and mypy
make docs     # the documentation site with reload

The project follows document-driven and test-driven development: a change starts in docs/, gets a test, then an implementation. Rules are enforced by tests rather than by review; the contributing guide lists them.

Data sources and attribution

Ontology lookup and validation use the EMBL-EBI Ontology Lookup Service (OLS4). Term data comes from the public OLS4 API and stays the property of the source ontologies; use of OLS is subject to the EMBL-EBI terms of use. Metaseed caches results, limits its request rate, and identifies itself with a descriptive User-Agent. For bulk term resolution, download the source ontologies or run a local OLS instance instead of using the public API.

License

MIT

Metadata

Release files for metaseed 0.62.0

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

Source distribution (sdist)

Source distribution for metaseed 0.62.0
File Size Uploaded
metaseed-0.62.0.tar.gz 946.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for metaseed 0.62.0
File Interpreter ABI Platform
metaseed-0.62.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.1 MB

Release files / metaseed-0.62.0.tar.gz

Download URL metaseed-0.62.0.tar.gz
Size 946.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f3fbdee0e1ba278250ac06cb6f309702586fc30ff41afce30649503488c784f8
BLAKE2b-256 checksum
How to use checksums
5ad1890359b23f8a2a7e8a35c33660a1b5cb8f53995b6c1adce3889a83a73538
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / metaseed-0.62.0-py3-none-any.whl

Download URL metaseed-0.62.0-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
6f745e1f78afb76fb343f51fadbb99a52b3579a5d5ada338574c64e49265dce9
BLAKE2b-256 checksum
How to use checksums
36351941c5326cab174cfec4e94ef30738619ab529d8a50c0c940d9524aea174
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

0.63.0

2 release files

This release

0.62.0 This release

2 release files

0.61.0

2 release files

0.55.2

2 release files

0.55.1

2 release files

0.55.0

2 release files

0.54.0

2 release files

0.53.0

2 release files

0.52.0

2 release files

0.51.2

2 release files

0.51.1

2 release files

0.48.0

2 release files

0.47.0

2 release files

0.46.0

2 release files

0.45.0

2 release files

0.44.0

2 release files

0.43.0

2 release files

0.42.0

2 release files

0.41.0

2 release files

0.40.0

2 release files

0.39.0

2 release files

0.38.0

2 release files

0.37.0

2 release files

0.36.0

2 release files

0.35.0

2 release files

0.34.0

2 release files

0.33.0

2 release files

0.32.1

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.30.0

2 release files

0.23.0

2 release files

0.22.1

2 release files

0.22.0

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.1

2 release 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