Automated harmonization of public omics metadata
Project description
omicsmeta
omicsmeta is an early-stage Python package for harmonizing public omics
metadata from GEO, SRA, BioSample, and tabular exports.
The central design choice is to make ontology mapping pluggable. Generic
mapping tools such as text2term are useful, but public omics metadata also
needs domain-specific preprocessing, field-type detection, confidence-aware
routing, and cross-field validation. omicsmeta is intended to provide that
pipeline.
Current implementation status:
- string normalization and biomedical abbreviation expansion
- heuristic metadata field detection
- lightweight built-in ontology mapper for common terms
- optional
text2termmapper adapter - simple OBO loader and SQLite ontology cache
- tabular, minimal GEO SOFT, BioSample XML, and SRA XML readers
- harmonization orchestrator and CLI
- real GEO SOFT snippet test coverage
- conservative field routing for ambiguous metadata columns
- transparent cell-line inference for missing species/tissue/disease fields
- deduplicated unmapped-term summaries for manual curation
- sample-wide output tables
- batch harmonization
- known-answer benchmark helper and CLI script
Install
Install the published package from PyPI:
python -m pip install omicsmeta
Confirm the command-line interface is available:
omicsmeta --help
For contributor setup from a source checkout, install the development extras:
python -m pip install -e ".[dev,docs]"
Quick Use
Create a small CSV or TSV metadata table:
cat > metadata.tsv <<'EOF'
sample_id,species,tissue,disease,cell line,sex
sample_1,Homo sapiens,lung,NSCLC,A549,female
sample_2,Homo sapiens,breast,breast cancer,MCF-7,female
EOF
Harmonize the file and write reviewable output tables:
omicsmeta harmonize metadata.tsv \
--output harmonized.tsv \
--unmapped unmapped.tsv \
--unmapped-summary-output unmapped_summary.tsv \
--sample-output samples.tsv \
--report qc_report.html
Direct GEO fetching is also available:
omicsmeta harmonize \
--geo-accession GSE123456 \
--output harmonized.tsv \
--unmapped unmapped.tsv \
--unmapped-summary-output unmapped_summary.tsv \
--sample-output samples.tsv \
--report qc_report.html
Custom local OBO files can be added to the built-in mapper:
omicsmeta harmonize metadata.tsv \
--ontology-obo disease_slim.obo \
--output harmonized.tsv \
--unmapped unmapped.tsv \
--unmapped-summary-output unmapped_summary.tsv \
--sample-output samples.tsv \
--report qc_report.html
Managed ontology resources can be cached locally:
omicsmeta ontologies list
omicsmeta ontologies download doid uberon cl
omicsmeta ontologies index --resource doid --resource uberon
omicsmeta harmonize metadata.tsv \
--ontology-resource doid \
--ontology-resource uberon \
--output harmonized.tsv \
--unmapped unmapped.tsv \
--unmapped-summary-output unmapped_summary.tsv \
--sample-output samples.tsv \
--report qc_report.html
Multiple files can be harmonized in one run:
omicsmeta batch \
--input metadata_a.tsv \
--input metadata_b.tsv \
--output harmonized.tsv \
--unmapped unmapped.tsv \
--unmapped-summary-output unmapped_summary.tsv \
--sample-output samples.tsv \
--report qc_report.html
Known-answer fixtures can be benchmarked:
python scripts/benchmark_mapping.py \
--input examples/basic/metadata.tsv \
--truth examples/basic/expected_harmonized.tsv
Run the bundled multi-fixture benchmark suite:
python scripts/benchmark_mapping.py \
--manifest benchmarks/known_answer_suite.tsv \
--output-json benchmark_suite.json
Documentation
- Documentation site
- Quickstart
- API reference
- Design notes
- Release readiness checklist
- Basic fixture tutorial
- Galaxy wrapper scaffold
Maturity
This repository is pre-alpha and not yet JOSS-ready. Version 0.1.0 is
published on PyPI for early testing, but the project still needs
publication-scale curated benchmarks, external user feedback, and Galaxy Tool
Shed validation before submission.
Run tests locally with:
python -m pip install -e ".[dev,docs]"
python -m pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file omicsmeta-0.1.1.tar.gz.
File metadata
- Download URL: omicsmeta-0.1.1.tar.gz
- Upload date:
- Size: 49.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1eb8bcd05f2688c4d3d229f04bbb88f7c1700615df0951acc589658681fd3e08
|
|
| MD5 |
2d75b2fe6a9832ad04fb7c563bde0782
|
|
| BLAKE2b-256 |
372fd152018ea8532417003b9f55f7adcbb45a7418e3f93bb15f4929f54fd1ad
|
Provenance
The following attestation bundles were made for omicsmeta-0.1.1.tar.gz:
Publisher:
publish.yml on qchiujunhao/omicsmeta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
omicsmeta-0.1.1.tar.gz -
Subject digest:
1eb8bcd05f2688c4d3d229f04bbb88f7c1700615df0951acc589658681fd3e08 - Sigstore transparency entry: 1809984361
- Sigstore integration time:
-
Permalink:
qchiujunhao/omicsmeta@5c461dc885046f75e4279a668fe65cda552a0a9d -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/qchiujunhao
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5c461dc885046f75e4279a668fe65cda552a0a9d -
Trigger Event:
release
-
Statement type:
File details
Details for the file omicsmeta-0.1.1-py3-none-any.whl.
File metadata
- Download URL: omicsmeta-0.1.1-py3-none-any.whl
- Upload date:
- Size: 31.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c02f8e6a2f6887fec132206335c99f97c9584680c4508a900ce9ed4e9f7d9472
|
|
| MD5 |
9d90a103bcdb097f516e9e88dc2f0840
|
|
| BLAKE2b-256 |
f8353d4d67b860429be2337eb9c4eacbda0823b1d67c8d0b13e1734ca5ac2a7a
|
Provenance
The following attestation bundles were made for omicsmeta-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on qchiujunhao/omicsmeta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
omicsmeta-0.1.1-py3-none-any.whl -
Subject digest:
c02f8e6a2f6887fec132206335c99f97c9584680c4508a900ce9ed4e9f7d9472 - Sigstore transparency entry: 1809984373
- Sigstore integration time:
-
Permalink:
qchiujunhao/omicsmeta@5c461dc885046f75e4279a668fe65cda552a0a9d -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/qchiujunhao
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5c461dc885046f75e4279a668fe65cda552a0a9d -
Trigger Event:
release
-
Statement type: