@platforma-open/milaboratories.mixcr-clonotyping-2.workflow 3.12.0 → 3.13.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,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.12.0 build /home/runner/work/mixcr-clonotyping/mixcr-clonotyping/workflow
3
+ > @platforma-open/milaboratories.mixcr-clonotyping-2.workflow@3.13.0 build /home/runner/work/mixcr-clonotyping/mixcr-clonotyping/workflow
4
4
  > 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,17 @@
1
1
  # @platforma-open/milaboratories.mixcr-clonotyping.workflow
2
2
 
3
+ ## 3.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 27f25bc: isProductive values changed to true or false
8
+
9
+ ## 3.12.1
10
+
11
+ ### Patch Changes
12
+
13
+ - a5e2509: sdk update
14
+
3
15
  ## 3.12.0
4
16
 
5
17
  ### Minor Changes
@@ -754,10 +754,10 @@ calculateExportSpecs := func(presetSpecForBack, sampleIdAxisSpec, blockId) {
754
754
  spec: {
755
755
  valueType: "String",
756
756
  name: variant.specName,
757
- annotations: a(orderP, variant.visibility, {
758
- "pl7.app/label": variant.label,
759
- "pl7.app/isDiscreteFilter": "true",
760
- "pl7.app/discreteValues": string(json.encode(["True", "False"])) } )
757
+ annotations: a(orderP, variant.visibility, {
758
+ "pl7.app/label": variant.label,
759
+ "pl7.app/isDiscreteFilter": "true",
760
+ "pl7.app/discreteValues": string(json.encode(["true", "false"])) } )
761
761
  }
762
762
  } ]
763
763
  exportArgs += [ [ variant.arg, productiveFeature ] ]
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.mixcr-clonotyping-2.workflow",
3
- "version": "3.12.0",
3
+ "version": "3.13.0",
4
4
  "description": "Tengo-based template",
5
5
  "dependencies": {
6
- "@platforma-sdk/workflow-tengo": "^5.5.3",
6
+ "@platforma-sdk/workflow-tengo": "^5.5.9",
7
7
  "@platforma-open/milaboratories.software-mixcr": "4.7.0-233-develop"
8
8
  },
9
9
  "devDependencies": {
10
10
  "@milaboratories/ts-configs": "^1.0.6",
11
11
  "@platforma-sdk/tengo-builder": "^2.3.3",
12
- "@platforma-sdk/test": "^1.45.3",
12
+ "@platforma-sdk/test": "^1.45.9",
13
13
  "vitest": "~2.1.9",
14
14
  "typescript": "~5.6.3"
15
15
  },
@@ -754,10 +754,10 @@ calculateExportSpecs := func(presetSpecForBack, sampleIdAxisSpec, blockId) {
754
754
  spec: {
755
755
  valueType: "String",
756
756
  name: variant.specName,
757
- annotations: a(orderP, variant.visibility, {
758
- "pl7.app/label": variant.label,
759
- "pl7.app/isDiscreteFilter": "true",
760
- "pl7.app/discreteValues": string(json.encode(["True", "False"])) } )
757
+ annotations: a(orderP, variant.visibility, {
758
+ "pl7.app/label": variant.label,
759
+ "pl7.app/isDiscreteFilter": "true",
760
+ "pl7.app/discreteValues": string(json.encode(["true", "false"])) } )
761
761
  }
762
762
  } ]
763
763
  exportArgs += [ [ variant.arg, productiveFeature ] ]
@@ -35,9 +35,10 @@ self.body(func(inputs) {
35
35
  ll.assert(len(cellTagColumns) == 1, "cellTagColumns must be a single column when hashCellKey is false")
36
36
  }
37
37
 
38
- mainAbundanceColumnUnnormalizedArgs := params.mainAbundanceColumnUnnormalizedArgs
39
- mainAbundanceColumnIsReadCount := params.mainAbundanceColumnIsReadCount == true
40
- mainIsProductiveArgs := params.mainIsProductiveArgs
38
+ mainAbundanceColumnUnnormalizedArgs := params.mainAbundanceColumnUnnormalizedArgs
39
+ mainAbundanceColumnIsReadCount := params.mainAbundanceColumnIsReadCount == true
40
+ mainIsProductiveArgs := params.mainIsProductiveArgs
41
+ mainIsProductiveColumn := params.mainIsProductiveColumn
41
42
 
42
43
  exportMemGB := undefined
43
44
  if !is_undefined(inputs.perProcessMemGB) {
@@ -127,9 +128,18 @@ self.body(func(inputs) {
127
128
  }
128
129
  dfMain := wfMain.frame(frameInputMap, { inferSchema: false, id: "input_table" })
129
130
 
130
- dfMain.addColumns(
131
- pt.col("readCount").round().cast("Long").alias("readCount")
132
- )
131
+ dfMain.addColumns(
132
+ pt.col("readCount").round().cast("Long").alias("readCount")
133
+ )
134
+ // Normalize isProductive column casing to strictly "true"/"false"
135
+ if !is_undefined(mainIsProductiveColumn) {
136
+ dfMain.addColumns(
137
+ pt.when(pt.col(mainIsProductiveColumn).strToUpper().eq("TRUE")).
138
+ then(pt.lit("true")).
139
+ otherwise(pt.lit("false")).
140
+ alias(mainIsProductiveColumn)
141
+ )
142
+ }
133
143
  dfMain.addColumns(
134
144
  hashKeyDerivationExpressionPt(clonotypeKeyColumns).alias("clonotypeKey")
135
145
  )
@@ -174,11 +184,20 @@ self.body(func(inputs) {
174
184
 
175
185
  dfSingleCell := wfSingleCell.frame(unprocessedTsvForSingleCell, frameLoadOps)
176
186
 
177
- if mainAbundanceColumnIsReadCount {
178
- dfSingleCell.addColumns(
179
- pt.col("readCount").round().cast("Long").alias("readCount")
180
- )
181
- }
187
+ if mainAbundanceColumnIsReadCount {
188
+ dfSingleCell.addColumns(
189
+ pt.col("readCount").round().cast("Long").alias("readCount")
190
+ )
191
+ }
192
+ // Normalize isProductive column casing to strictly "true"/"false"
193
+ if !is_undefined(mainIsProductiveColumn) {
194
+ dfSingleCell.addColumns(
195
+ pt.when(pt.col(mainIsProductiveColumn).strToUpper().eq("TRUE")).
196
+ then(pt.lit("true")).
197
+ otherwise(pt.lit("false")).
198
+ alias(mainIsProductiveColumn)
199
+ )
200
+ }
182
201
 
183
202
  dfSingleCell.addColumns(
184
203
  hashKeyDerivationExpressionPt(clonotypeKeyColumns).alias("clonotypeKey"),
@@ -100,8 +100,8 @@ self.body(func(inputs) {
100
100
  )
101
101
 
102
102
  // Prepare expressions for chainRank ordering
103
- // 1. isProductiveNumeric: "True" -> 0, "False" -> 1 (for ascending sort)
104
- isProductiveNumericExpr := pt.when(pt.col(mainIsProductiveColumn).eq("True")).
103
+ // 1. isProductiveNumeric: true -> 0, false -> 1 (case-insensitive)
104
+ isProductiveNumericExpr := pt.when(pt.col(mainIsProductiveColumn).strToUpper().eq("TRUE")).
105
105
  then(pt.lit(0)).
106
106
  otherwise(pt.lit(1))
107
107