@platforma-open/milaboratories.top-antibodies.workflow 1.9.0 → 1.10.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/antibody-tcr-lead-selection/antibody-tcr-lead-selection/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-open/milaboratories.top-antibodies.workflow@1.9.0 build /home/runner/work/antibody-tcr-lead-selection/antibody-tcr-lead-selection/workflow
3
+ > @platforma-open/milaboratories.top-antibodies.workflow@1.10.0 build /home/runner/work/antibody-tcr-lead-selection/antibody-tcr-lead-selection/workflow
4
4
  > rm -rf dist && pl-tengo check && pl-tengo build
5
5
 
6
6
  Processing "src/filter-and-sample.tpl.tengo"...
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @platforma-open/milaboratories.top-antibodies.workflow
2
2
 
3
+ ## 1.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - c282203: Improved block performance. Fixed increasing ranking order and cluster size ranking
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [c282203]
12
+ - @platforma-open/milaboratories.top-antibodies.sample-clonotypes@1.3.0
13
+
3
14
  ## 1.9.0
4
15
 
5
16
  ### Minor Changes
Binary file
Binary file
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.top-antibodies.workflow",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "type": "module",
5
5
  "description": "Block Workflow",
6
6
  "dependencies": {
7
7
  "@platforma-sdk/workflow-tengo": "^4.9.2",
8
- "@platforma-open/milaboratories.top-antibodies.sample-clonotypes": "1.2.0",
9
- "@platforma-open/milaboratories.top-antibodies.spectratype": "1.4.0",
10
- "@platforma-open/milaboratories.top-antibodies.umap": "1.0.3"
8
+ "@platforma-open/milaboratories.top-antibodies.sample-clonotypes": "1.3.0",
9
+ "@platforma-open/milaboratories.top-antibodies.umap": "1.0.3",
10
+ "@platforma-open/milaboratories.top-antibodies.spectratype": "1.4.0"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@platforma-sdk/tengo-builder": "^2.1.12",
@@ -15,6 +15,7 @@ self.body(func(inputs) {
15
15
  cloneTable := inputs.cloneTable
16
16
  datasetSpec := inputs.datasetSpec
17
17
  filterMap := inputs.filterMap
18
+ rankingMap := inputs.rankingMap
18
19
  topClonotypes := inputs.topClonotypes
19
20
 
20
21
  outputs := {}
@@ -58,6 +59,7 @@ self.body(func(inputs) {
58
59
  addFile("filteredClonotypes.csv", filteredClonotypesCsv).
59
60
  arg("--csv").arg("filteredClonotypes.csv").
60
61
  arg("--n").arg(string(topClonotypes)).
62
+ arg("--ranking-map").arg(string(json.encode(rankingMap))).
61
63
  arg("--out").arg("sampledClonotypes_top.csv").
62
64
  saveFile("sampledClonotypes_top.csv").
63
65
  printErrStreamToStdout().
@@ -49,6 +49,12 @@ wf.prepare(func(args){
49
49
  partialAxesMatch: true
50
50
  }, "linkers")
51
51
 
52
+ // Add cluster size columns from clustering blocks
53
+ bundleBuilder.addMulti({
54
+ name: "pl7.app/vdj/clustering/clusterSize",
55
+ partialAxesMatch: true
56
+ }, "clusterSizes")
57
+
52
58
  // Add CDR3 sequences
53
59
  bundleBuilder.addMulti({
54
60
  axes: [{ anchor: "main", idx: 1 }], // Clonotype axis
@@ -104,6 +110,7 @@ wf.body(func(args) {
104
110
  // AnchoredColumnId {anchorRef: PlRef, anchorName: string, column: SUniversalPColumnId (unique column id)}
105
111
  addedAxes := [] // Keep track of axes that are added to the table to prevent duplicates
106
112
  filterMap := {} // Map column headers to filter criteria
113
+ rankingMap := {} // Map column headers to ranking order (increasing/decreasing)
107
114
  if len(args.filters) > 0 {
108
115
  for i, filter in args.filters {
109
116
  if filter.value != undefined {
@@ -132,6 +139,8 @@ wf.body(func(args) {
132
139
  if len(args.rankingOrder) > 0 {
133
140
  for i, col in args.rankingOrder {
134
141
  cloneTable.add(columns.getColumn(col.value.column), {header: "Col" + string(i)})
142
+ // Store ranking order for this column
143
+ rankingMap["Col" + string(i)] = col.rankingOrder
135
144
 
136
145
  // If column does not have main anchor axis we have to include theirs (columns coming from clustering blocks for example)
137
146
  colsSpec := columns.getSpec(col.value.column)
@@ -147,6 +156,8 @@ wf.body(func(args) {
147
156
  } else {
148
157
  i := 0
149
158
  cloneTable.add(columns.getColumn(args.rankingOrderDefault.value.column), {header: "Col" + string(i)})
159
+ // Store default ranking order
160
+ rankingMap["Col" + string(i)] = args.rankingOrderDefault.rankingOrder
150
161
 
151
162
  // If column does not have main anchor axis we have to include theirs
152
163
  colsSpec := columns.getSpec(args.rankingOrderDefault.value.column)
@@ -175,6 +186,20 @@ wf.body(func(args) {
175
186
  }
176
187
  }
177
188
  }
189
+
190
+ // Add cluster size columns if available
191
+ if len(columns.getColumns("clusterSizes")) > 0 {
192
+ for i, col in columns.getColumns("clusterSizes") {
193
+ cloneTable.add(col, {header: "clusterSize." + string(i)})
194
+ // Add the cluster axis header
195
+ for axisIdx, axis in col.spec.axesSpec {
196
+ if axis.name != datasetSpec.axesSpec[1].name {
197
+ cloneTable.setAxisHeader(axis.name, "clusterAxis_" + string(i) + "_" + string(axisIdx))
198
+ }
199
+ }
200
+ }
201
+ }
202
+
178
203
  cloneTable.mem("16GiB")
179
204
  cloneTable.cpu(1)
180
205
  cloneTable = cloneTable.build()
@@ -187,6 +212,7 @@ wf.body(func(args) {
187
212
  rankingOrderDefault: args.rankingOrderDefault,
188
213
  filters: args.filters,
189
214
  filterMap: filterMap,
215
+ rankingMap: rankingMap,
190
216
  datasetSpec: datasetSpec,
191
217
  topClonotypes: args.topClonotypes
192
218
  })
@@ -51,6 +51,12 @@ wf.prepare(func(args){
51
51
  partialAxesMatch: true
52
52
  }, "linkers")
53
53
 
54
+ // Add cluster size columns from clustering blocks
55
+ bundleBuilder.addMulti({
56
+ name: "pl7.app/vdj/clustering/clusterSize",
57
+ partialAxesMatch: true
58
+ }, "clusterSizes")
59
+
54
60
  // Add CDR3 sequences
55
61
  bundleBuilder.addMulti({
56
62
  axes: [{ anchor: "main", idx: 1 }], // Clonotype axis
@@ -100,6 +106,7 @@ wf.body(func(args) {
100
106
  // Add Filters to table
101
107
  addedAxes := []
102
108
  filterMap := {}
109
+ rankingMap := {}
103
110
  if len(args.filters) > 0 {
104
111
  for i, filter in args.filters {
105
112
  if filter.value != undefined {
@@ -129,6 +136,8 @@ wf.body(func(args) {
129
136
  for i, col in args.rankingOrder {
130
137
  if col.value != undefined {
131
138
  cloneTable.add(columns.getColumn(col.value.column), {header: "Col" + string(i)})
139
+ // Store ranking order for this column
140
+ rankingMap["Col" + string(i)] = col.rankingOrder
132
141
 
133
142
  // If column does not have main anchor axis we have to include theirs
134
143
  colsSpec := columns.getSpec(col.value.column)
@@ -148,6 +157,8 @@ wf.body(func(args) {
148
157
  if args.rankingOrderDefault.value != undefined {
149
158
  i := 0
150
159
  cloneTable.add(columns.getColumn(args.rankingOrderDefault.value.column), {header: "Col" + string(i)})
160
+ // Store default ranking order
161
+ rankingMap["Col" + string(i)] = args.rankingOrderDefault.rankingOrder
151
162
 
152
163
  // If column does not have main anchor axis we have to include theirs
153
164
  colsSpec := columns.getSpec(args.rankingOrderDefault.value.column)
@@ -177,6 +188,20 @@ wf.body(func(args) {
177
188
  }
178
189
  }
179
190
  }
191
+
192
+ // Add cluster size columns if available
193
+ if len(columns.getColumns("clusterSizes")) > 0 {
194
+ for i, col in columns.getColumns("clusterSizes") {
195
+ cloneTable.add(col, {header: "clusterSize." + string(i)})
196
+ // Add the cluster axis header
197
+ for axisIdx, axis in col.spec.axesSpec {
198
+ if axis.name != datasetSpec.axesSpec[1].name {
199
+ cloneTable.setAxisHeader(axis.name, "clusterAxis_" + string(i) + "_" + string(axisIdx))
200
+ }
201
+ }
202
+ }
203
+ }
204
+
180
205
  cloneTable.mem("16GiB")
181
206
  cloneTable.cpu(1)
182
207
  cloneTable = cloneTable.build()
@@ -190,6 +215,7 @@ wf.body(func(args) {
190
215
  rankingOrderDefault: args.rankingOrderDefault,
191
216
  filters: args.filters,
192
217
  filterMap: filterMap,
218
+ rankingMap: rankingMap,
193
219
  datasetSpec: datasetSpec
194
220
  })
195
221