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.
Files changed (288) hide show
  1. {orfdata-0.34.1/orfdata.egg-info → orfdata-0.35.0}/PKG-INFO +56 -17
  2. {orfdata-0.34.1 → orfdata-0.35.0}/README.md +55 -16
  3. {orfdata-0.34.1 → orfdata-0.35.0}/docs/catalogs.md +18 -15
  4. {orfdata-0.34.1 → orfdata-0.35.0}/docs/dog-peptides.md +61 -11
  5. {orfdata-0.34.1 → orfdata-0.35.0}/docs/index.md +24 -14
  6. orfdata-0.35.0/docs/proteome.md +696 -0
  7. {orfdata-0.34.1 → orfdata-0.35.0}/docs/viral.md +77 -0
  8. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/__init__.py +16 -0
  9. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/catalog.py +3 -3
  10. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/cli.py +8 -2
  11. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/datasets.json +601 -1
  12. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/viral/NOTICE.md +18 -1
  13. orfdata-0.35.0/orfdata/data/viral/gdc-grch38-d1-vd1-coverage.tsv +205 -0
  14. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/model.py +0 -3
  15. orfdata-0.35.0/orfdata/proteome.py +1970 -0
  16. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/proteome_cli.py +27 -21
  17. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/reference.py +21 -2
  18. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/__init__.py +1 -1
  19. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/kaabinejadian.py +130 -13
  20. orfdata-0.35.0/orfdata/version.py +1 -0
  21. orfdata-0.35.0/orfdata/viral_cli.py +70 -0
  22. orfdata-0.35.0/orfdata/viral_coverage.py +114 -0
  23. {orfdata-0.34.1 → orfdata-0.35.0/orfdata.egg-info}/PKG-INFO +56 -17
  24. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/SOURCES.txt +11 -0
  25. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/kaabinejadian/README.md +14 -6
  26. orfdata-0.35.0/tests/data/kaabinejadian/Results.zip +0 -0
  27. orfdata-0.34.1/tests/data/kaabinejadian/manifest.json → orfdata-0.35.0/tests/data/kaabinejadian/manifest-v1.json +37 -10
  28. orfdata-0.35.0/tests/data/kaabinejadian/manifest.json +276 -0
  29. orfdata-0.35.0/tests/data/viral/GRCh83.d1.vd1_virus_decoy.txt.gz +0 -0
  30. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_dog_peptides.py +86 -10
  31. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_measurements.py +8 -2
  32. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_merge_catalogs.py +2 -3
  33. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_proteome.py +446 -43
  34. orfdata-0.35.0/tests/test_proteome_external.py +133 -0
  35. orfdata-0.35.0/tests/test_proteome_fasta_tokens.py +102 -0
  36. orfdata-0.35.0/tests/test_proteome_producer_graph.py +114 -0
  37. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_reference_context.py +28 -1
  38. orfdata-0.35.0/tests/test_viral_cli.py +49 -0
  39. orfdata-0.35.0/tests/test_viral_coverage.py +91 -0
  40. orfdata-0.35.0/tools/build_gdc_viral_coverage.py +73 -0
  41. orfdata-0.34.1/docs/proteome.md +0 -383
  42. orfdata-0.34.1/orfdata/proteome.py +0 -1011
  43. orfdata-0.34.1/orfdata/version.py +0 -1
  44. orfdata-0.34.1/tests/data/kaabinejadian/Results.zip +0 -0
  45. {orfdata-0.34.1 → orfdata-0.35.0}/LICENSE +0 -0
  46. {orfdata-0.34.1 → orfdata-0.35.0}/MANIFEST.in +0 -0
  47. {orfdata-0.34.1 → orfdata-0.35.0}/deploy.sh +0 -0
  48. {orfdata-0.34.1 → orfdata-0.35.0}/docs/copy-yeast.md +0 -0
  49. {orfdata-0.34.1 → orfdata-0.35.0}/docs/coverage.md +0 -0
  50. {orfdata-0.34.1 → orfdata-0.35.0}/docs/examples.md +0 -0
  51. {orfdata-0.34.1 → orfdata-0.35.0}/docs/human-tissue.md +0 -0
  52. {orfdata-0.34.1 → orfdata-0.35.0}/docs/ingolia-yeast.md +0 -0
  53. {orfdata-0.34.1 → orfdata-0.35.0}/docs/measurements.md +0 -0
  54. {orfdata-0.34.1 → orfdata-0.35.0}/docs/pairing.md +0 -0
  55. {orfdata-0.34.1 → orfdata-0.35.0}/docs/pfizer-protein.md +0 -0
  56. {orfdata-0.34.1 → orfdata-0.35.0}/docs/pfizer-rna.md +0 -0
  57. {orfdata-0.34.1 → orfdata-0.35.0}/docs/reference.md +0 -0
  58. {orfdata-0.34.1 → orfdata-0.35.0}/docs/search-references.md +0 -0
  59. {orfdata-0.34.1 → orfdata-0.35.0}/docs/source-references.md +0 -0
  60. {orfdata-0.34.1 → orfdata-0.35.0}/docs/species.md +0 -0
  61. {orfdata-0.34.1 → orfdata-0.35.0}/docs/storage.md +0 -0
  62. {orfdata-0.34.1 → orfdata-0.35.0}/docs/stylesheets/docs.css +0 -0
  63. {orfdata-0.34.1 → orfdata-0.35.0}/docs.sh +0 -0
  64. {orfdata-0.34.1 → orfdata-0.35.0}/lint.sh +0 -0
  65. {orfdata-0.34.1 → orfdata-0.35.0}/mkdocs.yml +0 -0
  66. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/_pinned_genome.py +0 -0
  67. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/_structure.py +0 -0
  68. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/build.py +0 -0
  69. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/catalog_cli.py +0 -0
  70. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/catalog_manifest.py +0 -0
  71. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/catalogs.py +0 -0
  72. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/catalogs.json +0 -0
  73. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/chains.json +0 -0
  74. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/genomes.json +0 -0
  75. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/ires/rfam-15.1-human-ires.json +0 -0
  76. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/orf-evidence/AUTHOR-LICENSE.txt +0 -0
  77. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/orf-evidence/NOTICE.txt +0 -0
  78. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/orf-evidence/catalog.json.gz +0 -0
  79. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/orf-evidence/manifest.json +0 -0
  80. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/uorf-evidence/AUTHOR-LICENSE.txt +0 -0
  81. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/uorf-evidence/NOTICE.txt +0 -0
  82. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/uorf-evidence/catalog.json.gz +0 -0
  83. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/uorf-evidence/manifest.json +0 -0
  84. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/data/viral/hpv16-refseq-CDS.json.gz +0 -0
  85. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/dataset.py +0 -0
  86. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/dataset_cli.py +0 -0
  87. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/datasets.py +0 -0
  88. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/evidence.py +0 -0
  89. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/evidence_summary.py +0 -0
  90. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/genomes.py +0 -0
  91. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/genomes_cli.py +0 -0
  92. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/initiation_context.py +0 -0
  93. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/install.py +0 -0
  94. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/liftover.py +0 -0
  95. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/liftover_cli.py +0 -0
  96. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/measurements.py +0 -0
  97. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/pairing.py +0 -0
  98. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/reference_mapping.py +0 -0
  99. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/refseq.py +0 -0
  100. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/rna.py +0 -0
  101. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/search_reference.py +0 -0
  102. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sequence.py +0 -0
  103. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/copy.py +0 -0
  104. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/ingolia.py +0 -0
  105. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/ncorf_mammals.py +0 -0
  106. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/openprot.py +0 -0
  107. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/peptideatlas.py +0 -0
  108. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/pfizer.py +0 -0
  109. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/pfizer_rna.py +0 -0
  110. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/riborf.py +0 -0
  111. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/sources/wang.py +0 -0
  112. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata/viral.py +0 -0
  113. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/dependency_links.txt +0 -0
  114. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/entry_points.txt +0 -0
  115. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/requires.txt +0 -0
  116. {orfdata-0.34.1 → orfdata-0.35.0}/orfdata.egg-info/top_level.txt +0 -0
  117. {orfdata-0.34.1 → orfdata-0.35.0}/pyproject.toml +0 -0
  118. {orfdata-0.34.1 → orfdata-0.35.0}/setup.cfg +0 -0
  119. {orfdata-0.34.1 → orfdata-0.35.0}/test.sh +0 -0
  120. {orfdata-0.34.1 → orfdata-0.35.0}/tests/conftest.py +0 -0
  121. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/aggregate_evidence.json +0 -0
  122. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905474.soft +0 -0
  123. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905474_KL9_fpkm.txt.gz +0 -0
  124. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905476.soft +0 -0
  125. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905476_KL10_fpkm.txt.gz +0 -0
  126. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905478.soft +0 -0
  127. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905478_KL11_fpkm.txt.gz +0 -0
  128. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905479.soft +0 -0
  129. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/GSM1905479_KL12_fpkm.txt.gz +0 -0
  130. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/NOTICE.md +0 -0
  131. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/expected.json +0 -0
  132. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/geo-series.soft +0 -0
  133. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/manifest.json +0 -0
  134. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/methods.pdf +0 -0
  135. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/paper.xml +0 -0
  136. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/pmc-metadata.json +0 -0
  137. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/qconcat.fasta +0 -0
  138. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/copy/workbook.xlsx +0 -0
  139. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346111.metadata.txt +0 -0
  140. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346111.quant.txt.gz +0 -0
  141. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346114.metadata.txt +0 -0
  142. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346114.quant.txt.gz +0 -0
  143. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346115.metadata.txt +0 -0
  144. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346115.quant.txt.gz +0 -0
  145. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346116.metadata.txt +0 -0
  146. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346116.quant.txt.gz +0 -0
  147. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346117.metadata.txt +0 -0
  148. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346117.quant.txt.gz +0 -0
  149. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346118.metadata.txt +0 -0
  150. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346118.quant.txt.gz +0 -0
  151. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346120.metadata.txt +0 -0
  152. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346120.quant.txt.gz +0 -0
  153. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346122.metadata.txt +0 -0
  154. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/GSM346122.quant.txt.gz +0 -0
  155. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/NOTICE.md +0 -0
  156. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/expected.json +0 -0
  157. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/manifest.json +0 -0
  158. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ingolia/readMe.txt.gz +0 -0
  159. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/kaabinejadian/sdrf.tsv +0 -0
  160. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/README.md +0 -0
  161. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/S3.xlsx +0 -0
  162. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/ensembl107.cdna.fa.gz +0 -0
  163. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/ensembl107.gtf.gz +0 -0
  164. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/human-ensembl107.gtf.gz +0 -0
  165. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/human.bed +0 -0
  166. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/human.pep.fa +0 -0
  167. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/mouse.bed +0 -0
  168. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/ncorf_mammals/mouse.pep.fa +0 -0
  169. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/README.md +0 -0
  170. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/ensembl106.cdna.fa.gz +0 -0
  171. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/openprot/ensembl106.gtf.gz +0 -0
  172. {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
  173. {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
  174. {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
  175. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/peptideatlas/README.md +0 -0
  176. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/peptideatlas/atlas_build.tsv.zip +0 -0
  177. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/peptideatlas/ensembl.pep.fa.gz +0 -0
  178. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/peptideatlas/manifest.json +0 -0
  179. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/NOTICE.md +0 -0
  180. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/dog/expected.json +0 -0
  181. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/dog/manifest.json +0 -0
  182. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/dog/protein.tsv +0 -0
  183. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/dog/search.fasta +0 -0
  184. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/human/expected.json +0 -0
  185. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/human/manifest.json +0 -0
  186. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/human/protein.tsv +0 -0
  187. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/human/search.fasta +0 -0
  188. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/mouse/expected.json +0 -0
  189. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/mouse/manifest.json +0 -0
  190. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/mouse/protein.tsv +0 -0
  191. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer/mouse/search.fasta +0 -0
  192. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/GSE325522_family.soft.gz +0 -0
  193. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/GSE325523_family.soft.gz +0 -0
  194. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/GSE325525_family.soft.gz +0 -0
  195. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/NOTICE.md +0 -0
  196. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/counts.csv.gz +0 -0
  197. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/dog-annotation.gtf.gz +0 -0
  198. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/dog-expected.json +0 -0
  199. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/dog-manifest.json +0 -0
  200. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/mouse-annotation.gtf.gz +0 -0
  201. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/mouse-expected.json +0 -0
  202. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/mouse-manifest.json +0 -0
  203. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/pfizer_rna/samples.xlsx +0 -0
  204. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/README.md +0 -0
  205. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/canis_lupus_familiaris.json +0 -0
  206. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/context-keys-v0.4.json +0 -0
  207. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/ensembl115.json +0 -0
  208. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/homo_sapiens.json +0 -0
  209. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/mitochondrial.json +0 -0
  210. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/mus_musculus.json +0 -0
  211. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/saccharomyces_cerevisiae.json +0 -0
  212. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/references/uniprot_literature.json +0 -0
  213. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/regions/NOTICE.md +0 -0
  214. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/regions/ingolia.json +0 -0
  215. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/README.md +0 -0
  216. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/SD3.xlsx +0 -0
  217. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/ensembl107.cdna.fa.gz +0 -0
  218. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/ensembl107.gtf.gz +0 -0
  219. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/ensembl107.ncrna.fa.gz +0 -0
  220. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/human-ensembl105.cdna.fa.gz +0 -0
  221. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/human-ensembl105.gtf.gz +0 -0
  222. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/human-ensembl105.ncrna.fa.gz +0 -0
  223. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/worm-ensembl105.cdna.fa.gz +0 -0
  224. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/worm-ensembl105.gtf.gz +0 -0
  225. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/worm-ensembl105.ncrna.fa.gz +0 -0
  226. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/yeast-ensembl115.cdna.fa.gz +0 -0
  227. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/yeast-ensembl115.dna.fa.gz +0 -0
  228. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/yeast-ensembl115.gtf.gz +0 -0
  229. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/zebrafish-ensembl115.cdna.fa.gz +0 -0
  230. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/zebrafish-ensembl115.gtf.gz +0 -0
  231. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/riborf/zebrafish-ensembl115.ncrna.fa.gz +0 -0
  232. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/NOTICE.md +0 -0
  233. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/dog.fasta +0 -0
  234. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/ensembl83-expected.json +0 -0
  235. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/ensembl83-human.fasta.gz +0 -0
  236. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/search_reference/expected.json +0 -0
  237. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/README.md +0 -0
  238. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/generate.py +0 -0
  239. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v1.json +0 -0
  240. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v1.sqlite +0 -0
  241. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v2.json +0 -0
  242. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v2.sqlite +0 -0
  243. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v3.json +0 -0
  244. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v3.sqlite +0 -0
  245. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v4.json +0 -0
  246. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/storage/v4.sqlite +0 -0
  247. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/viral/NC_001526.4.gb.gz +0 -0
  248. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/NOTICE.md +0 -0
  249. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/annotation.gtf.gz +0 -0
  250. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/copies.zip +0 -0
  251. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/expected.json +0 -0
  252. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/manifest.json +0 -0
  253. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/protein.zip +0 -0
  254. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/rna.zip +0 -0
  255. {orfdata-0.34.1 → orfdata-0.35.0}/tests/data/wang/search.fasta.gz +0 -0
  256. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_catalog_registry.py +0 -0
  257. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_copy.py +0 -0
  258. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_cross_reference_pairing.py +0 -0
  259. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_ensembl_search_reference.py +0 -0
  260. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_evidence_rules.py +0 -0
  261. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_evidence_summary.py +0 -0
  262. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_genetic_codes.py +0 -0
  263. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_genomes.py +0 -0
  264. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_ingolia.py +0 -0
  265. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_initiation_context.py +0 -0
  266. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_liftover.py +0 -0
  267. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_local_build_queries.py +0 -0
  268. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_more_species.py +0 -0
  269. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_ncorf_mammals.py +0 -0
  270. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_openprot.py +0 -0
  271. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_orf_cases.py +0 -0
  272. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_paired_selectors.py +0 -0
  273. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_pairing.py +0 -0
  274. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_pfizer.py +0 -0
  275. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_pfizer_rna.py +0 -0
  276. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_reference_mapping.py +0 -0
  277. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_reference_orf.py +0 -0
  278. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_refseq.py +0 -0
  279. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_region_targets.py +0 -0
  280. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_riborf.py +0 -0
  281. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_search_reference.py +0 -0
  282. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_selectors.py +0 -0
  283. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_storage.py +0 -0
  284. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_uorf_catalog.py +0 -0
  285. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_viral.py +0 -0
  286. {orfdata-0.34.1 → orfdata-0.35.0}/tests/test_wang.py +0 -0
  287. {orfdata-0.34.1 → orfdata-0.35.0}/tools/__init__.py +0 -0
  288. {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.34.1
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 the protein reference for a species: the proteins annotated in
39
- a [PyEnsembl](https://github.com/openvax/pyensembl) genome, plus open reading
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 Proteome
61
+ from orfdata import ReferenceTranscriptome
60
62
 
61
63
  genome = EnsemblRelease(115, species="human")
62
- proteome = Proteome.from_genome(genome).with_extra_orfs(evidence="ms")
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()["kinds"], len(proteome.excluded))
69
+ print(proteome.summary()["protein_sources"], len(proteome.excluded))
65
70
  ```
66
71
 
67
72
  ```text
68
- {'annotated': 245535, 'extra_orf': 2181} 5
73
+ {'reference_cds': 245535, 'nc_orf': 2181} 5
69
74
  ```
70
75
 
71
- This takes every protein in the Ensembl 115 annotation and adds the 2,181
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. Use `evidence="ribosome"` for all 7,239 encoded ribosome-profiling ORFs,
76
- or a rule such as `RiboSeq(min_studies=2) & MS()` to set Ribo-seq and MS
77
- stringency separately (1,293 encoded ORFs).
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 `catalogs="all"` | GENCODE; optionally Chang et al. 2025 and Yang et al. 2024 Ribo-seq |
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
- `with_extra_orfs()` pick the catalogue for a species and raise when none is
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 proteomes can be added with
112
- `with_viral(...)`, but only to a proteome for one of the virus's recorded hosts.
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 the protein reference for a species: the proteins annotated in
7
- a [PyEnsembl](https://github.com/openvax/pyensembl) genome, plus open reading
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 Proteome
29
+ from orfdata import ReferenceTranscriptome
28
30
 
29
31
  genome = EnsemblRelease(115, species="human")
30
- proteome = Proteome.from_genome(genome).with_extra_orfs(evidence="ms")
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()["kinds"], len(proteome.excluded))
37
+ print(proteome.summary()["protein_sources"], len(proteome.excluded))
33
38
  ```
34
39
 
35
40
  ```text
36
- {'annotated': 245535, 'extra_orf': 2181} 5
41
+ {'reference_cds': 245535, 'nc_orf': 2181} 5
37
42
  ```
38
43
 
39
- This takes every protein in the Ensembl 115 annotation and adds the 2,181
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. Use `evidence="ribosome"` for all 7,239 encoded ribosome-profiling ORFs,
44
- or a rule such as `RiboSeq(min_studies=2) & MS()` to set Ribo-seq and MS
45
- stringency separately (1,293 encoded ORFs).
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 `catalogs="all"` | GENCODE; optionally Chang et al. 2025 and Yang et al. 2024 Ribo-seq |
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
- `with_extra_orfs()` pick the catalogue for a species and raise when none is
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 proteomes can be added with
80
- `with_viral(...)`, but only to a proteome for one of the virus's recorded hosts.
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.with_extra_orfs()` use it without `catalog=`; pass
9
- `load_catalog(species=..., registry=...)` as `catalog=` for your own registry.
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. With only MS-supported ORFs selected, the default:
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
- Human's default is the bundled GENCODE catalogue: 7,264 ORFs, offline, with
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, "all", catalogs="all")
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 --catalogs all` does the same. They merge after the bundled
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,949 distinct
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)) # GRCh37: the GRCh38 catalogue, lifted
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=...)` lift a catalogue, or each of a list,
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) # 104,957 annotated proteins + 2,039 MS-supported ORFs
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
- `--catalog`, for example to `orfdata proteome`; JSON and TSV exports include
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,949 across all four databases. For the cell lines, the counts of unique
39
- 8–14-mers from database search (591 for DLA-88\*003:02, 1,465 for \*501:01) match
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. Rows of the Biognosys
47
- iRT retention-time standards and their fragments (2,242) are marked
48
- `irt_standard` in every search. That includes the merged database, which lacks
49
- the kit, so PEAKS named dog proteins for them there.
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
- Each row also records `raw_file_deposited`. For 1,695 rows the best spectrum
78
- comes from a run missing from the deposit: Lily's second injection (22-1107,
79
- 299 rows) and the first DLA-88\*012:01 runs (20240929, 1,396 rows). The raw
80
- files of 163828A's H58A run have no deposited results and aren't included.
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 Proteome
27
+ from orfdata import ReferenceTranscriptome
27
28
 
28
29
  genome = EnsemblRelease(115, species="human")
29
- proteome = Proteome.from_genome(genome).with_extra_orfs(evidence="ms")
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
- `Proteome.from_genome` takes every protein in the Ensembl 115 annotation.
39
- `with_extra_orfs(evidence="ms")` adds the bundled human ORFs that have
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 the evidence
56
+ ## Choose ncORF sources
53
57
 
54
- | `evidence=` | Selects ORFs with | Human ORFs | Encoded in Ensembl 115 |
58
+ | `nc_orf_sources=` | Selects ORFs with | Human ORFs | Encoded in Ensembl 115 |
55
59
  | --- | --- | ---: | ---: |
56
- | `"ribosome"` or `"riboseq"` | Ribosome profiling (all bundled ORFs) | 7,264 | 7,239 |
57
- | `"ms"` (default) | Any supporting MS peptide | 2,186 | 2,181 |
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 catalogue ORF | 7,264 | 7,239 |
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#choose-the-evidence) for
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. (`catalogs="all"`) |
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
- `with_extra_orfs()` raises for a species without a catalogue, or whose
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