orfdata 0.34.1__tar.gz → 0.36.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 (331) hide show
  1. {orfdata-0.34.1/orfdata.egg-info → orfdata-0.36.0}/PKG-INFO +103 -23
  2. {orfdata-0.34.1 → orfdata-0.36.0}/README.md +97 -20
  3. {orfdata-0.34.1 → orfdata-0.36.0}/docs/catalogs.md +18 -15
  4. {orfdata-0.34.1 → orfdata-0.36.0}/docs/dog-peptides.md +61 -11
  5. orfdata-0.36.0/docs/downloads.md +257 -0
  6. orfdata-0.36.0/docs/downstream.md +168 -0
  7. {orfdata-0.34.1 → orfdata-0.36.0}/docs/index.md +36 -16
  8. orfdata-0.36.0/docs/proteome.md +798 -0
  9. orfdata-0.36.0/docs/viral.md +635 -0
  10. orfdata-0.36.0/lint.sh +3 -0
  11. {orfdata-0.34.1 → orfdata-0.36.0}/mkdocs.yml +2 -0
  12. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/__init__.py +57 -4
  13. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/catalog.py +3 -3
  14. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/cli.py +34 -7
  15. orfdata-0.36.0/orfdata/cli_output.py +48 -0
  16. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/datasets.json +601 -1
  17. orfdata-0.36.0/orfdata/data/viral/NOTICE.md +149 -0
  18. orfdata-0.36.0/orfdata/data/viral/gdc-grch38-d1-vd1-coverage.tsv +205 -0
  19. orfdata-0.36.0/orfdata/data/viral/gdc-grch38-d1-vd1-genbank.tsv +205 -0
  20. orfdata-0.36.0/orfdata/data/viral/gdc-grch38-d1-vd1-pave.tsv +195 -0
  21. orfdata-0.36.0/orfdata/data/viral/subsets.yaml +113 -0
  22. orfdata-0.36.0/orfdata/download_cli.py +271 -0
  23. orfdata-0.36.0/orfdata/downloads.py +330 -0
  24. orfdata-0.36.0/orfdata/fasta.py +11 -0
  25. orfdata-0.36.0/orfdata/genbank.py +254 -0
  26. orfdata-0.36.0/orfdata/gtf.py +121 -0
  27. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/install.py +56 -9
  28. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/model.py +0 -3
  29. orfdata-0.36.0/orfdata/net.py +51 -0
  30. orfdata-0.36.0/orfdata/proteome.py +2368 -0
  31. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/proteome_cli.py +33 -21
  32. orfdata-0.36.0/orfdata/record_sources.py +298 -0
  33. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/reference.py +21 -2
  34. orfdata-0.36.0/orfdata/reference_ledger.py +204 -0
  35. orfdata-0.36.0/orfdata/reference_table.py +118 -0
  36. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/refseq.py +2 -2
  37. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/__init__.py +1 -1
  38. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/kaabinejadian.py +130 -13
  39. orfdata-0.36.0/orfdata/version.py +1 -0
  40. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/viral.py +2 -4
  41. orfdata-0.36.0/orfdata/viral_annotation.py +453 -0
  42. orfdata-0.36.0/orfdata/viral_cli.py +232 -0
  43. orfdata-0.36.0/orfdata/viral_coverage.py +210 -0
  44. orfdata-0.36.0/orfdata/viral_panel.py +1219 -0
  45. orfdata-0.36.0/orfdata/viral_registry.py +292 -0
  46. orfdata-0.36.0/orfdata/viral_subsets.py +101 -0
  47. {orfdata-0.34.1 → orfdata-0.36.0/orfdata.egg-info}/PKG-INFO +103 -23
  48. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata.egg-info/SOURCES.txt +51 -1
  49. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata.egg-info/requires.txt +6 -2
  50. {orfdata-0.34.1 → orfdata-0.36.0}/pyproject.toml +9 -3
  51. orfdata-0.36.0/tests/conftest.py +210 -0
  52. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/kaabinejadian/README.md +14 -6
  53. orfdata-0.36.0/tests/data/kaabinejadian/Results.zip +0 -0
  54. orfdata-0.34.1/tests/data/kaabinejadian/manifest.json → orfdata-0.36.0/tests/data/kaabinejadian/manifest-v1.json +37 -10
  55. orfdata-0.36.0/tests/data/kaabinejadian/manifest.json +276 -0
  56. orfdata-0.36.0/tests/data/viral/GRCh83.d1.vd1_virus_decoy.txt.gz +0 -0
  57. orfdata-0.36.0/tests/data/viral/genbank/HBV__X04615.1.gb.gz +0 -0
  58. orfdata-0.36.0/tests/data/viral/genbank/HPV16__K02718.1.gb.gz +0 -0
  59. orfdata-0.36.0/tests/data/viral/genbank/HPV35__X74477.1.gb.gz +0 -0
  60. orfdata-0.36.0/tests/data/viral/genbank/HPV51__M62877.1.gb.gz +0 -0
  61. orfdata-0.36.0/tests/data/viral/genbank/HPV56__X74483.1.gb.gz +0 -0
  62. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_dog_peptides.py +86 -10
  63. orfdata-0.36.0/tests/test_downloads.py +173 -0
  64. orfdata-0.36.0/tests/test_genbank.py +162 -0
  65. orfdata-0.36.0/tests/test_genbank_equivalence.py +110 -0
  66. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_measurements.py +8 -2
  67. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_merge_catalogs.py +2 -3
  68. orfdata-0.36.0/tests/test_orf_gtf.py +145 -0
  69. orfdata-0.36.0/tests/test_protein_set.py +126 -0
  70. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_proteome.py +469 -56
  71. orfdata-0.36.0/tests/test_proteome_external.py +265 -0
  72. orfdata-0.36.0/tests/test_proteome_fasta_tokens.py +154 -0
  73. orfdata-0.36.0/tests/test_proteome_producer_graph.py +114 -0
  74. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_reference_context.py +28 -1
  75. orfdata-0.36.0/tests/test_reference_ledger.py +184 -0
  76. orfdata-0.36.0/tests/test_reference_table.py +94 -0
  77. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_refseq.py +3 -3
  78. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_viral.py +22 -12
  79. orfdata-0.36.0/tests/test_viral_bundle.py +228 -0
  80. orfdata-0.36.0/tests/test_viral_cli.py +156 -0
  81. orfdata-0.36.0/tests/test_viral_collections.py +132 -0
  82. orfdata-0.36.0/tests/test_viral_completeness.py +128 -0
  83. orfdata-0.36.0/tests/test_viral_coverage.py +116 -0
  84. orfdata-0.36.0/tests/test_viral_initiation.py +142 -0
  85. orfdata-0.36.0/tests/test_viral_origin_join.py +109 -0
  86. orfdata-0.36.0/tests/test_viral_sources.py +183 -0
  87. orfdata-0.36.0/tests/test_viral_subsets.py +51 -0
  88. orfdata-0.36.0/tools/build_gdc_viral_coverage.py +71 -0
  89. {orfdata-0.34.1 → orfdata-0.36.0}/tools/build_hpv16_cds.py +19 -17
  90. orfdata-0.36.0/tools/build_reference_ledger.py +73 -0
  91. orfdata-0.34.1/docs/proteome.md +0 -383
  92. orfdata-0.34.1/docs/viral.md +0 -77
  93. orfdata-0.34.1/lint.sh +0 -3
  94. orfdata-0.34.1/orfdata/data/viral/NOTICE.md +0 -42
  95. orfdata-0.34.1/orfdata/proteome.py +0 -1011
  96. orfdata-0.34.1/orfdata/version.py +0 -1
  97. orfdata-0.34.1/tests/conftest.py +0 -51
  98. orfdata-0.34.1/tests/data/kaabinejadian/Results.zip +0 -0
  99. {orfdata-0.34.1 → orfdata-0.36.0}/LICENSE +0 -0
  100. {orfdata-0.34.1 → orfdata-0.36.0}/MANIFEST.in +0 -0
  101. {orfdata-0.34.1 → orfdata-0.36.0}/deploy.sh +0 -0
  102. {orfdata-0.34.1 → orfdata-0.36.0}/docs/copy-yeast.md +0 -0
  103. {orfdata-0.34.1 → orfdata-0.36.0}/docs/coverage.md +0 -0
  104. {orfdata-0.34.1 → orfdata-0.36.0}/docs/examples.md +0 -0
  105. {orfdata-0.34.1 → orfdata-0.36.0}/docs/human-tissue.md +0 -0
  106. {orfdata-0.34.1 → orfdata-0.36.0}/docs/ingolia-yeast.md +0 -0
  107. {orfdata-0.34.1 → orfdata-0.36.0}/docs/measurements.md +0 -0
  108. {orfdata-0.34.1 → orfdata-0.36.0}/docs/pairing.md +0 -0
  109. {orfdata-0.34.1 → orfdata-0.36.0}/docs/pfizer-protein.md +0 -0
  110. {orfdata-0.34.1 → orfdata-0.36.0}/docs/pfizer-rna.md +0 -0
  111. {orfdata-0.34.1 → orfdata-0.36.0}/docs/reference.md +0 -0
  112. {orfdata-0.34.1 → orfdata-0.36.0}/docs/search-references.md +0 -0
  113. {orfdata-0.34.1 → orfdata-0.36.0}/docs/source-references.md +0 -0
  114. {orfdata-0.34.1 → orfdata-0.36.0}/docs/species.md +0 -0
  115. {orfdata-0.34.1 → orfdata-0.36.0}/docs/storage.md +0 -0
  116. {orfdata-0.34.1 → orfdata-0.36.0}/docs/stylesheets/docs.css +0 -0
  117. {orfdata-0.34.1 → orfdata-0.36.0}/docs.sh +0 -0
  118. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/_pinned_genome.py +0 -0
  119. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/_structure.py +0 -0
  120. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/build.py +0 -0
  121. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/catalog_cli.py +0 -0
  122. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/catalog_manifest.py +0 -0
  123. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/catalogs.py +0 -0
  124. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/catalogs.json +0 -0
  125. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/chains.json +0 -0
  126. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/genomes.json +0 -0
  127. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/ires/rfam-15.1-human-ires.json +0 -0
  128. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/orf-evidence/AUTHOR-LICENSE.txt +0 -0
  129. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/orf-evidence/NOTICE.txt +0 -0
  130. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/orf-evidence/catalog.json.gz +0 -0
  131. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/orf-evidence/manifest.json +0 -0
  132. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/uorf-evidence/AUTHOR-LICENSE.txt +0 -0
  133. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/uorf-evidence/NOTICE.txt +0 -0
  134. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/uorf-evidence/catalog.json.gz +0 -0
  135. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/uorf-evidence/manifest.json +0 -0
  136. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/data/viral/hpv16-refseq-CDS.json.gz +0 -0
  137. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/dataset.py +0 -0
  138. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/dataset_cli.py +0 -0
  139. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/datasets.py +0 -0
  140. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/evidence.py +0 -0
  141. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/evidence_summary.py +0 -0
  142. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/genomes.py +0 -0
  143. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/genomes_cli.py +0 -0
  144. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/initiation_context.py +0 -0
  145. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/liftover.py +0 -0
  146. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/liftover_cli.py +0 -0
  147. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/measurements.py +0 -0
  148. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/pairing.py +0 -0
  149. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/reference_mapping.py +0 -0
  150. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/rna.py +0 -0
  151. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/search_reference.py +0 -0
  152. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sequence.py +0 -0
  153. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/copy.py +0 -0
  154. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/ingolia.py +0 -0
  155. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/ncorf_mammals.py +0 -0
  156. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/openprot.py +0 -0
  157. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/peptideatlas.py +0 -0
  158. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/pfizer.py +0 -0
  159. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/pfizer_rna.py +0 -0
  160. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/riborf.py +0 -0
  161. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata/sources/wang.py +0 -0
  162. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata.egg-info/dependency_links.txt +0 -0
  163. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata.egg-info/entry_points.txt +0 -0
  164. {orfdata-0.34.1 → orfdata-0.36.0}/orfdata.egg-info/top_level.txt +0 -0
  165. {orfdata-0.34.1 → orfdata-0.36.0}/setup.cfg +0 -0
  166. {orfdata-0.34.1 → orfdata-0.36.0}/test.sh +0 -0
  167. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/aggregate_evidence.json +0 -0
  168. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/GSM1905474.soft +0 -0
  169. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/GSM1905474_KL9_fpkm.txt.gz +0 -0
  170. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/GSM1905476.soft +0 -0
  171. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/GSM1905476_KL10_fpkm.txt.gz +0 -0
  172. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/GSM1905478.soft +0 -0
  173. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/GSM1905478_KL11_fpkm.txt.gz +0 -0
  174. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/GSM1905479.soft +0 -0
  175. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/GSM1905479_KL12_fpkm.txt.gz +0 -0
  176. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/NOTICE.md +0 -0
  177. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/expected.json +0 -0
  178. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/geo-series.soft +0 -0
  179. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/manifest.json +0 -0
  180. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/methods.pdf +0 -0
  181. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/paper.xml +0 -0
  182. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/pmc-metadata.json +0 -0
  183. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/qconcat.fasta +0 -0
  184. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/copy/workbook.xlsx +0 -0
  185. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346111.metadata.txt +0 -0
  186. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346111.quant.txt.gz +0 -0
  187. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346114.metadata.txt +0 -0
  188. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346114.quant.txt.gz +0 -0
  189. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346115.metadata.txt +0 -0
  190. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346115.quant.txt.gz +0 -0
  191. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346116.metadata.txt +0 -0
  192. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346116.quant.txt.gz +0 -0
  193. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346117.metadata.txt +0 -0
  194. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346117.quant.txt.gz +0 -0
  195. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346118.metadata.txt +0 -0
  196. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346118.quant.txt.gz +0 -0
  197. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346120.metadata.txt +0 -0
  198. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346120.quant.txt.gz +0 -0
  199. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346122.metadata.txt +0 -0
  200. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/GSM346122.quant.txt.gz +0 -0
  201. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/NOTICE.md +0 -0
  202. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/expected.json +0 -0
  203. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/manifest.json +0 -0
  204. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ingolia/readMe.txt.gz +0 -0
  205. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/kaabinejadian/sdrf.tsv +0 -0
  206. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/README.md +0 -0
  207. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/S3.xlsx +0 -0
  208. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/ensembl107.cdna.fa.gz +0 -0
  209. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/ensembl107.gtf.gz +0 -0
  210. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/human-ensembl107.gtf.gz +0 -0
  211. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/human.bed +0 -0
  212. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/human.pep.fa +0 -0
  213. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/mouse.bed +0 -0
  214. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/ncorf_mammals/mouse.pep.fa +0 -0
  215. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/openprot/README.md +0 -0
  216. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/openprot/ensembl106.cdna.fa.gz +0 -0
  217. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/openprot/ensembl106.gtf.gz +0 -0
  218. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.bed.zip +0 -0
  219. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.fasta.zip +0 -0
  220. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.tsv.zip +0 -0
  221. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/peptideatlas/README.md +0 -0
  222. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/peptideatlas/atlas_build.tsv.zip +0 -0
  223. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/peptideatlas/ensembl.pep.fa.gz +0 -0
  224. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/peptideatlas/manifest.json +0 -0
  225. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/NOTICE.md +0 -0
  226. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/dog/expected.json +0 -0
  227. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/dog/manifest.json +0 -0
  228. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/dog/protein.tsv +0 -0
  229. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/dog/search.fasta +0 -0
  230. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/human/expected.json +0 -0
  231. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/human/manifest.json +0 -0
  232. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/human/protein.tsv +0 -0
  233. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/human/search.fasta +0 -0
  234. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/mouse/expected.json +0 -0
  235. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/mouse/manifest.json +0 -0
  236. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/mouse/protein.tsv +0 -0
  237. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer/mouse/search.fasta +0 -0
  238. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/GSE325522_family.soft.gz +0 -0
  239. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/GSE325523_family.soft.gz +0 -0
  240. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/GSE325525_family.soft.gz +0 -0
  241. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/NOTICE.md +0 -0
  242. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/counts.csv.gz +0 -0
  243. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/dog-annotation.gtf.gz +0 -0
  244. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/dog-expected.json +0 -0
  245. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/dog-manifest.json +0 -0
  246. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/mouse-annotation.gtf.gz +0 -0
  247. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/mouse-expected.json +0 -0
  248. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/mouse-manifest.json +0 -0
  249. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/pfizer_rna/samples.xlsx +0 -0
  250. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/README.md +0 -0
  251. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/canis_lupus_familiaris.json +0 -0
  252. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/context-keys-v0.4.json +0 -0
  253. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/ensembl115.json +0 -0
  254. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/homo_sapiens.json +0 -0
  255. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/mitochondrial.json +0 -0
  256. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/mus_musculus.json +0 -0
  257. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/saccharomyces_cerevisiae.json +0 -0
  258. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/references/uniprot_literature.json +0 -0
  259. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/regions/NOTICE.md +0 -0
  260. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/regions/ingolia.json +0 -0
  261. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/README.md +0 -0
  262. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/SD3.xlsx +0 -0
  263. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/ensembl107.cdna.fa.gz +0 -0
  264. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/ensembl107.gtf.gz +0 -0
  265. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/ensembl107.ncrna.fa.gz +0 -0
  266. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/human-ensembl105.cdna.fa.gz +0 -0
  267. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/human-ensembl105.gtf.gz +0 -0
  268. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/human-ensembl105.ncrna.fa.gz +0 -0
  269. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/worm-ensembl105.cdna.fa.gz +0 -0
  270. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/worm-ensembl105.gtf.gz +0 -0
  271. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/worm-ensembl105.ncrna.fa.gz +0 -0
  272. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/yeast-ensembl115.cdna.fa.gz +0 -0
  273. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/yeast-ensembl115.dna.fa.gz +0 -0
  274. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/yeast-ensembl115.gtf.gz +0 -0
  275. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/zebrafish-ensembl115.cdna.fa.gz +0 -0
  276. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/zebrafish-ensembl115.gtf.gz +0 -0
  277. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/riborf/zebrafish-ensembl115.ncrna.fa.gz +0 -0
  278. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/search_reference/NOTICE.md +0 -0
  279. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/search_reference/dog.fasta +0 -0
  280. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/search_reference/ensembl83-expected.json +0 -0
  281. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/search_reference/ensembl83-human.fasta.gz +0 -0
  282. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/search_reference/expected.json +0 -0
  283. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/README.md +0 -0
  284. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/generate.py +0 -0
  285. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/v1.json +0 -0
  286. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/v1.sqlite +0 -0
  287. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/v2.json +0 -0
  288. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/v2.sqlite +0 -0
  289. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/v3.json +0 -0
  290. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/v3.sqlite +0 -0
  291. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/v4.json +0 -0
  292. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/storage/v4.sqlite +0 -0
  293. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/viral/NC_001526.4.gb.gz +0 -0
  294. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/wang/NOTICE.md +0 -0
  295. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/wang/annotation.gtf.gz +0 -0
  296. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/wang/copies.zip +0 -0
  297. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/wang/expected.json +0 -0
  298. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/wang/manifest.json +0 -0
  299. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/wang/protein.zip +0 -0
  300. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/wang/rna.zip +0 -0
  301. {orfdata-0.34.1 → orfdata-0.36.0}/tests/data/wang/search.fasta.gz +0 -0
  302. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_catalog_registry.py +0 -0
  303. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_copy.py +0 -0
  304. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_cross_reference_pairing.py +0 -0
  305. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_ensembl_search_reference.py +0 -0
  306. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_evidence_rules.py +0 -0
  307. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_evidence_summary.py +0 -0
  308. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_genetic_codes.py +0 -0
  309. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_genomes.py +0 -0
  310. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_ingolia.py +0 -0
  311. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_initiation_context.py +0 -0
  312. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_liftover.py +0 -0
  313. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_local_build_queries.py +0 -0
  314. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_more_species.py +0 -0
  315. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_ncorf_mammals.py +0 -0
  316. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_openprot.py +0 -0
  317. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_orf_cases.py +0 -0
  318. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_paired_selectors.py +0 -0
  319. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_pairing.py +0 -0
  320. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_pfizer.py +0 -0
  321. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_pfizer_rna.py +0 -0
  322. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_reference_mapping.py +0 -0
  323. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_reference_orf.py +0 -0
  324. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_region_targets.py +0 -0
  325. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_riborf.py +0 -0
  326. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_search_reference.py +0 -0
  327. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_selectors.py +0 -0
  328. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_storage.py +0 -0
  329. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_uorf_catalog.py +0 -0
  330. {orfdata-0.34.1 → orfdata-0.36.0}/tests/test_wang.py +0 -0
  331. {orfdata-0.34.1 → orfdata-0.36.0}/tools/__init__.py +0 -0
@@ -1,17 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orfdata
3
- Version: 0.34.1
3
+ Version: 0.36.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
7
7
  Requires-Python: >=3.11
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
10
+ Requires-Dist: datacache<2,>=1.25.1
11
+ Requires-Dist: pandas<4,>=3
12
+ Requires-Dist: pyyaml<7,>=6
10
13
  Provides-Extra: pyensembl
11
14
  Requires-Dist: pyensembl>=2.27.2; extra == "pyensembl"
12
15
  Provides-Extra: build-data
13
16
  Requires-Dist: openpyxl>=3.1; extra == "build-data"
14
- Requires-Dist: biopython<2,>=1.80; extra == "build-data"
17
+ Provides-Extra: viral
15
18
  Provides-Extra: data
16
19
  Requires-Dist: datacache<2,>=1.25.1; extra == "data"
17
20
  Provides-Extra: columnar
@@ -22,9 +25,9 @@ Requires-Dist: ruff; extra == "dev"
22
25
  Requires-Dist: build; extra == "dev"
23
26
  Requires-Dist: twine; extra == "dev"
24
27
  Requires-Dist: openpyxl>=3.1; extra == "dev"
25
- Requires-Dist: biopython<2,>=1.80; extra == "dev"
26
28
  Requires-Dist: pyensembl>=2.27.2; extra == "dev"
27
29
  Requires-Dist: datacache<2,>=1.25.1; extra == "dev"
30
+ Requires-Dist: gb-io<0.5,>=0.4; extra == "dev"
28
31
  Provides-Extra: docs
29
32
  Requires-Dist: mkdocs<2,>=1.6; extra == "docs"
30
33
  Requires-Dist: mkdocs-material<10,>=9.5; extra == "docs"
@@ -35,8 +38,8 @@ Dynamic: license-file
35
38
 
36
39
  # orfdata
37
40
 
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
41
+ orfdata builds protein references from transcript models in
42
+ a [PyEnsembl](https://github.com/openvax/pyensembl) annotation, plus open reading
40
43
  frames (ORFs) that ribosome-profiling studies found translated outside those
41
44
  annotations. These include upstream and downstream ORFs, ORFs in other reading
42
45
  frames of a coding sequence, and ORFs on RNAs annotated as noncoding. Each added
@@ -48,38 +51,75 @@ evidence.
48
51
  Use Python 3.11 or later. Install orfdata and one PyEnsembl annotation:
49
52
 
50
53
  ```sh
51
- python -m pip install 'orfdata[pyensembl]'
54
+ python -m pip install 'orfdata[pyensembl,build-data]'
52
55
  pyensembl install --release 115 --species human
56
+ # For the ncORF evidence presets and "all":
57
+ orfdata setup --species human --catalogs all
53
58
  ```
54
59
 
60
+ List every bundled, downloadable or buildable resource and what is installed:
61
+
62
+ ```sh
63
+ orfdata download list
64
+ orfdata download status
65
+ ```
66
+
67
+ `orfdata setup --species human` also installs `gdc-viruses`, the default
68
+ 200-reference GDC viral screen for human transcriptome analysis;
69
+ `--collections none` skips it. Viral support is part of the base install, and
70
+ only the data is downloaded. To acquire only the viral references:
71
+
72
+ ```sh
73
+ orfdata download viral --species human
74
+ orfdata viral summary
75
+ ```
76
+
77
+ Each viral collection keeps three layers apart — the viral genomes, one coding
78
+ transcript per source CDS feature with a GTF placing it on them, and the
79
+ proteins those transcripts encode. Because the three share identifiers, the set
80
+ opens as a PyEnsembl genome, so varcode, isovar, topiary and vaxrank can
81
+ annotate variants on viral contigs. `orfdata proteome --annotation DIR` writes
82
+ the same three files for noncanonical ORFs. See
83
+ [Downstream tools](https://openvax.github.io/orfdata/downstream/).
84
+
55
85
  ## Example
56
86
 
57
87
  ```python
58
88
  from pyensembl import EnsemblRelease
59
- from orfdata import Proteome
89
+ from orfdata import ReferenceTranscriptome
60
90
 
61
91
  genome = EnsemblRelease(115, species="human")
62
- proteome = Proteome.from_genome(genome).with_extra_orfs(evidence="ms")
92
+ transcriptome = ReferenceTranscriptome.from_genome(genome)
93
+ reference = transcriptome.proteome() # Reference CDS proteins only; all isoforms.
94
+ one_per_gene = transcriptome.proteome(isoforms="longest")
95
+ proteome = transcriptome.proteome(nc_orf_sources="ms") # Explicitly add MS-supported ncORFs.
63
96
  proteome.write_fasta("human-e115.fasta")
64
- print(proteome.summary()["kinds"], len(proteome.excluded))
97
+ print(proteome.summary()["protein_sources"], len(proteome.excluded))
65
98
  ```
66
99
 
67
100
  ```text
68
- {'annotated': 245535, 'extra_orf': 2181} 5
101
+ {'reference_cds': 245535, 'nc_orf': 2181} 5
69
102
  ```
70
103
 
71
- This takes every protein in the Ensembl 115 annotation and adds the 2,181
104
+ `proteome()` defaults to reference CDS proteins, with no ncORFs or viruses.
105
+ `isoforms="longest"` selects one protein per gene by length, with accession
106
+ and transcript ID breaking ties. This does not assign Ensembl canonical or
107
+ MANE status. `nc_orf_sources="ms"` takes every protein in the Ensembl 115 annotation and adds the 2,181
72
108
  bundled human ORFs that have supporting mass-spectrometry peptides and are
73
109
  encoded by an Ensembl 115 transcript. Each entry lists every transcript encoding
74
110
  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).
111
+ reason. `nc_orf_sources="ribosome"` includes Ribo-seq-supported ORFs from
112
+ all compatible registered datasets. Use a rule such as
113
+ `RiboSeq(min_studies=2) & MS()` to set Ribo-seq and MS stringency separately.
114
+ A dataset name such as `"bundled"` selects every ORF in that dataset;
115
+ a list such as `["bundled", "ncorf-mammals-human"]` combines datasets.
116
+ `nc_orf_sources="all"` includes every compatible registered dataset, including
117
+ optional ones. Missing datasets raise with installation instructions.
78
118
  `proteome.save(path)` writes a checksummed snapshot that `Proteome.load` reads
79
119
  offline. From the command line:
80
120
 
81
121
  ```sh
82
- orfdata proteome --species human --release 115 --output human-e115.fasta
122
+ orfdata proteome --species human --release 115 --nc-orf-sources ms --output human-e115.fasta
83
123
  ```
84
124
 
85
125
  A translated ORF or a detected peptide does not by itself establish a stable,
@@ -90,7 +130,7 @@ immunopeptidomics: peptides eluted from HLA molecules.
90
130
 
91
131
  | Species | Noncanonical ORFs | Sources |
92
132
  | --- | ---: | --- |
93
- | Human | 7,264 bundled; 57,607 with `catalogs="all"` | GENCODE; optionally Chang et al. 2025 and Yang et al. 2024 Ribo-seq |
133
+ | 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
134
  | Mouse | 48,805 | Chang et al. and Yang et al. Ribo-seq, OpenProt 2.2 MS |
95
135
  | Zebrafish | 9,759 | Yang et al. Ribo-seq |
96
136
  | C. elegans | 2,849 | Yang et al. Ribo-seq |
@@ -106,10 +146,44 @@ After `orfdata chains download` (add
106
146
  (GRCh37, NCBI36, GRCm38, NCBIM37) and T2T-CHM13 use these catalogues lifted
107
147
  to them; `orfdata genomes install t2t-chm13` installs a CHM13 annotation. Dog proteomes contain their
108
148
  PyEnsembl-annotated proteins. `load_catalog(species=...)` and
109
- `with_extra_orfs()` pick the catalogue for a species and raise when none is
149
+ `with_nc_orfs("all")` select catalogues for a species and raise when none is
110
150
  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.
151
+ Human evidence is never transferred to another species. Viral proteins can
152
+ be added only to a proteome for a recorded host. To build one dictionary and
153
+ FASTA with the reference CDS proteins, all binding catalogue ORFs and the
154
+ bundled viruses associated with human:
155
+
156
+ ```python
157
+ combined = transcriptome.proteome(nc_orf_sources="all", viral="all")
158
+ proteins_by_id = combined.by_accession() # Reference CDS, ncORF and viral entries.
159
+ combined.write_fasta("human-all-proteins.fasta")
160
+ combined.save("human-all-proteins.proteome.json.gz") # Complete provenance.
161
+
162
+ nc_only = transcriptome.proteome(reference_cds=False, nc_orf_sources="all")
163
+ nc_only.write_fasta("human-reference-ncorfs.fasta")
164
+ ```
165
+
166
+ For sample-specific altered sequences, `DerivedProtein` records the supplied
167
+ amino acids, parent protein accession, sample, change IDs and source before
168
+ `combined.with_derived_proteins(...)` adds them. These sequences are not
169
+ inferred from variants or included in the reference proteome by default.
170
+
171
+ For a named, checksummed sequence input with no genomic placement, use the
172
+ general `ProteinSet`. `with_protein_set(...)` records a donor, transgene or
173
+ other selected component; `with_viral(...)` uses the same input plus a sourced
174
+ host association. ncORF sources with transcript coordinates and evidence stay
175
+ as `ORFCatalog` records and produce the same `ProteinSequence` output when
176
+ bound to a reference.
177
+
178
+ ```sh
179
+ orfdata proteome --species human --release 115 --nc-orf-sources all --viral all --output human-all-proteins.fasta
180
+ ```
181
+
182
+ `viral="all"` selects one protein set per bundled virus and keeps its exact
183
+ reference ID in FASTA headers. To select one virus, use `viral="HPV16"` or
184
+ `with_viral("HPV16")`.
185
+ Viral proteins are included only when requested; a recorded host association
186
+ does not say which virus is present in a sample.
113
187
  orfdata also provides [RNA, ribosome and protein measurements](https://openvax.github.io/orfdata/measurements/)
114
188
  for human, mouse, dog and yeast.
115
189
 
@@ -120,10 +194,14 @@ packaged bases and coding paths. The functional loaders remain available.
120
194
  When annotating an existing alignment, `viral_orfs(reference_dna,
121
195
  contig="HPV16")` checks its actual reference sequence before applying the same
122
196
  models.
123
- The first [coding reference](https://openvax.github.io/orfdata/viral/) contains
124
- the nine RefSeq NC_001526.4 HPV16 CDSs, with native and GDC placements;
125
- the host association is distinct from the virus's own taxon. Broader
126
- imports remain in [the viral roadmap](https://github.com/openvax/orfdata/issues/91).
197
+ The curated [coding reference](https://openvax.github.io/orfdata/viral/)
198
+ contains the nine RefSeq NC_001526.4 HPV16 CDSs, with native and GDC
199
+ placements; the host association is distinct from the virus's own taxon. The
200
+ separate `gdc-viruses` source bundle contains all 200 GDC source genomes and
201
+ their annotated CDS/protein FASTAs for human analysis. It does not assert a
202
+ human source host for every virus; source-host metadata remains separate.
203
+ Promoting further source records into the curated
204
+ `ViralReference` API remains in the [viral roadmap](https://github.com/openvax/orfdata/issues/91).
127
205
 
128
206
  ## Measurement datasets
129
207
 
@@ -155,6 +233,8 @@ The [documentation](https://openvax.github.io/orfdata/) covers:
155
233
 
156
234
  | Task | Guide |
157
235
  | --- | --- |
236
+ | Discover, inspect and download data | [Discover and download data](https://openvax.github.io/orfdata/downloads/) |
237
+ | Use ORFs and viral references with varcode, isovar, topiary and vaxrank | [Downstream tools](https://openvax.github.io/orfdata/downstream/) |
158
238
  | Build a proteome: evidence levels, exclusions, contigs, viral proteins | [Build a reference proteome](https://openvax.github.io/orfdata/proteome/) |
159
239
  | ORF classes, evidence definitions, Varcode and Isovar integration | [ORFs and evidence](https://openvax.github.io/orfdata/reference/) |
160
240
  | Species and reference identity, mitochondrial genetic codes | [Species, references and genetic codes](https://openvax.github.io/orfdata/species/) |
@@ -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,75 @@ 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,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
 
25
+ List every bundled, downloadable or buildable resource and what is installed:
26
+
27
+ ```sh
28
+ orfdata download list
29
+ orfdata download status
30
+ ```
31
+
32
+ `orfdata setup --species human` also installs `gdc-viruses`, the default
33
+ 200-reference GDC viral screen for human transcriptome analysis;
34
+ `--collections none` skips it. Viral support is part of the base install, and
35
+ only the data is downloaded. To acquire only the viral references:
36
+
37
+ ```sh
38
+ orfdata download viral --species human
39
+ orfdata viral summary
40
+ ```
41
+
42
+ Each viral collection keeps three layers apart — the viral genomes, one coding
43
+ transcript per source CDS feature with a GTF placing it on them, and the
44
+ proteins those transcripts encode. Because the three share identifiers, the set
45
+ opens as a PyEnsembl genome, so varcode, isovar, topiary and vaxrank can
46
+ annotate variants on viral contigs. `orfdata proteome --annotation DIR` writes
47
+ the same three files for noncanonical ORFs. See
48
+ [Downstream tools](https://openvax.github.io/orfdata/downstream/).
49
+
23
50
  ## Example
24
51
 
25
52
  ```python
26
53
  from pyensembl import EnsemblRelease
27
- from orfdata import Proteome
54
+ from orfdata import ReferenceTranscriptome
28
55
 
29
56
  genome = EnsemblRelease(115, species="human")
30
- proteome = Proteome.from_genome(genome).with_extra_orfs(evidence="ms")
57
+ transcriptome = ReferenceTranscriptome.from_genome(genome)
58
+ reference = transcriptome.proteome() # Reference CDS proteins only; all isoforms.
59
+ one_per_gene = transcriptome.proteome(isoforms="longest")
60
+ proteome = transcriptome.proteome(nc_orf_sources="ms") # Explicitly add MS-supported ncORFs.
31
61
  proteome.write_fasta("human-e115.fasta")
32
- print(proteome.summary()["kinds"], len(proteome.excluded))
62
+ print(proteome.summary()["protein_sources"], len(proteome.excluded))
33
63
  ```
34
64
 
35
65
  ```text
36
- {'annotated': 245535, 'extra_orf': 2181} 5
66
+ {'reference_cds': 245535, 'nc_orf': 2181} 5
37
67
  ```
38
68
 
39
- This takes every protein in the Ensembl 115 annotation and adds the 2,181
69
+ `proteome()` defaults to reference CDS proteins, with no ncORFs or viruses.
70
+ `isoforms="longest"` selects one protein per gene by length, with accession
71
+ and transcript ID breaking ties. This does not assign Ensembl canonical or
72
+ MANE status. `nc_orf_sources="ms"` takes every protein in the Ensembl 115 annotation and adds the 2,181
40
73
  bundled human ORFs that have supporting mass-spectrometry peptides and are
41
74
  encoded by an Ensembl 115 transcript. Each entry lists every transcript encoding
42
75
  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).
76
+ reason. `nc_orf_sources="ribosome"` includes Ribo-seq-supported ORFs from
77
+ all compatible registered datasets. Use a rule such as
78
+ `RiboSeq(min_studies=2) & MS()` to set Ribo-seq and MS stringency separately.
79
+ A dataset name such as `"bundled"` selects every ORF in that dataset;
80
+ a list such as `["bundled", "ncorf-mammals-human"]` combines datasets.
81
+ `nc_orf_sources="all"` includes every compatible registered dataset, including
82
+ optional ones. Missing datasets raise with installation instructions.
46
83
  `proteome.save(path)` writes a checksummed snapshot that `Proteome.load` reads
47
84
  offline. From the command line:
48
85
 
49
86
  ```sh
50
- orfdata proteome --species human --release 115 --output human-e115.fasta
87
+ orfdata proteome --species human --release 115 --nc-orf-sources ms --output human-e115.fasta
51
88
  ```
52
89
 
53
90
  A translated ORF or a detected peptide does not by itself establish a stable,
@@ -58,7 +95,7 @@ immunopeptidomics: peptides eluted from HLA molecules.
58
95
 
59
96
  | Species | Noncanonical ORFs | Sources |
60
97
  | --- | ---: | --- |
61
- | Human | 7,264 bundled; 57,607 with `catalogs="all"` | GENCODE; optionally Chang et al. 2025 and Yang et al. 2024 Ribo-seq |
98
+ | 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
99
  | Mouse | 48,805 | Chang et al. and Yang et al. Ribo-seq, OpenProt 2.2 MS |
63
100
  | Zebrafish | 9,759 | Yang et al. Ribo-seq |
64
101
  | C. elegans | 2,849 | Yang et al. Ribo-seq |
@@ -74,10 +111,44 @@ After `orfdata chains download` (add
74
111
  (GRCh37, NCBI36, GRCm38, NCBIM37) and T2T-CHM13 use these catalogues lifted
75
112
  to them; `orfdata genomes install t2t-chm13` installs a CHM13 annotation. Dog proteomes contain their
76
113
  PyEnsembl-annotated proteins. `load_catalog(species=...)` and
77
- `with_extra_orfs()` pick the catalogue for a species and raise when none is
114
+ `with_nc_orfs("all")` select catalogues for a species and raise when none is
78
115
  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.
116
+ Human evidence is never transferred to another species. Viral proteins can
117
+ be added only to a proteome for a recorded host. To build one dictionary and
118
+ FASTA with the reference CDS proteins, all binding catalogue ORFs and the
119
+ bundled viruses associated with human:
120
+
121
+ ```python
122
+ combined = transcriptome.proteome(nc_orf_sources="all", viral="all")
123
+ proteins_by_id = combined.by_accession() # Reference CDS, ncORF and viral entries.
124
+ combined.write_fasta("human-all-proteins.fasta")
125
+ combined.save("human-all-proteins.proteome.json.gz") # Complete provenance.
126
+
127
+ nc_only = transcriptome.proteome(reference_cds=False, nc_orf_sources="all")
128
+ nc_only.write_fasta("human-reference-ncorfs.fasta")
129
+ ```
130
+
131
+ For sample-specific altered sequences, `DerivedProtein` records the supplied
132
+ amino acids, parent protein accession, sample, change IDs and source before
133
+ `combined.with_derived_proteins(...)` adds them. These sequences are not
134
+ inferred from variants or included in the reference proteome by default.
135
+
136
+ For a named, checksummed sequence input with no genomic placement, use the
137
+ general `ProteinSet`. `with_protein_set(...)` records a donor, transgene or
138
+ other selected component; `with_viral(...)` uses the same input plus a sourced
139
+ host association. ncORF sources with transcript coordinates and evidence stay
140
+ as `ORFCatalog` records and produce the same `ProteinSequence` output when
141
+ bound to a reference.
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.
81
152
  orfdata also provides [RNA, ribosome and protein measurements](https://openvax.github.io/orfdata/measurements/)
82
153
  for human, mouse, dog and yeast.
83
154
 
@@ -88,10 +159,14 @@ packaged bases and coding paths. The functional loaders remain available.
88
159
  When annotating an existing alignment, `viral_orfs(reference_dna,
89
160
  contig="HPV16")` checks its actual reference sequence before applying the same
90
161
  models.
91
- The first [coding reference](https://openvax.github.io/orfdata/viral/) contains
92
- the nine RefSeq NC_001526.4 HPV16 CDSs, with native and GDC placements;
93
- the host association is distinct from the virus's own taxon. Broader
94
- imports remain in [the viral roadmap](https://github.com/openvax/orfdata/issues/91).
162
+ The curated [coding reference](https://openvax.github.io/orfdata/viral/)
163
+ contains the nine RefSeq NC_001526.4 HPV16 CDSs, with native and GDC
164
+ placements; the host association is distinct from the virus's own taxon. The
165
+ separate `gdc-viruses` source bundle contains all 200 GDC source genomes and
166
+ their annotated CDS/protein FASTAs for human analysis. It does not assert a
167
+ human source host for every virus; source-host metadata remains separate.
168
+ Promoting further source records into the curated
169
+ `ViralReference` API remains in the [viral roadmap](https://github.com/openvax/orfdata/issues/91).
95
170
 
96
171
  ## Measurement datasets
97
172
 
@@ -123,6 +198,8 @@ The [documentation](https://openvax.github.io/orfdata/) covers:
123
198
 
124
199
  | Task | Guide |
125
200
  | --- | --- |
201
+ | Discover, inspect and download data | [Discover and download data](https://openvax.github.io/orfdata/downloads/) |
202
+ | Use ORFs and viral references with varcode, isovar, topiary and vaxrank | [Downstream tools](https://openvax.github.io/orfdata/downstream/) |
126
203
  | Build a proteome: evidence levels, exclusions, contigs, viral proteins | [Build a reference proteome](https://openvax.github.io/orfdata/proteome/) |
127
204
  | ORF classes, evidence definitions, Varcode and Isovar integration | [ORFs and evidence](https://openvax.github.io/orfdata/reference/) |
128
205
  | Species and reference identity, mitochondrial genetic codes | [Species, references and genetic codes](https://openvax.github.io/orfdata/species/) |
@@ -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