@platforma-open/milaboratories.mixcr-clonotyping-2 2.23.1 → 2.23.3

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,74 @@
1
1
  # @platforma-open/milaboratories.mixcr-clonotyping
2
2
 
3
+ ## 2.23.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 2dc34c8: fix: size the QC exportClones steps from the .clns
8
+
9
+ The QC report runs `exportClones` twice more per sample — once for the bulk out-of-frame /
10
+ stop-codon counts and once per chain in single-cell mode — and both asked for a flat 16 GiB.
11
+ `exportClones` loads the whole CloneSet and applies `--chains` after the load, so those runs
12
+ cost what the main clonotype export costs; only the column list is smaller. On a large `.clns`
13
+ they OOM at the 12.8 GiB heap the `main` entrypoint hands the JVM out of 16 GiB, while the main
14
+ export beside them now gets a request sized from the file.
15
+
16
+ Both now use the same rule as the main export, moved into `:mem-formula` as `exportRam`:
17
+
18
+ ram = clamp(8 GiB + perByte x size(clns), floorGiB, 256 GiB)
19
+
20
+ with `floorGiB` 24 and `perByte` 30. The report template also moves from the `main` MiXCR
21
+ entrypoint to `memory-from-limits`, which every other template in the block already uses. The
22
+ entrypoint sets the heap fraction the JVM gets, so one entrypoint means one coefficient.
23
+
24
+ The `perProcessMemGB` override now raises the floor instead of replacing the rule. A project
25
+ that set it below the floor requested that value and OOMed; a value below the floor now has no
26
+ effect, and the data term still applies above one above it. This is how
27
+ `aggregate-by-clonotype-key` already treats the same override. An override above the 256 GiB
28
+ cap also raises the cap — `between()` asserts `lo <= hi`, so a floor raised past a fixed cap
29
+ would have failed the step outright rather than clamped.
30
+
31
+ ## 2.23.2
32
+
33
+ ### Patch Changes
34
+
35
+ - 732f0c6: fix: size the exportClones formula from the measured regression
36
+
37
+ The bulk export rule was `clamp(16 x size(clns), 16 GiB, 128 GiB)`. Five measured samples,
38
+ with a `.clns` from 0.13 to 1.31 GiB, show that the rule gives the two largest samples 40%
39
+ less memory than they use:
40
+
41
+ | `.clns` GiB | measured peak | old grant | new grant |
42
+ | ----------: | ------------: | -----------: | --------: |
43
+ | 0.125 | 10.31 | 16.00 | 16.00 |
44
+ | 0.152 | 10.57 | 16.00 | 16.00 |
45
+ | 0.410 | 15.86 | 16.00 | 20.31 |
46
+ | 1.116 | 30.76 | 17.85 (fail) | 41.48 |
47
+ | 1.308 | 42.26 | 20.92 (fail) | 47.23 |
48
+
49
+ The fit is `export peak = 6.4 + 25.0 x clns_GiB`, with R2 0.970. The `memory-from-limits`
50
+ entrypoint gives `-Xmx = 0.85 x grant`. The grant must therefore carry the peak divided by
51
+ 0.85, which is `7.5 + 29.4 x clns_GiB`. Three values change:
52
+
53
+ - **Intercept, 8 GiB.** JVM overhead and reference-library overhead do not scale with the
54
+ file. The previous rule had no constant term, so it started at zero, and the 16 GiB floor
55
+ did all the work until the file became large enough to fail. The intercept is a fitted
56
+ term and not a second floor, so the formula adds it and does not clamp it.
57
+ It applies to both exports.
58
+ - **Bulk coefficient, 16 to 30.** The single-cell coefficient stays at 32. Every measured
59
+ sample is a bulk export, so no measurement supports or contradicts that value. The
60
+ single-cell path does gain the same intercept, because JVM overhead and reference-library
61
+ overhead do not depend on the path.
62
+ - **Cap, 128 to 256 GiB.** With the new coefficient the old cap applies at a 4.1 GiB
63
+ `.clns`, which a 60M-read sample can reach. It now applies at 8.5 GiB.
64
+
65
+ The floors do not change. They are 16 GiB for bulk and 24 GiB for single-cell, and they
66
+ still carry the two smallest samples.
67
+
68
+ The template `hash_override` UUID also changes. This forces a one-time recompute of cached
69
+ export results. Without the new UUID the new sizing does not reach a project that has
70
+ already run the export.
71
+
3
72
  ## 2.23.1
4
73
 
5
74
  ### Patch Changes
Binary file
@@ -1 +1 @@
1
- {"schema":"v2","description":{"id":{"organization":"milaboratories","name":"mixcr-clonotyping-2","version":"2.23.1"},"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":"MiXCR Clonotyping","description":"Extract TCR / BCR clonotypes from next-generation sequencing data","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/mixcr-clonotyping-2","support":"mailto:support@milaboratories.com","tags":["upstream","airr","vdj","single-cell"],"organization":{"name":"MiLaboratories Inc","url":"https://milaboratories.com/","logo":{"type":"relative","path":"organization-logo.png"}},"marketplaceRanking":16900},"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.mixcr-clonotyping-2.kind@1.1.0"},"timestamp":1789312824867,"files":[{"name":"main.plj.gz","size":1560625,"sha256":"197959D08EA8B07A42E8436CEF5D3442F67AF52947D93F539A06826D426C2A93"},{"name":"model.json","size":575939,"sha256":"ABE8B2BA1F3818F65E7E58D81B8C72FB3274CFEDA89BC2F0F5D9AF8FE0D6C416"},{"name":"ui.tgz","size":4040834,"sha256":"B1667DD4F2F0A51B237A28C11D46A6DF3B6938FBB317313EDFF42D5E96BADD9F"},{"name":"organization-logo.png","size":24439,"sha256":"FA71390C77C91E4B7FAAE5640D00F92F1E3F2869296F68B6040DD7CC549A50B5"},{"name":"description.md","size":1148,"sha256":"B319CBECC5055A89194C4D7B5768E1ABDE225053885800179439839408ECBA54"},{"name":"CHANGELOG.md","size":44969,"sha256":"BC9BA44916A1C7B65020F6CAF4AD5BF980442279369425B56492F101E7F08EEE"},{"name":"block-logo.png","size":21527,"sha256":"6BB33BAF0CD039549661B51AE490373BE60D1811EC71F5023400928293BC2427"}]}
1
+ {"schema":"v2","description":{"id":{"organization":"milaboratories","name":"mixcr-clonotyping-2","version":"2.23.3"},"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":"MiXCR Clonotyping","description":"Extract TCR / BCR clonotypes from next-generation sequencing data","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/mixcr-clonotyping-2","support":"mailto:support@milaboratories.com","tags":["upstream","airr","vdj","single-cell"],"organization":{"name":"MiLaboratories Inc","url":"https://milaboratories.com/","logo":{"type":"relative","path":"organization-logo.png"}},"marketplaceRanking":16900},"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.mixcr-clonotyping-2.kind@1.1.0"},"timestamp":1789671515912,"files":[{"name":"main.plj.gz","size":1560792,"sha256":"C316C0D7E55C04315CDB9BA50A8B3F7DD96139D044E28027A3C00CC939287AC2"},{"name":"model.json","size":575939,"sha256":"ABE8B2BA1F3818F65E7E58D81B8C72FB3274CFEDA89BC2F0F5D9AF8FE0D6C416"},{"name":"ui.tgz","size":4040755,"sha256":"702CC988A01787A0DE526A9F3D7294615F33626E1CFF61B289E12AC76CC25F5A"},{"name":"organization-logo.png","size":24439,"sha256":"FA71390C77C91E4B7FAAE5640D00F92F1E3F2869296F68B6040DD7CC549A50B5"},{"name":"description.md","size":1148,"sha256":"B319CBECC5055A89194C4D7B5768E1ABDE225053885800179439839408ECBA54"},{"name":"CHANGELOG.md","size":48766,"sha256":"C1B262960BECE0A22A780D04BA474A25837E9F6B8C8571901952FD374846320B"},{"name":"block-logo.png","size":21527,"sha256":"6BB33BAF0CD039549661B51AE490373BE60D1811EC71F5023400928293BC2427"}]}
@@ -3,6 +3,6 @@
3
3
  "id": {
4
4
  "organization": "milaboratories",
5
5
  "name": "mixcr-clonotyping-2",
6
- "version": "2.23.1"
6
+ "version": "2.23.3"
7
7
  }
8
8
  }
package/block-pack/ui.tgz CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.mixcr-clonotyping-2",
3
- "version": "2.23.1",
3
+ "version": "2.23.3",
4
4
  "files": [
5
5
  "dist",
6
6
  "block-pack"
@@ -20,14 +20,14 @@
20
20
  "devDependencies": {
21
21
  "@milaboratories/ts-builder": "1.7.0",
22
22
  "@milaboratories/ts-configs": "1.4.0",
23
- "@platforma-sdk/block-tools": "2.15.1",
23
+ "@platforma-sdk/block-tools": "2.16.0",
24
24
  "@platforma-sdk/model": "1.82.0",
25
25
  "shx": "^0.4.0",
26
26
  "typescript": "~5.6.3",
27
27
  "@platforma-open/milaboratories.mixcr-clonotyping-2.kind": "1.1.0",
28
- "@platforma-open/milaboratories.mixcr-clonotyping-2.workflow": "3.29.1",
29
- "@platforma-open/milaboratories.mixcr-clonotyping-2.ui": "1.27.3",
30
- "@platforma-open/milaboratories.mixcr-clonotyping-2.model": "1.28.0"
28
+ "@platforma-open/milaboratories.mixcr-clonotyping-2.workflow": "3.29.3",
29
+ "@platforma-open/milaboratories.mixcr-clonotyping-2.model": "1.28.0",
30
+ "@platforma-open/milaboratories.mixcr-clonotyping-2.ui": "1.27.3"
31
31
  },
32
32
  "block": {
33
33
  "components": {