orfdata 0.42.3__tar.gz → 0.42.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {orfdata-0.42.3/orfdata.egg-info → orfdata-0.42.4}/PKG-INFO +1 -1
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/catalogs.md +58 -61
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/catalog.py +48 -7
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/catalog_manifest.py +24 -1
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/catalogs.py +9 -3
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/cli.py +2 -2
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/catalogs.json +146 -1
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/liftover.py +5 -1
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/proteome.py +3 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/riborf.py +10 -2
- orfdata-0.42.4/orfdata/sources/riborf_native.py +430 -0
- orfdata-0.42.4/orfdata/version.py +1 -0
- {orfdata-0.42.3 → orfdata-0.42.4/orfdata.egg-info}/PKG-INFO +1 -1
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata.egg-info/SOURCES.txt +6 -1
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/README.md +19 -17
- orfdata-0.42.4/tests/data/riborf/gencodeM25.gtf.gz +0 -0
- orfdata-0.42.4/tests/data/riborf/gencodeM25.rna.fa.gz +0 -0
- orfdata-0.42.4/tests/data/riborf/v3-manifest.json +131 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_catalog_registry.py +1 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_data_resources.py +1 -1
- orfdata-0.42.4/tests/test_riborf.py +489 -0
- orfdata-0.42.4/tools/verify_riborf_native.py +161 -0
- orfdata-0.42.3/orfdata/version.py +0 -1
- orfdata-0.42.3/tests/test_riborf.py +0 -135
- {orfdata-0.42.3 → orfdata-0.42.4}/LICENSE +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/MANIFEST.in +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/README.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/deploy.sh +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/copy-yeast.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/coverage.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/dog-data-sources.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/dog-peptides.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/downloads.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/downstream.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/examples.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/human-tissue.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/index.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/ingolia-yeast.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/mammary-stroma.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/measurements.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/pairing.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/pfizer-peptides.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/pfizer-protein.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/pfizer-rna.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/proteome.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/reference.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/search-references.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/source-references.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/species.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/storage.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/stylesheets/docs.css +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs/viral.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/docs.sh +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/lint.sh +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/mkdocs.yml +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/__init__.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/_pinned_genome.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/_structure.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/artifact_archives.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/build.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/catalog_cli.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/cli_output.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/chains.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/datasets.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/genomes.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/ires/rfam-15.1-human-ires.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/orf-evidence/AUTHOR-LICENSE.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/orf-evidence/NOTICE.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/orf-evidence/catalog.json.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/orf-evidence/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/uorf-evidence/AUTHOR-LICENSE.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/uorf-evidence/NOTICE.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/uorf-evidence/catalog.json.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/uorf-evidence/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/viral/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/viral/gdc-grch38-d1-vd1-coverage.tsv +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/viral/gdc-grch38-d1-vd1-genbank.tsv +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/viral/gdc-grch38-d1-vd1-pave.tsv +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/viral/hpv16-refseq-CDS.json.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data/viral/subsets.yaml +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/data_resources.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/dataset.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/dataset_cli.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/datasets.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/download_cli.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/downloads.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/evidence.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/evidence_summary.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/fasta.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/genbank.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/genomes.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/genomes_cli.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/gtf.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/initiation_context.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/install.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/liftover_cli.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/measurements.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/model.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/net.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/numeric_vector.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/pairing.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/proteome_cli.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/record_sources.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/reference.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/reference_ledger.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/reference_mapping.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/reference_table.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/refseq.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/rna.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/search_reference.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sequence.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/__init__.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/copy.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/ingolia.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/kaabinejadian.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/mammary_stroma.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/ncorf_mammals.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/openprot.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/peptideatlas.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_attribution.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_dataset.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_definitions.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_evidence.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_lineage.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_native.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_queries.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_rna.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/pfizer_vendor.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/sources/wang.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/viral.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/viral_annotation.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/viral_cli.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/viral_coverage.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/viral_panel.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/viral_registry.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata/viral_subsets.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata.egg-info/dependency_links.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata.egg-info/entry_points.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata.egg-info/requires.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/orfdata.egg-info/top_level.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/pyproject.toml +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/setup.cfg +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/test.sh +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/conftest.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/aggregate_evidence.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/GSM1905474.soft +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/GSM1905474_KL9_fpkm.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/GSM1905476.soft +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/GSM1905476_KL10_fpkm.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/GSM1905478.soft +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/GSM1905478_KL11_fpkm.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/GSM1905479.soft +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/GSM1905479_KL12_fpkm.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/geo-series.soft +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/methods.pdf +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/paper.xml +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/pmc-metadata.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/qconcat.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/copy/workbook.xlsx +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346111.metadata.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346111.quant.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346114.metadata.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346114.quant.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346115.metadata.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346115.quant.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346116.metadata.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346116.quant.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346117.metadata.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346117.quant.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346118.metadata.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346118.quant.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346120.metadata.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346120.quant.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346122.metadata.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/GSM346122.quant.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ingolia/readMe.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/kaabinejadian/README.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/kaabinejadian/Results.zip +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/kaabinejadian/manifest-v1.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/kaabinejadian/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/kaabinejadian/sdrf.tsv +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/mammary_stroma/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/mammary_stroma/geo.soft.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/mammary_stroma/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/mammary_stroma/paper.xml +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/mammary_stroma/peptides.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/mammary_stroma/project.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/mammary_stroma/proteinGroups.txt +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/mammary_stroma/rna.csv.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/README.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/S3.xlsx +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/ensembl107.cdna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/ensembl107.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/human-ensembl107.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/human.bed +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/human.pep.fa +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/mouse.bed +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/ncorf_mammals/mouse.pep.fa +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/openprot/README.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/openprot/ensembl106.cdna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/openprot/ensembl106.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.bed.zip +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.fasta.zip +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.tsv.zip +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/peptideatlas/README.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/peptideatlas/atlas_build.tsv.zip +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/peptideatlas/ensembl.pep.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/peptideatlas/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/dog/expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/dog/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/dog/protein.tsv +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/dog/search.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/human/expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/human/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/human/protein.tsv +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/human/search.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/mouse/expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/mouse/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/mouse/protein.tsv +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/mouse/search.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/acquisition-missingness.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/definitions.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/dog-panel.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/membership-search-slice.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/memberships.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/native.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/parent-status-search-slice.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/parent-status.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/psm-parent-sets-search-slice.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/psm-parent-sets.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/search-slice.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/search-slice.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/study-slice.xml +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer/vendor/summary-samples.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/GSE325522_family.soft.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/GSE325523_family.soft.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/GSE325525_family.soft.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/counts.csv.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/dog-annotation.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/dog-expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/dog-manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/mouse-annotation.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/mouse-expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/mouse-manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/pfizer_rna/samples.xlsx +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/README.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/canis_lupus_familiaris.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/context-keys-v0.4.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/ensembl115.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/homo_sapiens.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/mitochondrial.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/mus_musculus.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/saccharomyces_cerevisiae.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/transcript_orf_v1_0.42.0.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/references/uniprot_literature.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/regions/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/regions/ingolia.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/SD3.xlsx +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/ensembl107.cdna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/ensembl107.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/ensembl107.ncrna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/human-ensembl105.cdna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/human-ensembl105.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/human-ensembl105.ncrna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/worm-ensembl105.cdna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/worm-ensembl105.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/worm-ensembl105.ncrna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/yeast-ensembl115.cdna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/yeast-ensembl115.dna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/yeast-ensembl115.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/zebrafish-ensembl115.cdna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/zebrafish-ensembl115.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/riborf/zebrafish-ensembl115.ncrna.fa.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/search_reference/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/search_reference/dog.fasta +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/search_reference/ensembl83-expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/search_reference/ensembl83-human.fasta.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/search_reference/expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/README.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/generate.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/v1.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/v1.sqlite +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/v2.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/v2.sqlite +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/v3.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/v3.sqlite +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/v4.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/storage/v4.sqlite +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/viral/GRCh83.d1.vd1_virus_decoy.txt.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/viral/NC_001526.4.gb.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/viral/genbank/HBV__X04615.1.gb.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/viral/genbank/HPV16__K02718.1.gb.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/viral/genbank/HPV35__X74477.1.gb.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/viral/genbank/HPV51__M62877.1.gb.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/viral/genbank/HPV56__X74483.1.gb.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/wang/NOTICE.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/wang/annotation.gtf.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/wang/copies.zip +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/wang/expected.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/wang/manifest.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/wang/protein.zip +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/wang/rna.zip +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/data/wang/search.fasta.gz +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_artifact_archives.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_copy.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_cross_reference_pairing.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_dog_export_read_ahead.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_dog_ncorf_search.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_dog_peptides.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_downloads.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_ensembl_search_reference.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_evidence_rules.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_evidence_summary.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_export_sqlite_rows.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_extraction_budget.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_ftps_sqlite.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_genbank.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_genbank_equivalence.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_genetic_codes.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_genomes.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_ingolia.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_initiation_context.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_liftover.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_local_build_queries.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_mammary_stroma.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_measurements.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_merge_catalogs.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_more_species.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_ncorf_mammals.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_numeric_vector.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_openprot.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_orf_cases.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_orf_gtf.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_package_dog_dataset.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_package_sqlite_archive.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_paired_selectors.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pairing.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer_attribution.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer_dataset.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer_definitions.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer_evidence.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer_lineage.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer_native.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer_rna.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_pfizer_vendor.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_protein_set.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_proteome.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_proteome_external.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_proteome_fasta_tokens.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_proteome_producer_graph.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_reference_context.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_reference_ledger.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_reference_mapping.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_reference_orf.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_reference_table.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_refseq.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_region_targets.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_search_reference.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_selectors.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_storage.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_transcript_orf_serialization.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_uorf_catalog.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_verify_dog_dataset.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_bundle.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_cli.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_collections.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_completeness.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_coverage.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_initiation.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_origin_join.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_sources.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_viral_subsets.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tests/test_wang.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/README-dog-results.md +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/__init__.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/build_dog_dataset.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/build_gdc_viral_coverage.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/build_hpv16_cds.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/build_reference_ledger.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/dog_result_plan.json +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/export_dog_lineage.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/export_dog_results.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/export_sqlite_rows.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/extraction_budget.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/ftps_sqlite.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/inspect_dog_results.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/normalize_dog_evidence.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/package_dog_dataset.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/package_sqlite_archive.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/verify_dog_dataset.py +0 -0
- {orfdata-0.42.3 → orfdata-0.42.4}/tools/verify_mammary_stroma.py +0 -0
|
@@ -82,29 +82,19 @@ pip install "orfdata"
|
|
|
82
82
|
orfdata setup --species mouse --accept-terms # Three catalogues and the chains
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
`orfdata setup` downloads the published Chang et al.
|
|
86
|
-
registered mouse catalogues from their pinned sources, and downloads the chain files (`--accept-terms` for UCSC's non-commercial
|
|
85
|
+
`orfdata setup` downloads the published Chang et al. and RibORF catalogues, builds OpenProt from their pinned sources, and downloads the chain files (`--accept-terms` for UCSC's non-commercial
|
|
87
86
|
GRCm38/GRCm39 chains). It prints what it did with each: built, downloaded,
|
|
88
87
|
already installed, repaired or skipped. If one fails, the rest are still
|
|
89
88
|
installed and it exits with status 1, naming each failure; in Python,
|
|
90
89
|
`install_species` raises `InstallError`, whose `result` holds the same
|
|
91
|
-
report. `load_catalog(species="mouse")`
|
|
92
|
-
in
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
| --- | ---: | ---: |
|
|
100
|
-
| `"ms"` (default) | 2,976 | 2,854 |
|
|
101
|
-
| `RiboSeq()` | 58,109 | 57,992 |
|
|
102
|
-
| `RiboSeq() & MS()` | 378 | 371 |
|
|
103
|
-
| `None` | 60,707 | 60,475 |
|
|
104
|
-
|
|
105
|
-
Loading the merged catalogue takes about 10 seconds and 1.1 GB of memory, once
|
|
106
|
-
per process, whichever evidence is selected. On GRCm38 and NCBIM37 all three
|
|
107
|
-
are [lifted automatically](#every-assembly-of-a-species).
|
|
90
|
+
report. `load_catalog(species="mouse")` merges OpenProt, Chang et al. and
|
|
91
|
+
Yang et al. in that order. Current inputs contain 2,976 MS-supported OpenProt
|
|
92
|
+
ORFs, 16,484 Chang et al. ORFs and 51,831 validated Yang et al. target placements.
|
|
93
|
+
Overlapping source models merge by coding path and protein while keeping their
|
|
94
|
+
original evidence. Merged counts and target-genome placement counts depend on
|
|
95
|
+
these versions; inspect the resulting catalogue and proteome layer receipts.
|
|
96
|
+
On GRCm38 and NCBIM37 the catalogues are
|
|
97
|
+
[lifted automatically](#every-assembly-of-a-species).
|
|
108
98
|
|
|
109
99
|
### Mouse Ribo-seq ORFs (Chang et al.)
|
|
110
100
|
|
|
@@ -143,48 +133,55 @@ ATG, CTG, GTG or TTG. Its types are uORF (8,294), lncORF (3,576), uoORF
|
|
|
143
133
|
|
|
144
134
|
### Mouse RibORF ORFs (Yang et al.)
|
|
145
135
|
|
|
146
|
-
`riborf-mouse`
|
|
147
|
-
|
|
148
|
-
[doi:10.1038/s41467-024-46240-9](https://doi.org/10.1038/s41467-024-46240-9)
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
136
|
+
`riborf-mouse` generation 3 reconstructs the ORFs reported by Yang et al.
|
|
137
|
+
(Nat Commun 2024,
|
|
138
|
+
[doi:10.1038/s41467-024-46240-9](https://doi.org/10.1038/s41467-024-46240-9))
|
|
139
|
+
against their original GENCODE M25/GRCm38 reference before any placement on
|
|
140
|
+
Ensembl 107/GRCm39. The original table supplies RNA intervals and BED blocks,
|
|
141
|
+
not protein sequences. All 54,128 non-skipped rows reconstruct against the
|
|
142
|
+
pinned native RNA, with the full transcript version, length, start/stop and
|
|
143
|
+
every BED block checked.
|
|
144
|
+
|
|
145
|
+
- **Download.** `orfdata data fetch riborf-mouse` installs the verified 24.9 MB
|
|
146
|
+
catalogue. Rebuilding remains available from its pinned source files.
|
|
147
|
+
- **Target placement.** Exact full RNA, coding nucleotide sequence and translated
|
|
148
|
+
protein must agree. All target cDNA and ncRNA sequences are searched, including
|
|
149
|
+
duplicate loci and renamed transcripts. A surviving stable ID, unchanged RNA
|
|
150
|
+
length or matching start/stop alone cannot transfer evidence.
|
|
151
|
+
- **Coverage.** 51,831 rows have a unique validated target placement, representing
|
|
152
|
+
41,882 distinct proteins. Another 118 have multiple exact target placements;
|
|
153
|
+
2,179 lack an unchanged complete target RNA. These 2,297 retain their native
|
|
154
|
+
models, sequences, evidence and explicit mapping reasons in
|
|
155
|
+
`catalog.metadata["unresolved"]`. `extra_orfs(...).unlifted` also reports them
|
|
156
|
+
under the requested evidence rule. A changed RNA with an unchanged small CDS
|
|
157
|
+
remains unresolved under this conservative placement method.
|
|
158
|
+
- **Provenance.** Placed records retain their native `ORFRecord` in
|
|
159
|
+
`record.lifted_from` and a typed `record.reference_mapping`. The latter records
|
|
160
|
+
source/target references, original row ID, RNA interval, native CDS, source
|
|
161
|
+
pins, coordinate checks and exact sequence comparisons. Evidence summaries
|
|
162
|
+
continue to name the native reference and protein. No chain file is invented;
|
|
163
|
+
`record.liftover` is `None`. JSON and TSV exports retain both objects.
|
|
164
|
+
Managed manifests keep target annotation contexts in `references` and native
|
|
165
|
+
evidence contexts in `source_references`.
|
|
166
|
+
- **Sources.** Supplementary Data 3 (CC BY 4.0), native GENCODE M25 GTF/RNA and
|
|
167
|
+
Ensembl 107 GTF/cDNA/ncRNA: about 198 MB in total. The 32 MB target GTF is also
|
|
168
|
+
used by Chang et al., so species setup acquires it once.
|
|
169
|
+
- **Evidence and length.** The 224 samples in 26 GEO series provide aggregate
|
|
170
|
+
RibORF presence, not per-ORF named studies. `RiboSeq()` selects the target
|
|
171
|
+
records; `MS()` and `RiboSeq(min_studies=2)` select none. The catalogue retains
|
|
172
|
+
11,858 target ORFs shorter than five residues. Consumers choose length limits
|
|
173
|
+
when querying or building proteomes.
|
|
174
|
+
- **IDs and earlier generations.** IDs are `riborf_` followed by the original
|
|
175
|
+
source row ID, including its native transcript version and RNA interval.
|
|
176
|
+
They do not relabel a current coordinate as an original observation.
|
|
177
|
+
Generations 1/2 reconstructed proteins directly from the target annotation;
|
|
178
|
+
new builds of those unvalidated generations fail before downloads and direct
|
|
179
|
+
callers to generation 3. Archived files remain historical data, with their
|
|
180
|
+
saved provenance; they are not retroactively sequence-validated.
|
|
181
|
+
|
|
182
|
+
The source's ouORF, odORF and noncoding categories use the common uoORF, doORF
|
|
183
|
+
and lncORF names. Canonical CDSs, likely sequencing errors and stop-codon
|
|
184
|
+
readthrough rows remain excluded.
|
|
188
185
|
|
|
189
186
|
## Mouse ORFs from OpenProt
|
|
190
187
|
|
|
@@ -11,7 +11,7 @@ import os
|
|
|
11
11
|
import re
|
|
12
12
|
from collections import Counter
|
|
13
13
|
from copy import copy, deepcopy
|
|
14
|
-
from dataclasses import asdict, dataclass, replace
|
|
14
|
+
from dataclasses import asdict, dataclass, field, replace
|
|
15
15
|
from importlib.resources import files
|
|
16
16
|
from pathlib import Path
|
|
17
17
|
from typing import NamedTuple, Optional
|
|
@@ -22,8 +22,10 @@ from .evidence import MS_METHODS, evidence_rule, stored_method
|
|
|
22
22
|
from .evidence_summary import EvidenceSummary, unique_summaries
|
|
23
23
|
from .initiation_context import KOZAK_PREFERENCES, InitiationContext
|
|
24
24
|
from .liftover import Liftover
|
|
25
|
+
from .measurements import _plain
|
|
25
26
|
from .model import ORFModel, TranscriptORF, _contig, _id_forms, _species, _transcript_match
|
|
26
|
-
from .reference import ReferenceContext
|
|
27
|
+
from .reference import ReferenceContext, ScopedTarget
|
|
28
|
+
from .reference_mapping import ReferenceMapping
|
|
27
29
|
from .sequence import genetic_code, reverse_complement_dna
|
|
28
30
|
|
|
29
31
|
|
|
@@ -142,17 +144,35 @@ class ORFRecord:
|
|
|
142
144
|
members: tuple = ()
|
|
143
145
|
lifted_from: Optional["ORFRecord"] = None
|
|
144
146
|
liftover: Optional[Liftover] = None
|
|
147
|
+
reference_mapping: Optional[ReferenceMapping] = field(default=None, hash=False)
|
|
145
148
|
|
|
146
149
|
def __post_init__(self):
|
|
147
150
|
object.__setattr__(self, "summaries", unique_summaries(self.summaries))
|
|
148
151
|
object.__setattr__(self, "members", tuple(self.members))
|
|
149
|
-
if (self.lifted_from is None) != (self.liftover is None):
|
|
150
|
-
raise ValueError("A lifted record names both its original record and the chain")
|
|
151
152
|
original = self.lifted_from
|
|
153
|
+
methods = int(self.liftover is not None) + int(self.reference_mapping is not None)
|
|
154
|
+
if methods != int(original is not None):
|
|
155
|
+
raise ValueError("A placed record names its original and exactly one chain or reference mapping")
|
|
152
156
|
if original is not None and any(getattr(self, name) != getattr(original, name) for name in (
|
|
153
157
|
"orf_id", "protein_sequence", "translation_table", "start_codon", "source",
|
|
154
158
|
"ribosome_studies", "peptides", "summaries")):
|
|
155
159
|
raise ValueError(f"A lifted record keeps its original's ID, protein and evidence: {self.orf_id}")
|
|
160
|
+
mapping = self.reference_mapping
|
|
161
|
+
if mapping is not None:
|
|
162
|
+
if not isinstance(mapping, ReferenceMapping):
|
|
163
|
+
raise TypeError("ORF reference placements require a ReferenceMapping")
|
|
164
|
+
if original.reference_context is None or self.reference_context is None:
|
|
165
|
+
raise ValueError("ORF reference placements require both reference identities")
|
|
166
|
+
source = ScopedTarget(original.reference_context, "orf", original.orf_id, original.source)
|
|
167
|
+
target = ScopedTarget(self.reference_context, "orf", self.orf_id, self.source)
|
|
168
|
+
if mapping.source != source or mapping.targets != (target,) or mapping.status != "unique":
|
|
169
|
+
raise ValueError("ORF reference mapping endpoints disagree with the records")
|
|
170
|
+
digest = hashlib.sha256(self.protein_sequence.encode("ascii")).hexdigest()
|
|
171
|
+
if not mapping.sequence_validated or mapping.validation["sequence"]["source_sha256"] != digest:
|
|
172
|
+
raise ValueError("ORF reference mapping protein identity disagrees with the records")
|
|
173
|
+
expected = {"source": _placement_position(original), "target": _placement_position(self)}
|
|
174
|
+
if _plain(mapping.validation.get("position")) != expected:
|
|
175
|
+
raise ValueError("ORF reference mapping positions disagree with the records")
|
|
156
176
|
if self.members:
|
|
157
177
|
# Each member validated its own summaries against its own identity.
|
|
158
178
|
key = _merge_key(self)
|
|
@@ -229,7 +249,7 @@ class ORFRecord:
|
|
|
229
249
|
|
|
230
250
|
def to_dict(self):
|
|
231
251
|
"""Return a serializable copy of this record."""
|
|
232
|
-
result =
|
|
252
|
+
result = _plain(self)
|
|
233
253
|
if not self.summaries:
|
|
234
254
|
result.pop("summaries")
|
|
235
255
|
if self.reference_context is None:
|
|
@@ -246,7 +266,10 @@ class ORFRecord:
|
|
|
246
266
|
result["lifted_from"] = self.lifted_from.to_dict()
|
|
247
267
|
else:
|
|
248
268
|
result.pop("lifted_from")
|
|
269
|
+
if self.liftover is None:
|
|
249
270
|
result.pop("liftover")
|
|
271
|
+
if self.reference_mapping is None:
|
|
272
|
+
result.pop("reference_mapping")
|
|
250
273
|
return result
|
|
251
274
|
|
|
252
275
|
def map_initiation_position(self, position, *, genome_build):
|
|
@@ -417,6 +440,12 @@ class ORFRecord:
|
|
|
417
440
|
}
|
|
418
441
|
|
|
419
442
|
|
|
443
|
+
def _placement_position(record):
|
|
444
|
+
"""The coding placement bound by a typed source-to-target reference mapping."""
|
|
445
|
+
return dict(transcript_id=record.transcript_id, contig=record.contig, strand=record.strand,
|
|
446
|
+
coding_blocks=[list(block) for block in record.coding_blocks])
|
|
447
|
+
|
|
448
|
+
|
|
420
449
|
def _qualify_colliding_ids(records):
|
|
421
450
|
"""Give colliding source records unique catalogue IDs, retaining their native records."""
|
|
422
451
|
records = tuple(records)
|
|
@@ -436,7 +465,7 @@ def _qualify_colliding_ids(records):
|
|
|
436
465
|
names = [f"{quote(r.source, safe='')}:{quote(r.orf_id, safe='')}" if i in qualified
|
|
437
466
|
else r.orf_id for i, r in enumerate(records)]
|
|
438
467
|
return tuple(r if name == r.orf_id else replace(
|
|
439
|
-
r, orf_id=name, members=r.members or (r,), lifted_from=None, liftover=None)
|
|
468
|
+
r, orf_id=name, members=r.members or (r,), lifted_from=None, liftover=None, reference_mapping=None)
|
|
440
469
|
for r, name in zip(records, names))
|
|
441
470
|
|
|
442
471
|
|
|
@@ -449,6 +478,15 @@ class ORFCatalog:
|
|
|
449
478
|
self.genome_build = metadata["genome_build"]
|
|
450
479
|
self.taxon_id = metadata["taxon_id"]
|
|
451
480
|
self.species = metadata["species"]
|
|
481
|
+
for entry in metadata.get("unresolved", ()):
|
|
482
|
+
if entry.get("native_record") is not None:
|
|
483
|
+
native = _record(entry["native_record"])
|
|
484
|
+
mapping = ReferenceMapping.from_dict(entry["reference_mapping"])
|
|
485
|
+
expected = ScopedTarget(native.reference_context, "orf", native.orf_id, native.source)
|
|
486
|
+
if (mapping.source != expected or mapping.status == "unique"
|
|
487
|
+
or mapping.target_reference.taxon_id != self.taxon_id
|
|
488
|
+
or mapping.target_reference.genome_build != self.genome_build):
|
|
489
|
+
raise ValueError("Unresolved reference mapping disagrees with its native record or catalogue")
|
|
452
490
|
self._by_id = {r.orf_id: r for r in self.records}
|
|
453
491
|
self._aliases = {}
|
|
454
492
|
self._by_source_id = {}
|
|
@@ -834,7 +872,7 @@ def merge_catalogs(catalogs):
|
|
|
834
872
|
pinned = {None if m.reference_context is None else m.reference_context.key for m in members}
|
|
835
873
|
records.append(replace(
|
|
836
874
|
# The merged ORF is no one source's lift; each member keeps its own lift provenance.
|
|
837
|
-
primary, members=tuple(members), lifted_from=None, liftover=None,
|
|
875
|
+
primary, members=tuple(members), lifted_from=None, liftover=None, reference_mapping=None,
|
|
838
876
|
initiation_context=_shared_context(primary, members),
|
|
839
877
|
# Sources pinned to different annotations of one assembly leave the ORF unpinned.
|
|
840
878
|
reference_context=primary.reference_context if len(pinned) == 1 else None, **_union(members, study)))
|
|
@@ -927,7 +965,10 @@ def _record(row, legacy=False):
|
|
|
927
965
|
row["members"] = tuple(_record(m) for m in row.get("members", ()))
|
|
928
966
|
if row.get("lifted_from") is not None:
|
|
929
967
|
row["lifted_from"] = _record(row["lifted_from"])
|
|
968
|
+
if row.get("liftover") is not None:
|
|
930
969
|
row["liftover"] = Liftover(**row["liftover"])
|
|
970
|
+
if row.get("reference_mapping") is not None:
|
|
971
|
+
row["reference_mapping"] = ReferenceMapping.from_dict(row["reference_mapping"])
|
|
931
972
|
return ORFRecord(**row)
|
|
932
973
|
|
|
933
974
|
|
|
@@ -21,14 +21,22 @@ class CatalogManifest(_Record):
|
|
|
21
21
|
coverage: Mapping
|
|
22
22
|
processing: Mapping
|
|
23
23
|
schema: str = "orfdata.catalog-manifest.v1"
|
|
24
|
+
source_references: tuple = ()
|
|
24
25
|
|
|
25
26
|
@classmethod
|
|
26
27
|
def from_dict(cls, data):
|
|
27
28
|
values = dict(data)
|
|
28
29
|
values["references"] = tuple(ReferenceContext(**c) for c in values["references"])
|
|
29
30
|
values["sources"] = tuple(SourceAsset.from_dict(s) for s in values["sources"])
|
|
31
|
+
values["source_references"] = tuple(ReferenceContext(**c) for c in values.get("source_references", ()))
|
|
30
32
|
return cls(**values)
|
|
31
33
|
|
|
34
|
+
def to_dict(self):
|
|
35
|
+
result = super().to_dict()
|
|
36
|
+
if not self.source_references:
|
|
37
|
+
result.pop("source_references")
|
|
38
|
+
return result
|
|
39
|
+
|
|
32
40
|
def __post_init__(self):
|
|
33
41
|
for name in ("catalog_id", "version", "title"):
|
|
34
42
|
_identifier(getattr(self, name), name)
|
|
@@ -54,6 +62,14 @@ class CatalogManifest(_Record):
|
|
|
54
62
|
builds = {r.genome_build for r in self.references if r.genome_build is not None}
|
|
55
63
|
if len(builds) != 1 or not any(r.is_genomic for r in self.references):
|
|
56
64
|
raise ValueError("A catalogue must have one assembly and a complete genomic reference")
|
|
65
|
+
if isinstance(self.source_references, str):
|
|
66
|
+
raise TypeError("Source references must be a sequence of contexts")
|
|
67
|
+
object.__setattr__(self, "source_references", tuple(self.source_references))
|
|
68
|
+
if any(not isinstance(r, ReferenceContext) or not r.is_genomic
|
|
69
|
+
or r.taxon_id != self.taxon_id for r in self.source_references):
|
|
70
|
+
raise ValueError("Native source references must be genomic contexts of the catalogue species")
|
|
71
|
+
if len({r.key for r in self.source_references}) != len(self.source_references):
|
|
72
|
+
raise ValueError("Duplicate native source reference contexts")
|
|
57
73
|
if any(not isinstance(s, SourceAsset) for s in self.sources):
|
|
58
74
|
raise TypeError("Catalogue sources must be SourceAssets")
|
|
59
75
|
if len({s.asset_id for s in self.sources}) != len(self.sources):
|
|
@@ -91,9 +107,16 @@ class CatalogManifest(_Record):
|
|
|
91
107
|
reference = record.reference_context
|
|
92
108
|
if reference is None or not reference.is_genomic or reference.key not in references:
|
|
93
109
|
raise ValueError("Managed ORF records require a declared complete genomic reference")
|
|
110
|
+
evidence_references = references | {r.key for r in self.source_references}
|
|
94
111
|
for summary in catalog.evidence_summaries:
|
|
95
|
-
if summary.target.reference.key not in
|
|
112
|
+
if summary.target.reference.key not in evidence_references:
|
|
96
113
|
raise ValueError("Evidence summary reference is absent from catalogue manifest")
|
|
114
|
+
for entry in catalog.metadata.get("unresolved", ()):
|
|
115
|
+
if entry.get("native_record") is not None:
|
|
116
|
+
native = ReferenceContext(**entry["native_record"]["reference_context"])
|
|
117
|
+
target = ReferenceContext(**entry["reference_mapping"]["target_reference"])
|
|
118
|
+
if native.key not in evidence_references or target.key not in references:
|
|
119
|
+
raise ValueError("Unresolved placement reference is absent from catalogue manifest")
|
|
97
120
|
counts = dict(distinct_protein_sequences=len({r.protein_sequence for r in catalog.records}),
|
|
98
121
|
evidence_summaries=len(catalog.evidence_summaries))
|
|
99
122
|
for key, actual in counts.items():
|
|
@@ -40,7 +40,7 @@ def _copy_catalog(inputs, output, manifest):
|
|
|
40
40
|
handle.write(json.dumps(catalog.to_dict(), sort_keys=True, separators=(",", ":"), allow_nan=False).encode())
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
def _builder(manifest):
|
|
43
|
+
def _builder(manifest, *, for_build=False):
|
|
44
44
|
"""The packaged importer a release names; import paths in metadata are never executed."""
|
|
45
45
|
importer = manifest.processing.get("importer")
|
|
46
46
|
if importer == "catalog-copy-v1":
|
|
@@ -54,7 +54,13 @@ def _builder(manifest):
|
|
|
54
54
|
|
|
55
55
|
return lambda inputs, output: import_orfs(inputs, output, manifest)
|
|
56
56
|
if importer in ("riborf-v1", "riborf-v2"):
|
|
57
|
-
from .sources.riborf import import_orfs
|
|
57
|
+
from .sources.riborf import import_orfs, validate_transcript_manifest
|
|
58
|
+
|
|
59
|
+
if for_build:
|
|
60
|
+
validate_transcript_manifest(manifest)
|
|
61
|
+
return lambda inputs, output: import_orfs(inputs, output, manifest)
|
|
62
|
+
if importer == "riborf-native-v3":
|
|
63
|
+
from .sources.riborf_native import import_orfs
|
|
58
64
|
|
|
59
65
|
return lambda inputs, output: import_orfs(inputs, output, manifest)
|
|
60
66
|
if importer in ("riborf-genome-v1", "riborf-genome-v2"):
|
|
@@ -198,7 +204,7 @@ class CatalogRegistry:
|
|
|
198
204
|
def build(self, name, version=None, *, force=False, source_paths=None, download_options=None):
|
|
199
205
|
"""Explicitly materialize an allowlisted catalogue source adapter."""
|
|
200
206
|
manifest = self.info(name, version)
|
|
201
|
-
return build_catalog(manifest, _builder(manifest), cache_root=self._cache_root,
|
|
207
|
+
return build_catalog(manifest, _builder(manifest, for_build=True), cache_root=self._cache_root,
|
|
202
208
|
source_paths=source_paths, force=force, download_options=download_options)
|
|
203
209
|
|
|
204
210
|
def inspect_build(self, name, version=None, *, verify_files=True):
|
|
@@ -320,14 +320,14 @@ def _query(args, parser, catalog_loader):
|
|
|
320
320
|
"initiation_context_json",
|
|
321
321
|
)
|
|
322
322
|
scoped = not isinstance(catalog, UORFCatalog)
|
|
323
|
-
provenance = ("members", "liftover", "lifted_from")
|
|
323
|
+
provenance = ("members", "liftover", "lifted_from", "reference_mapping")
|
|
324
324
|
if scoped:
|
|
325
325
|
fields += ("start_codon", "reference_context_json", "summaries_json") + tuple(
|
|
326
326
|
f + "_json" for f in provenance)
|
|
327
327
|
elif any(r.summaries for r in records):
|
|
328
328
|
# The released upstream-only columns have no place for aggregate counts.
|
|
329
329
|
parser.error("The legacy upstream-ORF TSV cannot export aggregate evidence; use --format json")
|
|
330
|
-
elif any(r.members or r.
|
|
330
|
+
elif any(r.members or r.lifted_from for r in records):
|
|
331
331
|
parser.error("The legacy upstream-ORF TSV cannot export merged or lifted records; use --format json")
|
|
332
332
|
elif any(getattr(r, "start_codon", None) for r in records):
|
|
333
333
|
parser.error("The legacy upstream-ORF TSV cannot export declared start codons; use --format json")
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
"priority": 20
|
|
206
206
|
},
|
|
207
207
|
"riborf-mouse": {
|
|
208
|
-
"default_version": "
|
|
208
|
+
"default_version": "3",
|
|
209
209
|
"priority": 30,
|
|
210
210
|
"versions": {
|
|
211
211
|
"1": {
|
|
@@ -408,6 +408,151 @@
|
|
|
408
408
|
"redistributable": true
|
|
409
409
|
},
|
|
410
410
|
"assets": {}
|
|
411
|
+
},
|
|
412
|
+
"3": {
|
|
413
|
+
"manifest": {
|
|
414
|
+
"catalog_id": "riborf-mouse",
|
|
415
|
+
"version": "3",
|
|
416
|
+
"title": "Mouse RibORF 2.0 translated ORFs of Yang et al. 2024",
|
|
417
|
+
"references": [
|
|
418
|
+
{
|
|
419
|
+
"taxon_id": 10090,
|
|
420
|
+
"species": "mus_musculus",
|
|
421
|
+
"genome_build": "GRCm39",
|
|
422
|
+
"annotation_name": "ensembl",
|
|
423
|
+
"annotation_version": "107",
|
|
424
|
+
"assembly_accession": null,
|
|
425
|
+
"strain": null,
|
|
426
|
+
"strain_taxon_id": null,
|
|
427
|
+
"sequence_sha256": null,
|
|
428
|
+
"taxonomy_version": "ncbi-2026-10-12",
|
|
429
|
+
"source_sha256": null
|
|
430
|
+
}
|
|
431
|
+
],
|
|
432
|
+
"sources": [
|
|
433
|
+
{
|
|
434
|
+
"asset_id": "table",
|
|
435
|
+
"url": "https://static-content.springer.com/esm/art%3A10.1038%2Fs41467-024-46240-9/MediaObjects/41467_2024_46240_MOESM6_ESM.xlsx",
|
|
436
|
+
"sha256": "4dc8444c2fd3da25c7066074c71d1ec5427afd5d005862c6c61dc3f27fb9d32c",
|
|
437
|
+
"size": 24211005,
|
|
438
|
+
"access_terms": "Supplementary Data 3 of Yang et al., Nat Commun 2024, CC BY 4.0.",
|
|
439
|
+
"license_url": null,
|
|
440
|
+
"redistributable": true,
|
|
441
|
+
"metadata": {}
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"asset_id": "gtf",
|
|
445
|
+
"url": "https://ftp.ensembl.org/pub/release-107/gtf/mus_musculus/Mus_musculus.GRCm39.107.gtf.gz",
|
|
446
|
+
"sha256": "15af16b7bef88c4309a82d49579fdd967f6ac8769b7f0bf657bbf7ee73b779e3",
|
|
447
|
+
"size": 31861821,
|
|
448
|
+
"access_terms": "Ensembl imposes no restrictions on access to, or use of, the data provided.",
|
|
449
|
+
"license_url": null,
|
|
450
|
+
"redistributable": true,
|
|
451
|
+
"metadata": {}
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"asset_id": "cdna",
|
|
455
|
+
"url": "https://ftp.ensembl.org/pub/release-107/fasta/mus_musculus/cdna/Mus_musculus.GRCm39.cdna.all.fa.gz",
|
|
456
|
+
"sha256": "34499a727ff72bdddb2f32e5831b14fb5a9d20218cd79b8639dc8736b2c596c0",
|
|
457
|
+
"size": 51269494,
|
|
458
|
+
"access_terms": "Ensembl imposes no restrictions on access to, or use of, the data provided.",
|
|
459
|
+
"license_url": null,
|
|
460
|
+
"redistributable": true,
|
|
461
|
+
"metadata": {}
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
"asset_id": "ncrna",
|
|
465
|
+
"url": "https://ftp.ensembl.org/pub/release-107/fasta/mus_musculus/ncrna/Mus_musculus.GRCm39.ncrna.fa.gz",
|
|
466
|
+
"sha256": "0472b7d912e84d838485ecf236670a68319a32fb4580062cd9768c7bce85d9ab",
|
|
467
|
+
"size": 7668482,
|
|
468
|
+
"access_terms": "Ensembl imposes no restrictions on access to, or use of, the data provided.",
|
|
469
|
+
"license_url": null,
|
|
470
|
+
"redistributable": true,
|
|
471
|
+
"metadata": {}
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"asset_id": "source_gtf",
|
|
475
|
+
"url": "https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_mouse/release_M25/gencode.vM25.annotation.gtf.gz",
|
|
476
|
+
"sha256": "e6c9704cb5832b8a1c71431ecac9ea30057377c72cdc9a12dc5d0405ab066d5a",
|
|
477
|
+
"size": 28542432,
|
|
478
|
+
"access_terms": "GENCODE reference annotation/transcript data under EMBL-EBI data-use terms.",
|
|
479
|
+
"license_url": "https://www.ebi.ac.uk/about/terms-of-use/",
|
|
480
|
+
"redistributable": true,
|
|
481
|
+
"metadata": {}
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"asset_id": "source_rna",
|
|
485
|
+
"url": "https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_mouse/release_M25/gencode.vM25.transcripts.fa.gz",
|
|
486
|
+
"sha256": "5139cf409a680b60434716ca10ad4e474cbbe5d2e4d11af7553edfad8ed73670",
|
|
487
|
+
"size": 54587418,
|
|
488
|
+
"access_terms": "GENCODE reference annotation/transcript data under EMBL-EBI data-use terms.",
|
|
489
|
+
"license_url": "https://www.ebi.ac.uk/about/terms-of-use/",
|
|
490
|
+
"redistributable": true,
|
|
491
|
+
"metadata": {}
|
|
492
|
+
}
|
|
493
|
+
],
|
|
494
|
+
"citations": [
|
|
495
|
+
"Yang H, Li Q, Stroup EK, Wang S, Ji Z. Widespread stable noncanonical peptides identified by integrated analyses of ribosome profiling and ORF features. Nat Commun. 2024;15:1932. doi:10.1038/s41467-024-46240-9"
|
|
496
|
+
],
|
|
497
|
+
"coverage": {
|
|
498
|
+
"records": 51831,
|
|
499
|
+
"distinct_protein_sequences": 41882,
|
|
500
|
+
"evidence_summaries": 51831,
|
|
501
|
+
"source_rows": 54128,
|
|
502
|
+
"short_rows": 12222,
|
|
503
|
+
"native_valid_rows": 54128,
|
|
504
|
+
"resolved_rows": 51831,
|
|
505
|
+
"unresolved_rows": 2297,
|
|
506
|
+
"short_records": 11858
|
|
507
|
+
},
|
|
508
|
+
"processing": {
|
|
509
|
+
"importer": "riborf-native-v3",
|
|
510
|
+
"sheet": "mouse",
|
|
511
|
+
"source": "riborf-mouse",
|
|
512
|
+
"release": "NatCommun-15-1932",
|
|
513
|
+
"skip_types": [
|
|
514
|
+
"canonical",
|
|
515
|
+
"seqerror",
|
|
516
|
+
"readthrough"
|
|
517
|
+
],
|
|
518
|
+
"biotypes": {
|
|
519
|
+
"ouORF": "uoORF",
|
|
520
|
+
"odORF": "doORF",
|
|
521
|
+
"noncoding": "lncORF"
|
|
522
|
+
},
|
|
523
|
+
"scope": "Native GENCODE vM25/mm10 ORFs reconstructed first; target Ensembl 107/GRCm39 placement requires exact full RNA, CDS and protein, with every source BED block validated. Aggregate presence only.",
|
|
524
|
+
"report_protein_lengths_below": 5,
|
|
525
|
+
"source_annotation": "GENCODE vM25"
|
|
526
|
+
},
|
|
527
|
+
"schema": "orfdata.catalog-manifest.v1",
|
|
528
|
+
"source_references": [
|
|
529
|
+
{
|
|
530
|
+
"taxon_id": 10090,
|
|
531
|
+
"species": "mouse",
|
|
532
|
+
"genome_build": "GRCm38",
|
|
533
|
+
"annotation_name": "gencode",
|
|
534
|
+
"annotation_version": "M25",
|
|
535
|
+
"assembly_accession": null,
|
|
536
|
+
"strain": null,
|
|
537
|
+
"strain_taxon_id": null,
|
|
538
|
+
"sequence_sha256": "5139cf409a680b60434716ca10ad4e474cbbe5d2e4d11af7553edfad8ed73670",
|
|
539
|
+
"taxonomy_version": "ncbi-2026-10-12",
|
|
540
|
+
"source_sha256": "e6c9704cb5832b8a1c71431ecac9ea30057377c72cdc9a12dc5d0405ab066d5a"
|
|
541
|
+
}
|
|
542
|
+
]
|
|
543
|
+
},
|
|
544
|
+
"distribution": {
|
|
545
|
+
"access_terms": "Built from pinned Yang et al. Supplementary Data 3 (CC BY 4.0), native GENCODE vM25 RNA/GTF, and Ensembl 107 target annotation/RNA. Original references and evidence retained; exact-sequence placement only.",
|
|
546
|
+
"redistributable": true,
|
|
547
|
+
"data_release": "data-riborf-mouse-3"
|
|
548
|
+
},
|
|
549
|
+
"assets": {
|
|
550
|
+
"catalog.json.gz": {
|
|
551
|
+
"url": "https://github.com/openvax/orfdata/releases/download/data-riborf-mouse-3/riborf-mouse-3.json.gz",
|
|
552
|
+
"sha256": "2d60d7783821f3ab88485197b141c355ca07fbe6e5a9da78cec42262508c5d03",
|
|
553
|
+
"size": 24875346
|
|
554
|
+
}
|
|
555
|
+
}
|
|
411
556
|
}
|
|
412
557
|
}
|
|
413
558
|
},
|
|
@@ -374,7 +374,8 @@ def _lift(record, chain):
|
|
|
374
374
|
source_sha256=chain.liftover.sha256)
|
|
375
375
|
lifted = replace(record, contig=contig, strand=strand, coding_blocks=blocks,
|
|
376
376
|
genome_build=chain.liftover.target_build, reference_context=pinned,
|
|
377
|
-
initiation_context=None, members=members, lifted_from=record, liftover=chain.liftover
|
|
377
|
+
initiation_context=None, members=members, lifted_from=record, liftover=chain.liftover,
|
|
378
|
+
reference_mapping=None)
|
|
378
379
|
context = record.initiation_context
|
|
379
380
|
if context is not None:
|
|
380
381
|
positions = [chain.map(record.contig, p, p) for p in context.genomic_positions]
|
|
@@ -394,6 +395,9 @@ def unlifted(metadata):
|
|
|
394
395
|
"""Every record a catalogue's lifts left out, through each hop and merged input: (record, assembly, reason)."""
|
|
395
396
|
from .catalog import _record
|
|
396
397
|
|
|
398
|
+
for entry in metadata.get("unresolved", ()):
|
|
399
|
+
if entry.get("native_record") is not None and entry.get("reference_mapping") is not None:
|
|
400
|
+
yield _record(entry["native_record"]), metadata["genome_build"], entry["reason"]
|
|
397
401
|
lift = metadata.get("liftover")
|
|
398
402
|
if lift:
|
|
399
403
|
yield from unlifted(lift["input"]["metadata"])
|
|
@@ -2085,6 +2085,9 @@ def _filter_unlifted(metadata, accepts):
|
|
|
2085
2085
|
"""Apply a union selection to failed lifts as well as placed records."""
|
|
2086
2086
|
from .catalog import _record
|
|
2087
2087
|
|
|
2088
|
+
if "unresolved" in metadata:
|
|
2089
|
+
metadata["unresolved"] = [entry for entry in metadata["unresolved"]
|
|
2090
|
+
if entry.get("native_record") is None or accepts(_record(entry["native_record"]))]
|
|
2088
2091
|
lift = metadata.get("liftover")
|
|
2089
2092
|
if lift:
|
|
2090
2093
|
_filter_unlifted(lift["input"]["metadata"], accepts)
|
|
@@ -12,8 +12,9 @@ end, the stop codon included.
|
|
|
12
12
|
The source gives no protein sequences, so each ORF is placed through the same
|
|
13
13
|
transcript in a pinned Ensembl annotation (:func:`import_orfs`): its
|
|
14
14
|
transcript coordinates map through that transcript's exons, and its protein is
|
|
15
|
-
translated from that transcript's sequence.
|
|
16
|
-
|
|
15
|
+
translated from that transcript's sequence. Mouse uses the separate native
|
|
16
|
+
GENCODE M25 reconstruction and exact-sequence placement in ``riborf_native``;
|
|
17
|
+
the unvalidated historical mouse rebuilds are rejected here. A row is
|
|
17
18
|
left out, with the reason, when the transcript is missing, has no sequence or
|
|
18
19
|
changed length since the source's annotation, or when its sequence there
|
|
19
20
|
doesn't start with the stated codon and end at its first stop.
|
|
@@ -110,8 +111,15 @@ def _parsed(processing, sheet_rows):
|
|
|
110
111
|
return parsed, source_rows, short
|
|
111
112
|
|
|
112
113
|
|
|
114
|
+
def validate_transcript_manifest(manifest):
|
|
115
|
+
"""Reject superseded mouse builds before acquiring their source files."""
|
|
116
|
+
if manifest.references[0].taxon_id == 10090:
|
|
117
|
+
raise ValueError("Mouse RibORF generations 1/2 lack native sequence validation; build generation 3")
|
|
118
|
+
|
|
119
|
+
|
|
113
120
|
def import_orfs(inputs, output, manifest):
|
|
114
121
|
"""Write the catalogue ``manifest`` describes from the source table and the pinned Ensembl files."""
|
|
122
|
+
validate_transcript_manifest(manifest)
|
|
115
123
|
processing = manifest.processing
|
|
116
124
|
reference = manifest.references[0]
|
|
117
125
|
# Ensembl IDs carry a version (ENST00000000233.10); C. elegans names have dots of their own (2L52.1a.1).
|