@platforma-open/milaboratories.mixcr-clonotyping-2.workflow 3.27.0 → 3.27.1
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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +6 -0
- package/dist/tengo/tpl/aggregate-by-clonotype-key.plj.gz +0 -0
- package/dist/tengo/tpl/calculate-preset-info.plj.gz +0 -0
- package/dist/tengo/tpl/export-report.plj.gz +0 -0
- package/dist/tengo/tpl/list-presets.plj.gz +0 -0
- package/dist/tengo/tpl/main.plj.gz +0 -0
- package/dist/tengo/tpl/mixcr-analyze.plj.gz +0 -0
- package/dist/tengo/tpl/mixcr-export.plj.gz +0 -0
- package/dist/tengo/tpl/prerun.plj.gz +0 -0
- package/dist/tengo/tpl/process-single-cell.plj.gz +0 -0
- package/dist/tengo/tpl/process.plj.gz +0 -0
- package/dist/tengo/tpl/test.columns-calculate.plj.gz +0 -0
- package/dist/tengo/tpl/test.columns.test.plj.gz +0 -0
- package/package.json +3 -3
- package/src/mixcr-analyze.tpl.tengo +27 -11
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/work/mixcr-clonotyping/mixcr-clonotyping/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-open/milaboratories.mixcr-clonotyping-2.workflow@3.27.
|
|
3
|
+
> @platforma-open/milaboratories.mixcr-clonotyping-2.workflow@3.27.1 build /home/runner/work/mixcr-clonotyping/mixcr-clonotyping/workflow
|
|
4
4
|
> shx rm -rf dist && pl-tengo check && pl-tengo build
|
|
5
5
|
|
|
6
6
|
info: Skipping unknown file type: test/columns.test.ts
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @platforma-open/milaboratories.mixcr-clonotyping.workflow
|
|
2
2
|
|
|
3
|
+
## 3.27.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a297368: Size MiXCR analyze memory from the input reads' file size on top of the per-analysis floor. The per-analysis baseline (64 / 110 / 192 GiB for default / contig-cell / single-cell+MiTool) stays as a floor; memory then grows linearly with the R1+R2 FASTQ blob size (4 bytes of RAM per byte), clamped to 256 GiB. File size is read from blob metadata (getBlobSize) with no pre-exec. The explicit "Advanced Settings" memory override is unchanged; on backends that can't evaluate resource formulas the baseline is the static fallback.
|
|
8
|
+
|
|
3
9
|
## 3.27.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-open/milaboratories.mixcr-clonotyping-2.workflow",
|
|
3
|
-
"version": "3.27.
|
|
3
|
+
"version": "3.27.1",
|
|
4
4
|
"description": "Tengo-based template",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@platforma-sdk/workflow-tengo": "5.
|
|
6
|
+
"@platforma-sdk/workflow-tengo": "6.5.0",
|
|
7
7
|
"@platforma-open/milaboratories.software-mixcr": "4.7.0-347-develop"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
|
-
"@platforma-sdk/tengo-builder": "4.0.
|
|
10
|
+
"@platforma-sdk/tengo-builder": "4.0.9"
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "shx rm -rf dist && pl-tengo check && pl-tengo build",
|
|
@@ -86,18 +86,34 @@ self.body(func(inputs) {
|
|
|
86
86
|
mixcrCmdBuilder.cpu(16) // default CPUs number per sample
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
// Memory limit per process
|
|
89
|
+
// Memory limit per process.
|
|
90
|
+
// Size analyze RAM from the input reads' file size, on top of a per-analysis
|
|
91
|
+
// floor. size("reads") sums the stored (compressed) blob size of the sample's
|
|
92
|
+
// R1+R2 FASTQ via getBlobSize — a metadata read, no pre-exec — so it tracks
|
|
93
|
+
// total input volume (read count and read length) without decompressing.
|
|
94
|
+
// mem = clamp(baseMemGiB + 4 bytes/byte * size, baseMemGiB, 256 GiB)
|
|
95
|
+
// baseMemGiB is the per-analysis floor (64, or 110/192 for contig/cell and
|
|
96
|
+
// single-cell+MiTool pipelines, which need that headroom regardless of size);
|
|
97
|
+
// the linear term scales with input volume; the 256 GiB cap bounds the largest.
|
|
98
|
+
// An "Advanced Settings" memory override takes precedence; on backends that
|
|
99
|
+
// cannot evaluate resource formulas, memFormula falls back to the baseline.
|
|
90
100
|
if !is_undefined(perProcessMemGB) {
|
|
91
101
|
// memory per process was set in "Advanced Settings" block directly
|
|
92
102
|
mixcrCmdBuilder.mem(string(perProcessMemGB) + "GiB")
|
|
93
|
-
} else if hasMiToolSteps {
|
|
94
|
-
// allow to use more memory for single cell analysis with mitool pre-
|
|
95
|
-
mixcrCmdBuilder.mem("192GiB")
|
|
96
|
-
} else if hasAssembleContigs || hasAssembleCells {
|
|
97
|
-
// allow to use more memory for single cell analysis
|
|
98
|
-
mixcrCmdBuilder.mem("110GiB")
|
|
99
103
|
} else {
|
|
100
|
-
|
|
104
|
+
baseMemGiB := 64
|
|
105
|
+
if hasMiToolSteps {
|
|
106
|
+
baseMemGiB = 192
|
|
107
|
+
} else if hasAssembleContigs || hasAssembleCells {
|
|
108
|
+
baseMemGiB = 110
|
|
109
|
+
}
|
|
110
|
+
f := exec.formula
|
|
111
|
+
mixcrCmdBuilder.memFormula(
|
|
112
|
+
f.clamp(
|
|
113
|
+
f.add(f.gib(baseMemGiB), f.mul(f.size("reads"), 4)),
|
|
114
|
+
f.gib(baseMemGiB),
|
|
115
|
+
f.gib(256)),
|
|
116
|
+
{ fallback: string(baseMemGiB) + "GiB" })
|
|
101
117
|
}
|
|
102
118
|
|
|
103
119
|
if !is_undefined(limitInput) {
|
|
@@ -166,7 +182,7 @@ self.body(func(inputs) {
|
|
|
166
182
|
inputFile := inputMap["[]"]
|
|
167
183
|
ll.assert(!is_undefined(inputFile), "unexpected agg group structure")
|
|
168
184
|
inputFileName := "input." + fileExtension
|
|
169
|
-
mixcrCmdBuilder.addFile(inputFileName, inputFile)
|
|
185
|
+
mixcrCmdBuilder.addFile(inputFileName, inputFile, { tag: "reads" })
|
|
170
186
|
mixcrCmdBuilder.arg(inputFileName)
|
|
171
187
|
} else if inputDataMeta.keyLength == 1 {
|
|
172
188
|
ll.assert(aggregationAxesNames == ["pl7.app/sequencing/readIndex"], "unexpected aggregation axes names")
|
|
@@ -180,7 +196,7 @@ self.body(func(inputs) {
|
|
|
180
196
|
if (r[0] != 'R' && r[0] != "I") || (r[1] != '1' && r[1] != '2') || len(r) != 2 {
|
|
181
197
|
ll.panic("malformed read index: %v", r)
|
|
182
198
|
}
|
|
183
|
-
mixcrCmdBuilder.addFile("input_" + r + "." + fileExtension, inputFile)
|
|
199
|
+
mixcrCmdBuilder.addFile("input_" + r + "." + fileExtension, inputFile, { tag: "reads" })
|
|
184
200
|
}
|
|
185
201
|
mixcrCmdBuilder.arg("input_{{R}}." + fileExtension)
|
|
186
202
|
} else if inputDataMeta.keyLength == 2 {
|
|
@@ -199,7 +215,7 @@ self.body(func(inputs) {
|
|
|
199
215
|
if is_undefined(int(lane)) {
|
|
200
216
|
ll.panic("malformed lane: %v", lane)
|
|
201
217
|
}
|
|
202
|
-
mixcrCmdBuilder.addFile("input_L" + lane + "_" + r + "." + fileExtension, inputFile)
|
|
218
|
+
mixcrCmdBuilder.addFile("input_L" + lane + "_" + r + "." + fileExtension, inputFile, { tag: "reads" })
|
|
203
219
|
}
|
|
204
220
|
mixcrCmdBuilder.arg("input_L{{n}}_{{R}}." + fileExtension)
|
|
205
221
|
} else {
|