orfdata 0.41.0__tar.gz → 0.42.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 (383) hide show
  1. {orfdata-0.41.0/orfdata.egg-info → orfdata-0.42.0}/PKG-INFO +11 -3
  2. {orfdata-0.41.0 → orfdata-0.42.0}/README.md +10 -2
  3. orfdata-0.42.0/docs/dog-data-sources.md +60 -0
  4. {orfdata-0.41.0 → orfdata-0.42.0}/docs/dog-peptides.md +3 -0
  5. {orfdata-0.41.0 → orfdata-0.42.0}/docs/downloads.md +43 -4
  6. {orfdata-0.41.0 → orfdata-0.42.0}/mkdocs.yml +1 -0
  7. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/__init__.py +4 -0
  8. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/cli.py +3 -3
  9. orfdata-0.42.0/orfdata/data_resources.py +140 -0
  10. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/download_cli.py +49 -0
  11. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/downloads.py +26 -16
  12. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/genomes.py +3 -2
  13. orfdata-0.42.0/orfdata/version.py +1 -0
  14. {orfdata-0.41.0 → orfdata-0.42.0/orfdata.egg-info}/PKG-INFO +11 -3
  15. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata.egg-info/SOURCES.txt +3 -0
  16. orfdata-0.42.0/tests/test_data_resources.py +161 -0
  17. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_downloads.py +1 -1
  18. orfdata-0.41.0/orfdata/version.py +0 -1
  19. {orfdata-0.41.0 → orfdata-0.42.0}/LICENSE +0 -0
  20. {orfdata-0.41.0 → orfdata-0.42.0}/MANIFEST.in +0 -0
  21. {orfdata-0.41.0 → orfdata-0.42.0}/deploy.sh +0 -0
  22. {orfdata-0.41.0 → orfdata-0.42.0}/docs/catalogs.md +0 -0
  23. {orfdata-0.41.0 → orfdata-0.42.0}/docs/copy-yeast.md +0 -0
  24. {orfdata-0.41.0 → orfdata-0.42.0}/docs/coverage.md +0 -0
  25. {orfdata-0.41.0 → orfdata-0.42.0}/docs/downstream.md +0 -0
  26. {orfdata-0.41.0 → orfdata-0.42.0}/docs/examples.md +0 -0
  27. {orfdata-0.41.0 → orfdata-0.42.0}/docs/human-tissue.md +0 -0
  28. {orfdata-0.41.0 → orfdata-0.42.0}/docs/index.md +0 -0
  29. {orfdata-0.41.0 → orfdata-0.42.0}/docs/ingolia-yeast.md +0 -0
  30. {orfdata-0.41.0 → orfdata-0.42.0}/docs/measurements.md +0 -0
  31. {orfdata-0.41.0 → orfdata-0.42.0}/docs/pairing.md +0 -0
  32. {orfdata-0.41.0 → orfdata-0.42.0}/docs/pfizer-peptides.md +0 -0
  33. {orfdata-0.41.0 → orfdata-0.42.0}/docs/pfizer-protein.md +0 -0
  34. {orfdata-0.41.0 → orfdata-0.42.0}/docs/pfizer-rna.md +0 -0
  35. {orfdata-0.41.0 → orfdata-0.42.0}/docs/proteome.md +0 -0
  36. {orfdata-0.41.0 → orfdata-0.42.0}/docs/reference.md +0 -0
  37. {orfdata-0.41.0 → orfdata-0.42.0}/docs/search-references.md +0 -0
  38. {orfdata-0.41.0 → orfdata-0.42.0}/docs/source-references.md +0 -0
  39. {orfdata-0.41.0 → orfdata-0.42.0}/docs/species.md +0 -0
  40. {orfdata-0.41.0 → orfdata-0.42.0}/docs/storage.md +0 -0
  41. {orfdata-0.41.0 → orfdata-0.42.0}/docs/stylesheets/docs.css +0 -0
  42. {orfdata-0.41.0 → orfdata-0.42.0}/docs/viral.md +0 -0
  43. {orfdata-0.41.0 → orfdata-0.42.0}/docs.sh +0 -0
  44. {orfdata-0.41.0 → orfdata-0.42.0}/lint.sh +0 -0
  45. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/_pinned_genome.py +0 -0
  46. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/_structure.py +0 -0
  47. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/artifact_archives.py +0 -0
  48. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/build.py +0 -0
  49. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/catalog.py +0 -0
  50. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/catalog_cli.py +0 -0
  51. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/catalog_manifest.py +0 -0
  52. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/catalogs.py +0 -0
  53. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/cli_output.py +0 -0
  54. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/catalogs.json +0 -0
  55. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/chains.json +0 -0
  56. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/datasets.json +0 -0
  57. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/genomes.json +0 -0
  58. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/ires/rfam-15.1-human-ires.json +0 -0
  59. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/orf-evidence/AUTHOR-LICENSE.txt +0 -0
  60. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/orf-evidence/NOTICE.txt +0 -0
  61. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/orf-evidence/catalog.json.gz +0 -0
  62. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/orf-evidence/manifest.json +0 -0
  63. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/uorf-evidence/AUTHOR-LICENSE.txt +0 -0
  64. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/uorf-evidence/NOTICE.txt +0 -0
  65. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/uorf-evidence/catalog.json.gz +0 -0
  66. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/uorf-evidence/manifest.json +0 -0
  67. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/viral/NOTICE.md +0 -0
  68. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/viral/gdc-grch38-d1-vd1-coverage.tsv +0 -0
  69. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/viral/gdc-grch38-d1-vd1-genbank.tsv +0 -0
  70. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/viral/gdc-grch38-d1-vd1-pave.tsv +0 -0
  71. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/viral/hpv16-refseq-CDS.json.gz +0 -0
  72. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/data/viral/subsets.yaml +0 -0
  73. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/dataset.py +0 -0
  74. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/dataset_cli.py +0 -0
  75. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/datasets.py +0 -0
  76. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/evidence.py +0 -0
  77. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/evidence_summary.py +0 -0
  78. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/fasta.py +0 -0
  79. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/genbank.py +0 -0
  80. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/genomes_cli.py +0 -0
  81. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/gtf.py +0 -0
  82. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/initiation_context.py +0 -0
  83. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/install.py +0 -0
  84. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/liftover.py +0 -0
  85. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/liftover_cli.py +0 -0
  86. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/measurements.py +0 -0
  87. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/model.py +0 -0
  88. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/net.py +0 -0
  89. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/numeric_vector.py +0 -0
  90. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/pairing.py +0 -0
  91. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/proteome.py +0 -0
  92. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/proteome_cli.py +0 -0
  93. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/record_sources.py +0 -0
  94. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/reference.py +0 -0
  95. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/reference_ledger.py +0 -0
  96. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/reference_mapping.py +0 -0
  97. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/reference_table.py +0 -0
  98. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/refseq.py +0 -0
  99. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/rna.py +0 -0
  100. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/search_reference.py +0 -0
  101. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sequence.py +0 -0
  102. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/__init__.py +0 -0
  103. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/copy.py +0 -0
  104. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/ingolia.py +0 -0
  105. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/kaabinejadian.py +0 -0
  106. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/ncorf_mammals.py +0 -0
  107. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/openprot.py +0 -0
  108. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/peptideatlas.py +0 -0
  109. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer.py +0 -0
  110. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_attribution.py +0 -0
  111. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_dataset.py +0 -0
  112. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_definitions.py +0 -0
  113. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_evidence.py +0 -0
  114. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_lineage.py +0 -0
  115. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_native.py +0 -0
  116. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_queries.py +0 -0
  117. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_rna.py +0 -0
  118. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/pfizer_vendor.py +0 -0
  119. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/riborf.py +0 -0
  120. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/sources/wang.py +0 -0
  121. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/viral.py +0 -0
  122. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/viral_annotation.py +0 -0
  123. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/viral_cli.py +0 -0
  124. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/viral_coverage.py +0 -0
  125. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/viral_panel.py +0 -0
  126. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/viral_registry.py +0 -0
  127. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata/viral_subsets.py +0 -0
  128. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata.egg-info/dependency_links.txt +0 -0
  129. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata.egg-info/entry_points.txt +0 -0
  130. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata.egg-info/requires.txt +0 -0
  131. {orfdata-0.41.0 → orfdata-0.42.0}/orfdata.egg-info/top_level.txt +0 -0
  132. {orfdata-0.41.0 → orfdata-0.42.0}/pyproject.toml +0 -0
  133. {orfdata-0.41.0 → orfdata-0.42.0}/setup.cfg +0 -0
  134. {orfdata-0.41.0 → orfdata-0.42.0}/test.sh +0 -0
  135. {orfdata-0.41.0 → orfdata-0.42.0}/tests/conftest.py +0 -0
  136. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/aggregate_evidence.json +0 -0
  137. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/GSM1905474.soft +0 -0
  138. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/GSM1905474_KL9_fpkm.txt.gz +0 -0
  139. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/GSM1905476.soft +0 -0
  140. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/GSM1905476_KL10_fpkm.txt.gz +0 -0
  141. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/GSM1905478.soft +0 -0
  142. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/GSM1905478_KL11_fpkm.txt.gz +0 -0
  143. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/GSM1905479.soft +0 -0
  144. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/GSM1905479_KL12_fpkm.txt.gz +0 -0
  145. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/NOTICE.md +0 -0
  146. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/expected.json +0 -0
  147. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/geo-series.soft +0 -0
  148. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/manifest.json +0 -0
  149. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/methods.pdf +0 -0
  150. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/paper.xml +0 -0
  151. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/pmc-metadata.json +0 -0
  152. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/qconcat.fasta +0 -0
  153. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/copy/workbook.xlsx +0 -0
  154. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346111.metadata.txt +0 -0
  155. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346111.quant.txt.gz +0 -0
  156. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346114.metadata.txt +0 -0
  157. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346114.quant.txt.gz +0 -0
  158. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346115.metadata.txt +0 -0
  159. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346115.quant.txt.gz +0 -0
  160. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346116.metadata.txt +0 -0
  161. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346116.quant.txt.gz +0 -0
  162. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346117.metadata.txt +0 -0
  163. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346117.quant.txt.gz +0 -0
  164. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346118.metadata.txt +0 -0
  165. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346118.quant.txt.gz +0 -0
  166. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346120.metadata.txt +0 -0
  167. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346120.quant.txt.gz +0 -0
  168. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346122.metadata.txt +0 -0
  169. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/GSM346122.quant.txt.gz +0 -0
  170. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/NOTICE.md +0 -0
  171. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/expected.json +0 -0
  172. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/manifest.json +0 -0
  173. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ingolia/readMe.txt.gz +0 -0
  174. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/kaabinejadian/README.md +0 -0
  175. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/kaabinejadian/Results.zip +0 -0
  176. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/kaabinejadian/manifest-v1.json +0 -0
  177. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/kaabinejadian/manifest.json +0 -0
  178. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/kaabinejadian/sdrf.tsv +0 -0
  179. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/README.md +0 -0
  180. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/S3.xlsx +0 -0
  181. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/ensembl107.cdna.fa.gz +0 -0
  182. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/ensembl107.gtf.gz +0 -0
  183. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/human-ensembl107.gtf.gz +0 -0
  184. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/human.bed +0 -0
  185. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/human.pep.fa +0 -0
  186. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/mouse.bed +0 -0
  187. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/ncorf_mammals/mouse.pep.fa +0 -0
  188. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/openprot/README.md +0 -0
  189. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/openprot/ensembl106.cdna.fa.gz +0 -0
  190. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/openprot/ensembl106.gtf.gz +0 -0
  191. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.bed.zip +0 -0
  192. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.fasta.zip +0 -0
  193. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.tsv.zip +0 -0
  194. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/peptideatlas/README.md +0 -0
  195. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/peptideatlas/atlas_build.tsv.zip +0 -0
  196. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/peptideatlas/ensembl.pep.fa.gz +0 -0
  197. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/peptideatlas/manifest.json +0 -0
  198. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/NOTICE.md +0 -0
  199. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/dog/expected.json +0 -0
  200. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/dog/manifest.json +0 -0
  201. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/dog/protein.tsv +0 -0
  202. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/dog/search.fasta +0 -0
  203. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/human/expected.json +0 -0
  204. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/human/manifest.json +0 -0
  205. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/human/protein.tsv +0 -0
  206. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/human/search.fasta +0 -0
  207. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/mouse/expected.json +0 -0
  208. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/mouse/manifest.json +0 -0
  209. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/mouse/protein.tsv +0 -0
  210. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/mouse/search.fasta +0 -0
  211. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/NOTICE.md +0 -0
  212. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/acquisition-missingness.json +0 -0
  213. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/definitions.json +0 -0
  214. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/dog-panel.json +0 -0
  215. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/membership-search-slice.fasta +0 -0
  216. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/memberships.json +0 -0
  217. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/native.json +0 -0
  218. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/parent-status-search-slice.fasta +0 -0
  219. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/parent-status.json +0 -0
  220. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/psm-parent-sets-search-slice.fasta +0 -0
  221. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/psm-parent-sets.json +0 -0
  222. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/search-slice.fasta +0 -0
  223. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/search-slice.json +0 -0
  224. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/study-slice.xml +0 -0
  225. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer/vendor/summary-samples.json +0 -0
  226. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/GSE325522_family.soft.gz +0 -0
  227. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/GSE325523_family.soft.gz +0 -0
  228. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/GSE325525_family.soft.gz +0 -0
  229. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/NOTICE.md +0 -0
  230. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/counts.csv.gz +0 -0
  231. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/dog-annotation.gtf.gz +0 -0
  232. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/dog-expected.json +0 -0
  233. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/dog-manifest.json +0 -0
  234. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/mouse-annotation.gtf.gz +0 -0
  235. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/mouse-expected.json +0 -0
  236. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/mouse-manifest.json +0 -0
  237. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/pfizer_rna/samples.xlsx +0 -0
  238. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/README.md +0 -0
  239. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/canis_lupus_familiaris.json +0 -0
  240. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/context-keys-v0.4.json +0 -0
  241. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/ensembl115.json +0 -0
  242. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/homo_sapiens.json +0 -0
  243. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/mitochondrial.json +0 -0
  244. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/mus_musculus.json +0 -0
  245. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/saccharomyces_cerevisiae.json +0 -0
  246. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/references/uniprot_literature.json +0 -0
  247. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/regions/NOTICE.md +0 -0
  248. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/regions/ingolia.json +0 -0
  249. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/README.md +0 -0
  250. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/SD3.xlsx +0 -0
  251. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/ensembl107.cdna.fa.gz +0 -0
  252. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/ensembl107.gtf.gz +0 -0
  253. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/ensembl107.ncrna.fa.gz +0 -0
  254. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/human-ensembl105.cdna.fa.gz +0 -0
  255. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/human-ensembl105.gtf.gz +0 -0
  256. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/human-ensembl105.ncrna.fa.gz +0 -0
  257. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/worm-ensembl105.cdna.fa.gz +0 -0
  258. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/worm-ensembl105.gtf.gz +0 -0
  259. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/worm-ensembl105.ncrna.fa.gz +0 -0
  260. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/yeast-ensembl115.cdna.fa.gz +0 -0
  261. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/yeast-ensembl115.dna.fa.gz +0 -0
  262. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/yeast-ensembl115.gtf.gz +0 -0
  263. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/zebrafish-ensembl115.cdna.fa.gz +0 -0
  264. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/zebrafish-ensembl115.gtf.gz +0 -0
  265. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/riborf/zebrafish-ensembl115.ncrna.fa.gz +0 -0
  266. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/search_reference/NOTICE.md +0 -0
  267. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/search_reference/dog.fasta +0 -0
  268. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/search_reference/ensembl83-expected.json +0 -0
  269. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/search_reference/ensembl83-human.fasta.gz +0 -0
  270. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/search_reference/expected.json +0 -0
  271. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/README.md +0 -0
  272. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/generate.py +0 -0
  273. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/v1.json +0 -0
  274. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/v1.sqlite +0 -0
  275. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/v2.json +0 -0
  276. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/v2.sqlite +0 -0
  277. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/v3.json +0 -0
  278. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/v3.sqlite +0 -0
  279. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/v4.json +0 -0
  280. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/storage/v4.sqlite +0 -0
  281. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/viral/GRCh83.d1.vd1_virus_decoy.txt.gz +0 -0
  282. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/viral/NC_001526.4.gb.gz +0 -0
  283. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/viral/genbank/HBV__X04615.1.gb.gz +0 -0
  284. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/viral/genbank/HPV16__K02718.1.gb.gz +0 -0
  285. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/viral/genbank/HPV35__X74477.1.gb.gz +0 -0
  286. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/viral/genbank/HPV51__M62877.1.gb.gz +0 -0
  287. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/viral/genbank/HPV56__X74483.1.gb.gz +0 -0
  288. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/wang/NOTICE.md +0 -0
  289. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/wang/annotation.gtf.gz +0 -0
  290. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/wang/copies.zip +0 -0
  291. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/wang/expected.json +0 -0
  292. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/wang/manifest.json +0 -0
  293. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/wang/protein.zip +0 -0
  294. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/wang/rna.zip +0 -0
  295. {orfdata-0.41.0 → orfdata-0.42.0}/tests/data/wang/search.fasta.gz +0 -0
  296. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_artifact_archives.py +0 -0
  297. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_catalog_registry.py +0 -0
  298. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_copy.py +0 -0
  299. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_cross_reference_pairing.py +0 -0
  300. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_dog_export_read_ahead.py +0 -0
  301. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_dog_ncorf_search.py +0 -0
  302. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_dog_peptides.py +0 -0
  303. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_ensembl_search_reference.py +0 -0
  304. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_evidence_rules.py +0 -0
  305. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_evidence_summary.py +0 -0
  306. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_export_sqlite_rows.py +0 -0
  307. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_extraction_budget.py +0 -0
  308. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_ftps_sqlite.py +0 -0
  309. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_genbank.py +0 -0
  310. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_genbank_equivalence.py +0 -0
  311. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_genetic_codes.py +0 -0
  312. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_genomes.py +0 -0
  313. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_ingolia.py +0 -0
  314. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_initiation_context.py +0 -0
  315. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_liftover.py +0 -0
  316. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_local_build_queries.py +0 -0
  317. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_measurements.py +0 -0
  318. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_merge_catalogs.py +0 -0
  319. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_more_species.py +0 -0
  320. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_ncorf_mammals.py +0 -0
  321. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_numeric_vector.py +0 -0
  322. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_openprot.py +0 -0
  323. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_orf_cases.py +0 -0
  324. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_orf_gtf.py +0 -0
  325. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_package_dog_dataset.py +0 -0
  326. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_package_sqlite_archive.py +0 -0
  327. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_paired_selectors.py +0 -0
  328. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pairing.py +0 -0
  329. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer.py +0 -0
  330. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer_attribution.py +0 -0
  331. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer_dataset.py +0 -0
  332. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer_definitions.py +0 -0
  333. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer_evidence.py +0 -0
  334. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer_lineage.py +0 -0
  335. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer_native.py +0 -0
  336. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer_rna.py +0 -0
  337. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_pfizer_vendor.py +0 -0
  338. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_protein_set.py +0 -0
  339. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_proteome.py +0 -0
  340. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_proteome_external.py +0 -0
  341. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_proteome_fasta_tokens.py +0 -0
  342. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_proteome_producer_graph.py +0 -0
  343. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_reference_context.py +0 -0
  344. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_reference_ledger.py +0 -0
  345. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_reference_mapping.py +0 -0
  346. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_reference_orf.py +0 -0
  347. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_reference_table.py +0 -0
  348. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_refseq.py +0 -0
  349. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_region_targets.py +0 -0
  350. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_riborf.py +0 -0
  351. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_search_reference.py +0 -0
  352. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_selectors.py +0 -0
  353. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_storage.py +0 -0
  354. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_uorf_catalog.py +0 -0
  355. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_verify_dog_dataset.py +0 -0
  356. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral.py +0 -0
  357. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_bundle.py +0 -0
  358. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_cli.py +0 -0
  359. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_collections.py +0 -0
  360. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_completeness.py +0 -0
  361. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_coverage.py +0 -0
  362. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_initiation.py +0 -0
  363. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_origin_join.py +0 -0
  364. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_sources.py +0 -0
  365. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_viral_subsets.py +0 -0
  366. {orfdata-0.41.0 → orfdata-0.42.0}/tests/test_wang.py +0 -0
  367. {orfdata-0.41.0 → orfdata-0.42.0}/tools/README-dog-results.md +0 -0
  368. {orfdata-0.41.0 → orfdata-0.42.0}/tools/__init__.py +0 -0
  369. {orfdata-0.41.0 → orfdata-0.42.0}/tools/build_dog_dataset.py +0 -0
  370. {orfdata-0.41.0 → orfdata-0.42.0}/tools/build_gdc_viral_coverage.py +0 -0
  371. {orfdata-0.41.0 → orfdata-0.42.0}/tools/build_hpv16_cds.py +0 -0
  372. {orfdata-0.41.0 → orfdata-0.42.0}/tools/build_reference_ledger.py +0 -0
  373. {orfdata-0.41.0 → orfdata-0.42.0}/tools/dog_result_plan.json +0 -0
  374. {orfdata-0.41.0 → orfdata-0.42.0}/tools/export_dog_lineage.py +0 -0
  375. {orfdata-0.41.0 → orfdata-0.42.0}/tools/export_dog_results.py +0 -0
  376. {orfdata-0.41.0 → orfdata-0.42.0}/tools/export_sqlite_rows.py +0 -0
  377. {orfdata-0.41.0 → orfdata-0.42.0}/tools/extraction_budget.py +0 -0
  378. {orfdata-0.41.0 → orfdata-0.42.0}/tools/ftps_sqlite.py +0 -0
  379. {orfdata-0.41.0 → orfdata-0.42.0}/tools/inspect_dog_results.py +0 -0
  380. {orfdata-0.41.0 → orfdata-0.42.0}/tools/normalize_dog_evidence.py +0 -0
  381. {orfdata-0.41.0 → orfdata-0.42.0}/tools/package_dog_dataset.py +0 -0
  382. {orfdata-0.41.0 → orfdata-0.42.0}/tools/package_sqlite_archive.py +0 -0
  383. {orfdata-0.41.0 → orfdata-0.42.0}/tools/verify_dog_dataset.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orfdata
3
- Version: 0.41.0
3
+ Version: 0.42.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
@@ -64,10 +64,18 @@ normalized sources do not need it.
64
64
  List every bundled, downloadable or buildable resource and what is installed:
65
65
 
66
66
  ```sh
67
- orfdata download list
68
- orfdata download status
67
+ orfdata data list
68
+ orfdata data status
69
+ orfdata data info pfizer-atlas-dog-peptide-evidence
70
+ orfdata data fetch pfizer-atlas-dog-peptide-evidence
71
+ orfdata data path pfizer-atlas-dog-peptide-evidence
69
72
  ```
70
73
 
74
+ `data fetch NAME` downloads a published artifact or builds from pinned sources
75
+ when no artifact is distributed. The same command handles optional catalogues
76
+ such as `openprot-mouse` and datasets such as `peptideatlas-dog-peptides`.
77
+ `downloads` and `download` are aliases for `data`; `info` and `path` stay offline.
78
+
71
79
  `orfdata setup --species human` also installs `gdc-viruses`, the default
72
80
  200-reference GDC viral screen for human transcriptome analysis;
73
81
  `--collections none` skips it. Viral support is part of the base install, and
@@ -32,10 +32,18 @@ normalized sources do not need it.
32
32
  List every bundled, downloadable or buildable resource and what is installed:
33
33
 
34
34
  ```sh
35
- orfdata download list
36
- orfdata download status
35
+ orfdata data list
36
+ orfdata data status
37
+ orfdata data info pfizer-atlas-dog-peptide-evidence
38
+ orfdata data fetch pfizer-atlas-dog-peptide-evidence
39
+ orfdata data path pfizer-atlas-dog-peptide-evidence
37
40
  ```
38
41
 
42
+ `data fetch NAME` downloads a published artifact or builds from pinned sources
43
+ when no artifact is distributed. The same command handles optional catalogues
44
+ such as `openprot-mouse` and datasets such as `peptideatlas-dog-peptides`.
45
+ `downloads` and `download` are aliases for `data`; `info` and `path` stay offline.
46
+
39
47
  `orfdata setup --species human` also installs `gdc-viruses`, the default
40
48
  200-reference GDC viral screen for human transcriptome analysis;
41
49
  `--collections none` skips it. Viral support is part of the base install, and
@@ -0,0 +1,60 @@
1
+ # Canine paired measurements and translation-evidence audit
2
+
3
+ Source check: **28 October 2026**. This audit identifies importable measurement
4
+ files and their limitations. It does not add a dataset to the registry.
5
+ The [machine-readable audit](data/dog-source-audit-20261028.json) contains source
6
+ URLs, hashes, counts, search queries and a candidate sample crosswalk.
7
+
8
+ ## Paired RNA and protein: a verified study
9
+
10
+ [Amini et al., 2021](https://pmc.ncbi.nlm.nih.gov/articles/PMC8042244/)
11
+ studied cancer-associated and normal stroma from archived canine mammary
12
+ carcinomas. The authors explicitly reused the cases of their earlier RNA study.
13
+ Original case 7 was excluded from proteomics because its paraffin block was
14
+ unavailable. Measurements come from separate laser-capture preparations of
15
+ the same tissue cases, not identical RNA/protein aliquots.
16
+
17
+ | Source | Verified processed data | Download |
18
+ | --- | --- | --- |
19
+ | [GSE135183](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE135183) | 18,582 genes × 30 RNA samples, 15 cases with two stromal compartments | [Raw counts, 606 KB compressed](https://ftp.ncbi.nlm.nih.gov/geo/series/GSE135nnn/GSE135183/suppl/GSE135183_raw_counts.csv.gz) |
20
+ | [PXD023023](https://www.ebi.ac.uk/pride/archive/projects/PXD023023) | 1,583 native protein-group rows with 28 LFQ sample columns | [Protein groups, 2.8 MB](https://ftp.pride.ebi.ac.uk/pride/data/archive/2021/03/PXD023023/proteinGroups.txt) |
21
+ | PXD023023 | 5,413 peptide rows with native quantitative fields | [Peptides, 4.5 MB](https://ftp.pride.ebi.ac.uk/pride/data/archive/2021/03/PXD023023/peptides.txt) |
22
+
23
+ The downloaded protein and peptide files match PRIDE's deposited SHA-1 checksums;
24
+ the audit also records SHA-256 for all three processed files. RNA values are
25
+ nonnegative integer counts. Native protein-group counts include controls and
26
+ contaminants and are not counts of confidently detected biological proteins.
27
+
28
+ PRIDE filenames use case numbers 1–15; GEO uses case IDs such as 109 and 135.
29
+ Matching the article's Table 1 to GEO by breed, age and histological subtype
30
+ uniquely reconciles all 14 proteomics cases. The resulting 28 sample links are
31
+ **metadata-derived**, not an author-supplied identifier crosswalk. Breed spelling
32
+ normalizations are recorded. GEO case 127 is the unmatched RNA case.
33
+
34
+ An importer must retain that pairing basis, separate stromal compartments,
35
+ protein-group ambiguity, controls, missing quantities and native units. The
36
+ deposited search used a dated canonical UniProt reference, but its FASTA is not
37
+ among the 31 PRIDE files. Sequence/reference qualification remains necessary;
38
+ these data do not establish ncORF translation. Author-derived contrasts in the
39
+ supplementary workbooks must stay distinct from sample-level measurements.
40
+ Import work remains tracked in [#20](https://github.com/openvax/orfdata/issues/20).
41
+
42
+ ## Dog Ribo-seq and ncORF translation
43
+
44
+ The date-stamped dog-specific SRA, GEO and ENA queries in the audit returned no
45
+ matching sequencing records. This is a bounded repository search, not proof
46
+ that no unpublished or differently indexed experiment exists.
47
+
48
+ [Pfeffer et al., 2015](https://www.nature.com/articles/ncomms9403)
49
+ reports ribosome profiling and total RNA sequencing of canine pancreas rough-ER
50
+ preparations aligned to CanFam3.1/Ensembl 77. Its accession section lists EMDB
51
+ and PDB deposits, without a sequencing accession. No downloadable reads or
52
+ processed ORF-level counts were verified in this audit. Even if recovered, the
53
+ preparation would describe an enriched pancreatic compartment, not a broad
54
+ normal-tissue canine translatome.
55
+
56
+ Existing canine PeptideAtlas, Pfizer and DLA datasets retain their deposited
57
+ canonical-search scope. The experimental dog ncORF search pipeline is a route
58
+ to new analysis, not a released experimentally supported catalogue. Dog ncORF
59
+ translation coverage therefore remains unavailable pending qualified data or
60
+ a separately validated reanalysis. See [#12](https://github.com/openvax/orfdata/issues/12).
@@ -5,6 +5,9 @@ spectrometry has observed. Neither searched for noncanonical ORFs, so they
5
5
  don't add ORFs to the dog proteome
6
6
  ([why dog has no ncORF catalogue](catalogs.md#dog)).
7
7
 
8
+ For a verified paired RNA/protein study and the latest bounded search for dog
9
+ Ribo-seq, see the [canine source audit](dog-data-sources.md).
10
+
8
11
  | Dataset | What it holds | How to get it |
9
12
  |---|---|---|
10
13
  | `kaabinejadian-dog-dla-ligands` | DLA class I ligands from four dog tumours and three DLA-88 monoallelic cell lines | `orfdata datasets download` (CC0, 25 MB) |
@@ -3,8 +3,48 @@
3
3
  ORFdata has one common entry point for data acquisition:
4
4
 
5
5
  ```sh
6
- orfdata download list
7
- orfdata download status
6
+ orfdata data list
7
+ orfdata data list --species dog
8
+ orfdata data info pfizer-atlas-dog-peptide-evidence
9
+ orfdata data fetch pfizer-atlas-dog-peptide-evidence
10
+ orfdata data fetch peptideatlas-dog-peptides openprot-mouse
11
+ orfdata data path pfizer-atlas-dog-peptide-evidence
12
+ orfdata data status
13
+ ```
14
+
15
+ `data`, `downloads` and `download` are aliases for the same command group.
16
+ The `list/info/fetch/path` vocabulary follows other OpenVax download tools.
17
+ `fetch` accepts one or more explicit resource names and chooses the registered
18
+ acquisition route: download an artifact when available, otherwise build locally
19
+ from checksum-pinned source files. All names and required terms are checked
20
+ before the first acquisition. There is no implicit download-all operation.
21
+
22
+ `info NAME` reports the version, source/coverage manifest and distribution
23
+ metadata, including sizes and redistribution terms where declared. `path NAME`
24
+ prints an installed file or directory for scripts; missing data is an error,
25
+ and never triggers a download. Use `--verify` on reads to validate local bytes,
26
+ `--cache-root DIR` to select a cache, and `--json` for machine output.
27
+ `fetch --json` returns one result per distinct requested name.
28
+
29
+ Use `--kind` to disambiguate colliding resource names. For one resource,
30
+ `--version VERSION` selects a historical release and `--source-path ASSET=PATH`
31
+ provides already downloaded catalogue/dataset sources or genome files. Source
32
+ overrides remain checksum-checked. `--force` installs a fresh generation.
33
+ Restricted chain downloads require `--accept-terms` after reviewing `info`.
34
+
35
+ The same operations are available in Python:
36
+
37
+ ```python
38
+ from orfdata import data_info, data_path, fetch_data
39
+
40
+ details = data_info("openprot-mouse") # Offline; shows the build route and terms.
41
+ result = fetch_data("openprot-mouse") # Explicit source download and processing.
42
+ path = data_path("openprot-mouse") # Offline file/directory lookup.
43
+ ```
44
+
45
+ The focused forms remain available for additional resource-specific options:
46
+
47
+ ```sh
8
48
  orfdata download viral --species human
9
49
  orfdata download catalog NAME
10
50
  orfdata download dataset NAME
@@ -14,8 +54,7 @@ orfdata download chains --species human
14
54
  ```
15
55
 
16
56
  The operation comes first so the same discovery and installation model applies
17
- to every resource kind. `orfdata download viral` is therefore the primary
18
- command. Focused command groups such as `orfdata viral coverage` and
57
+ to every resource kind. Focused command groups such as `orfdata viral coverage` and
19
58
  `orfdata viral summary` remain useful for domain-specific inspection.
20
59
 
21
60
  `list` shows every bundled, downloadable or locally buildable primary resource
@@ -44,6 +44,7 @@ nav:
44
44
  - Yeast protein and RNA: copy-yeast.md
45
45
  - Yeast RNA and ribosome occupancy: ingolia-yeast.md
46
46
  - Dog MHC ligands and PeptideAtlas: dog-peptides.md
47
+ - Dog paired-data and Ribo-seq source audit: dog-data-sources.md
47
48
  - Project:
48
49
  - Release notes: https://github.com/openvax/orfdata/blob/main/CHANGELOG.md
49
50
  - Data roadmap: https://github.com/openvax/orfdata/issues/3
@@ -17,6 +17,7 @@ from .catalog import (
17
17
  )
18
18
  from .catalog_manifest import CatalogManifest
19
19
  from .catalogs import CatalogRegistry, build_catalog
20
+ from .data_resources import data_info, data_path, fetch_data
20
21
  from .dataset import QuantitativeDataset
21
22
  from .datasets import DatasetRegistry, build_dataset
22
23
  from .downloads import DataStatus, list_data
@@ -176,6 +177,9 @@ __all__ = [
176
177
  "build_dataset",
177
178
  "DataStatus",
178
179
  "list_data",
180
+ "data_info",
181
+ "data_path",
182
+ "fetch_data",
179
183
  "DatasetManifest",
180
184
  "SourceAsset",
181
185
  "Sample",
@@ -30,10 +30,10 @@ def run(argv=None, prog=None, *, catalog_loader=load_catalog):
30
30
  from .proteome_cli import run as proteome_run
31
31
 
32
32
  return proteome_run(argv[1:], prog=(prog or "orfdata") + " proteome")
33
- if argv and argv[0] == "download":
33
+ if argv and argv[0] in ("data", "download", "downloads"):
34
34
  from .download_cli import run as download_run
35
35
 
36
- return download_run(argv[1:], prog=(prog or "orfdata") + " download")
36
+ return download_run(argv[1:], prog=f"{prog or 'orfdata'} {argv[0]}")
37
37
  if argv and argv[0] == "viral":
38
38
  from .viral_cli import run as viral_run
39
39
 
@@ -56,7 +56,7 @@ def run(argv=None, prog=None, *, catalog_loader=load_catalog):
56
56
  "catalogues with 'orfdata catalogs --help'; lift a catalogue to another assembly with "
57
57
  "'orfdata lift --help' and 'orfdata chains --help'; annotations PyEnsembl lacks, such as "
58
58
  "T2T-CHM13, with 'orfdata genomes --help'; discover and acquire data with "
59
- "'orfdata download --help'; viral coverage, subsets and installed layers with "
59
+ "'orfdata data --help' (also 'downloads' or 'download'); viral coverage, subsets and installed layers with "
60
60
  "'orfdata viral --help'.")
61
61
  _add_query_arguments(parser)
62
62
  args = parser.parse_args(argv)
@@ -0,0 +1,140 @@
1
+ """Named access to optional data, independent of source and species."""
2
+
3
+ from dataclasses import replace
4
+ from pathlib import Path
5
+
6
+ from .downloads import _fetch_command, list_data
7
+
8
+
9
+ def _registry(kind, cache_root):
10
+ from .catalogs import CatalogRegistry
11
+ from .datasets import DatasetRegistry
12
+
13
+ return {"catalog": CatalogRegistry, "dataset": DatasetRegistry}[kind](cache_root=cache_root)
14
+
15
+
16
+ def _resolve(name, kind, version, cache_root, verify_files):
17
+ rows = [r for r in list_data(kind=kind, cache_root=cache_root, verify_files=False)
18
+ if r.name == name]
19
+ if not rows:
20
+ raise ValueError(f"Unknown data resource {name!r}; see 'orfdata data list'")
21
+ if len({r.kind for r in rows}) != 1:
22
+ raise ValueError(f"Ambiguous data resource {name!r}; select --kind")
23
+ row = rows[0]
24
+ if row.kind in ("dataset", "catalog") and row.acquire is not None:
25
+ registry = _registry(row.kind, cache_root)
26
+ manifest = registry.info(name, version)
27
+ inspection = registry.inspect(name, manifest.version, verify_files=verify_files)
28
+ acquire = "download" if registry.published(name, manifest.version) else "build"
29
+ row = replace(row, version=manifest.version, title=manifest.title,
30
+ status=inspection.status, path=str(inspection.path), acquire=acquire,
31
+ origin=acquire if inspection.status == "available" else None)
32
+ elif row.kind == "reference":
33
+ from .datasets import DatasetRegistry
34
+
35
+ registry = DatasetRegistry(cache_root=cache_root)
36
+ dataset, asset = name.split(":", 1)
37
+ manifest = registry.info(dataset, version)
38
+ inspection = registry.inspect_reference(dataset, manifest.version, asset_id=asset,
39
+ verify_files=verify_files)
40
+ row = replace(row, version=manifest.version, status=inspection.status,
41
+ path=str(inspection.path),
42
+ origin="download" if inspection.status == "available" else None)
43
+ else:
44
+ if version is not None and version != row.version:
45
+ raise ValueError(f"{name!r} has version {row.version!r}, not {version!r}")
46
+ if verify_files:
47
+ row = next(r for r in list_data(kind=row.kind, cache_root=cache_root, verify_files=True)
48
+ if r.name == name and r.version == row.version)
49
+ return replace(row, command=_fetch_command(row))
50
+
51
+
52
+ def data_info(name, *, kind=None, version=None, cache_root=None, verify_files=False):
53
+ """Describe a named resource, its pins and acquisition route, entirely offline."""
54
+ row = _resolve(name, kind, version, cache_root, verify_files)
55
+ result = row.to_dict()
56
+ if row.kind in ("catalog", "dataset") and row.acquire is not None:
57
+ registry = _registry(row.kind, cache_root)
58
+ result["manifest"] = registry.info(name, row.version).to_dict()
59
+ result.update(registry.download_metadata(name, row.version))
60
+ elif row.kind == "reference":
61
+ from .datasets import DatasetRegistry
62
+
63
+ dataset, asset = name.split(":", 1)
64
+ registry = DatasetRegistry(cache_root=cache_root)
65
+ result["sources"] = [s.source.to_dict() for s in registry.search_references(dataset, row.version)
66
+ if s.source.asset_id == asset]
67
+ elif row.kind == "chain":
68
+ from dataclasses import asdict
69
+
70
+ from .liftover import pinned_chains
71
+
72
+ result["source"] = asdict(next(c for c in pinned_chains() if c.name == name))
73
+ elif row.kind == "genome":
74
+ from dataclasses import asdict
75
+
76
+ from .genomes import pinned_genomes
77
+
78
+ result["source"] = asdict(next(g for g in pinned_genomes() if g.name == name))
79
+ return result
80
+
81
+
82
+ def data_path(name, *, kind=None, version=None, cache_root=None, verify_files=False):
83
+ """Return an installed file/directory; missing data never triggers acquisition."""
84
+ info = data_info(name, kind=kind, version=version, cache_root=cache_root,
85
+ verify_files=verify_files)
86
+ if not info["installed"] or info["path"] is None:
87
+ raise ValueError(f"{name!r} is {info['status']}; install it with {info['command']}")
88
+ return Path(info["path"])
89
+
90
+
91
+ def fetch_data(name, *, kind=None, version=None, cache_root=None, force=False,
92
+ source_paths=None, timeout=60, show_progress=True, accept_terms=False):
93
+ """Install one resource and return its status, downloading or building as declared.
94
+
95
+ Downloads retain their checksum validation. Builds use the same pinned source
96
+ adapters as the focused commands. Existing valid files are reused; discovery
97
+ and ordinary queries never invoke this function implicitly.
98
+ """
99
+ row = _resolve(name, kind, version, cache_root, True)
100
+ if source_paths is not None and row.kind not in ("catalog", "dataset", "genome"):
101
+ raise ValueError("Source overrides here require a catalogue, dataset or genome; use the focused command for other kinds")
102
+ if row.restricted and not accept_terms:
103
+ raise ValueError(f"{name!r} requires --accept-terms; see 'orfdata data info {name}'")
104
+ if row.acquire is None or (row.installed and not force):
105
+ return dict(row.to_dict(), acquired="already installed")
106
+ if row.kind in ("catalog", "dataset"):
107
+ registry = _registry(row.kind, cache_root)
108
+ options = dict(timeout=timeout, show_progress=show_progress)
109
+ if row.acquire == "download":
110
+ registry.download(name, row.version, force=force, source_paths=source_paths, **options)
111
+ else:
112
+ registry.build(name, row.version, force=force, source_paths=source_paths,
113
+ download_options=options)
114
+ elif row.kind == "reference":
115
+ from .datasets import DatasetRegistry
116
+
117
+ dataset, asset = name.split(":", 1)
118
+ DatasetRegistry(cache_root=cache_root).download_reference(
119
+ dataset, row.version, asset_id=asset, force=force, timeout=timeout,
120
+ show_progress=show_progress)
121
+ elif row.kind == "genome":
122
+ from .genomes import install_genome
123
+
124
+ install_genome(name, cache_root=cache_root, force=force, source_paths=source_paths,
125
+ download_options=dict(timeout=timeout, show_progress=show_progress))
126
+ elif row.kind == "chain":
127
+ from .liftover import download_chain, pinned_chains
128
+
129
+ chain = next(c for c in pinned_chains() if c.name == name)
130
+ download_chain(chain.source_build, chain.target_build, species=chain.species,
131
+ cache_root=cache_root, force=force, accept_terms=accept_terms,
132
+ download_options=dict(timeout=timeout, show_progress=show_progress))
133
+ elif row.kind == "viral":
134
+ from .downloads import install_collection
135
+
136
+ install_collection(name, cache_root=cache_root, force=force, timeout=timeout)
137
+ result = _resolve(name, row.kind, row.version, cache_root, False)
138
+ if not result.installed:
139
+ raise RuntimeError(f"{name!r} installation finished with status {result.status}")
140
+ return dict(result.to_dict(), acquired="downloaded" if row.acquire == "download" else "built")
@@ -1,6 +1,8 @@
1
1
  """Discover and acquire ORFdata resources through one command."""
2
2
 
3
3
  import argparse
4
+ import sys
5
+ from contextlib import redirect_stdout
4
6
 
5
7
  from .cli_output import print_fields, print_json, print_table
6
8
  from .downloads import list_data
@@ -88,6 +90,23 @@ def run(argv=None, prog="orfdata download"):
88
90
  status = commands.add_parser("status", help="Show resources already available locally")
89
91
  _add_discovery(status, status=True)
90
92
 
93
+ for verb, description in (("info", "Describe a resource's source pins and download/build route"),
94
+ ("path", "Print the installed path without downloading"),
95
+ ("fetch", "Install named resources, downloading or building as needed")):
96
+ command = commands.add_parser(verb, help=description)
97
+ command.add_argument("names", metavar="NAME", nargs="+" if verb == "fetch" else None)
98
+ command.add_argument("--kind", choices=("viral", "catalog", "dataset", "reference", "genome", "chain"))
99
+ command.add_argument("--version", help="Exact resource version; defaults to its registered version")
100
+ _add_cache(command)
101
+ _add_json(command)
102
+ if verb == "fetch":
103
+ _add_force_timeout(command)
104
+ command.add_argument("--source-path", action="append", default=[], metavar="ASSET=PATH")
105
+ command.add_argument("--quiet", action="store_true")
106
+ command.add_argument("--accept-terms", action="store_true")
107
+ else:
108
+ command.add_argument("--verify", action="store_true", help="Hash and validate installed files")
109
+
91
110
  viral = commands.add_parser(
92
111
  "viral", help="Download the current human-targeted viral collection and paired FASTAs")
93
112
  viral.add_argument("--species", default="human",
@@ -167,6 +186,36 @@ def run(argv=None, prog="orfdata download"):
167
186
 
168
187
  args = parser.parse_args(argv)
169
188
  try:
189
+ if args.command in ("info", "path", "fetch"):
190
+ from .data_resources import data_info, data_path, fetch_data
191
+
192
+ options = dict(kind=args.kind, version=args.version, cache_root=args.cache_root)
193
+ if args.command == "info":
194
+ _show_result(data_info(args.names, verify_files=args.verify, **options), args.json)
195
+ elif args.command == "path":
196
+ path = str(data_path(args.names, verify_files=args.verify, **options))
197
+ print_json(dict(path=path)) if args.json else print(path)
198
+ else:
199
+ names = list(dict.fromkeys(args.names))
200
+ if len(names) > 1 and (args.source_path or args.version):
201
+ raise ValueError("--source-path and --version require exactly one resource")
202
+ # Resolve every name and terms requirement before starting any downloads.
203
+ for name in names:
204
+ info = data_info(name, **options)
205
+ if info["restricted"] and not args.accept_terms:
206
+ raise ValueError(f"{name!r} requires --accept-terms; see 'orfdata data info {name}'")
207
+ paths = _source_paths(args.source_path, "Source overrides")
208
+ # Source processors may print progress; keep stdout machine-readable.
209
+ with redirect_stdout(sys.stderr):
210
+ output = [fetch_data(name, **options, force=args.force, source_paths=paths,
211
+ timeout=args.timeout, show_progress=not args.quiet and not args.json,
212
+ accept_terms=args.accept_terms) for name in names]
213
+ if args.json:
214
+ print_json(output)
215
+ else:
216
+ for result in output:
217
+ print_fields(result)
218
+ return
170
219
  if args.command in ("list", "status"):
171
220
  rows = list_data(
172
221
  kind=args.kind, species=args.species, contexts=args.context,
@@ -1,8 +1,9 @@
1
1
  """Discover ORFdata resources and their local installation state."""
2
2
 
3
3
  from collections.abc import Iterable
4
- from dataclasses import asdict, dataclass
4
+ from dataclasses import asdict, dataclass, replace
5
5
  from os import PathLike
6
+ from shlex import join
6
7
  from typing import Optional
7
8
 
8
9
  from .reference import canonical_species, species_taxon
@@ -48,6 +49,17 @@ def default_collections(species: str | int) -> tuple[str, ...]:
48
49
  return tuple(collection.name for collection in viral_collections(species=species))
49
50
 
50
51
 
52
+ def _fetch_command(row):
53
+ if row.acquire is None:
54
+ return None
55
+ args = ["orfdata", "data", "fetch", row.name, "--kind", row.kind]
56
+ if row.version is not None:
57
+ args.extend(["--version", row.version])
58
+ if row.restricted:
59
+ args.append("--accept-terms")
60
+ return join(args)
61
+
62
+
51
63
  def collection_state(
52
64
  name: str,
53
65
  *,
@@ -121,13 +133,15 @@ def _viral(cache_root, verify_files):
121
133
  path=str(_bundle_path(cache_root, species, collection)),
122
134
  origin="download" if status == "available" else None,
123
135
  acquire="download",
124
- command=f"orfdata download viral --collection {collection.name}",
136
+ command=None,
125
137
  ))
126
138
  return tuple(rows)
127
139
 
128
140
 
129
141
  def _catalogs(cache_root, verify_files):
130
- from .catalog import catalog_status
142
+ from importlib.resources import files
143
+
144
+ from .catalog import _BUNDLED, catalog_status
131
145
  from .catalogs import CatalogRegistry
132
146
 
133
147
  registry = CatalogRegistry(cache_root=cache_root)
@@ -139,9 +153,6 @@ def _catalogs(cache_root, verify_files):
139
153
  else:
140
154
  inspection = registry.inspect(item.name, item.version, verify_files=verify_files)
141
155
  status = inspection.status
142
- command = None
143
- if item.acquire is not None:
144
- command = f"orfdata download catalog {item.name} --version {item.version}"
145
156
  rows.append(DataStatus(
146
157
  kind="catalog",
147
158
  name=item.name,
@@ -151,10 +162,11 @@ def _catalogs(cache_root, verify_files):
151
162
  taxon_ids=(species_taxon(item.species),),
152
163
  contexts=(),
153
164
  status=status,
154
- path=str(inspection.path) if inspection is not None else None,
165
+ path=(str(inspection.path) if inspection is not None else
166
+ str(files("orfdata").joinpath(f"data/{_BUNDLED[item.species, item.genome_build]}/catalog.json.gz"))),
155
167
  origin=item.installed if status == "available" else None,
156
168
  acquire=item.acquire,
157
- command=command,
169
+ command=None,
158
170
  ))
159
171
  return tuple(rows)
160
172
 
@@ -184,7 +196,7 @@ def _datasets(cache_root, verify_files):
184
196
  path=str(inspection.path),
185
197
  origin=("download" if published else "build") if inspection.status == "available" else None,
186
198
  acquire=acquire,
187
- command=f"orfdata download dataset {name} --version {version}",
199
+ command=None,
188
200
  ))
189
201
  return tuple(rows)
190
202
 
@@ -211,8 +223,7 @@ def _references(cache_root, verify_files):
211
223
  path=str(inspection.path),
212
224
  origin="download" if inspection.status == "available" else None,
213
225
  acquire="download",
214
- command=(f"orfdata download reference {manifest.dataset_id} --version {manifest.version} "
215
- f"--reference {spec.reference.key} --asset {spec.source.asset_id}"),
226
+ command=None,
216
227
  ))
217
228
  return tuple(rows)
218
229
 
@@ -236,7 +247,7 @@ def _genomes(cache_root, verify_files):
236
247
  path=str(inspection.path),
237
248
  origin="download" if inspection.status == "available" else None,
238
249
  acquire="download",
239
- command=f"orfdata download genome {genome.name}",
250
+ command=None,
240
251
  ))
241
252
  return tuple(rows)
242
253
 
@@ -248,7 +259,6 @@ def _chains(cache_root, verify_files):
248
259
  for chain in pinned_chains():
249
260
  inspection = _chain_registry(chain, cache_root).inspect(
250
261
  chain.name, "1", verify_files=verify_files)
251
- accept = " --accept-terms" if chain.restricted else ""
252
262
  rows.append(DataStatus(
253
263
  kind="chain",
254
264
  name=chain.name,
@@ -261,8 +271,7 @@ def _chains(cache_root, verify_files):
261
271
  path=str(inspection.path),
262
272
  origin="download" if inspection.status == "available" else None,
263
273
  acquire="download",
264
- command=(f"orfdata download chains {chain.source_build} {chain.target_build} "
265
- f"--species {chain.species}{accept}"),
274
+ command=None,
266
275
  restricted=chain.restricted,
267
276
  ))
268
277
  return tuple(rows)
@@ -327,4 +336,5 @@ def list_data(
327
336
  if predicate(context in row.contexts for context in selected_contexts)]
328
337
  if installed is not None:
329
338
  rows = [row for row in rows if row.installed is installed]
330
- return tuple(sorted(rows, key=lambda row: (row.kind, row.name, row.version or "")))
339
+ return tuple(replace(row, command=_fetch_command(row)) for row in
340
+ sorted(rows, key=lambda row: (row.kind, row.name, row.version or "")))
@@ -65,7 +65,7 @@ def _registry(genome, cache_root):
65
65
  store_path=lambda name, version: get_data_dir(cache_root) / "genomes" / name / _digest(assets))
66
66
 
67
67
 
68
- def install_genome(name, *, force=False, source_paths=None, cache_root=None):
68
+ def install_genome(name, *, force=False, source_paths=None, cache_root=None, download_options=None):
69
69
  """Download a pinned annotation, check each file's size and SHA-256, and index it for PyEnsembl.
70
70
 
71
71
  ``source_paths`` maps ``"gtf"``, ``"transcripts"`` or ``"proteins"`` to
@@ -79,7 +79,8 @@ def install_genome(name, *, force=False, source_paths=None, cache_root=None):
79
79
  if unknown:
80
80
  raise ValueError(f"Unknown genome files {sorted(unknown)}; use {', '.join(_ROLES)}")
81
81
  paths = {_files(genome)[role]: str(path) for role, path in source_paths.items()}
82
- _registry(genome, cache_root).download(genome.name, "1", force=force, source_paths=paths)
82
+ _registry(genome, cache_root).download(genome.name, "1", force=force, source_paths=paths,
83
+ **(download_options or {}))
83
84
  return _open(genome, cache_root, rebuild=force)
84
85
 
85
86
 
@@ -0,0 +1 @@
1
+ __version__ = "0.42.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orfdata
3
- Version: 0.41.0
3
+ Version: 0.42.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
@@ -64,10 +64,18 @@ normalized sources do not need it.
64
64
  List every bundled, downloadable or buildable resource and what is installed:
65
65
 
66
66
  ```sh
67
- orfdata download list
68
- orfdata download status
67
+ orfdata data list
68
+ orfdata data status
69
+ orfdata data info pfizer-atlas-dog-peptide-evidence
70
+ orfdata data fetch pfizer-atlas-dog-peptide-evidence
71
+ orfdata data path pfizer-atlas-dog-peptide-evidence
69
72
  ```
70
73
 
74
+ `data fetch NAME` downloads a published artifact or builds from pinned sources
75
+ when no artifact is distributed. The same command handles optional catalogues
76
+ such as `openprot-mouse` and datasets such as `peptideatlas-dog-peptides`.
77
+ `downloads` and `download` are aliases for `data`; `info` and `path` stay offline.
78
+
71
79
  `orfdata setup --species human` also installs `gdc-viruses`, the default
72
80
  200-reference GDC viral screen for human transcriptome analysis;
73
81
  `--collections none` skips it. Viral support is part of the base install, and
@@ -10,6 +10,7 @@ test.sh
10
10
  docs/catalogs.md
11
11
  docs/copy-yeast.md
12
12
  docs/coverage.md
13
+ docs/dog-data-sources.md
13
14
  docs/dog-peptides.md
14
15
  docs/downloads.md
15
16
  docs/downstream.md
@@ -41,6 +42,7 @@ orfdata/catalog_manifest.py
41
42
  orfdata/catalogs.py
42
43
  orfdata/cli.py
43
44
  orfdata/cli_output.py
45
+ orfdata/data_resources.py
44
46
  orfdata/dataset.py
45
47
  orfdata/dataset_cli.py
46
48
  orfdata/datasets.py
@@ -130,6 +132,7 @@ tests/test_artifact_archives.py
130
132
  tests/test_catalog_registry.py
131
133
  tests/test_copy.py
132
134
  tests/test_cross_reference_pairing.py
135
+ tests/test_data_resources.py
133
136
  tests/test_dog_export_read_ahead.py
134
137
  tests/test_dog_ncorf_search.py
135
138
  tests/test_dog_peptides.py