@platforma-open/milaboratories.sort-seq-analysis.block 1.0.6 → 1.1.0

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.
@@ -1,5 +1,25 @@
1
1
  # @platforma-open/milaboratories.sort-seq-analysis.block
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 6d40a83: Optional per-gate enrichment, nucleotide-level scores, renamed score columns
8
+
9
+ - **Per-gate enrichment**. Name the gate value holding your unsorted library and
10
+ the run emits one enrichment per condition and gate. Ordering the gates and naming an input are
11
+ independent, so a run can produce either set of scores or both. A variant missing from a gate
12
+ scores 0, and for the enrichment the read-count floor counts the variant's input reads.
13
+ - **Nucleotide datasets** are scored per nucleotide variant and rolled up per protein by pooling
14
+ their reads. Each protein enrichment carries an **error** in the same units: the larger of the
15
+ read-count error and the disagreement between the protein's nucleotide variants.
16
+ - The two score columns are renamed to the words the field uses: **Mean bin** and **Mean bin vs
17
+ parent**. Column names and values are unchanged.
18
+ - **Breaking for downstream picks:** both score columns now carry a `pl7.app/alphabet` domain
19
+ (`aminoacid` or `nucleotide`), so the protein and nucleotide levels of one run can be told
20
+ apart. A block that picked one of them before the upgrade, such as the Mutation Explorer's
21
+ score list, must pick it again after this block re-runs.
22
+
3
23
  ## 1.0.6
4
24
 
5
25
  ### Patch Changes
@@ -1,18 +1,47 @@
1
1
  ## Overview
2
2
 
3
- A sort-seq experiment hands you a library of protein variants and, for each gate the sorter collected, a
4
- count of how many reads of each variant landed in it. Nothing in that table is a binding measurement: it is
5
- a spread of reads across gates, and the gates' order along the binding axis is the only thing that makes one
6
- variant's spread better than another's.
3
+ A sort-seq experiment hands you a library of protein variants. For each gate the sorter collected, you get a
4
+ count of how many reads of each variant landed in it. Nothing in that table is a binding measurement. It is a
5
+ spread of reads across gates, and the block turns that spread into a score.
7
6
 
8
- This block turns that spread into a score, one per condition. For every variant it emits:
7
+ Two things decide what a run produces, and they are independent:
9
8
 
10
- - **Gate rank mean** — the read-weighted mean of the gate ranks the variant's reads fell in, in gate-rank
11
- units. Higher means the variant sorted into higher gates. Not an affinity and not calibrated.
12
- - **Bin score** — the gate rank mean minus the parent's. Zero means the variant behaves like the parent at
9
+ - **Are the gates ordered?** An order along the binding axis is what makes one variant's spread better than
10
+ another's.
11
+ - **Is one gate an unsorted input?** An unsorted sample is a reference each gate can be compared against.
12
+
13
+ A run may have either, or both. With both, the block emits both sets of scores.
14
+
15
+ ## Ordered Gates: Mean Bin
16
+
17
+ When the gates are ordered, every variant gets two values per condition:
18
+
19
+ - **Mean bin** — the read-weighted mean of the gate ranks the variant's reads fell in, in gate-rank units.
20
+ Higher means the variant sorted into higher gates. Not an affinity and not calibrated.
21
+ - **Mean bin vs parent** — the mean bin minus the parent's. Zero means the variant behaves like the parent at
13
22
  that condition.
14
23
 
15
- A run over N conditions emits both quantities N times, once per condition. A one-condition run is an
16
- ordinary run: it gets both quantities, with the run's single condition on each column exactly as a
17
- two-condition run would carry two.
24
+ ## An Unsorted Input: Per-Gate Enrichment
25
+
26
+ Name the gate value holding your unsorted library, and every variant gets an **enrichment** for each gate:
27
+ its share of reads in that gate divided by its share in the input. A variant the gate did not collect
28
+ gets 0, and for the enrichment the read-count floor counts the variant's reads in the input.
29
+
30
+ The enrichment is computed for every gate the run covers, ordered or not. So it works both on gates that
31
+ only differ in what they select, and on gates that sit along a binding axis. An ordered run with an input
32
+ gets an enrichment per gate on top of its mean-bin scores.
33
+
34
+ ## Nucleotide-Level Data
35
+
36
+ When the dataset carries nucleotide variants, the block scores each one and then rolls them up per protein.
37
+ A protein's score pools the reads of all its nucleotide variants. Beside each protein enrichment sits an
38
+ **error** in the same units: the larger of the read-count error and the disagreement between the
39
+ protein's nucleotide variants, together with how many variants it was measured on.
40
+
41
+ The two levels are shown as two tables, because they sit on different axes and have different row counts.
42
+
43
+ ## Conditions
18
44
 
45
+ A run over N conditions emits every quantity N times, once per condition. A one-condition run is an ordinary
46
+ run. It gets the same columns, with the run's single condition on each, exactly as a two-condition run would
47
+ carry two.
Binary file
@@ -1 +1 @@
1
- {"schema":"v2","description":{"id":{"organization":"milaboratories","name":"sort-seq-analysis","version":"1.0.6"},"components":{"workflow":{"type":"workflow-v1","main":{"type":"relative","path":"main.plj.gz"}},"model":{"type":"relative","path":"model.json"},"ui":{"type":"relative","path":"ui.tgz"}},"meta":{"title":"Sort-Seq Analysis","description":"Scores protein variants from a sort-seq (FACS bin) experiment: per condition, the read-weighted mean of the gate ranks each variant sorted into, and that value minus the parent's.","longDescription":{"type":"relative","path":"description.md"},"changelog":{"type":"relative","path":"CHANGELOG.md"},"logo":{"type":"relative","path":"block-logo.png"},"url":"https://github.com/platforma-open/sort-seq-analysis","support":"mailto:support@milaboratories.com","tags":["downstream","dms","antibody","assay"],"organization":{"name":"MiLaboratories Inc","url":"https://milaboratories.com/","logo":{"type":"relative","path":"organization-logo.png"}}},"featureFlags":{"supportsLazyState":true,"supportsPframeQueryRanking":true,"requiresUIAPIVersion":3,"requiresModelAPIVersion":2,"requiresCreatePTable":2,"requiresPFramesVersion":1001031,"requiresPFrameSpec":true,"requiresPFrame":true,"requiresDialog":true,"requiresColumnsCollection":true},"kind":"@platforma-open/milaboratories.sort-seq-analysis.kind@1.0.1"},"timestamp":1789119499571,"files":[{"name":"main.plj.gz","size":798776,"sha256":"1F72DB6258B50FC57D229D1AFD387A9FAE7DAE78FB2FE14214B84CE206CDEE55"},{"name":"model.json","size":558031,"sha256":"013E485766BB7764C99E786F7DA9D95265B01BD7EE4A0C57FA1B50C6F4C74EAB"},{"name":"ui.tgz","size":6371759,"sha256":"8EA11E0FC3886EE1C76B4558EC571655BD844AF37B38D1D332AEF274A2425705"},{"name":"organization-logo.png","size":24439,"sha256":"FA71390C77C91E4B7FAAE5640D00F92F1E3F2869296F68B6040DD7CC549A50B5"},{"name":"description.md","size":1035,"sha256":"49CEBEA9C9B395A12ECC5D1FF7CDEE9E6BA371C5D4E6E7FA874C07A3DC1AB3E1"},{"name":"CHANGELOG.md","size":4809,"sha256":"A344B58883D423E6B95DAE15C2E9C1B943151832B5F9D38E16896BB7A39E3BFB"},{"name":"block-logo.png","size":21527,"sha256":"6BB33BAF0CD039549661B51AE490373BE60D1811EC71F5023400928293BC2427"}]}
1
+ {"schema":"v2","description":{"id":{"organization":"milaboratories","name":"sort-seq-analysis","version":"1.1.0"},"components":{"workflow":{"type":"workflow-v1","main":{"type":"relative","path":"main.plj.gz"}},"model":{"type":"relative","path":"model.json"},"ui":{"type":"relative","path":"ui.tgz"}},"meta":{"title":"Sort-Seq Analysis","description":"Scores protein variants from a sort-seq (FACS bin) experiment. Ordered gates give each variant a read-weighted mean gate rank and its difference from the parent's. An unsorted input gate adds a per-gate enrichment, on ordered or unordered gates.","longDescription":{"type":"relative","path":"description.md"},"changelog":{"type":"relative","path":"CHANGELOG.md"},"logo":{"type":"relative","path":"block-logo.png"},"url":"https://github.com/platforma-open/sort-seq-analysis","support":"mailto:support@milaboratories.com","tags":["downstream","dms","antibody","assay"],"organization":{"name":"MiLaboratories Inc","url":"https://milaboratories.com/","logo":{"type":"relative","path":"organization-logo.png"}}},"featureFlags":{"supportsLazyState":true,"supportsPframeQueryRanking":true,"requiresUIAPIVersion":3,"requiresModelAPIVersion":2,"requiresCreatePTable":2,"requiresPFramesVersion":1001031,"requiresPFrameSpec":true,"requiresPFrame":true,"requiresDialog":true,"requiresColumnsCollection":true},"kind":"@platforma-open/milaboratories.sort-seq-analysis.kind@1.0.1"},"timestamp":1790183853587,"files":[{"name":"main.plj.gz","size":811206,"sha256":"8F249AC886A648275F5D675C11BBEC5877C9E7D53EF9A4CC4D15E6EEFF78A546"},{"name":"model.json","size":567097,"sha256":"575503B818163120E48B98F57213E34B3FBAE9072B178CA824E198A369B07329"},{"name":"ui.tgz","size":6382446,"sha256":"049FA9A17FE89E4B6A6F0FDD89C110BD474DC4916B00403F70F9F265FDFB28D7"},{"name":"organization-logo.png","size":24439,"sha256":"FA71390C77C91E4B7FAAE5640D00F92F1E3F2869296F68B6040DD7CC549A50B5"},{"name":"description.md","size":2503,"sha256":"50CE6B002C3D3B3FBD450298F4FDE4E5C7B2FE4EA6ADAA932098632F2C696415"},{"name":"CHANGELOG.md","size":6082,"sha256":"6B8BC2380AF2E2CA0C29878C65970A051EA5C20EBAD772F512A38E8C2C3661CD"},{"name":"block-logo.png","size":21527,"sha256":"6BB33BAF0CD039549661B51AE490373BE60D1811EC71F5023400928293BC2427"}]}