orfdata 0.43.1__tar.gz → 0.45.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 (428) hide show
  1. {orfdata-0.43.1/orfdata.egg-info → orfdata-0.45.0}/PKG-INFO +6 -2
  2. {orfdata-0.43.1 → orfdata-0.45.0}/README.md +5 -1
  3. orfdata-0.45.0/docs/cli-design.md +53 -0
  4. orfdata-0.45.0/docs/cli.md +142 -0
  5. {orfdata-0.43.1 → orfdata-0.45.0}/docs/downloads.md +94 -4
  6. {orfdata-0.43.1 → orfdata-0.45.0}/docs/measurements.md +4 -3
  7. {orfdata-0.43.1 → orfdata-0.45.0}/docs/pairing.md +3 -2
  8. {orfdata-0.43.1 → orfdata-0.45.0}/docs/proteome.md +2 -2
  9. {orfdata-0.43.1 → orfdata-0.45.0}/docs/viral.md +5 -2
  10. {orfdata-0.43.1 → orfdata-0.45.0}/mkdocs.yml +2 -0
  11. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/__init__.py +4 -0
  12. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/catalog.py +59 -25
  13. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/catalog_cli.py +61 -19
  14. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/catalogs.py +20 -5
  15. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/cli.py +168 -57
  16. orfdata-0.45.0/orfdata/cli_output.py +194 -0
  17. orfdata-0.45.0/orfdata/cli_parser.py +134 -0
  18. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data_resources.py +47 -15
  19. orfdata-0.45.0/orfdata/dataset_cli.py +295 -0
  20. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/datasets.py +39 -8
  21. orfdata-0.45.0/orfdata/download_cli.py +392 -0
  22. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/downloads.py +107 -27
  23. orfdata-0.45.0/orfdata/errors.py +10 -0
  24. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/genomes.py +4 -2
  25. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/genomes_cli.py +28 -10
  26. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/install.py +45 -13
  27. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/liftover.py +9 -5
  28. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/liftover_cli.py +52 -21
  29. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/net.py +2 -0
  30. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/proteome.py +12 -6
  31. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/proteome_cli.py +34 -28
  32. orfdata-0.45.0/orfdata/version.py +1 -0
  33. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/viral_cli.py +45 -29
  34. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/viral_coverage.py +2 -1
  35. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/viral_panel.py +395 -74
  36. {orfdata-0.43.1 → orfdata-0.45.0/orfdata.egg-info}/PKG-INFO +6 -2
  37. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata.egg-info/SOURCES.txt +8 -0
  38. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_catalog_registry.py +11 -10
  39. orfdata-0.45.0/tests/test_cli_audit.py +390 -0
  40. orfdata-0.45.0/tests/test_cli_options.py +174 -0
  41. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_copy.py +1 -1
  42. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_cross_reference_pairing.py +2 -2
  43. orfdata-0.45.0/tests/test_data_resources.py +387 -0
  44. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_dog_peptides.py +4 -4
  45. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_downloads.py +10 -2
  46. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_evidence_rules.py +7 -3
  47. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_evidence_summary.py +2 -2
  48. orfdata-0.45.0/tests/test_exit_statuses.py +264 -0
  49. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_genbank_equivalence.py +1 -1
  50. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_genomes.py +2 -0
  51. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_ingolia.py +1 -1
  52. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_initiation_context.py +5 -5
  53. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_liftover.py +7 -7
  54. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_local_build_queries.py +6 -6
  55. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_measurements.py +4 -4
  56. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_openprot.py +2 -2
  57. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_paired_selectors.py +16 -2
  58. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pairing.py +1 -1
  59. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer.py +1 -1
  60. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer_rna.py +3 -3
  61. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_proteome.py +14 -14
  62. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_reference_mapping.py +1 -1
  63. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_reference_orf.py +1 -1
  64. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_region_targets.py +2 -2
  65. orfdata-0.45.0/tests/test_resume.py +111 -0
  66. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_search_reference.py +3 -3
  67. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_selectors.py +16 -8
  68. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_uorf_catalog.py +13 -11
  69. orfdata-0.45.0/tests/test_viral_bundle.py +534 -0
  70. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral_cli.py +2 -1
  71. orfdata-0.43.1/orfdata/cli_output.py +0 -48
  72. orfdata-0.43.1/orfdata/dataset_cli.py +0 -187
  73. orfdata-0.43.1/orfdata/download_cli.py +0 -320
  74. orfdata-0.43.1/orfdata/version.py +0 -1
  75. orfdata-0.43.1/tests/test_data_resources.py +0 -161
  76. orfdata-0.43.1/tests/test_viral_bundle.py +0 -228
  77. {orfdata-0.43.1 → orfdata-0.45.0}/LICENSE +0 -0
  78. {orfdata-0.43.1 → orfdata-0.45.0}/MANIFEST.in +0 -0
  79. {orfdata-0.43.1 → orfdata-0.45.0}/deploy.sh +0 -0
  80. {orfdata-0.43.1 → orfdata-0.45.0}/docs/catalogs.md +0 -0
  81. {orfdata-0.43.1 → orfdata-0.45.0}/docs/copy-yeast.md +0 -0
  82. {orfdata-0.43.1 → orfdata-0.45.0}/docs/coverage.md +0 -0
  83. {orfdata-0.43.1 → orfdata-0.45.0}/docs/dog-data-sources.md +0 -0
  84. {orfdata-0.43.1 → orfdata-0.45.0}/docs/dog-peptides.md +0 -0
  85. {orfdata-0.43.1 → orfdata-0.45.0}/docs/downstream.md +0 -0
  86. {orfdata-0.43.1 → orfdata-0.45.0}/docs/examples.md +0 -0
  87. {orfdata-0.43.1 → orfdata-0.45.0}/docs/human-tissue.md +0 -0
  88. {orfdata-0.43.1 → orfdata-0.45.0}/docs/index.md +0 -0
  89. {orfdata-0.43.1 → orfdata-0.45.0}/docs/ingolia-yeast.md +0 -0
  90. {orfdata-0.43.1 → orfdata-0.45.0}/docs/mammary-stroma.md +0 -0
  91. {orfdata-0.43.1 → orfdata-0.45.0}/docs/pfizer-peptides.md +0 -0
  92. {orfdata-0.43.1 → orfdata-0.45.0}/docs/pfizer-protein.md +0 -0
  93. {orfdata-0.43.1 → orfdata-0.45.0}/docs/pfizer-rna.md +0 -0
  94. {orfdata-0.43.1 → orfdata-0.45.0}/docs/reference.md +0 -0
  95. {orfdata-0.43.1 → orfdata-0.45.0}/docs/search-references.md +0 -0
  96. {orfdata-0.43.1 → orfdata-0.45.0}/docs/source-references.md +0 -0
  97. {orfdata-0.43.1 → orfdata-0.45.0}/docs/species.md +0 -0
  98. {orfdata-0.43.1 → orfdata-0.45.0}/docs/storage.md +0 -0
  99. {orfdata-0.43.1 → orfdata-0.45.0}/docs/stylesheets/docs.css +0 -0
  100. {orfdata-0.43.1 → orfdata-0.45.0}/docs.sh +0 -0
  101. {orfdata-0.43.1 → orfdata-0.45.0}/lint.sh +0 -0
  102. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/_pinned_genome.py +0 -0
  103. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/_structure.py +0 -0
  104. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/artifact_archives.py +0 -0
  105. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/build.py +0 -0
  106. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/catalog_manifest.py +0 -0
  107. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/catalogs.json +0 -0
  108. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/chains.json +0 -0
  109. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/datasets.json +0 -0
  110. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/genomes.json +0 -0
  111. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/ires/rfam-15.1-human-ires.json +0 -0
  112. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/orf-evidence/AUTHOR-LICENSE.txt +0 -0
  113. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/orf-evidence/NOTICE.txt +0 -0
  114. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/orf-evidence/catalog.json.gz +0 -0
  115. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/orf-evidence/manifest.json +0 -0
  116. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/uorf-evidence/AUTHOR-LICENSE.txt +0 -0
  117. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/uorf-evidence/NOTICE.txt +0 -0
  118. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/uorf-evidence/catalog.json.gz +0 -0
  119. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/uorf-evidence/manifest.json +0 -0
  120. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/viral/NOTICE.md +0 -0
  121. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/viral/gdc-grch38-d1-vd1-coverage.tsv +0 -0
  122. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/viral/gdc-grch38-d1-vd1-genbank.tsv +0 -0
  123. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/viral/gdc-grch38-d1-vd1-pave.tsv +0 -0
  124. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/viral/hpv16-refseq-CDS.json.gz +0 -0
  125. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/data/viral/subsets.yaml +0 -0
  126. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/dataset.py +0 -0
  127. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/ensembl.py +0 -0
  128. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/evidence.py +0 -0
  129. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/evidence_summary.py +0 -0
  130. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/fasta.py +0 -0
  131. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/genbank.py +0 -0
  132. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/gtf.py +0 -0
  133. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/initiation_context.py +0 -0
  134. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/measurements.py +0 -0
  135. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/model.py +0 -0
  136. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/numeric_vector.py +0 -0
  137. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/pairing.py +0 -0
  138. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/record_sources.py +0 -0
  139. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/reference.py +0 -0
  140. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/reference_ledger.py +0 -0
  141. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/reference_mapping.py +0 -0
  142. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/reference_table.py +0 -0
  143. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/refseq.py +0 -0
  144. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/rna.py +0 -0
  145. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/search_reference.py +0 -0
  146. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sequence.py +0 -0
  147. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/__init__.py +0 -0
  148. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/copy.py +0 -0
  149. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/ingolia.py +0 -0
  150. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/kaabinejadian.py +0 -0
  151. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/mammary_stroma.py +0 -0
  152. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/ncorf_mammals.py +0 -0
  153. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/openprot.py +0 -0
  154. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/peptideatlas.py +0 -0
  155. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer.py +0 -0
  156. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_attribution.py +0 -0
  157. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_dataset.py +0 -0
  158. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_definitions.py +0 -0
  159. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_evidence.py +0 -0
  160. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_lineage.py +0 -0
  161. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_native.py +0 -0
  162. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_queries.py +0 -0
  163. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_rna.py +0 -0
  164. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/pfizer_vendor.py +0 -0
  165. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/riborf.py +0 -0
  166. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/riborf_native.py +0 -0
  167. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/sources/wang.py +0 -0
  168. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/viral.py +0 -0
  169. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/viral_annotation.py +0 -0
  170. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/viral_registry.py +0 -0
  171. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata/viral_subsets.py +0 -0
  172. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata.egg-info/dependency_links.txt +0 -0
  173. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata.egg-info/entry_points.txt +0 -0
  174. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata.egg-info/requires.txt +0 -0
  175. {orfdata-0.43.1 → orfdata-0.45.0}/orfdata.egg-info/top_level.txt +0 -0
  176. {orfdata-0.43.1 → orfdata-0.45.0}/pyproject.toml +0 -0
  177. {orfdata-0.43.1 → orfdata-0.45.0}/setup.cfg +0 -0
  178. {orfdata-0.43.1 → orfdata-0.45.0}/test.sh +0 -0
  179. {orfdata-0.43.1 → orfdata-0.45.0}/tests/conftest.py +0 -0
  180. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/aggregate_evidence.json +0 -0
  181. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/GSM1905474.soft +0 -0
  182. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/GSM1905474_KL9_fpkm.txt.gz +0 -0
  183. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/GSM1905476.soft +0 -0
  184. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/GSM1905476_KL10_fpkm.txt.gz +0 -0
  185. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/GSM1905478.soft +0 -0
  186. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/GSM1905478_KL11_fpkm.txt.gz +0 -0
  187. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/GSM1905479.soft +0 -0
  188. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/GSM1905479_KL12_fpkm.txt.gz +0 -0
  189. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/NOTICE.md +0 -0
  190. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/expected.json +0 -0
  191. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/geo-series.soft +0 -0
  192. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/manifest.json +0 -0
  193. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/methods.pdf +0 -0
  194. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/paper.xml +0 -0
  195. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/pmc-metadata.json +0 -0
  196. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/qconcat.fasta +0 -0
  197. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/copy/workbook.xlsx +0 -0
  198. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/README.md +0 -0
  199. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/gtf.gz +0 -0
  200. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/internal-stop/gtf.gz +0 -0
  201. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/internal-stop/manifest.json +0 -0
  202. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/internal-stop/ncrna.gz +0 -0
  203. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/internal-stop/protein.gz +0 -0
  204. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/internal-stop/rna.gz +0 -0
  205. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/manifest.json +0 -0
  206. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/ncrna.gz +0 -0
  207. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/protein.gz +0 -0
  208. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ensembl/rna.gz +0 -0
  209. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346111.metadata.txt +0 -0
  210. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346111.quant.txt.gz +0 -0
  211. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346114.metadata.txt +0 -0
  212. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346114.quant.txt.gz +0 -0
  213. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346115.metadata.txt +0 -0
  214. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346115.quant.txt.gz +0 -0
  215. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346116.metadata.txt +0 -0
  216. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346116.quant.txt.gz +0 -0
  217. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346117.metadata.txt +0 -0
  218. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346117.quant.txt.gz +0 -0
  219. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346118.metadata.txt +0 -0
  220. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346118.quant.txt.gz +0 -0
  221. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346120.metadata.txt +0 -0
  222. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346120.quant.txt.gz +0 -0
  223. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346122.metadata.txt +0 -0
  224. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/GSM346122.quant.txt.gz +0 -0
  225. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/NOTICE.md +0 -0
  226. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/expected.json +0 -0
  227. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/manifest.json +0 -0
  228. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ingolia/readMe.txt.gz +0 -0
  229. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/kaabinejadian/README.md +0 -0
  230. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/kaabinejadian/Results.zip +0 -0
  231. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/kaabinejadian/manifest-v1.json +0 -0
  232. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/kaabinejadian/manifest.json +0 -0
  233. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/kaabinejadian/sdrf.tsv +0 -0
  234. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/mammary_stroma/NOTICE.md +0 -0
  235. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/mammary_stroma/geo.soft.gz +0 -0
  236. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/mammary_stroma/manifest.json +0 -0
  237. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/mammary_stroma/paper.xml +0 -0
  238. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/mammary_stroma/peptides.txt +0 -0
  239. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/mammary_stroma/project.json +0 -0
  240. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/mammary_stroma/proteinGroups.txt +0 -0
  241. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/mammary_stroma/rna.csv.gz +0 -0
  242. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/README.md +0 -0
  243. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/S3.xlsx +0 -0
  244. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/ensembl107.cdna.fa.gz +0 -0
  245. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/ensembl107.gtf.gz +0 -0
  246. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/human-ensembl107.gtf.gz +0 -0
  247. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/human.bed +0 -0
  248. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/human.pep.fa +0 -0
  249. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/mouse.bed +0 -0
  250. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/ncorf_mammals/mouse.pep.fa +0 -0
  251. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/openprot/README.md +0 -0
  252. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/openprot/ensembl106.cdna.fa.gz +0 -0
  253. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/openprot/ensembl106.gtf.gz +0 -0
  254. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.bed.zip +0 -0
  255. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.fasta.zip +0 -0
  256. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/openprot/mouse-openprot-2_2-altprots+isoforms-min_2_pep-GRCm39.106.tsv.zip +0 -0
  257. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/peptideatlas/README.md +0 -0
  258. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/peptideatlas/atlas_build.tsv.zip +0 -0
  259. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/peptideatlas/ensembl.pep.fa.gz +0 -0
  260. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/peptideatlas/manifest.json +0 -0
  261. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/NOTICE.md +0 -0
  262. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/dog/expected.json +0 -0
  263. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/dog/manifest.json +0 -0
  264. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/dog/protein.tsv +0 -0
  265. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/dog/search.fasta +0 -0
  266. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/human/expected.json +0 -0
  267. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/human/manifest.json +0 -0
  268. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/human/protein.tsv +0 -0
  269. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/human/search.fasta +0 -0
  270. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/mouse/expected.json +0 -0
  271. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/mouse/manifest.json +0 -0
  272. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/mouse/protein.tsv +0 -0
  273. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/mouse/search.fasta +0 -0
  274. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/NOTICE.md +0 -0
  275. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/acquisition-missingness.json +0 -0
  276. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/definitions.json +0 -0
  277. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/dog-panel.json +0 -0
  278. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/membership-search-slice.fasta +0 -0
  279. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/memberships.json +0 -0
  280. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/native.json +0 -0
  281. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/parent-status-search-slice.fasta +0 -0
  282. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/parent-status.json +0 -0
  283. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/psm-parent-sets-search-slice.fasta +0 -0
  284. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/psm-parent-sets.json +0 -0
  285. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/search-slice.fasta +0 -0
  286. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/search-slice.json +0 -0
  287. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/study-slice.xml +0 -0
  288. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer/vendor/summary-samples.json +0 -0
  289. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/GSE325522_family.soft.gz +0 -0
  290. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/GSE325523_family.soft.gz +0 -0
  291. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/GSE325525_family.soft.gz +0 -0
  292. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/NOTICE.md +0 -0
  293. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/counts.csv.gz +0 -0
  294. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/dog-annotation.gtf.gz +0 -0
  295. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/dog-expected.json +0 -0
  296. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/dog-manifest.json +0 -0
  297. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/mouse-annotation.gtf.gz +0 -0
  298. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/mouse-expected.json +0 -0
  299. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/mouse-manifest.json +0 -0
  300. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/pfizer_rna/samples.xlsx +0 -0
  301. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/README.md +0 -0
  302. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/canis_lupus_familiaris.json +0 -0
  303. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/context-keys-v0.4.json +0 -0
  304. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/ensembl115.json +0 -0
  305. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/homo_sapiens.json +0 -0
  306. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/mitochondrial.json +0 -0
  307. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/mus_musculus.json +0 -0
  308. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/saccharomyces_cerevisiae.json +0 -0
  309. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/transcript_orf_v1_0.42.0.json +0 -0
  310. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/references/uniprot_literature.json +0 -0
  311. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/regions/NOTICE.md +0 -0
  312. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/regions/ingolia.json +0 -0
  313. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/README.md +0 -0
  314. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/SD3.xlsx +0 -0
  315. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/ensembl107.cdna.fa.gz +0 -0
  316. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/ensembl107.gtf.gz +0 -0
  317. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/ensembl107.ncrna.fa.gz +0 -0
  318. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/gencodeM25.gtf.gz +0 -0
  319. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/gencodeM25.rna.fa.gz +0 -0
  320. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/human-ensembl105.cdna.fa.gz +0 -0
  321. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/human-ensembl105.gtf.gz +0 -0
  322. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/human-ensembl105.ncrna.fa.gz +0 -0
  323. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/v3-manifest.json +0 -0
  324. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/worm-ensembl105.cdna.fa.gz +0 -0
  325. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/worm-ensembl105.gtf.gz +0 -0
  326. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/worm-ensembl105.ncrna.fa.gz +0 -0
  327. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/yeast-ensembl115.cdna.fa.gz +0 -0
  328. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/yeast-ensembl115.dna.fa.gz +0 -0
  329. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/yeast-ensembl115.gtf.gz +0 -0
  330. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/zebrafish-ensembl115.cdna.fa.gz +0 -0
  331. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/zebrafish-ensembl115.gtf.gz +0 -0
  332. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/riborf/zebrafish-ensembl115.ncrna.fa.gz +0 -0
  333. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/search_reference/NOTICE.md +0 -0
  334. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/search_reference/dog.fasta +0 -0
  335. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/search_reference/ensembl83-expected.json +0 -0
  336. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/search_reference/ensembl83-human.fasta.gz +0 -0
  337. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/search_reference/expected.json +0 -0
  338. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/README.md +0 -0
  339. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/generate.py +0 -0
  340. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/v1.json +0 -0
  341. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/v1.sqlite +0 -0
  342. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/v2.json +0 -0
  343. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/v2.sqlite +0 -0
  344. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/v3.json +0 -0
  345. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/v3.sqlite +0 -0
  346. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/v4.json +0 -0
  347. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/storage/v4.sqlite +0 -0
  348. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/viral/GRCh83.d1.vd1_virus_decoy.txt.gz +0 -0
  349. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/viral/NC_001526.4.gb.gz +0 -0
  350. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/viral/genbank/HBV__X04615.1.gb.gz +0 -0
  351. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/viral/genbank/HPV16__K02718.1.gb.gz +0 -0
  352. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/viral/genbank/HPV35__X74477.1.gb.gz +0 -0
  353. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/viral/genbank/HPV51__M62877.1.gb.gz +0 -0
  354. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/viral/genbank/HPV56__X74483.1.gb.gz +0 -0
  355. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/wang/NOTICE.md +0 -0
  356. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/wang/annotation.gtf.gz +0 -0
  357. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/wang/copies.zip +0 -0
  358. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/wang/expected.json +0 -0
  359. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/wang/manifest.json +0 -0
  360. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/wang/protein.zip +0 -0
  361. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/wang/rna.zip +0 -0
  362. {orfdata-0.43.1 → orfdata-0.45.0}/tests/data/wang/search.fasta.gz +0 -0
  363. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_artifact_archives.py +0 -0
  364. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_dog_export_read_ahead.py +0 -0
  365. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_dog_ncorf_search.py +0 -0
  366. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_ensembl.py +0 -0
  367. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_ensembl_search_reference.py +0 -0
  368. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_export_sqlite_rows.py +0 -0
  369. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_extraction_budget.py +0 -0
  370. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_ftps_sqlite.py +0 -0
  371. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_genbank.py +0 -0
  372. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_genetic_codes.py +0 -0
  373. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_mammary_stroma.py +0 -0
  374. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_merge_catalogs.py +0 -0
  375. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_more_species.py +0 -0
  376. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_ncorf_mammals.py +0 -0
  377. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_numeric_vector.py +0 -0
  378. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_orf_cases.py +0 -0
  379. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_orf_gtf.py +0 -0
  380. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_package_dog_dataset.py +0 -0
  381. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_package_sqlite_archive.py +0 -0
  382. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer_attribution.py +0 -0
  383. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer_dataset.py +0 -0
  384. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer_definitions.py +0 -0
  385. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer_evidence.py +0 -0
  386. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer_lineage.py +0 -0
  387. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer_native.py +0 -0
  388. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_pfizer_vendor.py +0 -0
  389. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_protein_set.py +0 -0
  390. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_proteome_external.py +0 -0
  391. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_proteome_fasta_tokens.py +0 -0
  392. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_proteome_producer_graph.py +0 -0
  393. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_reference_context.py +0 -0
  394. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_reference_ledger.py +0 -0
  395. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_reference_table.py +0 -0
  396. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_refseq.py +0 -0
  397. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_riborf.py +0 -0
  398. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_storage.py +0 -0
  399. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_transcript_orf_serialization.py +0 -0
  400. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_verify_dog_dataset.py +0 -0
  401. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral.py +0 -0
  402. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral_collections.py +0 -0
  403. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral_completeness.py +0 -0
  404. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral_coverage.py +0 -0
  405. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral_initiation.py +0 -0
  406. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral_origin_join.py +0 -0
  407. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral_sources.py +0 -0
  408. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_viral_subsets.py +0 -0
  409. {orfdata-0.43.1 → orfdata-0.45.0}/tests/test_wang.py +0 -0
  410. {orfdata-0.43.1 → orfdata-0.45.0}/tools/README-dog-results.md +0 -0
  411. {orfdata-0.43.1 → orfdata-0.45.0}/tools/__init__.py +0 -0
  412. {orfdata-0.43.1 → orfdata-0.45.0}/tools/build_dog_dataset.py +0 -0
  413. {orfdata-0.43.1 → orfdata-0.45.0}/tools/build_gdc_viral_coverage.py +0 -0
  414. {orfdata-0.43.1 → orfdata-0.45.0}/tools/build_hpv16_cds.py +0 -0
  415. {orfdata-0.43.1 → orfdata-0.45.0}/tools/build_reference_ledger.py +0 -0
  416. {orfdata-0.43.1 → orfdata-0.45.0}/tools/dog_result_plan.json +0 -0
  417. {orfdata-0.43.1 → orfdata-0.45.0}/tools/export_dog_lineage.py +0 -0
  418. {orfdata-0.43.1 → orfdata-0.45.0}/tools/export_dog_results.py +0 -0
  419. {orfdata-0.43.1 → orfdata-0.45.0}/tools/export_sqlite_rows.py +0 -0
  420. {orfdata-0.43.1 → orfdata-0.45.0}/tools/extraction_budget.py +0 -0
  421. {orfdata-0.43.1 → orfdata-0.45.0}/tools/ftps_sqlite.py +0 -0
  422. {orfdata-0.43.1 → orfdata-0.45.0}/tools/inspect_dog_results.py +0 -0
  423. {orfdata-0.43.1 → orfdata-0.45.0}/tools/normalize_dog_evidence.py +0 -0
  424. {orfdata-0.43.1 → orfdata-0.45.0}/tools/package_dog_dataset.py +0 -0
  425. {orfdata-0.43.1 → orfdata-0.45.0}/tools/package_sqlite_archive.py +0 -0
  426. {orfdata-0.43.1 → orfdata-0.45.0}/tools/verify_dog_dataset.py +0 -0
  427. {orfdata-0.43.1 → orfdata-0.45.0}/tools/verify_mammary_stroma.py +0 -0
  428. {orfdata-0.43.1 → orfdata-0.45.0}/tools/verify_riborf_native.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orfdata
3
- Version: 0.43.1
3
+ Version: 0.45.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
@@ -61,9 +61,11 @@ downloaded explicitly and checked against their pinned checksums. The
61
61
  database through its custom VFS; released dataset queries and rebuilds from
62
62
  normalized sources do not need it.
63
63
 
64
- List every bundled, downloadable or buildable resource and what is installed:
64
+ Run `orfdata` for the command guide, or `orfdata help data` to discover data
65
+ subcommands. List downloadable or buildable resources and what is installed:
65
66
 
66
67
  ```sh
68
+ orfdata
67
69
  orfdata data list
68
70
  orfdata data status
69
71
  orfdata data info pfizer-atlas-dog-peptide-evidence
@@ -75,6 +77,8 @@ orfdata data path pfizer-atlas-dog-peptide-evidence
75
77
  when no artifact is distributed. The same command handles optional catalogues
76
78
  such as `openprot-mouse` and datasets such as `peptideatlas-dog-peptides`.
77
79
  `downloads` and `download` are aliases for `data`; `info` and `path` stay offline.
80
+ Output is readable by default; use `--json` for scripts and `--limit 0` for full
81
+ human tables. See the [CLI guide and migration notes](https://openvax.github.io/orfdata/cli/).
78
82
 
79
83
  `orfdata setup --species human` also installs `gdc-viruses`, the default
80
84
  200-reference GDC viral screen for human transcriptome analysis;
@@ -29,9 +29,11 @@ downloaded explicitly and checked against their pinned checksums. The
29
29
  database through its custom VFS; released dataset queries and rebuilds from
30
30
  normalized sources do not need it.
31
31
 
32
- List every bundled, downloadable or buildable resource and what is installed:
32
+ Run `orfdata` for the command guide, or `orfdata help data` to discover data
33
+ subcommands. List downloadable or buildable resources and what is installed:
33
34
 
34
35
  ```sh
36
+ orfdata
35
37
  orfdata data list
36
38
  orfdata data status
37
39
  orfdata data info pfizer-atlas-dog-peptide-evidence
@@ -43,6 +45,8 @@ orfdata data path pfizer-atlas-dog-peptide-evidence
43
45
  when no artifact is distributed. The same command handles optional catalogues
44
46
  such as `openprot-mouse` and datasets such as `peptideatlas-dog-peptides`.
45
47
  `downloads` and `download` are aliases for `data`; `info` and `path` stay offline.
48
+ Output is readable by default; use `--json` for scripts and `--limit 0` for full
49
+ human tables. See the [CLI guide and migration notes](https://openvax.github.io/orfdata/cli/).
46
50
 
47
51
  `orfdata setup --species human` also installs `gdc-viruses`, the default
48
52
  200-reference GDC viral screen for human transcriptome analysis;
@@ -0,0 +1,53 @@
1
+ # CLI design and audit
2
+
3
+ ORFdata's command line is for discovering data, inspecting local state, acquiring
4
+ explicitly selected resources, and exporting records for other tools. Running
5
+ `orfdata` should explain these tasks without loading a catalogue or downloading
6
+ anything.
7
+
8
+ The design follows the [Command Line Interface Guidelines](https://clig.dev/#help):
9
+ show help for bare command groups, make subcommands discoverable, keep successful
10
+ output brief, and offer explicit machine formats. The output conventions also
11
+ draw on OpenVax's OncoRef inventory summaries and MHCtools' shared table formatter.
12
+
13
+ ## Conventions
14
+
15
+ - `orfdata`, `orfdata help`, and `orfdata --help` show the command index.
16
+ - `orfdata help COMMAND` and `orfdata COMMAND --help` show command help.
17
+ - Human summaries and tables are the default. `--json` selects a complete JSON
18
+ document. Export commands also offer explicit formats such as FASTA or JSONL.
19
+ - Human tables preview 25 rows; `--limit 0` shows all rows. Machine exports are
20
+ complete regardless of the preview limit. Wrapping is only for human output.
21
+ - Results go to stdout; progress and errors go to stderr. Proteome FASTA stays on
22
+ stdout and its build summary stays on stderr, as does the lift summary.
23
+ - Discovery and help never acquire resources. Downloads and builds require an
24
+ explicit acquisition command and continue to enforce source terms and pins.
25
+ - Errors identify the problem and return a status a script can branch on: 1 when
26
+ the command fails, 2 for a command-line mistake the parser or the command's own
27
+ checks catch (library code validates a few values itself, and those exit 1), and 3 when a
28
+ resource it needs isn't installed. Only command-line mistakes point to command
29
+ help; a missing installation names the command that installs it. Unexpected
30
+ internal errors keep their traceback rather than being reported as user errors.
31
+
32
+ ## Audit
33
+
34
+ The command audit tests enumerate the parser tree, exercise help and bare groups,
35
+ and run each leaf with offline fixtures. Acquisition tests use tiny files or
36
+ replace the external acquisition boundary; they do not fetch production datasets
37
+ or rebuild genome indexes. Export tests check structured payloads separately from
38
+ human previews. This keeps the audit reproducible and small enough for CI.
39
+
40
+ Every Tests workflow run attaches `cli-audit-python-VERSION` artifacts containing
41
+ the actual help and command transcripts. Run the same audit locally with:
42
+
43
+ ```sh
44
+ ORFDATA_CLI_AUDIT_DIR=/tmp/orfdata-cli-audit python -m pytest tests/test_cli_audit.py
45
+ ```
46
+
47
+ The audit currently exercises 43 leaf commands in both human and JSON modes, plus
48
+ the top-level guide, version, command aliases, nested help, errors, bounded
49
+ previews, and complete machine exports. Its parser enumeration fails if a new
50
+ command has no execution case. A tiny FASTA inventory file replaces the inventory
51
+ download; other acquisitions use checksum-pinned fixtures and fixture viral
52
+ records through the real handlers. These checks are not production dataset
53
+ download or biological coverage validation.
@@ -0,0 +1,142 @@
1
+ # Command-line guide
2
+
3
+ Run `orfdata` to see the command index and common starting points. It prints
4
+ help and exits without reading a catalogue or acquiring data.
5
+
6
+ ```sh
7
+ orfdata
8
+ orfdata help data
9
+ orfdata data list --species dog
10
+ orfdata data status
11
+ orfdata data info pfizer-atlas-dog-protein
12
+ orfdata data fetch pfizer-atlas-dog-protein
13
+ orfdata data path pfizer-atlas-dog-protein
14
+ ```
15
+
16
+ `list` shows registered resources, including resources that need a local build.
17
+ `status` shows resources with files in the selected local cache, including bundled
18
+ data, damaged installs that `data fetch` will repair, and unreadable ones, whose
19
+ permissions need fixing (or `--force` to replace them). Each damaged or unreadable
20
+ row's exact fetch command is printed below the table. Neither command downloads
21
+ anything. Use `--cache-root DIR` if your data
22
+ lives outside the default cache, and `--verify` when you want to hash local files.
23
+
24
+ ## Finding commands
25
+
26
+ `orfdata help COMMAND` and `orfdata COMMAND --help` are equivalent. Bare command
27
+ groups such as `orfdata datasets` show their subcommands. `download` and
28
+ `downloads` are aliases for `data`.
29
+
30
+ | Command | Purpose | Subcommands |
31
+ | --- | --- | --- |
32
+ | `data` | Discover and acquire resources across all sources | `list`, `status`, `info`, `path`, `fetch`, `catalog`, `dataset`, `reference`, `genome`, `chains`, `viral` |
33
+ | `query` | Preview or export ORF records | Use `--gene`, `--transcript`, `--orf-id`, `--species`, or `--catalog` |
34
+ | `catalogs` | Manage optional ORF catalogues | `list`, `status`, `info`, `inspect`, `download`, `build`, `query` |
35
+ | `datasets` | Manage quantitative measurements and their source references | `list`, `info`, `inspect`, `download`, `build`, `query`, `pairs`, `references`, `download-reference`, `inspect-reference`, `query-reference` |
36
+ | `proteome` | Export a reference proteome as FASTA | Use `--species` and `--release`, or `--genome` |
37
+ | `viral` | Inspect viral reference coverage and installed layers | `coverage`, `contexts`, `subsets`, `summary`, `completeness`, `inventory download` |
38
+ | `setup` | Install a species' default catalogues, chains and collections | Requires `--species` |
39
+ | `genomes` | Manage pinned annotations | `list`, `install` |
40
+ | `chains` | Manage assembly mapping files | `list`, `download` |
41
+ | `lift` | Write an ORF catalogue on another assembly | Requires `--to` and `--output` |
42
+
43
+ `--cache-root DIR` works before or after a subcommand in every command group, so
44
+ these are the same (`viral coverage`, `contexts` and `subsets` read packaged data
45
+ only and refuse it):
46
+
47
+ ```sh
48
+ orfdata datasets --cache-root /path/to/cache query pfizer-atlas-dog-protein
49
+ orfdata datasets query pfizer-atlas-dog-protein --cache-root /path/to/cache
50
+ ```
51
+
52
+ Every command that downloads takes `--timeout SECONDS`: how long a download may
53
+ stall before it is retried, then fails (default 60; `--timeout none` waits
54
+ indefinitely). The chromosome FASTA that `genomes install --genome-fasta` passes
55
+ to PyEnsembl is downloaded without a timeout. The `--registry` option of
56
+ `catalogs` and `datasets` stays before the subcommand:
57
+ `orfdata catalogs --registry registry.json list`.
58
+
59
+ ## Human previews and complete exports
60
+
61
+ Tables and short field summaries are the default. Tables show up to 25 entries;
62
+ `--limit N` changes the preview and `--limit 0` shows every row. Tables wrap to
63
+ terminal width. Metadata summaries omit bulky pins, processing details and long
64
+ lists with a pointer to the full export.
65
+
66
+ Use explicit formats in scripts:
67
+
68
+ ```sh
69
+ orfdata data list --species dog --json
70
+ orfdata catalogs info ncorf-mammals-mouse --json
71
+ orfdata query --gene TPST1 --json
72
+ orfdata query --species mouse --format fasta > mouse-ncorfs.fasta
73
+ orfdata datasets query pfizer-atlas-dog-protein --unit iBAQ --format jsonl
74
+ orfdata datasets pairs canine-mammary-stroma --basis same_specimen --json
75
+ ```
76
+
77
+ `--json` emits one complete JSON document. Dataset `query` and `pairs` return
78
+ JSON arrays; `--format jsonl` streams one original record per line. ORF queries
79
+ also support `--format tsv`, `fasta`, and `gtf`. Viral coverage supports TSV.
80
+ The preview limit never truncates a machine export.
81
+
82
+ Measurement previews keep native units, scales and statuses, display values to
83
+ six significant digits, and abbreviate long identifiers. Exports retain full
84
+ identifiers and numeric precision. Reference
85
+ labels distinguish scoped identifiers that happen to have the same spelling.
86
+ Mapped measurements show the original observation and its mapping attribution;
87
+ pair previews show their pairing basis, temporal relationship and target
88
+ relationship. Full reference identities and provenance remain in JSON/JSONL.
89
+
90
+ ## Exit statuses
91
+
92
+ | Status | Meaning |
93
+ | --- | --- |
94
+ | 0 | The command succeeded. |
95
+ | 1 | The command failed: a download or checksum failed, local data or a file you passed is damaged or inconsistent, or a name the data is searched for isn't there (for example an unknown resource name or ORF ID). |
96
+ | 2 | The command line is invalid, as the parser or the command's own checks find it: an unknown command or option, a missing argument, options that can't be combined, a restricted resource without `--accept-terms`, an out-of-range locus or length, or a value the command checks against the choices it lists (for example a dataset `--reference`). The message points to `--help`. |
97
+ | 3 | A resource the command needs isn't installed. The message names the command that installs it, such as `orfdata data fetch NAME`. |
98
+
99
+ Those checks run before anything is read, so the mistakes they catch exit 2
100
+ whatever is installed. Some option values are checked only by the library code
101
+ that uses them, and a bad one there exits 1 like any other failure: for example,
102
+ an unknown `orfdata viral coverage --context` or `datasets pairs --basis`.
103
+
104
+ In Python, a missing installation raises `orfdata.NotInstalledError`, which is
105
+ also a `FileNotFoundError` and a `ValueError`. Up to 0.43, nearly every failure
106
+ exited 2 (a partial `setup` exited 1); scripts that tested for 2 should test for
107
+ a nonzero status, or for 3 before installing what is missing.
108
+
109
+ ## Output streams
110
+
111
+ Results and exports go to stdout. Progress and errors go to stderr. `data path`
112
+ and `viral inventory download` print a plain path by default. `proteome` writes
113
+ FASTA to stdout unless `--output` is supplied; its summary goes to stderr.
114
+ `lift` writes its catalogue to `--output` and also summarizes on stderr. For
115
+ these two commands, `--json` selects the summary format on stderr.
116
+
117
+ ## Migrating scripts from 0.42 or 0.43
118
+
119
+ Bare `orfdata` now shows help. Use `orfdata query --json` for the previous
120
+ unfiltered JSON catalogue export. Existing root query flags (for example,
121
+ `orfdata --gene TPST1`) still select the same records, with a human preview by
122
+ default.
123
+
124
+ Add `--json` to management commands or ORF queries whose JSON output your script
125
+ parses. Add `--format jsonl` to dataset queries or paired-measurement exports to
126
+ retain their previous streaming representation. Explicit FASTA, TSV and GTF
127
+ exports retain their formats.
128
+
129
+ Check exit statuses again: failures now exit 1, command-line mistakes 2 and a
130
+ missing installation 3, where 0.42 and 0.43 exited 2 for nearly every failure (see
131
+ [Exit statuses](#exit-statuses)). `orfdata data status` and
132
+ `list_data(local=True)` now include damaged and unreadable installations, so a
133
+ script that reads them as usable installations only should filter on
134
+ `installed`.
135
+
136
+ Stored data keeps its format, apart from viral collections: new installs go to a
137
+ store that earlier versions don't read, and collections they installed still
138
+ open. The [release notes](https://github.com/openvax/orfdata/blob/main/CHANGELOG.md)
139
+ list every change, including those to Python APIs.
140
+
141
+ The [CLI design and audit](cli-design.md) explains the conventions and the
142
+ fixture-backed command audit that checks them in CI.
@@ -1,5 +1,6 @@
1
1
  # Discover and download data
2
2
 
3
+ Run `orfdata` for the command guide, or `orfdata data` to see its subcommands.
3
4
  ORFdata has one common entry point for data acquisition:
4
5
 
5
6
  ```sh
@@ -24,12 +25,20 @@ metadata, including sizes and redistribution terms where declared. `path NAME`
24
25
  prints an installed file or directory for scripts; missing data is an error,
25
26
  and never triggers a download. Use `--verify` on reads to validate local bytes,
26
27
  `--cache-root DIR` to select a cache, and `--json` for machine output.
27
- `fetch --json` returns one result per distinct requested name.
28
+ `fetch --json` returns one result per distinct requested name. Human tables
29
+ preview 25 rows; `list` and `status` take those rows from each resource kind in
30
+ turn, so every kind appears whenever there is room for one row of each (the
31
+ default always has), and say what each kind left out. Use `--limit 0` for all
32
+ rows. `--json` always returns complete
33
+ results. See the [CLI guide](cli.md) for output formats and migration notes.
28
34
 
29
35
  Use `--kind` to disambiguate colliding resource names. For one resource,
30
36
  `--version VERSION` selects a historical release and `--source-path ASSET=PATH`
31
37
  provides already downloaded catalogue/dataset sources or genome files. Source
32
- overrides remain checksum-checked. `--force` installs a fresh generation.
38
+ overrides remain checksum-checked. `fetch` reuses a valid installation and
39
+ replaces one whose files fail verification, reporting it as `repaired`, as
40
+ `setup` does; `--force` installs a fresh generation even over valid files, and is
41
+ needed to replace files that can't be read.
33
42
  Restricted chain downloads require `--accept-terms` after reviewing `info`.
34
43
 
35
44
  The same operations are available in Python:
@@ -59,8 +68,12 @@ to every resource kind. Focused command groups such as `orfdata viral coverage`
59
68
 
60
69
  `list` shows every bundled, downloadable or locally buildable primary resource
61
70
  and its current state, including native protein search references declared by
62
- quantitative datasets. `status` shows resources already usable from local
63
- files. Filter either command with `--kind` or `--species`; use `--installed` or
71
+ quantitative datasets. `status` shows resources with local files: usable ones
72
+ and damaged or unreadable installs. `data fetch` replaces damaged files;
73
+ unreadable ones are left alone until their permissions are fixed or `--force` is
74
+ given. For catalogues, datasets, search references, genomes and chains, a repair
75
+ installs a fresh generation and leaves the damaged one in place until the cache
76
+ is pruned, as `--force` does; a viral collection is rebuilt in place. Filter either command with `--kind` or `--species`; use `--installed` or
64
77
  `--missing` with `list`, `--json` for programs, and `--verify` to hash installed
65
78
  files. Discovery and status commands never acquire or repair data.
66
79
 
@@ -94,6 +107,50 @@ command, and resolved cache path. Status values follow DataCache: `available`,
94
107
  an error rather than an empty listing, so a typo never reads as "nothing is
95
108
  available".
96
109
 
110
+ ## Interrupted downloads
111
+
112
+ A published download restarts from the beginning by default. (A local build
113
+ already keeps the source files it finished downloading, so rerunning it fetches
114
+ only what is missing.) On an unreliable connection, add `--resume` to
115
+ `orfdata data fetch` or `orfdata setup` (`resume=True` in `fetch_data` and
116
+ `install_species`, or `resume="auto"` in a registry's download options).
117
+ Rerunning the same command with `--resume` then requests only the bytes not yet
118
+ received for published catalogues, genome and chain files, search references,
119
+ a build's source files, and split archives such as the four parts of
120
+ `pfizer-atlas-dog-peptide-evidence`.
121
+
122
+ Resuming costs disk space, which is why it is off by default:
123
+
124
+ - Partial downloads and their staging stay in the cache after a failure, in
125
+ owner-only `.staging-*` and `.datacache-resume-*` directories beside the
126
+ resource. Only a later successful `--resume` install of the same resource
127
+ removes them; an install without `--resume` uses its own staging and leaves
128
+ them. Delete them yourself to reclaim the space from a download you abandon.
129
+ - An archive keeps every downloaded part until the dataset is installed. For
130
+ `pfizer-atlas-dog-peptide-evidence` that adds the 6.9 GB of parts to the peak
131
+ space the install needs, which is otherwise about 32 GB.
132
+ - A finished resumed file is copied out of its partial before it is installed,
133
+ briefly needing twice that file's size.
134
+ - An archive's resumable staging isn't named per user, so in a shared cache one
135
+ user's interrupted `--resume` install stops another user's `--resume` install
136
+ of the same dataset until it is removed. Installs without `--resume` aren't
137
+ affected.
138
+
139
+ Datasets published as one compressed SQLite file can't resume: that is every
140
+ published dataset except `pfizer-atlas-dog-peptide-evidence`, including the
141
+ 1.27 GB `pfizer-atlas-mouse-rna`. DataCache can't resume a transfer it
142
+ decompresses while downloading, so with `--resume` these still restart, and
143
+ publishing them in a resumable form is tracked in
144
+ [#156](https://github.com/openvax/orfdata/issues/156). Sources that `setup`
145
+ shares between catalogues are staged for one run and restart too. A viral
146
+ collection is fetched record by record and doesn't resume. `--resume` is
147
+ ignored when `--source-path` supplies the files.
148
+
149
+ A resumed file is checked against the same pinned SHA-256 and size as a
150
+ complete one. If it doesn't match, DataCache discards the partial and the
151
+ install fails; rerun the same command, with `--resume`, to download that file
152
+ again in full while keeping the other parts already received.
153
+
97
154
  ## Viral collections and contexts
98
155
 
99
156
  The Python API uses the same collection object for discovery, inventory reads,
@@ -294,3 +351,36 @@ the cached collection without downloading, and a damaged selection is rebuilt ra
294
351
  than reported, since nothing in it is unrecoverable. Adding
295
352
  `download_if_missing=True` to that call lets it repair the source collection too,
296
353
  which does download.
354
+
355
+ A viral collection or selection is replaced the way DataCache replaces its own
356
+ bundles. The refresh is built beside the installed copy and switched in with one
357
+ rename while installs of the same collection wait their turn, so a reader sees
358
+ the old files or the new ones, never a gap or a mix. Each refresh is a new
359
+ directory: `orfdata data path gdc-viruses` prints the one holding the current
360
+ files, so look it up again rather than saving it. Replaced copies are kept, as
361
+ DataCache keeps its own, because a running program may still be reading them;
362
+ nothing is pruned automatically. A collection installed by ORFdata 0.43 or
363
+ earlier still opens, and is kept like any replaced copy after its first refresh.
364
+
365
+ A collection is about 10 MB. To reclaim the space of replaced copies once no
366
+ program uses them, run:
367
+
368
+ ```python
369
+ from orfdata import prune_viral_references
370
+
371
+ prune_viral_references(species="human", collection="gdc-viruses", keep=1)
372
+ ```
373
+
374
+ This keeps the newest `keep` copies of the collection and of each of its
375
+ selections, deletes the rest with the PyEnsembl indexes built for them under
376
+ the same cache root, and returns `{"deleted": (...), "skipped": {path: reason}}`.
377
+ A store that can't be read or doesn't validate is skipped untouched, with the
378
+ reason, and the others are still pruned. A selection records the collection
379
+ copy it was built from; after a refresh, asking for the same selection builds a
380
+ new one from the current collection rather than reusing one built from the
381
+ replaced copy.
382
+
383
+ A forced install (`--force`, `force=True`) also repairs a store that lost its
384
+ `.datacache-store.json` marker or whose newest copy isn't a directory. A path
385
+ ORFdata didn't write in the store's place is never removed; the error names it
386
+ so you can remove it yourself.
@@ -119,10 +119,11 @@ orfdata datasets inspect DATASET --version RELEASE
119
119
  orfdata datasets query DATASET --version RELEASE --quantity protein_abundance
120
120
  ```
121
121
 
122
- Queries stream JSON lines. `--reference ref:SHA256` selects an exact context;
122
+ Queries show a human preview by default. Use `--format jsonl` to stream original
123
+ JSON lines, or `--json` for one complete JSON array. `--reference ref:SHA256` selects an exact context;
123
124
  target queries also require `--target`, `--kind` and `--namespace`. Unqualified
124
- sample/assay ID queries across multiple references are rejected. Existing
125
- catalogue commands such as `orfdata --gene TPST1` retain their behavior.
125
+ sample/assay ID queries across multiple references are rejected. ORF catalogue queries use `orfdata query --gene TPST1`; add `--json` for the
126
+ complete structured export. See the [CLI migration guide](cli.md#migrating-scripts-from-042-or-043).
126
127
 
127
128
  ## What each value means
128
129
 
@@ -32,10 +32,11 @@ the same species. A protein FASTA does not need an invented genomic assembly:
32
32
  see [source references](source-references.md). Original targets and references
33
33
  remain attached to both sides, even when their local IDs happen to match.
34
34
 
35
- The CLI streams the same table rows:
35
+ The CLI previews the pairing basis, reference scopes and target relationships.
36
+ Export the same complete table rows with an explicit streaming format:
36
37
 
37
38
  ```sh
38
- orfdata datasets pairs DATASET --version RELEASE --basis same_material
39
+ orfdata datasets pairs DATASET --version RELEASE --basis same_material --format jsonl
39
40
  ```
40
41
 
41
42
  Select exact targets with `left_target=...` and `right_target=...`, using the
@@ -857,8 +857,8 @@ option for several specific viruses.
857
857
  The FASTA goes to `--output` or
858
858
  standard output; `--snapshot FILE` also saves a snapshot, and `--cache`
859
859
  reuses or keeps the build in the cache; `--cache-root DIR` chooses the cache,
860
- for catalogues as well as builds. A
861
- JSON summary of the layers, identity and excluded ORFs goes to standard error.
860
+ for catalogues as well as builds. A human summary goes to standard error; add
861
+ `--json` for the complete JSON summary of layers, identity and excluded ORFs.
862
862
 
863
863
  ## Not yet included
864
864
 
@@ -149,7 +149,10 @@ alongside the human catalogues and chains, and `--collections none` skips it.
149
149
  The command above installs only this checked collection under `ORFDATA_CACHE` (or
150
150
  the normal OpenVax cache), rather than asking for an export directory. Use
151
151
  `--cache-root DIRECTORY` to select another cache and `--force` to refresh or
152
- repair the installed files.
152
+ repair the installed files. A refresh replaces the collection in one step and
153
+ keeps the copies it replaced for programs still reading them, until
154
+ `prune_viral_references()` removes them. Each refresh is a new directory, so
155
+ look it up with `orfdata data path gdc-viruses` rather than saving it.
153
156
 
154
157
  Here `--species human` is the target analysis species. The current collection
155
158
  is for human transcriptome analysis; a future collection may target another
@@ -223,7 +226,7 @@ over every record in a downloaded collection:
223
226
 
224
227
  ```sh
225
228
  pip install 'orfdata[dev]'
226
- ORFDATA_GENBANK_CORPUS=<cache>/viral/references/homo_sapiens/gdc-viruses/<version>/genbank \
229
+ ORFDATA_GENBANK_CORPUS="$(orfdata data path gdc-viruses)/records" \
227
230
  pytest tests/test_genbank_equivalence.py
228
231
  ```
229
232
 
@@ -19,6 +19,7 @@ extra_css:
19
19
  - stylesheets/docs.css
20
20
  nav:
21
21
  - Home: index.md
22
+ - Command-line guide: cli.md
22
23
  - Discover and download data: downloads.md
23
24
  - Downstream tools: downstream.md
24
25
  - Proteomes:
@@ -47,6 +48,7 @@ nav:
47
48
  - Dog MHC ligands and PeptideAtlas: dog-peptides.md
48
49
  - Dog paired-data and Ribo-seq source audit: dog-data-sources.md
49
50
  - Project:
51
+ - CLI design and audit: cli-design.md
50
52
  - Release notes: https://github.com/openvax/orfdata/blob/main/CHANGELOG.md
51
53
  - Data roadmap: https://github.com/openvax/orfdata/issues/3
52
54
  plugins:
@@ -21,6 +21,7 @@ from .data_resources import data_info, data_path, fetch_data
21
21
  from .dataset import QuantitativeDataset
22
22
  from .datasets import DatasetRegistry, build_dataset
23
23
  from .downloads import DataStatus, list_data
24
+ from .errors import NotInstalledError
24
25
  from .evidence import MS, EvidenceRule, RiboSeq
25
26
  from .evidence_summary import EvidenceSummary
26
27
  from .genomes import PinnedGenome, install_genome, load_genome, pinned_genomes
@@ -96,6 +97,7 @@ from .viral_panel import (
96
97
  ViralReferenceFiles,
97
98
  download_viral_references,
98
99
  open_viral_references,
100
+ prune_viral_references,
99
101
  select_viral_references,
100
102
  viral_annotation_survey,
101
103
  viral_genome,
@@ -124,6 +126,7 @@ __all__ = [
124
126
  "ViralReferenceFiles",
125
127
  "download_viral_references",
126
128
  "open_viral_references",
129
+ "prune_viral_references",
127
130
  "select_viral_references",
128
131
  "viral_genome",
129
132
  "viral_annotation_survey",
@@ -180,6 +183,7 @@ __all__ = [
180
183
  "data_info",
181
184
  "data_path",
182
185
  "fetch_data",
186
+ "NotInstalledError",
183
187
  "DatasetManifest",
184
188
  "SourceAsset",
185
189
  "Sample",
@@ -9,6 +9,7 @@ import hashlib
9
9
  import json
10
10
  import os
11
11
  import re
12
+ import zlib
12
13
  from collections import Counter
13
14
  from copy import copy, deepcopy
14
15
  from dataclasses import asdict, dataclass, field, replace
@@ -17,6 +18,7 @@ from pathlib import Path
17
18
  from typing import NamedTuple, Optional
18
19
  from urllib.parse import quote
19
20
 
21
+ from .errors import NotInstalledError
20
22
  from .evidence import EVIDENCE_METHODS as EVIDENCE_METHODS # Re-exported for existing imports.
21
23
  from .evidence import MS_METHODS, evidence_rule, stored_method
22
24
  from .evidence_summary import EvidenceSummary, unique_summaries
@@ -915,23 +917,52 @@ def _load_catalog(path=None, *, expected_sha256=None, resource="orf-evidence"):
915
917
  raise ValueError("Packaged uORF catalogue checksum mismatch")
916
918
  if expected_sha256 is not None and hashlib.sha256(raw).hexdigest() != expected_sha256:
917
919
  raise ValueError("uORF catalogue checksum mismatch")
920
+ try:
921
+ records, metadata = _parse_catalog(raw)
922
+ except _MALFORMED as error:
923
+ if path is None:
924
+ raise
925
+ raise _invalid_catalog(path, error) from error
926
+ try:
927
+ return ORFCatalog(records, metadata)
928
+ except (KeyError, ValueError) as error: # Metadata the file lacks or gets wrong; anything else is a bug.
929
+ if path is None:
930
+ raise
931
+ raise _invalid_catalog(path, error) from error
932
+
933
+
934
+ # What reading a damaged or malformed catalogue file raises: truncated or corrupt
935
+ # gzip, undecodable bytes, invalid JSON, and fields that are missing or of the wrong type.
936
+ _MALFORMED = (ValueError, KeyError, TypeError, EOFError, zlib.error, gzip.BadGzipFile)
937
+
938
+
939
+ def _invalid_catalog(path, error):
940
+ detail = str(error) if isinstance(error, ValueError) else f"{type(error).__name__}: {error}"
941
+ return ValueError(f"{path} is not a valid ORF catalogue: {detail}")
942
+
943
+
944
+ def _parse_catalog(raw):
945
+ """A catalogue file's records and metadata, checking its shape."""
918
946
  if raw.startswith(b"\x1f\x8b"):
919
947
  raw = gzip.decompress(raw)
920
948
  data = json.loads(raw)
949
+ if not isinstance(data, dict):
950
+ raise ValueError("the file is not a JSON object")
921
951
  if data.get("schema") not in ("isovar.uorf_evidence.v1", "orfdata.catalog.v1"):
922
952
  raise ValueError("Unsupported uORF evidence schema")
923
- if data["metadata"].get("coordinates") != "1-based-inclusive":
953
+ metadata = data["metadata"]
954
+ if not isinstance(metadata, dict) or not isinstance(data["records"], list):
955
+ raise ValueError("metadata must be an object and records a list")
956
+ if metadata.get("coordinates") != "1-based-inclusive":
924
957
  raise ValueError("Unsupported uORF coordinate convention")
925
958
  legacy = data["schema"] == "isovar.uorf_evidence.v1"
926
- metadata = data["metadata"]
927
959
  if legacy:
928
960
  if metadata.get("genome_build") != "GRCh38":
929
961
  raise ValueError("Legacy Isovar data are explicitly human GRCh38 only")
930
962
  metadata = dict(metadata, taxon_id=9606, species="homo_sapiens")
931
963
  elif not metadata.get("sources"):
932
964
  raise ValueError("Generic catalogues require source provenance")
933
- records = [_record(row, legacy) for row in data["records"]]
934
- return ORFCatalog(records, metadata)
965
+ return [_record(row, legacy) for row in data["records"]], metadata
935
966
 
936
967
 
937
968
  def _record(row, legacy=False):
@@ -1079,7 +1110,8 @@ def load_catalog(path=None, *, species=None, genome_build=None, registry=None, e
1079
1110
  "lifted or merged from several")
1080
1111
  # Everything missing is reported at once: catalogues to install, then chains to download.
1081
1112
  root = getattr(registry, "_cache_root", None)
1082
- needs = [_install_hint(c) for c, _ in plan if c.registry is not None and _installed(c) in (None, "damaged")]
1113
+ states = [(c, _installed(c)) for c, _ in plan if c.registry is not None] # Each inspected once.
1114
+ needs = [_install_hint(c, state) for c, state in states if state in (None, "damaged")]
1083
1115
  chains = list(dict.fromkeys(c for _, route in plan for c in route))
1084
1116
  missing = [c for c in chains if not chain_downloaded(c, cache_root=root)]
1085
1117
  cli_root = "" if root is None else f" --cache-root {root}"
@@ -1093,9 +1125,11 @@ def load_catalog(path=None, *, species=None, genome_build=None, registry=None, e
1093
1125
  accept = " --accept-terms" if any(c.restricted for c in missing) else ""
1094
1126
  chosen = ("" if catalogs is None else " --catalogs " + (
1095
1127
  catalogs if isinstance(catalogs, str) else ",".join(catalogs)))
1096
- raise ValueError(f"{species} {genome_build} ORFs need " + "; and ".join(needs)
1097
- + f". Or install everything at once with 'orfdata setup --species {species}{chosen}{accept}"
1098
- f"{cli_root}'")
1128
+ # Missing catalogues or chains are a missing installation; a damaged one is a failure to repair.
1129
+ error = ValueError if any(state == "damaged" for _, state in states) else NotInstalledError
1130
+ raise error(f"{species} {genome_build} ORFs need " + "; and ".join(needs)
1131
+ + f". Or install everything at once with 'orfdata setup --species {species}{chosen}{accept}"
1132
+ f"{cli_root}'")
1099
1133
  # Lifting and merging take seconds; one process reuses the result for exactly the same inputs.
1100
1134
  key = (species, genome_build, expected_sha256, tuple((c.name, c.version, c.resource, _installed_at(c), tuple(
1101
1135
  x.sha256 for x in route)) for c, route in plan))
@@ -1205,18 +1239,23 @@ def _plan(found, species, genome_build):
1205
1239
  item[0].priority, item[0].name))
1206
1240
 
1207
1241
 
1208
- def _install_hint(choice):
1209
- """The command that installs a registered release, or repairs a damaged one, in the registry's cache."""
1242
+ def _how_to_install(choice, state):
1243
+ """How to install a registered release, or repair a damaged one, in the registry's cache."""
1244
+ from .downloads import install_hint
1245
+
1210
1246
  registry, name, version = choice.registry, choice.name, choice.version
1211
- root = getattr(registry, "_cache_root", None)
1212
- damaged = _installed(choice) == "damaged"
1247
+ damaged = state == "damaged"
1213
1248
  verb = "download" if registry.published(name, version) else "build"
1214
- how = " again" if damaged else (" from its pinned sources" if verb == "build" else "")
1215
- return (f"the {name} {version} catalogue, which {'is damaged' if damaged else 'is not installed'}: {verb} it"
1216
- f"{how} with CatalogRegistry({'' if root is None else f'cache_root={str(root)!r}'}).{verb}({name!r}, "
1217
- f"{version!r}{', force=True' if damaged else ''}) or 'orfdata catalogs"
1218
- f"{'' if root is None else f' --cache-root {root}'} {verb} {name} --version {version}"
1219
- f"{' --force' if damaged else ''}'")
1249
+ how = " again" if damaged else ("" if verb == "download" else " from its pinned sources")
1250
+ call = f"{verb}({name!r}, {version!r}{', force=True' if damaged else ''})"
1251
+ return f"{verb} it{how} with " + install_hint(registry, call, name, "catalog", version, force=damaged)
1252
+
1253
+
1254
+ def _install_hint(choice, state):
1255
+ """The catalogue a species' ORFs need, and how to install or repair it."""
1256
+ damaged = state == "damaged"
1257
+ return (f"the {choice.name} {choice.version} catalogue, which {'is damaged' if damaged else 'is not installed'}: "
1258
+ + _how_to_install(choice, state))
1220
1259
 
1221
1260
 
1222
1261
  def _open_choice(choice, expected_sha256):
@@ -1283,13 +1322,8 @@ def _open_registered(choice, expected_sha256):
1283
1322
  registry, name, version = choice.registry, choice.name, choice.version
1284
1323
  installed = _installed(choice)
1285
1324
  if installed in (None, "damaged"):
1286
- verb = "download" if registry.published(name, version) else "build"
1287
- when = " again" if installed else (" first" if verb == "download" else " from its pinned sources")
1288
- how = (f"{verb} it{when} with CatalogRegistry().{verb}({name!r}, {version!r}"
1289
- f"{', force=True' if installed else ''}) or 'orfdata catalogs {verb} {name} --version {version}"
1290
- f"{' --force' if installed else ''}'")
1291
- state = "damaged" if installed else "not installed"
1292
- raise ValueError(f"The {name} {version} ORF catalogue is {state}; {how}")
1325
+ state, error = ("damaged", ValueError) if installed else ("not installed", NotInstalledError)
1326
+ raise error(f"The {name} {version} ORF catalogue is {state}; {_how_to_install(choice, installed)}")
1293
1327
  if installed == "built":
1294
1328
  inspected = registry.inspect_build(name, version)
1295
1329
  if inspected.status != "available":