@platforma-open/milaboratories.mixcr-amplicon-alignment.workflow 1.4.0 → 1.6.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/tengo/tpl/aggregate-by-clonotype-key.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/process.plj.gz +0 -0
- package/dist/tengo/tpl/repseqio-library.plj.gz +0 -0
- package/package.json +1 -1
- package/src/aggregate-by-clonotype-key.tpl.tengo +10 -3
- package/src/main.tpl.tengo +4 -0
- package/src/mixcr-analyze.tpl.tengo +16 -0
- package/src/mixcr-export.tpl.tengo +7 -2
- package/src/process.tpl.tengo +14 -1
- package/src/repseqio-library.tpl.tengo +14 -7
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/work/mixcr-amplicon-alignment/mixcr-amplicon-alignment/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-open/milaboratories.mixcr-amplicon-alignment.workflow@1.
|
|
3
|
+
> @platforma-open/milaboratories.mixcr-amplicon-alignment.workflow@1.6.0 build /home/runner/work/mixcr-amplicon-alignment/mixcr-amplicon-alignment/workflow
|
|
4
4
|
> rm -rf dist && pl-tengo check && pl-tengo build
|
|
5
5
|
|
|
6
6
|
info: Skipping unknown file type: wf.test.ts
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @platforma-open/milaboratories.mixcr-amplicon-alignment.workflow
|
|
2
2
|
|
|
3
|
+
## 1.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 2af4406: Removed unused software import
|
|
8
|
+
|
|
9
|
+
## 1.5.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- af0cbb1: Support batch system
|
|
14
|
+
|
|
3
15
|
## 1.4.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -3,9 +3,11 @@ self := import("@platforma-sdk/workflow-tengo:tpl")
|
|
|
3
3
|
pConstants := import("@platforma-sdk/workflow-tengo:pframes.constants")
|
|
4
4
|
slices := import("@platforma-sdk/workflow-tengo:slices")
|
|
5
5
|
maps := import("@platforma-sdk/workflow-tengo:maps")
|
|
6
|
+
units := import("@platforma-sdk/workflow-tengo:units")
|
|
6
7
|
pt := import("@platforma-sdk/workflow-tengo:pt")
|
|
7
8
|
clonotypeLabel := import(":clonotype-label")
|
|
8
9
|
|
|
10
|
+
math := import("math")
|
|
9
11
|
json := import("json")
|
|
10
12
|
|
|
11
13
|
self.defineOutputs("tsv")
|
|
@@ -24,10 +26,15 @@ self.body(func(inputs) {
|
|
|
24
26
|
schemaPerClonotypeNoAggregates := params.schemaPerClonotypeNoAggregates
|
|
25
27
|
schemaPerSample := params.schemaPerSample
|
|
26
28
|
|
|
27
|
-
wf := pt.workflow()
|
|
28
|
-
dataFrames := []
|
|
29
|
-
|
|
30
29
|
inputMap := inputData.inputs()
|
|
30
|
+
numberOfSamples := len(inputMap)
|
|
31
|
+
|
|
32
|
+
wf := pt.workflow().
|
|
33
|
+
inMediumQueue().
|
|
34
|
+
mem(int(math.max(numberOfSamples, 64)) * units.GB).
|
|
35
|
+
cpu(int(math.max(numberOfSamples, 32)))
|
|
36
|
+
|
|
37
|
+
dataFrames := []
|
|
31
38
|
|
|
32
39
|
baseSchemaForRead := schemaPerSample + [ { column: "clonotypeKey", type: "String" } ]
|
|
33
40
|
|
package/src/main.tpl.tengo
CHANGED
|
@@ -30,6 +30,8 @@ wf.body(func(args) {
|
|
|
30
30
|
fivePrimePrimer := args.fivePrimePrimer
|
|
31
31
|
chains := args.chains
|
|
32
32
|
limitInput := args.limitInput
|
|
33
|
+
perProcessMemGB := args.perProcessMemGB
|
|
34
|
+
perProcessCPUs := args.perProcessCPUs
|
|
33
35
|
|
|
34
36
|
// Create V and J gene FASTA files
|
|
35
37
|
|
|
@@ -81,6 +83,8 @@ wf.body(func(args) {
|
|
|
81
83
|
|
|
82
84
|
params: smart.createJsonResource({
|
|
83
85
|
blockId: blockId,
|
|
86
|
+
perProcessMemGB: perProcessMemGB,
|
|
87
|
+
perProcessCPUs: perProcessCPUs,
|
|
84
88
|
threePrimePrimer: threePrimePrimer,
|
|
85
89
|
fivePrimePrimer: fivePrimePrimer,
|
|
86
90
|
chains: chains,
|
|
@@ -27,6 +27,8 @@ self.body(func(inputs) {
|
|
|
27
27
|
params := inputs.params
|
|
28
28
|
fileExtension := params.fileExtension
|
|
29
29
|
limitInput := inputs.limitInput
|
|
30
|
+
perProcessMemGB := inputs.perProcessMemGB
|
|
31
|
+
perProcessCPUs := inputs.perProcessCPUs
|
|
30
32
|
ll.print("__THE_LOG__" + string(limitInput))
|
|
31
33
|
|
|
32
34
|
threePrimePrimer := inputs.threePrimePrimer
|
|
@@ -78,6 +80,20 @@ self.body(func(inputs) {
|
|
|
78
80
|
// mixcrCmdBuilder.arg("--rigid-right-alignment-boundary").arg("J")
|
|
79
81
|
// }
|
|
80
82
|
|
|
83
|
+
// CPUs number per process
|
|
84
|
+
if !is_undefined(perProcessCPUs) {
|
|
85
|
+
mixcrCmdBuilder.cpu(perProcessCPUs)
|
|
86
|
+
} else {
|
|
87
|
+
mixcrCmdBuilder.cpu(16) // default CPUs number per sample
|
|
88
|
+
}
|
|
89
|
+
// Memory limit per process
|
|
90
|
+
if !is_undefined(perProcessMemGB) {
|
|
91
|
+
// memory per process was set in "Advanced Settings" block directly
|
|
92
|
+
mixcrCmdBuilder.mem(string(perProcessMemGB) + "GB")
|
|
93
|
+
} else {
|
|
94
|
+
mixcrCmdBuilder.mem("64GB")
|
|
95
|
+
}
|
|
96
|
+
|
|
81
97
|
if !is_undefined(limitInput) {
|
|
82
98
|
mixcrCmdBuilder.arg("--limit-input").arg(string(limitInput))
|
|
83
99
|
}
|
|
@@ -10,7 +10,6 @@ pt := import("@platforma-sdk/workflow-tengo:pt")
|
|
|
10
10
|
json := import("json")
|
|
11
11
|
|
|
12
12
|
mixcrSw := assets.importSoftware("@platforma-open/milaboratories.software-mixcr:main")
|
|
13
|
-
ptablerSw := assets.importSoftware("@platforma-open/milaboratories.software-ptabler:main")
|
|
14
13
|
|
|
15
14
|
self.defineOutputs("tsv")
|
|
16
15
|
|
|
@@ -32,6 +31,8 @@ self.body(func(inputs) {
|
|
|
32
31
|
createExport := func(additionalAction) {
|
|
33
32
|
mixcrCmdBuilder := exec.builder().
|
|
34
33
|
inMediumQueue().
|
|
34
|
+
mem("12GB").
|
|
35
|
+
cpu(2).
|
|
35
36
|
printErrStreamToStdout().
|
|
36
37
|
dontSaveStdoutOrStderr().
|
|
37
38
|
software(mixcrSw).
|
|
@@ -70,7 +71,11 @@ self.body(func(inputs) {
|
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
// Simplified PTabler processing for main TSV output
|
|
73
|
-
wfMain := pt.workflow()
|
|
74
|
+
wfMain := pt.workflow().
|
|
75
|
+
inMediumQueue().
|
|
76
|
+
mem("8GB").
|
|
77
|
+
cpu(2)
|
|
78
|
+
|
|
74
79
|
frameInputMap := {
|
|
75
80
|
file: unprocessedTsv,
|
|
76
81
|
xsvType: "tsv",
|
package/src/process.tpl.tengo
CHANGED
|
@@ -32,6 +32,8 @@ self.body(func(inputs) {
|
|
|
32
32
|
chains := params.chains
|
|
33
33
|
mixcrChains := params.mixcrChains
|
|
34
34
|
limitInput := inputs.limitInput
|
|
35
|
+
perProcessMemGB := params.perProcessMemGB
|
|
36
|
+
perProcessCPUs := params.perProcessCPUs
|
|
35
37
|
fileExtension := inputSpec.domain["pl7.app/fileExtension"]
|
|
36
38
|
|
|
37
39
|
// Use calculateExportSpecs for output columns
|
|
@@ -161,7 +163,14 @@ self.body(func(inputs) {
|
|
|
161
163
|
referenceLibrary: referenceLibrary
|
|
162
164
|
},
|
|
163
165
|
limitInput: limitInput
|
|
164
|
-
}
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
// by passing those parameters as meta fields we allow for recovery and deduplication mechanisms
|
|
169
|
+
// to pick up the results from executions with different values for CPU and Memory overrides
|
|
170
|
+
metaExtra: {
|
|
171
|
+
perProcessMemGB: perProcessMemGB,
|
|
172
|
+
perProcessCPUs: perProcessCPUs
|
|
173
|
+
}
|
|
165
174
|
}
|
|
166
175
|
)
|
|
167
176
|
|
|
@@ -190,6 +199,8 @@ self.body(func(inputs) {
|
|
|
190
199
|
storageFormat: "Binary",
|
|
191
200
|
partitionKeyLength: 0
|
|
192
201
|
},
|
|
202
|
+
mem: "16GB",
|
|
203
|
+
cpu: 2,
|
|
193
204
|
name: "byCloneKeyBySample",
|
|
194
205
|
path: ["tsv"]
|
|
195
206
|
}]
|
|
@@ -231,6 +242,8 @@ self.body(func(inputs) {
|
|
|
231
242
|
columns: columnsSpecPerClonotypeNoAggregates + columnsSpecPerClonotypeAggregates,
|
|
232
243
|
storageFormat: "Binary"
|
|
233
244
|
},
|
|
245
|
+
mem: "12GB",
|
|
246
|
+
cpu: 2,
|
|
234
247
|
name: "aggregates",
|
|
235
248
|
path: ["tsv"]
|
|
236
249
|
} ]
|
|
@@ -27,7 +27,8 @@ self.body(func(inputs) {
|
|
|
27
27
|
arg("--gene-feature").arg("VRegion").
|
|
28
28
|
arg("--name-index").arg("0").
|
|
29
29
|
arg("vGene.fasta").addFile("vGene.fasta", vGeneFasta).
|
|
30
|
-
arg("vGene.json").saveFile("vGene.json")
|
|
30
|
+
arg("vGene.json").saveFile("vGene.json").
|
|
31
|
+
cpu(1).mem("4GB")
|
|
31
32
|
|
|
32
33
|
// Run repseqio command
|
|
33
34
|
repseqioVgeneResult := repseqioVgeneCmd.run()
|
|
@@ -45,7 +46,8 @@ self.body(func(inputs) {
|
|
|
45
46
|
arg("--gene-feature").arg("JRegion").
|
|
46
47
|
arg("--name-index").arg("0").
|
|
47
48
|
arg("jGene.fasta").addFile("jGene.fasta", jGeneFasta).
|
|
48
|
-
arg("jGene.json").saveFile("jGene.json")
|
|
49
|
+
arg("jGene.json").saveFile("jGene.json").
|
|
50
|
+
cpu(1).mem("4GB")
|
|
49
51
|
|
|
50
52
|
repseqioJgeneResult := repseqioJgeneCmd.run()
|
|
51
53
|
referenceLibraryJgene := repseqioJgeneResult.getFile("jGene.json")
|
|
@@ -58,7 +60,8 @@ self.body(func(inputs) {
|
|
|
58
60
|
arg("vGene.json").
|
|
59
61
|
arg("jGene.json").
|
|
60
62
|
arg("referenceLibrary.json").
|
|
61
|
-
saveFile("referenceLibrary.json")
|
|
63
|
+
saveFile("referenceLibrary.json").
|
|
64
|
+
cpu(1).mem("4GB")
|
|
62
65
|
|
|
63
66
|
repseqioMergeResult := repseqioMergeCmd.run()
|
|
64
67
|
referenceLibrary := repseqioMergeResult.getFile("referenceLibrary.json")
|
|
@@ -73,7 +76,8 @@ self.body(func(inputs) {
|
|
|
73
76
|
arg("referenceLibrary.json").
|
|
74
77
|
arg("referenceLibrary.json").
|
|
75
78
|
saveFile("referenceLibrary.json").
|
|
76
|
-
addFile("vGene.fasta", vGeneFasta)
|
|
79
|
+
addFile("vGene.fasta", vGeneFasta).
|
|
80
|
+
cpu(1).mem("4GB")
|
|
77
81
|
|
|
78
82
|
repseqioInferPointsVResult := repseqioInferPointsVCmd.run()
|
|
79
83
|
referenceLibraryV := repseqioInferPointsVResult.getFile("referenceLibrary.json")
|
|
@@ -88,7 +92,8 @@ self.body(func(inputs) {
|
|
|
88
92
|
arg("referenceLibrary.json").
|
|
89
93
|
arg("referenceLibrary.json").
|
|
90
94
|
saveFile("referenceLibrary.json").
|
|
91
|
-
addFile("jGene.fasta", jGeneFasta)
|
|
95
|
+
addFile("jGene.fasta", jGeneFasta).
|
|
96
|
+
cpu(1).mem("4GB")
|
|
92
97
|
|
|
93
98
|
repseqioInferPointsJResult := repseqioInferPointsJCmd.run()
|
|
94
99
|
referenceLibraryJ := repseqioInferPointsJResult.getFile("referenceLibrary.json")
|
|
@@ -102,7 +107,8 @@ self.body(func(inputs) {
|
|
|
102
107
|
arg("referenceLibrary.json").
|
|
103
108
|
saveFile("referenceLibrary.json").
|
|
104
109
|
addFile("vGene.fasta", vGeneFasta).
|
|
105
|
-
addFile("jGene.fasta", jGeneFasta)
|
|
110
|
+
addFile("jGene.fasta", jGeneFasta).
|
|
111
|
+
cpu(1).mem("4GB")
|
|
106
112
|
|
|
107
113
|
repseqioCompileResult := repseqioCompileCmd.run()
|
|
108
114
|
referenceLibraryCompiled := repseqioCompileResult.getFile("referenceLibrary.json")
|
|
@@ -113,7 +119,8 @@ self.body(func(inputs) {
|
|
|
113
119
|
addFile("referenceLibrary.json", referenceLibraryCompiled).
|
|
114
120
|
arg("referenceLibrary.json").
|
|
115
121
|
addFile("vGene.fasta", vGeneFasta).
|
|
116
|
-
addFile("jGene.fasta", jGeneFasta)
|
|
122
|
+
addFile("jGene.fasta", jGeneFasta).
|
|
123
|
+
cpu(1).mem("4GB")
|
|
117
124
|
|
|
118
125
|
repseqioDebugResult := repseqioDebugCmd.run()
|
|
119
126
|
debugOutput := repseqioDebugResult.getStdoutStream()
|