orfdata 0.34.1__tar.gz → 0.35.0__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.34.1/orfdata.egg-info → orfdata-0.35.0}/PKG-INFO +56 -17
- {orfdata-0.34.1 → orfdata-0.35.0}/README.md +55 -16
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/catalogs.md +18 -15
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/dog-peptides.md +61 -11
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/index.md +24 -14
- orfdata-0.35.0/docs/proteome.md +696 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/viral.md +77 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/__init__.py +16 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/catalog.py +3 -3
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/cli.py +8 -2
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/datasets.json +601 -1
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/viral/NOTICE.md +18 -1
- orfdata-0.35.0/orfdata/data/viral/gdc-grch38-d1-vd1-coverage.tsv +205 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/model.py +0 -3
- orfdata-0.35.0/orfdata/proteome.py +1970 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/proteome_cli.py +27 -21
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/reference.py +21 -2
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/__init__.py +1 -1
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/kaabinejadian.py +130 -13
- orfdata-0.35.0/orfdata/version.py +1 -0
- orfdata-0.35.0/orfdata/viral_cli.py +70 -0
- orfdata-0.35.0/orfdata/viral_coverage.py +114 -0
- {orfdata-0.34.1 → orfdata-0.35.0/orfdata.egg-info}/PKG-INFO +56 -17
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/SOURCES.txt +11 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/kaabinejadian/README.md +14 -6
- orfdata-0.35.0/tests/data/kaabinejadian/Results.zip +0 -0
- orfdata-0.34.1/tests/data/kaabinejadian/manifest.json → orfdata-0.35.0/tests/data/kaabinejadian/manifest-v1.json +37 -10
- orfdata-0.35.0/tests/data/kaabinejadian/manifest.json +276 -0
- orfdata-0.35.0/tests/data/viral/GRCh83.d1.vd1_virus_decoy.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_dog_peptides.py +86 -10
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_measurements.py +8 -2
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_merge_catalogs.py +2 -3
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_proteome.py +446 -43
- orfdata-0.35.0/tests/test_proteome_external.py +133 -0
- orfdata-0.35.0/tests/test_proteome_fasta_tokens.py +102 -0
- orfdata-0.35.0/tests/test_proteome_producer_graph.py +114 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_reference_context.py +28 -1
- orfdata-0.35.0/tests/test_viral_cli.py +49 -0
- orfdata-0.35.0/tests/test_viral_coverage.py +91 -0
- orfdata-0.35.0/tools/build_gdc_viral_coverage.py +73 -0
- orfdata-0.34.1/docs/proteome.md +0 -383
- orfdata-0.34.1/orfdata/proteome.py +0 -1011
- orfdata-0.34.1/orfdata/version.py +0 -1
- orfdata-0.34.1/tests/data/kaabinejadian/Results.zip +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/LICENSE +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/MANIFEST.in +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/deploy.sh +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/copy-yeast.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/coverage.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/examples.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/human-tissue.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/ingolia-yeast.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/measurements.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/pairing.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/pfizer-protein.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/pfizer-rna.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/reference.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/search-references.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/source-references.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/species.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/storage.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs/stylesheets/docs.css +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/docs.sh +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/lint.sh +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/mkdocs.yml +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/_pinned_genome.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/_structure.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/build.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/catalog_cli.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/catalog_manifest.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/catalogs.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/catalogs.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/chains.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/genomes.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/ires/rfam-15.1-human-ires.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/orf-evidence/AUTHOR-LICENSE.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/orf-evidence/NOTICE.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/orf-evidence/catalog.json.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/orf-evidence/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/uorf-evidence/AUTHOR-LICENSE.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/uorf-evidence/NOTICE.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/uorf-evidence/catalog.json.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/uorf-evidence/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/viral/hpv16-refseq-CDS.json.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/dataset.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/dataset_cli.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/datasets.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/evidence.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/evidence_summary.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/genomes.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/genomes_cli.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/initiation_context.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/install.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/liftover.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/liftover_cli.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/measurements.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/pairing.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/reference_mapping.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/refseq.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/rna.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/search_reference.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sequence.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/copy.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/ingolia.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/ncorf_mammals.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/openprot.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/peptideatlas.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/pfizer.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/pfizer_rna.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/riborf.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/wang.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/viral.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/dependency_links.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/entry_points.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/requires.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/top_level.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/pyproject.toml +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/setup.cfg +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/test.sh +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/conftest.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/aggregate_evidence.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905474.soft +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905474_KL9_fpkm.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905476.soft +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905476_KL10_fpkm.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905478.soft +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905478_KL11_fpkm.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905479.soft +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905479_KL12_fpkm.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/NOTICE.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/geo-series.soft +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/methods.pdf +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/paper.xml +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/pmc-metadata.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/qconcat.fasta +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/workbook.xlsx +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346111.metadata.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346111.quant.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346114.metadata.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346114.quant.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346115.metadata.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346115.quant.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346116.metadata.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346116.quant.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346117.metadata.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346117.quant.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346118.metadata.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346118.quant.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346120.metadata.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346120.quant.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346122.metadata.txt +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346122.quant.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/NOTICE.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/readMe.txt.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/kaabinejadian/sdrf.tsv +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/README.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/S3.xlsx +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/ensembl107.cdna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/ensembl107.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/human-ensembl107.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/human.bed +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/human.pep.fa +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/mouse.bed +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/mouse.pep.fa +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/README.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/ensembl106.cdna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/ensembl106.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.bed.zip +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.fasta.zip +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.tsv.zip +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/peptideatlas/README.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/peptideatlas/atlas_build.tsv.zip +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/peptideatlas/ensembl.pep.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/peptideatlas/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/NOTICE.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/dog/expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/dog/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/dog/protein.tsv +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/dog/search.fasta +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/human/expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/human/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/human/protein.tsv +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/human/search.fasta +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/mouse/expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/mouse/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/mouse/protein.tsv +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/mouse/search.fasta +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/GSE325522_family.soft.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/GSE325523_family.soft.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/GSE325525_family.soft.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/NOTICE.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/counts.csv.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/dog-annotation.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/dog-expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/dog-manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/mouse-annotation.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/mouse-expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/mouse-manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/samples.xlsx +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/README.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/canis_lupus_familiaris.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/context-keys-v0.4.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/ensembl115.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/homo_sapiens.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/mitochondrial.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/mus_musculus.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/saccharomyces_cerevisiae.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/uniprot_literature.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/regions/NOTICE.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/regions/ingolia.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/README.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/SD3.xlsx +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/ensembl107.cdna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/ensembl107.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/ensembl107.ncrna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/human-ensembl105.cdna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/human-ensembl105.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/human-ensembl105.ncrna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/worm-ensembl105.cdna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/worm-ensembl105.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/worm-ensembl105.ncrna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/yeast-ensembl115.cdna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/yeast-ensembl115.dna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/yeast-ensembl115.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/zebrafish-ensembl115.cdna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/zebrafish-ensembl115.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/zebrafish-ensembl115.ncrna.fa.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/NOTICE.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/dog.fasta +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/ensembl83-expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/ensembl83-human.fasta.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/README.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/generate.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v1.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v1.sqlite +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v2.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v2.sqlite +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v3.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v3.sqlite +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v4.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v4.sqlite +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/viral/NC_001526.4.gb.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/NOTICE.md +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/annotation.gtf.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/copies.zip +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/expected.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/manifest.json +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/protein.zip +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/rna.zip +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/search.fasta.gz +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_catalog_registry.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_copy.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_cross_reference_pairing.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_ensembl_search_reference.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_evidence_rules.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_evidence_summary.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_genetic_codes.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_genomes.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_ingolia.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_initiation_context.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_liftover.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_local_build_queries.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_more_species.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_ncorf_mammals.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_openprot.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_orf_cases.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_paired_selectors.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_pairing.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_pfizer.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_pfizer_rna.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_reference_mapping.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_reference_orf.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_refseq.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_region_targets.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_riborf.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_search_reference.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_selectors.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_storage.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_uorf_catalog.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_viral.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_wang.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tools/__init__.py +0 -0
- {orfdata-0.34.1 → orfdata-0.35.0}/tools/build_hpv16_cds.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orfdata
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.35.0
|
|
4
4
|
Summary: Reference proteomes with evidence-backed noncanonical ORFs on PyEnsembl genomes
|
|
5
5
|
Author: OpenVax
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -35,8 +35,8 @@ Dynamic: license-file
|
|
|
35
35
|
|
|
36
36
|
# orfdata
|
|
37
37
|
|
|
38
|
-
orfdata builds
|
|
39
|
-
a [PyEnsembl](https://github.com/openvax/pyensembl)
|
|
38
|
+
orfdata builds protein references from transcript models in
|
|
39
|
+
a [PyEnsembl](https://github.com/openvax/pyensembl) annotation, plus open reading
|
|
40
40
|
frames (ORFs) that ribosome-profiling studies found translated outside those
|
|
41
41
|
annotations. These include upstream and downstream ORFs, ORFs in other reading
|
|
42
42
|
frames of a coding sequence, and ORFs on RNAs annotated as noncoding. Each added
|
|
@@ -48,38 +48,50 @@ evidence.
|
|
|
48
48
|
Use Python 3.11 or later. Install orfdata and one PyEnsembl annotation:
|
|
49
49
|
|
|
50
50
|
```sh
|
|
51
|
-
python -m pip install 'orfdata[pyensembl]'
|
|
51
|
+
python -m pip install 'orfdata[pyensembl,data,build-data]'
|
|
52
52
|
pyensembl install --release 115 --species human
|
|
53
|
+
# For the ncORF evidence presets and "all":
|
|
54
|
+
orfdata setup --species human --catalogs all
|
|
53
55
|
```
|
|
54
56
|
|
|
55
57
|
## Example
|
|
56
58
|
|
|
57
59
|
```python
|
|
58
60
|
from pyensembl import EnsemblRelease
|
|
59
|
-
from orfdata import
|
|
61
|
+
from orfdata import ReferenceTranscriptome
|
|
60
62
|
|
|
61
63
|
genome = EnsemblRelease(115, species="human")
|
|
62
|
-
|
|
64
|
+
transcriptome = ReferenceTranscriptome.from_genome(genome)
|
|
65
|
+
reference = transcriptome.proteome() # Reference CDS proteins only; all isoforms.
|
|
66
|
+
one_per_gene = transcriptome.proteome(isoforms="longest")
|
|
67
|
+
proteome = transcriptome.proteome(nc_orf_sources="ms") # Explicitly add MS-supported ncORFs.
|
|
63
68
|
proteome.write_fasta("human-e115.fasta")
|
|
64
|
-
print(proteome.summary()["
|
|
69
|
+
print(proteome.summary()["protein_sources"], len(proteome.excluded))
|
|
65
70
|
```
|
|
66
71
|
|
|
67
72
|
```text
|
|
68
|
-
{'
|
|
73
|
+
{'reference_cds': 245535, 'nc_orf': 2181} 5
|
|
69
74
|
```
|
|
70
75
|
|
|
71
|
-
|
|
76
|
+
`proteome()` defaults to reference CDS proteins, with no ncORFs or viruses.
|
|
77
|
+
`isoforms="longest"` selects one protein per gene by length, with accession
|
|
78
|
+
and transcript ID breaking ties. This does not assign Ensembl canonical or
|
|
79
|
+
MANE status. `nc_orf_sources="ms"` takes every protein in the Ensembl 115 annotation and adds the 2,181
|
|
72
80
|
bundled human ORFs that have supporting mass-spectrometry peptides and are
|
|
73
81
|
encoded by an Ensembl 115 transcript. Each entry lists every transcript encoding
|
|
74
82
|
it; the other 5 selected ORFs are listed in `proteome.excluded` with the
|
|
75
|
-
reason.
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
reason. `nc_orf_sources="ribosome"` includes Ribo-seq-supported ORFs from
|
|
84
|
+
all compatible registered datasets. Use a rule such as
|
|
85
|
+
`RiboSeq(min_studies=2) & MS()` to set Ribo-seq and MS stringency separately.
|
|
86
|
+
A dataset name such as `"bundled"` selects every ORF in that dataset;
|
|
87
|
+
a list such as `["bundled", "ncorf-mammals-human"]` combines datasets.
|
|
88
|
+
`nc_orf_sources="all"` includes every compatible registered dataset, including
|
|
89
|
+
optional ones. Missing datasets raise with installation instructions.
|
|
78
90
|
`proteome.save(path)` writes a checksummed snapshot that `Proteome.load` reads
|
|
79
91
|
offline. From the command line:
|
|
80
92
|
|
|
81
93
|
```sh
|
|
82
|
-
orfdata proteome --species human --release 115 --output human-e115.fasta
|
|
94
|
+
orfdata proteome --species human --release 115 --nc-orf-sources ms --output human-e115.fasta
|
|
83
95
|
```
|
|
84
96
|
|
|
85
97
|
A translated ORF or a detected peptide does not by itself establish a stable,
|
|
@@ -90,7 +102,7 @@ immunopeptidomics: peptides eluted from HLA molecules.
|
|
|
90
102
|
|
|
91
103
|
| Species | Noncanonical ORFs | Sources |
|
|
92
104
|
| --- | ---: | --- |
|
|
93
|
-
| Human | 7,264 bundled; 57,607 with `
|
|
105
|
+
| Human | 7,264 bundled; 57,607 with `nc_orf_sources="all"` | GENCODE; optionally Chang et al. 2025 and Yang et al. 2024 Ribo-seq |
|
|
94
106
|
| Mouse | 48,805 | Chang et al. and Yang et al. Ribo-seq, OpenProt 2.2 MS |
|
|
95
107
|
| Zebrafish | 9,759 | Yang et al. Ribo-seq |
|
|
96
108
|
| C. elegans | 2,849 | Yang et al. Ribo-seq |
|
|
@@ -106,10 +118,37 @@ After `orfdata chains download` (add
|
|
|
106
118
|
(GRCh37, NCBI36, GRCm38, NCBIM37) and T2T-CHM13 use these catalogues lifted
|
|
107
119
|
to them; `orfdata genomes install t2t-chm13` installs a CHM13 annotation. Dog proteomes contain their
|
|
108
120
|
PyEnsembl-annotated proteins. `load_catalog(species=...)` and
|
|
109
|
-
`
|
|
121
|
+
`with_nc_orfs("all")` select catalogues for a species and raise when none is
|
|
110
122
|
available or built.
|
|
111
|
-
Human evidence is never transferred to another species. Viral
|
|
112
|
-
|
|
123
|
+
Human evidence is never transferred to another species. Viral proteins can
|
|
124
|
+
be added only to a proteome for a recorded host. To build one dictionary and
|
|
125
|
+
FASTA with the reference CDS proteins, all binding catalogue ORFs and the
|
|
126
|
+
bundled viruses associated with human:
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
combined = transcriptome.proteome(nc_orf_sources="all", viral="all")
|
|
130
|
+
proteins_by_id = combined.by_accession() # Reference CDS, ncORF and viral entries.
|
|
131
|
+
combined.write_fasta("human-all-proteins.fasta")
|
|
132
|
+
combined.save("human-all-proteins.proteome.json.gz") # Complete provenance.
|
|
133
|
+
|
|
134
|
+
nc_only = transcriptome.proteome(reference_cds=False, nc_orf_sources="all")
|
|
135
|
+
nc_only.write_fasta("human-reference-ncorfs.fasta")
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
For sample-specific altered sequences, `DerivedProtein` records the supplied
|
|
139
|
+
amino acids, parent protein accession, sample, change IDs and source before
|
|
140
|
+
`combined.with_derived_proteins(...)` adds them. These sequences are not
|
|
141
|
+
inferred from variants or included in the reference proteome by default.
|
|
142
|
+
|
|
143
|
+
```sh
|
|
144
|
+
orfdata proteome --species human --release 115 --nc-orf-sources all --viral all --output human-all-proteins.fasta
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
`viral="all"` selects one protein set per bundled virus and keeps its exact
|
|
148
|
+
reference ID in FASTA headers. To select one virus, use `viral="HPV16"` or
|
|
149
|
+
`with_viral("HPV16")`.
|
|
150
|
+
Viral proteins are included only when requested; a recorded host association
|
|
151
|
+
does not say which virus is present in a sample.
|
|
113
152
|
orfdata also provides [RNA, ribosome and protein measurements](https://openvax.github.io/orfdata/measurements/)
|
|
114
153
|
for human, mouse, dog and yeast.
|
|
115
154
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
# orfdata
|
|
5
5
|
|
|
6
|
-
orfdata builds
|
|
7
|
-
a [PyEnsembl](https://github.com/openvax/pyensembl)
|
|
6
|
+
orfdata builds protein references from transcript models in
|
|
7
|
+
a [PyEnsembl](https://github.com/openvax/pyensembl) annotation, plus open reading
|
|
8
8
|
frames (ORFs) that ribosome-profiling studies found translated outside those
|
|
9
9
|
annotations. These include upstream and downstream ORFs, ORFs in other reading
|
|
10
10
|
frames of a coding sequence, and ORFs on RNAs annotated as noncoding. Each added
|
|
@@ -16,38 +16,50 @@ evidence.
|
|
|
16
16
|
Use Python 3.11 or later. Install orfdata and one PyEnsembl annotation:
|
|
17
17
|
|
|
18
18
|
```sh
|
|
19
|
-
python -m pip install 'orfdata[pyensembl]'
|
|
19
|
+
python -m pip install 'orfdata[pyensembl,data,build-data]'
|
|
20
20
|
pyensembl install --release 115 --species human
|
|
21
|
+
# For the ncORF evidence presets and "all":
|
|
22
|
+
orfdata setup --species human --catalogs all
|
|
21
23
|
```
|
|
22
24
|
|
|
23
25
|
## Example
|
|
24
26
|
|
|
25
27
|
```python
|
|
26
28
|
from pyensembl import EnsemblRelease
|
|
27
|
-
from orfdata import
|
|
29
|
+
from orfdata import ReferenceTranscriptome
|
|
28
30
|
|
|
29
31
|
genome = EnsemblRelease(115, species="human")
|
|
30
|
-
|
|
32
|
+
transcriptome = ReferenceTranscriptome.from_genome(genome)
|
|
33
|
+
reference = transcriptome.proteome() # Reference CDS proteins only; all isoforms.
|
|
34
|
+
one_per_gene = transcriptome.proteome(isoforms="longest")
|
|
35
|
+
proteome = transcriptome.proteome(nc_orf_sources="ms") # Explicitly add MS-supported ncORFs.
|
|
31
36
|
proteome.write_fasta("human-e115.fasta")
|
|
32
|
-
print(proteome.summary()["
|
|
37
|
+
print(proteome.summary()["protein_sources"], len(proteome.excluded))
|
|
33
38
|
```
|
|
34
39
|
|
|
35
40
|
```text
|
|
36
|
-
{'
|
|
41
|
+
{'reference_cds': 245535, 'nc_orf': 2181} 5
|
|
37
42
|
```
|
|
38
43
|
|
|
39
|
-
|
|
44
|
+
`proteome()` defaults to reference CDS proteins, with no ncORFs or viruses.
|
|
45
|
+
`isoforms="longest"` selects one protein per gene by length, with accession
|
|
46
|
+
and transcript ID breaking ties. This does not assign Ensembl canonical or
|
|
47
|
+
MANE status. `nc_orf_sources="ms"` takes every protein in the Ensembl 115 annotation and adds the 2,181
|
|
40
48
|
bundled human ORFs that have supporting mass-spectrometry peptides and are
|
|
41
49
|
encoded by an Ensembl 115 transcript. Each entry lists every transcript encoding
|
|
42
50
|
it; the other 5 selected ORFs are listed in `proteome.excluded` with the
|
|
43
|
-
reason.
|
|
44
|
-
|
|
45
|
-
|
|
51
|
+
reason. `nc_orf_sources="ribosome"` includes Ribo-seq-supported ORFs from
|
|
52
|
+
all compatible registered datasets. Use a rule such as
|
|
53
|
+
`RiboSeq(min_studies=2) & MS()` to set Ribo-seq and MS stringency separately.
|
|
54
|
+
A dataset name such as `"bundled"` selects every ORF in that dataset;
|
|
55
|
+
a list such as `["bundled", "ncorf-mammals-human"]` combines datasets.
|
|
56
|
+
`nc_orf_sources="all"` includes every compatible registered dataset, including
|
|
57
|
+
optional ones. Missing datasets raise with installation instructions.
|
|
46
58
|
`proteome.save(path)` writes a checksummed snapshot that `Proteome.load` reads
|
|
47
59
|
offline. From the command line:
|
|
48
60
|
|
|
49
61
|
```sh
|
|
50
|
-
orfdata proteome --species human --release 115 --output human-e115.fasta
|
|
62
|
+
orfdata proteome --species human --release 115 --nc-orf-sources ms --output human-e115.fasta
|
|
51
63
|
```
|
|
52
64
|
|
|
53
65
|
A translated ORF or a detected peptide does not by itself establish a stable,
|
|
@@ -58,7 +70,7 @@ immunopeptidomics: peptides eluted from HLA molecules.
|
|
|
58
70
|
|
|
59
71
|
| Species | Noncanonical ORFs | Sources |
|
|
60
72
|
| --- | ---: | --- |
|
|
61
|
-
| Human | 7,264 bundled; 57,607 with `
|
|
73
|
+
| Human | 7,264 bundled; 57,607 with `nc_orf_sources="all"` | GENCODE; optionally Chang et al. 2025 and Yang et al. 2024 Ribo-seq |
|
|
62
74
|
| Mouse | 48,805 | Chang et al. and Yang et al. Ribo-seq, OpenProt 2.2 MS |
|
|
63
75
|
| Zebrafish | 9,759 | Yang et al. Ribo-seq |
|
|
64
76
|
| C. elegans | 2,849 | Yang et al. Ribo-seq |
|
|
@@ -74,10 +86,37 @@ After `orfdata chains download` (add
|
|
|
74
86
|
(GRCh37, NCBI36, GRCm38, NCBIM37) and T2T-CHM13 use these catalogues lifted
|
|
75
87
|
to them; `orfdata genomes install t2t-chm13` installs a CHM13 annotation. Dog proteomes contain their
|
|
76
88
|
PyEnsembl-annotated proteins. `load_catalog(species=...)` and
|
|
77
|
-
`
|
|
89
|
+
`with_nc_orfs("all")` select catalogues for a species and raise when none is
|
|
78
90
|
available or built.
|
|
79
|
-
Human evidence is never transferred to another species. Viral
|
|
80
|
-
|
|
91
|
+
Human evidence is never transferred to another species. Viral proteins can
|
|
92
|
+
be added only to a proteome for a recorded host. To build one dictionary and
|
|
93
|
+
FASTA with the reference CDS proteins, all binding catalogue ORFs and the
|
|
94
|
+
bundled viruses associated with human:
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
combined = transcriptome.proteome(nc_orf_sources="all", viral="all")
|
|
98
|
+
proteins_by_id = combined.by_accession() # Reference CDS, ncORF and viral entries.
|
|
99
|
+
combined.write_fasta("human-all-proteins.fasta")
|
|
100
|
+
combined.save("human-all-proteins.proteome.json.gz") # Complete provenance.
|
|
101
|
+
|
|
102
|
+
nc_only = transcriptome.proteome(reference_cds=False, nc_orf_sources="all")
|
|
103
|
+
nc_only.write_fasta("human-reference-ncorfs.fasta")
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
For sample-specific altered sequences, `DerivedProtein` records the supplied
|
|
107
|
+
amino acids, parent protein accession, sample, change IDs and source before
|
|
108
|
+
`combined.with_derived_proteins(...)` adds them. These sequences are not
|
|
109
|
+
inferred from variants or included in the reference proteome by default.
|
|
110
|
+
|
|
111
|
+
```sh
|
|
112
|
+
orfdata proteome --species human --release 115 --nc-orf-sources all --viral all --output human-all-proteins.fasta
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`viral="all"` selects one protein set per bundled virus and keeps its exact
|
|
116
|
+
reference ID in FASTA headers. To select one virus, use `viral="HPV16"` or
|
|
117
|
+
`with_viral("HPV16")`.
|
|
118
|
+
Viral proteins are included only when requested; a recorded host association
|
|
119
|
+
does not say which virus is present in a sample.
|
|
81
120
|
orfdata also provides [RNA, ribosome and protein measurements](https://openvax.github.io/orfdata/measurements/)
|
|
82
121
|
for human, mouse, dog and yeast.
|
|
83
122
|
|
|
@@ -5,8 +5,9 @@ downloads. `CatalogRegistry` manages additional versioned ORF catalogues, with
|
|
|
5
5
|
the same explicit discovery, download, build and offline-open workflow as
|
|
6
6
|
`DatasetRegistry`. Once a species' catalogue in the packaged registry is
|
|
7
7
|
downloaded or built, `load_catalog(species=...)` opens it, so `extra_orfs(genome)` and
|
|
8
|
-
`Proteome.
|
|
9
|
-
`load_catalog(species=..., registry=...)` as `
|
|
8
|
+
`Proteome.with_nc_orfs("all")` use registered sources. Pass
|
|
9
|
+
`load_catalog(species=..., registry=...)` as `nc_orf_sources=` to a proteome
|
|
10
|
+
constructor for your own registry.
|
|
10
11
|
Every catalogue for the species is used, merged: those on the requested
|
|
11
12
|
assembly as they are, and those on another assembly the pinned chains reach,
|
|
12
13
|
lifted ([details](#every-assembly-of-a-species)). Each catalogue contributes its
|
|
@@ -181,14 +182,14 @@ build the catalogue from OpenProt's own downloads (3.4 MB, about 5 seconds),
|
|
|
181
182
|
each checked against its pinned size and SHA-256, with `orfdata setup --species
|
|
182
183
|
mouse` along with the Ribo-seq catalogue above, or alone with `orfdata catalogs
|
|
183
184
|
build openprot-mouse`. `load_catalog(species="mouse")`, `extra_orfs(genome)`
|
|
184
|
-
and `Proteome.build(genome)` use all three mouse catalogues, for any GRCm39
|
|
185
|
-
Ensembl release, so all must be installed.
|
|
185
|
+
and `Proteome.build(genome, nc_orf_sources="ms")` use all three mouse catalogues, for any GRCm39
|
|
186
|
+
Ensembl release, so all must be installed. To add only MS-supported ORFs:
|
|
186
187
|
|
|
187
188
|
```python
|
|
188
189
|
from pyensembl import EnsemblRelease
|
|
189
190
|
from orfdata import Proteome
|
|
190
191
|
|
|
191
|
-
proteome = Proteome.build(EnsemblRelease(115, species="mouse"))
|
|
192
|
+
proteome = Proteome.build(EnsemblRelease(115, species="mouse"), nc_orf_sources="ms")
|
|
192
193
|
print(proteome.summary()["kinds"], len(proteome.excluded))
|
|
193
194
|
```
|
|
194
195
|
|
|
@@ -245,7 +246,7 @@ characterization of alternative proteins.* Nucleic Acids Res. 2024;52(D1):D522
|
|
|
245
246
|
|
|
246
247
|
## Human Ribo-seq ORFs (optional)
|
|
247
248
|
|
|
248
|
-
|
|
249
|
+
`load_catalog(species="human")` defaults to the bundled GENCODE catalogue: 7,264 ORFs, offline, with
|
|
249
250
|
no setup. Two larger Ribo-seq catalogues are optional, used only when asked
|
|
250
251
|
for, because they would change every human selection and make loading human
|
|
251
252
|
ORFs about 60 times slower:
|
|
@@ -259,11 +260,13 @@ from orfdata import Proteome, extra_orfs, load_catalog
|
|
|
259
260
|
|
|
260
261
|
catalog = load_catalog(species="human", catalogs="all") # Bundled, Chang et al. and Yang et al., merged
|
|
261
262
|
orfs = extra_orfs(genome, "ribosome", catalogs="all")
|
|
262
|
-
proteome = Proteome.build(genome,
|
|
263
|
+
proteome = Proteome.build(genome, nc_orf_sources="all")
|
|
263
264
|
load_catalog(species="human", catalogs=["ncorf-mammals-human"]) # Just one
|
|
264
265
|
```
|
|
265
266
|
|
|
266
|
-
`orfdata proteome --
|
|
267
|
+
`orfdata proteome --nc-orf-sources all` selects every dataset. Evidence presets
|
|
268
|
+
such as `nc_orf_sources="ms"` also query every compatible dataset; use
|
|
269
|
+
`nc_orf_sources="bundled"` for only the bundled set. They merge after the bundled
|
|
267
270
|
catalogue, Chang et al.'s before Yang et al.'s as for mouse, so an ORF in
|
|
268
271
|
several keeps the first one's ID. Together they give 57,607 ORFs, of which 57,485 place on Ensembl 115; that
|
|
269
272
|
takes about a minute and 3.2 GB of memory, against about a second for the
|
|
@@ -342,7 +345,7 @@ No public resource gives dog ORF-level translation evidence, as of October
|
|
|
342
345
|
- **Mass spectrometry.** Every dog dataset searched canonical proteins only,
|
|
343
346
|
so none reports a noncanonical peptide as deposited: the Canine
|
|
344
347
|
PeptideAtlas (PXD052932, 149,546 peptides from 13 tissues, plasma and
|
|
345
|
-
urine), the dog tumour DLA immunopeptidome (PXD074485, 12,
|
|
348
|
+
urine), the dog tumour DLA immunopeptidome (PXD074485, 12,948 distinct
|
|
346
349
|
database-search ligands), the Pfizer TMT atlas (PXD070290) and the dog brain
|
|
347
350
|
proteome (PXD033420, PXD034449). The first two are available as
|
|
348
351
|
[dog peptide datasets](dog-peptides.md), as evidence for known proteins.
|
|
@@ -356,7 +359,7 @@ abundance and peptides are available as [measurements](measurements.md).
|
|
|
356
359
|
|
|
357
360
|
Catalogues on another assembly of the species are lifted automatically. Download
|
|
358
361
|
the pinned chain files once, and `load_catalog`, `extra_orfs(genome)` and
|
|
359
|
-
`Proteome.build(genome)` work on every human and mouse assembly PyEnsembl
|
|
362
|
+
`Proteome.build(genome, nc_orf_sources="ms")` work on every human and mouse assembly PyEnsembl
|
|
360
363
|
knows:
|
|
361
364
|
|
|
362
365
|
```sh
|
|
@@ -367,7 +370,7 @@ orfdata chains download --accept-terms # Every pinned chain; without --accept-
|
|
|
367
370
|
from pyensembl import EnsemblRelease
|
|
368
371
|
from orfdata import Proteome
|
|
369
372
|
|
|
370
|
-
Proteome.build(EnsemblRelease(75))
|
|
373
|
+
Proteome.build(EnsemblRelease(75), nc_orf_sources="ms") # GRCh37: the GRCh38 catalogue, lifted
|
|
371
374
|
```
|
|
372
375
|
|
|
373
376
|
With evidence `None` (every catalogue ORF), each assembly gets:
|
|
@@ -399,7 +402,7 @@ silently dropped.
|
|
|
399
402
|
each with the command that installs it; nothing is downloaded while
|
|
400
403
|
loading. `cache_root` (or `--cache-root`) is where both are looked for.
|
|
401
404
|
- **Your own catalogues.** `extra_orfs(genome, catalog=...)` and
|
|
402
|
-
`Proteome.build(genome, catalog
|
|
405
|
+
`Proteome.build(genome, nc_orf_sources=catalog)` lift a catalogue, or each of a list,
|
|
403
406
|
that is on another assembly of the species through the same chains.
|
|
404
407
|
- **Other names.** Assemblies go by Ensembl's names. `hg38`, `GRCh38.p14`,
|
|
405
408
|
`mm39` and the like get an error that names the assembly to use, and a
|
|
@@ -427,14 +430,14 @@ GRCh38-to-CHM13 chain is public domain (CC0):
|
|
|
427
430
|
```sh
|
|
428
431
|
orfdata genomes install t2t-chm13 # 143 MB of Ensembl files, plus about 1.1 GB of PyEnsembl index
|
|
429
432
|
orfdata chains download GRCh38 T2T-CHM13v2.0
|
|
430
|
-
orfdata proteome --genome t2t-chm13 --output chm13.fasta
|
|
433
|
+
orfdata proteome --genome t2t-chm13 --nc-orf-sources ms --output chm13.fasta
|
|
431
434
|
```
|
|
432
435
|
|
|
433
436
|
```python
|
|
434
437
|
from orfdata import Proteome, load_genome
|
|
435
438
|
|
|
436
439
|
genome = load_genome("t2t-chm13") # A PyEnsembl Genome named T2T-CHM13v2.0, offline
|
|
437
|
-
proteome = Proteome.build(genome)
|
|
440
|
+
proteome = Proteome.build(genome, nc_orf_sources="ms") # 104,957 reference proteins + 2,039 MS-supported ORFs
|
|
438
441
|
```
|
|
439
442
|
|
|
440
443
|
The bundled GRCh38 catalogue lifts automatically: 7,208 of 7,264 ORFs lift, and
|
|
@@ -471,7 +474,7 @@ orfdata lift --species human --to GRCh37 --output orfs-grch37.json.gz
|
|
|
471
474
|
`orfdata lift` writes the lifted catalogue and prints a summary to standard
|
|
472
475
|
error. `--catalog FILE` lifts a local catalogue instead, and `--chain FILE` uses
|
|
473
476
|
your own chain file instead of a downloaded pin. Pass the result back with
|
|
474
|
-
`--
|
|
477
|
+
`--nc-orf-sources` for `orfdata proteome`; JSON and TSV exports include
|
|
475
478
|
each record's original and the chain. Downloading chains needs the
|
|
476
479
|
`orfdata[data]` extra, which adds DataCache. In Python:
|
|
477
480
|
|
|
@@ -35,18 +35,49 @@ searched against human SwissProt, and their peptides are human proteins, so
|
|
|
35
35
|
they sit in the dataset's separate human reference context.
|
|
36
36
|
|
|
37
37
|
Database search finds 11,363 distinct dog peptides in the UniProt searches and
|
|
38
|
-
12,
|
|
39
|
-
8–14-mers from database search (591 for
|
|
40
|
-
the article's. The article's tumour counts come from its curated supplementary
|
|
38
|
+
12,948 across all four databases, leaving out iRT standards (below). For the
|
|
39
|
+
cell lines, the counts of unique 8–14-mers from database search (591 for
|
|
40
|
+
DLA-88\*003:02, 1,465 for \*501:01) match the article's. The article's tumour counts come from its curated supplementary
|
|
41
41
|
lists, which aren't imported (they are CC BY-NC-ND), and match no single table.
|
|
42
42
|
|
|
43
43
|
Every row keeps its PEAKS identification type in provenance as `found_by`:
|
|
44
44
|
`DB Search`, `DeepNovo` (de novo sequencing) or `Homolog` (SPIDER homology
|
|
45
45
|
search). Only database-search peptides are guaranteed to occur in a listed
|
|
46
|
-
protein, so filter on it for a conservative ligand list.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
protein, so filter on it for a conservative ligand list.
|
|
47
|
+
|
|
48
|
+
### iRT standards
|
|
49
|
+
|
|
50
|
+
Every run was spiked with Biognosys iRT retention-time peptides, and their
|
|
51
|
+
spectra appear in every search, often in disguise. 10,629 rows are marked
|
|
52
|
+
`irt_standard`, and `irt_rule` names the first rule that marked them:
|
|
53
|
+
|
|
54
|
+
| `irt_rule` | Rows | Marks a row that |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| `irt_sequence` | 1,179 | is a kit peptide or a fragment of one, with I and L equal |
|
|
57
|
+
| `kit_only` | 1,097 | PEAKS attributes only to the kit (homology reads of kit peptides) |
|
|
58
|
+
| `irt_precursor` | 1,276 | sits at the precursor of a row marked by the first two rules in the same immunoprecipitation: same charge, m/z within 20 ppm, retention time within a minute |
|
|
59
|
+
| `de_novo_irt` | 7,077 | is a de novo sequence that PEAKS matches to the kit, or that shares 6 or more consecutive residues with a kit peptide |
|
|
60
|
+
|
|
61
|
+
The precursor rule applies to de novo and homology rows. It applies to
|
|
62
|
+
database-search rows only in the merged database, which lacks the kit, and only
|
|
63
|
+
when no search with the kit found the same peptide. Elsewhere PEAKS could
|
|
64
|
+
choose the kit peptide and didn't.
|
|
65
|
+
|
|
66
|
+
- **De novo rows:** half of them (8,448 of 16,830) are iRT reads, often a
|
|
67
|
+
kit peptide with residues added or changed (`KATLFLQFGAQGSPFLK`). Don't take
|
|
68
|
+
an unmarked de novo sequence for a new ligand without checking its spectrum.
|
|
69
|
+
- **Homology rows:** 8 are marked by precursor, such as `TGFLLDPVLNR`, which
|
|
70
|
+
has exactly the mass of `GTFIIDPGGVIR` and co-elutes with it.
|
|
71
|
+
- **Database-search rows:** apart from 1,075 kit peptides, only one is marked:
|
|
72
|
+
`IFLAFQQKAYVAP`, matched to dog proteins in the merged database at the
|
|
73
|
+
precursor of `LFLQFGAAGSPFLK`.
|
|
74
|
+
- **Chance matches:** few. Shuffled kit sequences share 6 residues with about
|
|
75
|
+
3 de novo rows, and shifting the kit's retention times by 10–20 minutes puts
|
|
76
|
+
about 14 de novo rows at a kit precursor.
|
|
77
|
+
|
|
78
|
+
A mapping is `unmapped` when any of its rows is marked. Release 2026-10-16.1
|
|
79
|
+
(importer `kaabinejadian-dla-v1`) marked only exact kit sequences and kit-only
|
|
80
|
+
attributions (2,242 rows), so it missed the disguised reads.
|
|
50
81
|
|
|
51
82
|
```python
|
|
52
83
|
from orfdata import DatasetRegistry, ScopedTarget
|
|
@@ -64,6 +95,10 @@ for m in ligands.measurements(target=peptide, quantity="spectrum_count"):
|
|
|
64
95
|
lola = {m.target.identifier for m in ligands.measurements(
|
|
65
96
|
reference=dog, assay_id="Lola-BB76:UniProt9615", quantity="spectrum_count")
|
|
66
97
|
if m.provenance["found_by"] == "DB Search" and not m.provenance["irt_standard"]}
|
|
98
|
+
|
|
99
|
+
# Why a row is marked as an iRT standard.
|
|
100
|
+
for m in ligands.measurements(target=peptide, quantity="spectrum_count"):
|
|
101
|
+
print(m.assay_id, m.provenance["irt_standard"], m.provenance["irt_rule"])
|
|
67
102
|
```
|
|
68
103
|
|
|
69
104
|
Targets are unmodified sequences; each row's modified form (for example
|
|
@@ -74,10 +109,25 @@ search and identification type, the proteins PEAKS reported for a peptide:
|
|
|
74
109
|
proteins stay in the mapping's evidence. The search FASTAs weren't deposited,
|
|
75
110
|
so no accession can be checked against a sequence.
|
|
76
111
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
112
|
+
### Runs missing from the deposit
|
|
113
|
+
|
|
114
|
+
PEAKS reports, for each peptide, the raw file and scan of its best spectrum,
|
|
115
|
+
and sums its spectra and area over all of the sample's runs. The authors' PEAKS
|
|
116
|
+
projects for two immunoprecipitations included runs that the deposit lacks, so
|
|
117
|
+
each row records `raw_file_deposited`. For 1,695 rows the best spectrum comes
|
|
118
|
+
from a missing run:
|
|
119
|
+
|
|
120
|
+
- **Lily (H58A):** a second injection of the remaining eluate, 22-1107 "1uL
|
|
121
|
+
Residue" (fractions 12–30), 299 rows. The first injection, 22-1104, is
|
|
122
|
+
deposited.
|
|
123
|
+
- **DLA-88\*012:01:** the 20240929 acquisition (fractions 14–25), 1,396 of its
|
|
124
|
+
1,635 rows. The line's archive holds only its 20241013 runs (fractions 26–28
|
|
125
|
+
in triplicate, and blanks), though the SDRF names the 20240929 run as the
|
|
126
|
+
assay.
|
|
127
|
+
|
|
128
|
+
Those identifications come from the authors' tables, but their spectra can't
|
|
129
|
+
be checked against the deposit. The raw files of 163828A's H58A run have no
|
|
130
|
+
deposited results and aren't included.
|
|
81
131
|
|
|
82
132
|
## Canine PeptideAtlas
|
|
83
133
|
|
|
@@ -12,8 +12,9 @@ is a recorded host of the virus.
|
|
|
12
12
|
Use Python 3.11 or later. Install orfdata and one PyEnsembl annotation:
|
|
13
13
|
|
|
14
14
|
```sh
|
|
15
|
-
python -m pip install 'orfdata[pyensembl]'
|
|
15
|
+
python -m pip install 'orfdata[pyensembl,data,build-data]'
|
|
16
16
|
pyensembl install --release 115 --species human
|
|
17
|
+
orfdata setup --species human --catalogs all # For ncORF presets and "all"
|
|
17
18
|
```
|
|
18
19
|
|
|
19
20
|
The second command downloads and indexes Ensembl 115 for human GRCh38. orfdata
|
|
@@ -23,10 +24,12 @@ never downloads or indexes annotation data itself; it reports what is missing.
|
|
|
23
24
|
|
|
24
25
|
```python
|
|
25
26
|
from pyensembl import EnsemblRelease
|
|
26
|
-
from orfdata import
|
|
27
|
+
from orfdata import ReferenceTranscriptome
|
|
27
28
|
|
|
28
29
|
genome = EnsemblRelease(115, species="human")
|
|
29
|
-
|
|
30
|
+
transcriptome = ReferenceTranscriptome.from_genome(genome)
|
|
31
|
+
reference = transcriptome.proteome() # Reference CDS proteins only.
|
|
32
|
+
proteome = transcriptome.proteome(nc_orf_sources="ms")
|
|
30
33
|
proteome.write_fasta("human-e115.fasta")
|
|
31
34
|
print(proteome.summary()["kinds"], len(proteome.excluded))
|
|
32
35
|
```
|
|
@@ -35,8 +38,9 @@ print(proteome.summary()["kinds"], len(proteome.excluded))
|
|
|
35
38
|
{'annotated': 245535, 'extra_orf': 2181} 5
|
|
36
39
|
```
|
|
37
40
|
|
|
38
|
-
`
|
|
39
|
-
`
|
|
41
|
+
`proteome()` takes every reference CDS protein in the Ensembl 115 annotation.
|
|
42
|
+
Use `isoforms="longest"` for one reference protein per gene, selected by length.
|
|
43
|
+
`nc_orf_sources="ms"` adds the bundled human ORFs that have
|
|
40
44
|
supporting mass-spectrometry (MS) peptides: 2,181 of the 2,186 are encoded by
|
|
41
45
|
an Ensembl 115 transcript, which must contain the ORF's exact spliced coding
|
|
42
46
|
path. The other 5 are listed in `proteome.excluded` with the reason. Each entry
|
|
@@ -46,23 +50,29 @@ minute, and `proteome.save(path)` keeps it as a checksummed snapshot.
|
|
|
46
50
|
The same proteome from the command line:
|
|
47
51
|
|
|
48
52
|
```sh
|
|
49
|
-
orfdata proteome --species human --release 115 --output human-e115.fasta
|
|
53
|
+
orfdata proteome --species human --release 115 --nc-orf-sources ms --output human-e115.fasta
|
|
50
54
|
```
|
|
51
55
|
|
|
52
|
-
## Choose
|
|
56
|
+
## Choose ncORF sources
|
|
53
57
|
|
|
54
|
-
| `
|
|
58
|
+
| `nc_orf_sources=` | Selects ORFs with | Human ORFs | Encoded in Ensembl 115 |
|
|
55
59
|
| --- | --- | ---: | ---: |
|
|
56
|
-
| `"ribosome"` or `"riboseq"` | Ribosome profiling
|
|
57
|
-
| `"ms"`
|
|
60
|
+
| `"ribosome"` or `"riboseq"` | Ribosome profiling across all datasets | 57,607 | 57,485 |
|
|
61
|
+
| `"ms"` | Any supporting MS peptide | 2,186 | 2,181 |
|
|
58
62
|
| `"immunopeptidomics"` | Peptides eluted from MHC (in human, HLA) molecules | 1,881 | 1,879 |
|
|
59
63
|
| `"proteomics"` | Peptides from digested cellular proteins | 73 | 72 |
|
|
60
|
-
| `"all"` | Every
|
|
64
|
+
| `"all"` | Every compatible dataset | 57,607 | 57,485 |
|
|
65
|
+
|
|
66
|
+
Use `nc_orf_sources="bundled"` for the bundled dataset alone, or a list of
|
|
67
|
+
names such as `["bundled", "ncorf-mammals-human"]` for a subset. Evidence presets
|
|
68
|
+
and `"all"` require all compatible datasets; install human's optional datasets
|
|
69
|
+
once with `orfdata setup --species human --catalogs all`. Missing resources
|
|
70
|
+
produce installation instructions. The defaults still add no ncORFs.
|
|
61
71
|
|
|
62
72
|
Most MS support in the bundled human catalogue comes from
|
|
63
73
|
immunopeptidomics. A presented peptide shows that the ORF was translated; it
|
|
64
74
|
does not establish a stable protein. See
|
|
65
|
-
[building a reference proteome](proteome.md#
|
|
75
|
+
[building a reference proteome](proteome.md#add-ncorfs-with-selected-evidence) for
|
|
66
76
|
stricter filters and what each level means.
|
|
67
77
|
|
|
68
78
|
## Look up the ORFs on a transcript
|
|
@@ -96,7 +106,7 @@ transcript alongside them.
|
|
|
96
106
|
|
|
97
107
|
| Species | Annotated proteins | Noncanonical ORFs |
|
|
98
108
|
| --- | --- | --- |
|
|
99
|
-
| Human | From PyEnsembl; T2T-CHM13 from a pinned Ensembl annotation | 7,264 GRCh38 ORFs, bundled; lifted to GRCh37, NCBI36 and [T2T-CHM13](catalogs.md#t2t-chm13). 57,607 with the [optional Ribo-seq catalogues](catalogs.md#human-ribo-seq-orfs-optional) of Chang et al. and Yang et al. (`
|
|
109
|
+
| Human | From PyEnsembl; T2T-CHM13 from a pinned Ensembl annotation | 7,264 GRCh38 ORFs, bundled; lifted to GRCh37, NCBI36 and [T2T-CHM13](catalogs.md#t2t-chm13). 57,607 with the [optional Ribo-seq catalogues](catalogs.md#human-ribo-seq-orfs-optional) of Chang et al. and Yang et al. (`nc_orf_sources="all"`) |
|
|
100
110
|
| Mouse | From PyEnsembl | 48,805 ORFs on GRCm39: Ribo-seq ORFs of Chang et al. and Yang et al., and 2,976 MS-supported ones (OpenProt 2.2), [built locally](catalogs.md#mouse) with `orfdata setup --species mouse`; lifted to GRCm38 and NCBIM37 |
|
|
101
111
|
| Zebrafish | From PyEnsembl | 9,759 GRCz11 Ribo-seq ORFs of Yang et al., [built locally](catalogs.md#zebrafish-c-elegans-and-yeast) |
|
|
102
112
|
| C. elegans | From PyEnsembl | 2,849 WBcel235 Ribo-seq ORFs of Yang et al., built locally |
|
|
@@ -106,7 +116,7 @@ transcript alongside them.
|
|
|
106
116
|
Other assemblies use a catalogue lifted to them once `orfdata chains download`
|
|
107
117
|
has fetched the chain files (with `--accept-terms` for UCSC's non-commercial
|
|
108
118
|
mouse chains); see [every assembly of a species](catalogs.md#every-assembly-of-a-species).
|
|
109
|
-
`
|
|
119
|
+
`with_nc_orfs()` raises for a species without a catalogue, or whose
|
|
110
120
|
catalogue or chains aren't installed yet, rather than returning an
|
|
111
121
|
annotated-only proteome. Human ORF evidence is never transferred
|
|
112
122
|
to another species. The same API also serves
|