@platforma-open/milaboratories.mixcr-amplicon-alignment.workflow 1.9.0 → 1.10.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.
@@ -1,9 +1,8 @@
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.9.0 build /home/runner/work/mixcr-amplicon-alignment/mixcr-amplicon-alignment/workflow
3
+ > @platforma-open/milaboratories.mixcr-amplicon-alignment.workflow@1.10.1 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
- info: Skipping unknown file type: wf.test.ts
7
6
  Processing "src/aggregate-by-clonotype-key.tpl.tengo"...
8
7
  Processing "src/calculate-export-specs.lib.tengo"...
9
8
  Processing "src/clonotype-label.lib.tengo"...
@@ -13,7 +12,6 @@ Processing "src/mixcr-export.tpl.tengo"...
13
12
  Processing "src/process.tpl.tengo"...
14
13
  Processing "src/repseqio-library.tpl.tengo"...
15
14
  No syntax errors found.
16
- info: Skipping unknown file type: wf.test.ts
17
15
  info: Compiling 'dist'...
18
16
  info: - writing /home/runner/work/mixcr-amplicon-alignment/mixcr-amplicon-alignment/workflow/dist/tengo/lib/calculate-export-specs.lib.tengo
19
17
  info: - writing /home/runner/work/mixcr-amplicon-alignment/mixcr-amplicon-alignment/workflow/dist/tengo/lib/clonotype-label.lib.tengo
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @platforma-open/milaboratories.mixcr-amplicon-alignment.workflow
2
2
 
3
+ ## 1.10.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 2209c82: [sdk/ui] Broken error propagation: block errors are not showing anymore
8
+
9
+ ## 1.10.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 07e7fc7: Update frame shift behaviour, general refactoring
14
+
3
15
  ## 1.9.0
4
16
 
5
17
  ### Minor Changes
@@ -11,15 +11,6 @@ a := func(order, defaultVisibility, spec) {
11
11
  })
12
12
  }
13
13
 
14
-
15
-
16
-
17
-
18
- inFrameFeatures := {
19
- "FR4": "FR4InFrame",
20
- "VDJRegion": "VDJRegionInFrame"
21
- }
22
-
23
14
  annotationMappings := {
24
15
  "CDRs": "{\"1\":\"CDR1\",\"2\":\"CDR2\",\"3\":\"CDR3\"}",
25
16
  "Segments": "{\"1\":\"V\",\"2\":\"D\",\"3\":\"J\",\"4\":\"C\"}"
@@ -47,7 +38,7 @@ toCombinedDomainValue := func(spec) {
47
38
 
48
39
 
49
40
  assemblingFeature := "VDJRegion"
50
- productiveFeature := "VDJRegionInFrame"
41
+ productiveFeature := "VDJRegion"
51
42
  coreVFeature := "{FR1Begin:FR3End}"
52
43
  coreJFeature := "FR4"
53
44
  splitByC := false
@@ -71,7 +62,7 @@ calculateExportSpecs := func(presetSpecForBack, blockId) {
71
62
  assemblingFeature := "VDJRegion" // Hardcoded to VDJRegion
72
63
  splitByC := false
73
64
 
74
- productiveFeature := "VDJRegionInFrame"
65
+ productiveFeature := "VDJRegion"
75
66
  coreGeneFeatures := {
76
67
  V: "{FR1Begin:FR3End}",
77
68
  J: "FR4"
@@ -306,8 +297,8 @@ calculateExportSpecs := func(presetSpecForBack, blockId) {
306
297
  annotationTypes := ["CDRs", "Segments"]
307
298
 
308
299
  inFrameFeatures := {
309
- "FR4": "FR4InFrame",
310
- "VDJRegion": "VDJRegionInFrame"
300
+ "FR4": "FR4",
301
+ "VDJRegion": "VDJRegion"
311
302
  }
312
303
 
313
304
  for featureU in features {
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.mixcr-amplicon-alignment.workflow",
3
- "version": "1.9.0",
3
+ "version": "1.10.1",
4
4
  "description": "MiXCR Amplicon Alignment Workflow",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -11,15 +11,6 @@ a := func(order, defaultVisibility, spec) {
11
11
  })
12
12
  }
13
13
 
14
- /**
15
- * Mapping from original featuers to their in-frame variants when available.
16
- * This is used to avoid showing non-informative features in the clonotype browser.
17
- */
18
- inFrameFeatures := {
19
- "FR4": "FR4InFrame",
20
- "VDJRegion": "VDJRegionInFrame"
21
- }
22
-
23
14
  annotationMappings := {
24
15
  "CDRs": "{\"1\":\"CDR1\",\"2\":\"CDR2\",\"3\":\"CDR3\"}",
25
16
  "Segments": "{\"1\":\"V\",\"2\":\"D\",\"3\":\"J\",\"4\":\"C\"}"
@@ -47,7 +38,7 @@ toCombinedDomainValue := func(spec) {
47
38
  * - J: formatted identifier for the J gene core feature (if applicable)
48
39
  */
49
40
  assemblingFeature := "VDJRegion"
50
- productiveFeature := "VDJRegionInFrame"
41
+ productiveFeature := "VDJRegion"
51
42
  coreVFeature := "{FR1Begin:FR3End}"
52
43
  coreJFeature := "FR4"
53
44
  splitByC := false
@@ -71,7 +62,7 @@ calculateExportSpecs := func(presetSpecForBack, blockId) {
71
62
  assemblingFeature := "VDJRegion" // Hardcoded to VDJRegion
72
63
  splitByC := false
73
64
 
74
- productiveFeature := "VDJRegionInFrame"
65
+ productiveFeature := "VDJRegion"
75
66
  coreGeneFeatures := {
76
67
  V: "{FR1Begin:FR3End}",
77
68
  J: "FR4"
@@ -306,8 +297,8 @@ calculateExportSpecs := func(presetSpecForBack, blockId) {
306
297
  annotationTypes := ["CDRs", "Segments"]
307
298
 
308
299
  inFrameFeatures := {
309
- "FR4": "FR4InFrame",
310
- "VDJRegion": "VDJRegionInFrame"
300
+ "FR4": "FR4",
301
+ "VDJRegion": "VDJRegion"
311
302
  }
312
303
 
313
304
  for featureU in features {
@@ -22,12 +22,10 @@ wf.prepare(func(args){
22
22
  wf.body(func(args) {
23
23
  blockId := wf.blockId().getDataAsJson()
24
24
 
25
- inputRef := args.input
25
+ inputRef := args.datasetRef
26
26
 
27
27
  input := wf.resolve(inputRef)
28
28
 
29
- threePrimePrimer := args.threePrimePrimer
30
- fivePrimePrimer := args.fivePrimePrimer
31
29
  chains := args.chains
32
30
  limitInput := args.limitInput
33
31
  perProcessMemGB := args.perProcessMemGB
@@ -86,13 +84,10 @@ wf.body(func(args) {
86
84
  blockId: blockId,
87
85
  perProcessMemGB: perProcessMemGB,
88
86
  perProcessCPUs: perProcessCPUs,
89
- threePrimePrimer: threePrimePrimer,
90
- fivePrimePrimer: fivePrimePrimer,
91
87
  chains: chains,
92
88
  mixcrChains: chainInfos[chains].mixcrFilter,
93
89
  cloneClusteringMode: cloneClusteringMode,
94
- hasUMI: args.hasUMI,
95
- fullPattern: args.fullPattern
90
+ tagPattern: args.tagPattern
96
91
  })
97
92
  })
98
93
 
@@ -78,16 +78,12 @@ self.body(func(inputs) {
78
78
  arg("--rigid-right-alignment-boundary").arg("J")
79
79
 
80
80
  // Pass pattern if provided
81
- if !is_undefined(params.fullPattern) && params.fullPattern != "" {
82
- if !is_undefined(params.hasUMI) && params.hasUMI {
83
- mixcrCmdBuilder.arg("--tag-pattern").arg(params.fullPattern)
84
- } else {
85
- mixcrCmdBuilder.arg("--tag-pattern").arg(params.fullPattern)
86
- }
81
+ if !is_undefined(params.tagPattern) && params.tagPattern != "" {
82
+ mixcrCmdBuilder.arg("--tag-pattern").arg(params.tagPattern)
87
83
  }
88
84
 
89
85
  // Clone clustering tuning
90
- if cloneClusteringMode == "decrease" {
86
+ if cloneClusteringMode == "relaxed" {
91
87
  mixcrCmdBuilder.arg("-Massemble.cloneAssemblerParameters.cloneClusteringParameters.searchParameters=oneMismatchOrIndel")
92
88
  } else if cloneClusteringMode == "off" {
93
89
  mixcrCmdBuilder.arg("-Massemble.cloneAssemblerParameters.cloneClusteringParameters=null")
@@ -27,17 +27,12 @@ self.body(func(inputs) {
27
27
  params := inputs.params
28
28
  blockId := params.blockId
29
29
  referenceLibrary := inputs.referenceLibrary
30
- threePrimePrimer := params.threePrimePrimer
31
- fivePrimePrimer := params.fivePrimePrimer
32
30
  chains := params.chains
33
31
  mixcrChains := params.mixcrChains
34
32
  cloneClusteringMode := params.cloneClusteringMode
35
- hasUMI := params.hasUMI
36
- fullPattern := params.fullPattern
33
+ tagPattern := params.tagPattern
37
34
 
38
- // Normalize optional params to avoid undefined in JSON
39
- hasUmiBool := !is_undefined(hasUMI) && hasUMI
40
- fullPatternStr := is_undefined(fullPattern) ? "" : fullPattern
35
+ hasUMI := text.contains(tagPattern, "UMI") || text.contains(tagPattern, "Umi") || text.contains(tagPattern, "umi")
41
36
  limitInput := inputs.limitInput
42
37
  perProcessMemGB := params.perProcessMemGB
43
38
  perProcessCPUs := params.perProcessCPUs
@@ -47,7 +42,7 @@ self.body(func(inputs) {
47
42
  presetSpecForBack := {
48
43
  assemblingFeature: ["VDJRegion"],
49
44
  splitByC: true,
50
- umiTags: hasUmiBool ? ["Molecule"] : undefined,
45
+ umiTags: hasUMI ? ["Molecule"] : undefined,
51
46
  cellTags: undefined
52
47
  }
53
48
 
@@ -169,8 +164,8 @@ self.body(func(inputs) {
169
164
  fileExtension: fileExtension,
170
165
  referenceLibrary: referenceLibrary,
171
166
  cloneClusteringMode: cloneClusteringMode,
172
- hasUMI: hasUmiBool,
173
- fullPattern: fullPatternStr
167
+ hasUMI: hasUMI,
168
+ tagPattern: tagPattern
174
169
  },
175
170
  limitInput: limitInput
176
171
  },
package/src/wf.test.ts DELETED
@@ -1,16 +0,0 @@
1
- import { tplTest } from "@platforma-sdk/test";
2
-
3
- tplTest(
4
- 'should return a concatenated string',
5
- async ({ helper, expect }) => {
6
- const results = await helper.renderWorkflow("main", false, {
7
- name: 'World'
8
- });
9
-
10
- const pythonMessage = results.output("pythonMessage", (a) => a?.getDataAsString());
11
- expect(await pythonMessage.awaitStableValue()).eq('Hello from Python, World!\n');
12
-
13
- const tengoMessage = results.output("tengoMessage", (a) => a?.getDataAsJson<string>());
14
- expect(await tengoMessage.awaitStableValue()).eq('Hello from Tengo, World!');
15
- }
16
- );