orfdata 0.9.0__tar.gz → 0.11.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 (131) hide show
  1. {orfdata-0.9.0 → orfdata-0.11.0}/MANIFEST.in +1 -0
  2. {orfdata-0.9.0/orfdata.egg-info → orfdata-0.11.0}/PKG-INFO +6 -4
  3. {orfdata-0.9.0 → orfdata-0.11.0}/README.md +5 -3
  4. orfdata-0.11.0/docs/coverage.md +34 -0
  5. {orfdata-0.9.0 → orfdata-0.11.0}/docs/measurements.md +2 -0
  6. {orfdata-0.9.0 → orfdata-0.11.0}/docs/pfizer-protein.md +5 -0
  7. orfdata-0.11.0/docs/pfizer-rna.md +86 -0
  8. orfdata-0.11.0/docs/search-references.md +75 -0
  9. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/__init__.py +5 -0
  10. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/datasets.json +400 -0
  11. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/dataset_cli.py +27 -3
  12. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/datasets.py +43 -0
  13. orfdata-0.11.0/orfdata/search_reference.py +227 -0
  14. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/sources/__init__.py +13 -0
  15. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/sources/pfizer.py +12 -0
  16. orfdata-0.11.0/orfdata/sources/pfizer_rna.py +208 -0
  17. orfdata-0.11.0/orfdata/version.py +1 -0
  18. {orfdata-0.9.0 → orfdata-0.11.0/orfdata.egg-info}/PKG-INFO +6 -4
  19. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata.egg-info/SOURCES.txt +22 -0
  20. orfdata-0.11.0/tests/data/pfizer_rna/GSE325522_family.soft.gz +0 -0
  21. orfdata-0.11.0/tests/data/pfizer_rna/GSE325523_family.soft.gz +0 -0
  22. orfdata-0.11.0/tests/data/pfizer_rna/GSE325525_family.soft.gz +0 -0
  23. orfdata-0.11.0/tests/data/pfizer_rna/NOTICE.md +12 -0
  24. orfdata-0.11.0/tests/data/pfizer_rna/counts.csv.gz +0 -0
  25. orfdata-0.11.0/tests/data/pfizer_rna/dog-annotation.gtf.gz +0 -0
  26. orfdata-0.11.0/tests/data/pfizer_rna/dog-expected.json +340 -0
  27. orfdata-0.11.0/tests/data/pfizer_rna/dog-manifest.json +186 -0
  28. orfdata-0.11.0/tests/data/pfizer_rna/mouse-annotation.gtf.gz +0 -0
  29. orfdata-0.11.0/tests/data/pfizer_rna/mouse-expected.json +340 -0
  30. orfdata-0.11.0/tests/data/pfizer_rna/mouse-manifest.json +186 -0
  31. orfdata-0.11.0/tests/data/pfizer_rna/samples.xlsx +0 -0
  32. orfdata-0.11.0/tests/data/search_reference/NOTICE.md +8 -0
  33. orfdata-0.11.0/tests/data/search_reference/dog.fasta +33 -0
  34. orfdata-0.11.0/tests/data/search_reference/expected.json +44 -0
  35. orfdata-0.11.0/tests/test_pfizer_rna.py +215 -0
  36. orfdata-0.11.0/tests/test_search_reference.py +210 -0
  37. orfdata-0.9.0/orfdata/version.py +0 -1
  38. {orfdata-0.9.0 → orfdata-0.11.0}/LICENSE +0 -0
  39. {orfdata-0.9.0 → orfdata-0.11.0}/deploy.sh +0 -0
  40. {orfdata-0.9.0 → orfdata-0.11.0}/docs/copy-yeast.md +0 -0
  41. {orfdata-0.9.0 → orfdata-0.11.0}/docs/design.md +0 -0
  42. {orfdata-0.9.0 → orfdata-0.11.0}/docs/pairing.md +0 -0
  43. {orfdata-0.9.0 → orfdata-0.11.0}/docs/reference.md +0 -0
  44. {orfdata-0.9.0 → orfdata-0.11.0}/docs/source-references.md +0 -0
  45. {orfdata-0.9.0 → orfdata-0.11.0}/docs/species.md +0 -0
  46. {orfdata-0.9.0 → orfdata-0.11.0}/docs/storage.md +0 -0
  47. {orfdata-0.9.0 → orfdata-0.11.0}/lint.sh +0 -0
  48. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/build.py +0 -0
  49. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/catalog.py +0 -0
  50. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/cli.py +0 -0
  51. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/orf-evidence/AUTHOR-LICENSE.txt +0 -0
  52. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/orf-evidence/NOTICE.txt +0 -0
  53. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/orf-evidence/catalog.json.gz +0 -0
  54. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/orf-evidence/manifest.json +0 -0
  55. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/uorf-evidence/AUTHOR-LICENSE.txt +0 -0
  56. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/uorf-evidence/NOTICE.txt +0 -0
  57. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/uorf-evidence/catalog.json.gz +0 -0
  58. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/data/uorf-evidence/manifest.json +0 -0
  59. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/dataset.py +0 -0
  60. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/initiation_context.py +0 -0
  61. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/measurements.py +0 -0
  62. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/model.py +0 -0
  63. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/pairing.py +0 -0
  64. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/reference.py +0 -0
  65. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/reference_mapping.py +0 -0
  66. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/sequence.py +0 -0
  67. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata/sources/copy.py +0 -0
  68. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata.egg-info/dependency_links.txt +0 -0
  69. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata.egg-info/entry_points.txt +0 -0
  70. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata.egg-info/requires.txt +0 -0
  71. {orfdata-0.9.0 → orfdata-0.11.0}/orfdata.egg-info/top_level.txt +0 -0
  72. {orfdata-0.9.0 → orfdata-0.11.0}/pyproject.toml +0 -0
  73. {orfdata-0.9.0 → orfdata-0.11.0}/setup.cfg +0 -0
  74. {orfdata-0.9.0 → orfdata-0.11.0}/test.sh +0 -0
  75. {orfdata-0.9.0 → orfdata-0.11.0}/tests/conftest.py +0 -0
  76. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/GSM1905474.soft +0 -0
  77. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/GSM1905474_KL9_fpkm.txt.gz +0 -0
  78. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/GSM1905476.soft +0 -0
  79. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/GSM1905476_KL10_fpkm.txt.gz +0 -0
  80. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/GSM1905478.soft +0 -0
  81. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/GSM1905478_KL11_fpkm.txt.gz +0 -0
  82. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/GSM1905479.soft +0 -0
  83. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/GSM1905479_KL12_fpkm.txt.gz +0 -0
  84. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/NOTICE.md +0 -0
  85. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/expected.json +0 -0
  86. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/geo-series.soft +0 -0
  87. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/manifest.json +0 -0
  88. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/methods.pdf +0 -0
  89. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/paper.xml +0 -0
  90. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/pmc-metadata.json +0 -0
  91. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/qconcat.fasta +0 -0
  92. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/copy/workbook.xlsx +0 -0
  93. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/NOTICE.md +0 -0
  94. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/dog/expected.json +0 -0
  95. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/dog/manifest.json +0 -0
  96. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/dog/protein.tsv +0 -0
  97. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/dog/search.fasta +0 -0
  98. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/human/expected.json +0 -0
  99. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/human/manifest.json +0 -0
  100. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/human/protein.tsv +0 -0
  101. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/human/search.fasta +0 -0
  102. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/mouse/expected.json +0 -0
  103. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/mouse/manifest.json +0 -0
  104. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/mouse/protein.tsv +0 -0
  105. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/pfizer/mouse/search.fasta +0 -0
  106. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/references/README.md +0 -0
  107. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/references/canis_lupus_familiaris.json +0 -0
  108. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/references/context-keys-v0.4.json +0 -0
  109. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/references/homo_sapiens.json +0 -0
  110. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/references/mus_musculus.json +0 -0
  111. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/references/saccharomyces_cerevisiae.json +0 -0
  112. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/storage/README.md +0 -0
  113. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/storage/generate.py +0 -0
  114. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/storage/v1.json +0 -0
  115. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/storage/v1.sqlite +0 -0
  116. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/storage/v2.json +0 -0
  117. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/storage/v2.sqlite +0 -0
  118. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/storage/v3.json +0 -0
  119. {orfdata-0.9.0 → orfdata-0.11.0}/tests/data/storage/v3.sqlite +0 -0
  120. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_copy.py +0 -0
  121. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_cross_reference_pairing.py +0 -0
  122. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_initiation_context.py +0 -0
  123. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_measurements.py +0 -0
  124. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_pairing.py +0 -0
  125. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_pfizer.py +0 -0
  126. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_reference_context.py +0 -0
  127. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_reference_mapping.py +0 -0
  128. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_reference_orf.py +0 -0
  129. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_selectors.py +0 -0
  130. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_storage.py +0 -0
  131. {orfdata-0.9.0 → orfdata-0.11.0}/tests/test_uorf_catalog.py +0 -0
@@ -3,3 +3,4 @@ recursive-include docs *.md
3
3
  recursive-include tests *.py *.json *.md *.tsv *.fasta
4
4
  recursive-include tests/data/copy *.xlsx *.gz *.soft *.xml *.pdf
5
5
  recursive-include tests/data/storage *.sqlite
6
+ recursive-include tests/data/pfizer_rna *.gz *.xlsx
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orfdata
3
- Version: 0.9.0
3
+ Version: 0.11.0
4
4
  Summary: Reference open reading frames and experimental translation evidence on annotated transcripts
5
5
  Author: OpenVax
6
6
  License-Expression: Apache-2.0
@@ -104,8 +104,10 @@ Install with `pip install orfdata[pyensembl]`. See the
104
104
  assays, and DataCache-managed downloads. Downloadable
105
105
  [human, mouse and dog protein abundance](docs/pfizer-protein.md) and
106
106
  [yeast calibrated protein/RNA abundance](docs/copy-yeast.md) use the same
107
- species-scoped API. These canonical-search measurements do not establish
108
- noncanonical ORF abundance. The
107
+ species-scoped API, as do [native dog and mouse RNA counts](docs/pfizer-rna.md).
108
+ Gene RNA and canonical protein measurements do not establish
109
+ noncanonical ORF abundance. The [native search references](docs/search-references.md)
110
+ preserve complete deposited sequences, including unreported entries. The
109
111
  [quantitative, multispecies data roadmap](https://github.com/openvax/orfdata/issues/3)
110
112
  tracks further RNA abundance, ribosome occupancy, absolute quantification and
111
- additional protein data releases.
113
+ additional protein data releases. See the [released coverage and gaps](docs/coverage.md).
@@ -77,8 +77,10 @@ Install with `pip install orfdata[pyensembl]`. See the
77
77
  assays, and DataCache-managed downloads. Downloadable
78
78
  [human, mouse and dog protein abundance](docs/pfizer-protein.md) and
79
79
  [yeast calibrated protein/RNA abundance](docs/copy-yeast.md) use the same
80
- species-scoped API. These canonical-search measurements do not establish
81
- noncanonical ORF abundance. The
80
+ species-scoped API, as do [native dog and mouse RNA counts](docs/pfizer-rna.md).
81
+ Gene RNA and canonical protein measurements do not establish
82
+ noncanonical ORF abundance. The [native search references](docs/search-references.md)
83
+ preserve complete deposited sequences, including unreported entries. The
82
84
  [quantitative, multispecies data roadmap](https://github.com/openvax/orfdata/issues/3)
83
85
  tracks further RNA abundance, ribosome occupancy, absolute quantification and
84
- additional protein data releases.
86
+ additional protein data releases. See the [released coverage and gaps](docs/coverage.md).
@@ -0,0 +1,34 @@
1
+ # Released data and gaps
2
+
3
+ ORFdata keeps datasets in separate species/reference contexts and exposes them
4
+ through the same discovery, download and query API. This table describes actual
5
+ data coverage, independently of what the API can represent.
6
+
7
+ | Species | RNA abundance | Protein abundance | RNA/protein pairing |
8
+ | --- | --- | --- | --- |
9
+ | Human | Native Pfizer counts missing from the deposit | Pfizer: 10,352 groups, 37 channels, iBAQ/rIBAQ | Unresolved |
10
+ | Mouse | Pfizer: 606 libraries, 56,051 gene targets, counts | Pfizer: 12,124 groups, 63 channels, iBAQ/rIBAQ | Unresolved library-to-pool correspondence |
11
+ | Dog | Pfizer: 434 libraries, 30,941 gene targets, counts | Pfizer: 9,929 groups, 38 channels, iBAQ/rIBAQ | Unresolved library-to-pool correspondence |
12
+ | Budding yeast | CoPY: four RNA libraries plus a source aggregate, FPKM and estimated copies/cell | CoPY: calibrated SRM and separately calibrated label-free estimates | Explicit source-cohort pairing; individual cross-assay replicate matches unknown |
13
+
14
+ Gene targets include measured zeros; their presence in a matrix does not imply
15
+ expression in every sample. Protein-group representatives do not establish
16
+ unique protein attribution. TMT channels are not independent donors. CoPY RNA
17
+ copies/cell assume 60,000 total mRNAs; its 1,903 SRM summaries contain 1,167 point
18
+ estimates, 668 upper bounds and 68 unquantifiable results. Calibration and
19
+ uncertainty remain attached to observations.
20
+
21
+ The separate existence-evidence catalogue contains 7,264 human noncanonical
22
+ ORFs, including 2,186 with reported MS support. It has no released mouse, dog or
23
+ yeast experimental ncORF catalogue yet. Its ribosome evidence and pooled PSM
24
+ counts are not sample-level ribosome occupancy or protein abundance. No species
25
+ currently has a released quantitative Ribo-seq dataset in this registry.
26
+
27
+ See the short guides for [protein measurements](pfizer-protein.md),
28
+ [native dog/mouse RNA](pfizer-rna.md), [yeast RNA/protein calibration](copy-yeast.md)
29
+ and [complete search sequences](search-references.md). The
30
+ [roadmap](https://github.com/openvax/orfdata/issues/3) tracks matched human
31
+ comparators, quantitative Ribo-seq, further ncORF evidence and additional species.
32
+ Cat, cattle, rat and other taxa use the same model when source datasets are
33
+ added. Orthology comparisons are explicit and never transfer observations or
34
+ protein-existence evidence between species.
@@ -8,6 +8,8 @@ it is not a separate measurement of each ORF in that gene.
8
8
 
9
9
  Install `orfdata[data]` to manage datasets. The registry includes downloadable
10
10
  [Pfizer/Oziolor human, mouse and dog protein summaries](pfizer-protein.md);
11
+ [native dog/mouse RNA](pfizer-rna.md) and [yeast RNA/protein calibration](copy-yeast.md)
12
+ use the same objects. See [released coverage and gaps](coverage.md);
11
13
  the [data roadmap](https://github.com/openvax/orfdata/issues/3) tracks further
12
14
  imports. The bundled human ORF evidence catalogue remains available offline.
13
15
  Its pooled PSM counts describe spectra, not sample-level protein abundance.
@@ -45,6 +45,11 @@ lookup does not establish all group members. Opting into unresolved mapped
45
45
  views keeps the original group measurement visible, without assigning its value
46
46
  to an individual protein. No RNA pairings are inferred in this release.
47
47
 
48
+ The [complete search references](search-references.md) are available through
49
+ `registry.download_reference(name)` and `registry.open_reference(name)` without
50
+ rebuilding abundance. This includes proteins without reported representatives;
51
+ search membership is separate from detection or protein-group assignment.
52
+
48
53
  Source `NA` values remain missing and numeric zeros remain measured zeros.
49
54
  Absent group/channel combinations have no observation. For dog, 64,039 combinations
50
55
  are absent and eight reported rows contain `NA`, reproducing the existing
@@ -0,0 +1,86 @@
1
+ # Dog and mouse RNA abundance
2
+
3
+ The [Oziolor et al. atlas](https://doi.org/10.1038/s41597-026-07512-9) deposits
4
+ native gene counts alongside its [protein measurements](pfizer-protein.md).
5
+ ORFdata preserves each species separately, using the same measurement API.
6
+
7
+ | Dataset | RNA libraries | Measured genes | Observations | Reference |
8
+ | --- | ---: | ---: | ---: | --- |
9
+ | `pfizer-atlas-dog-rna` | 434 | 30,941 | 13,428,394 | ROS_Cfam_1.0, Ensembl 110 |
10
+ | `pfizer-atlas-mouse-rna` | 606 | 56,051 | 33,966,906 | GRCm39, Ensembl 110 |
11
+
12
+ The dog download is about 534 MB and installs to 3.41 GB; the mouse download is
13
+ 1.27 GB and installs to 8.66 GB. Queries select observations from the installed
14
+ SQLite database without loading the whole matrix into memory.
15
+
16
+ The original `rcnt` values are integer gene counts after the authors' modified
17
+ nf-core/Salmon pipeline. They are neither TPM nor calibrated RNA copies per cell.
18
+ Zeros stay measured zeros: 4,218,202 dog observations and 18,019,555 mouse
19
+ observations. Every value retains the native numeric text and source line.
20
+
21
+ ```sh
22
+ pip install 'orfdata[data]'
23
+ orfdata datasets download pfizer-atlas-dog-rna --version 2026-10-12.1
24
+ orfdata datasets query pfizer-atlas-dog-rna --sample 1 --unit counts
25
+ ```
26
+
27
+ ```python
28
+ from orfdata import DatasetRegistry, ScopedTarget
29
+
30
+ registry = DatasetRegistry()
31
+ dataset = registry.open("pfizer-atlas-dog-rna", "2026-10-12.1")
32
+ reference, = dataset.manifest.references
33
+ gene = ScopedTarget(reference, "gene", "ENSCAFG00845000002", "ensembl")
34
+ for observation in dataset.measurements(target=gene, unit="counts"):
35
+ print(observation.sample_id, observation.value, observation.status)
36
+ ```
37
+
38
+ All source gene IDs were checked against the checksum-pinned Ensembl 110 GTF.
39
+ The import retains the source's coding and noncoding genes without a
40
+ protein-coding filter.
41
+ With that annotation already installed in PyEnsembl, construct the same target
42
+ from a gene object:
43
+
44
+ ```python
45
+ from pyensembl import EnsemblRelease
46
+
47
+ genome = EnsemblRelease(110, species="dog")
48
+ feature = genome.gene_by_id("ENSCAFG00845000002")
49
+ gene = ScopedTarget.from_pyensembl(feature, kind="gene", namespace="ensembl",
50
+ context=reference)
51
+ ```
52
+
53
+ An incompatible species, assembly or annotation release fails explicitly.
54
+ There are 180 dog and 890 mouse annotation genes outside the measured count
55
+ universe; querying one yields no observation, not a synthesized zero. Gene RNA
56
+ abundance is context for a parent RNA and does not establish the abundance or
57
+ translation of any particular uORF, ncORF or transcript isoform.
58
+
59
+ Samples retain original numeric SIDs, GEO/BioSample accessions, SRA runs, batches,
60
+ native tissue labels and the public source metadata. Mouse libraries include
61
+ 308 source-labelled `c57` and 298 `cd1` samples; these are biological strain
62
+ labels, independent of the annotation reference. Donor IDs and sex are unknown
63
+ at the deposited sample level. More specific GEO tissue labels remain alongside
64
+ the count table's broader labels. There is no verified RNA-library-to-protein-pool
65
+ crosswalk, so this release creates no assay pairs or protein-per-RNA ratios.
66
+
67
+ GSE325522, GSE325523 and GSE325525 each carry the same decompressed count matrix.
68
+ ORFdata pins one input and records the equivalent mirrors instead of counting
69
+ the data three times. The full matrix contains 2,183 nonhuman libraries. Although
70
+ the metadata lists 44 human libraries, neither the native CSV nor the deposited
71
+ human-ortholog RDS contains their counts. That [source gap](https://github.com/openvax/orfdata/issues/37)
72
+ remains explicit. Rat, pig and macaque rows are present in the original matrix
73
+ and remain candidates for separate releases through the same importer.
74
+
75
+ `registry.build(name, source_paths=...)` or `orfdata datasets build NAME` rebuilds
76
+ from pinned counts, GEO metadata, factual Table S5 sample records and the
77
+ historical GTF; workbook rebuilding needs `orfdata[build-data]`. Python returns
78
+ a `QuantitativeDataset` ready to query. The CLI returns its path; explicit CLI
79
+ queries of local builds are tracked in [#43](https://github.com/openvax/orfdata/issues/43).
80
+ Normal registry queries open the independently verified published artifact.
81
+
82
+ GEO data and Ensembl annotations retain their source reuse terms and attribution.
83
+ The paper supplement has separate CC-BY-NC-ND-4.0 terms; the original workbook
84
+ is not bundled in the quantitative artifact. Source hashes, terms and processing
85
+ details are in each manifest. All acquisition is explicit; installed queries
86
+ and metadata discovery work offline.
@@ -0,0 +1,75 @@
1
+ # Native protein search references
2
+
3
+ A search reference lists the sequences available to a particular MS search.
4
+ It is independent of reported abundance or experimental evidence that a protein
5
+ exists. ORFdata exposes the exact deposited FASTA, including unreported entries.
6
+
7
+ | Dataset | Search entries | FASTA bytes, downloaded and installed |
8
+ | --- | ---: | ---: |
9
+ | `pfizer-atlas-human-protein` | 20,600 | 13,831,073 |
10
+ | `pfizer-atlas-mouse-protein` | 21,989 | 14,325,720 |
11
+ | `pfizer-atlas-dog-protein` | 20,649 | 14,659,832 |
12
+
13
+ These are uncompressed, no-isoform UniProt search sets from data release
14
+ `2026-10-12.1`. The historical UniProt release and genomic assembly remain
15
+ unknown. ORFdata does not replace them with a current proteome.
16
+
17
+ ```python
18
+ from orfdata import DatasetRegistry, ScopedTarget
19
+
20
+ registry = DatasetRegistry()
21
+ name, version = "pfizer-atlas-dog-protein", "2026-10-12.1"
22
+ spec, = registry.search_references(name, version) # Metadata only; no I/O.
23
+ registry.download_reference(name, version) # Explicit verified download.
24
+ search = registry.open_reference(name, version) # Offline; raises if missing.
25
+
26
+ entry = search.get("A0A068LEV2")
27
+ print(entry.header, entry.sequence, entry.sequence_sha256)
28
+ assert search.membership(entry.target).status == "present"
29
+ for entry in search.entries():
30
+ assert entry.target.reference == search.reference
31
+
32
+ absent = ScopedTarget(search.reference, "protein", "not-in-this-search", "uniprot")
33
+ assert search.membership(absent).status == "not_in_search"
34
+ ```
35
+
36
+ Dog has 9,929 reported group representatives and 10,720 other search entries,
37
+ including `A0A068LEV2`. Those other entries have **no reported representative**;
38
+ that does not prove that their peptides were undetected. The summary table does
39
+ not resolve all protein-group members. Query group abundance separately through
40
+ [`dataset.measurements()`](pfizer-protein.md).
41
+
42
+ Membership accepts an explicitly scoped native protein target. A different
43
+ reference raises an error. Other namespaces, ORFs, genes and protein groups
44
+ return `unknown`: first supply an explicit, validated reference mapping. Search
45
+ membership never creates a zero, allocates a group's abundance, establishes
46
+ protein detectability, or supplies MHC presentation evidence. Exact accession
47
+ lookup does not perform sequence matching or infer coverage of a new ORF.
48
+
49
+ Each entry retains its full header, FASTA ID, residues, sequence hash, source
50
+ taxon, optional gene label and source line. `search.spec.to_dict()` records the
51
+ dataset version, reference identity, sequence-set SHA-256, source URL, size,
52
+ licence and attribution. The deposited records do not specify decoy/control
53
+ roles; those fields stay `None`. UniProt records retain CC-BY-4.0 attribution.
54
+
55
+ ```sh
56
+ orfdata datasets references pfizer-atlas-dog-protein --version 2026-10-12.1
57
+ orfdata datasets download-reference pfizer-atlas-dog-protein --version 2026-10-12.1
58
+ orfdata datasets inspect-reference pfizer-atlas-dog-protein --version 2026-10-12.1
59
+ orfdata datasets query-reference pfizer-atlas-dog-protein --version 2026-10-12.1 --target A0A068LEV2
60
+ ```
61
+
62
+ Pin the quantitative dataset version and retain the matching search spec when
63
+ exporting an analysis. Both use the same native `ReferenceContext`; select
64
+ `reference=spec.reference` and `asset_id=spec.source.asset_id` if a dataset has
65
+ multiple declared search sets (`--reference KEY --asset ID` in the CLI).
66
+ Reference downloads use a separate DataCache store and never rebuild or download
67
+ abundance. Local source overrides are checksum-verified; `force=True` creates a
68
+ new immutable bundle and preserves already-open readers. Ordinary discovery,
69
+ inspection and opening stay offline. Published quantitative hashes are unchanged.
70
+
71
+ The same reference model accepts any taxon, with no inferred cross-species joins.
72
+ Adapters must explicitly declare their native search sets and formats. The
73
+ initial parser supports deposited UniProt FASTAs. CoPY yeast's QconCAT FASTA is
74
+ synthetic calibration material, so it is not exposed as a native yeast proteome;
75
+ that historical search reference remains an explicit source gap.
@@ -35,6 +35,7 @@ from .pairing import (
35
35
  )
36
36
  from .reference import ReferenceContext, ScopedTarget
37
37
  from .reference_mapping import MappedMeasurement, ReferenceMapping
38
+ from .search_reference import SearchMembership, SearchReference, SearchReferenceSpec, SearchSequence
38
39
  from .version import __version__
39
40
 
40
41
  __all__ = [
@@ -66,6 +67,10 @@ __all__ = [
66
67
  "compare_orthologs",
67
68
  "ReferenceMapping",
68
69
  "MappedMeasurement",
70
+ "SearchReferenceSpec",
71
+ "SearchReference",
72
+ "SearchSequence",
73
+ "SearchMembership",
69
74
  "load_catalog",
70
75
  "UORFCatalog",
71
76
  "UORFRecord",