@platforma-open/milaboratories.top-antibodies.workflow 1.4.0 → 1.5.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/top-antibodies/top-antibodies/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-open/milaboratories.top-antibodies.workflow@1.4.0 build /home/runner/work/top-antibodies/top-antibodies/workflow
3
+ > @platforma-open/milaboratories.top-antibodies.workflow@1.5.0 build /home/runner/work/top-antibodies/top-antibodies/workflow
4
4
  > rm -rf dist && pl-tengo check && pl-tengo build
5
5
 
6
6
  Processing "src/main.tpl.tengo"...
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @platforma-open/milaboratories.top-antibodies.workflow
2
2
 
3
+ ## 1.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - bf454d4: Default ranking column in case user does not select one
8
+ - 4990fd8: Fix empty top and ranking cases
9
+
3
10
  ## 1.4.0
4
11
 
5
12
  ### Minor Changes
Binary file
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.top-antibodies.workflow",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "description": "Block Workflow",
6
6
  "dependencies": {
7
7
  "@platforma-sdk/workflow-tengo": "^4.7.1",
8
- "@platforma-open/milaboratories.top-antibodies.spectratype": "1.3.2",
8
+ "@platforma-open/milaboratories.top-antibodies.sample-clonotypes": "1.0.3",
9
9
  "@platforma-open/milaboratories.top-antibodies.umap": "1.0.3",
10
- "@platforma-open/milaboratories.top-antibodies.sample-clonotypes": "1.0.3"
10
+ "@platforma-open/milaboratories.top-antibodies.spectratype": "1.3.2"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@platforma-sdk/tengo-builder": "^2.1.7",
@@ -16,10 +16,17 @@ wf.prepare(func(args){
16
16
  bundleBuilder.ignoreMissingDomains() // to make query work for both bulk and single cell data
17
17
  bundleBuilder.addAnchor("main", args.inputAnchor)
18
18
 
19
- for col in args.rankingOrder {
20
- bundleBuilder.addAnchor(col.value.anchorName, col.value.anchorRef)
21
- bundleBuilder.addSingle(col.value.column)
19
+ if len(args.rankingOrder) > 0 {
20
+ for col in args.rankingOrder {
21
+ bundleBuilder.addAnchor(col.value.anchorName, col.value.anchorRef)
22
+ bundleBuilder.addSingle(col.value.column)
23
+ }
24
+ } else {
25
+ bundleBuilder.addAnchor(args.rankingOrderDefault.value.anchorName,
26
+ args.rankingOrderDefault.value.anchorRef)
27
+ bundleBuilder.addSingle(args.rankingOrderDefault.value.column)
22
28
  }
29
+
23
30
 
24
31
  // Add linker column
25
32
  bundleBuilder.addMulti({
@@ -89,43 +96,61 @@ wf.body(func(args) {
89
96
 
90
97
  ////////// Clonotype Filtering //////////
91
98
 
92
- // Build clonotype table
93
- cloneTable := pframes.csvFileBuilder()
94
- cloneTable.setAxisHeader(datasetSpec.axesSpec[1].name, "clonotypeKey")
95
-
96
- for i, col in args.rankingOrder {
97
- cloneTable.add(columns.getColumn(col.value.column), {header: "Col" + string(i)})
98
-
99
- // If column does not have main anchor axis we have to include theirs
100
- colsSpec := columns.getSpec(col.value.column)
101
- axesNames := slices.map(colsSpec.axesSpec, func (a) { return a.name})
102
- if !slices.hasElement(axesNames, datasetSpec.axesSpec[1].name) {
103
- for na, ax in colsSpec.axesSpec {
104
- if ax.name != datasetSpec.axesSpec[1].name {
105
- cloneTable.setAxisHeader(ax.name, "cluster_" + string(i) + string(na))
106
- }
107
- }
108
- }
109
- }
99
+ topClonotypesCsv := undefined
110
100
 
111
- // Columns gotten by query require .key
112
- linkerAxisSpec := {}
113
- for i, col in columns.getColumns("linkers") {
114
- if datasetSpec.axesSpec[1].name == col.spec.axesSpec[1].name {
115
- cloneTable.add(col, {header: "linker." + string(i)})
116
- cloneTable.setAxisHeader(col.spec.axesSpec[0].name, "cluster_" + string(i))
117
- linkerAxisSpec["cluster_" + string(i)] = col.spec.axesSpec[0]
118
- } else if datasetSpec.axesSpec[1].name == col.spec.axesSpec[0].name {
119
- cloneTable.add(col, {header: "linker." + string(i)})
120
- cloneTable.setAxisHeader(col.spec.axesSpec[1].name, "cluster_" + string(i))
121
- linkerAxisSpec["cluster_" + string(i)] = col.spec.axesSpec[1]
101
+ if topClonotypes != undefined {
102
+ // Build clonotype table
103
+ cloneTable := pframes.csvFileBuilder()
104
+ cloneTable.setAxisHeader(datasetSpec.axesSpec[1].name, "clonotypeKey")
105
+
106
+ if len(args.rankingOrder) > 0 {
107
+ for i, col in args.rankingOrder {
108
+ cloneTable.add(columns.getColumn(col.value.column), {header: "Col" + string(i)})
109
+
110
+ // If column does not have main anchor axis we have to include theirs
111
+ colsSpec := columns.getSpec(col.value.column)
112
+ axesNames := slices.map(colsSpec.axesSpec, func (a) { return a.name})
113
+ if !slices.hasElement(axesNames, datasetSpec.axesSpec[1].name) {
114
+ for na, ax in colsSpec.axesSpec {
115
+ if ax.name != datasetSpec.axesSpec[1].name {
116
+ cloneTable.setAxisHeader(ax.name, "cluster_" + string(i) + string(na))
117
+ }
118
+ }
119
+ }
120
+ }
121
+ } else {
122
+ i := 0
123
+ cloneTable.add(columns.getColumn(args.rankingOrderDefault.value.column), {header: "Col" + string(i)})
124
+
125
+ // If column does not have main anchor axis we have to include theirs
126
+ colsSpec := columns.getSpec(args.rankingOrderDefault.value.column)
127
+ axesNames := slices.map(colsSpec.axesSpec, func (a) { return a.name})
128
+ if !slices.hasElement(axesNames, datasetSpec.axesSpec[1].name) {
129
+ for na, ax in colsSpec.axesSpec {
130
+ if ax.name != datasetSpec.axesSpec[1].name {
131
+ cloneTable.setAxisHeader(ax.name, "cluster_" + string(i) + string(na))
132
+ }
133
+ }
134
+ }
122
135
  }
123
- }
124
- cloneTable = cloneTable.build()
125
136
 
126
- topClonotypesCsv := undefined
137
+ // Columns gotten by query require .key
138
+ linkerAxisSpec := {}
139
+ if len(columns.getColumns("linkers")) > 0 {
140
+ for i, col in columns.getColumns("linkers") {
141
+ if datasetSpec.axesSpec[1].name == col.spec.axesSpec[1].name {
142
+ cloneTable.add(col, {header: "linker." + string(i)})
143
+ cloneTable.setAxisHeader(col.spec.axesSpec[0].name, "cluster_" + string(i))
144
+ linkerAxisSpec["cluster_" + string(i)] = col.spec.axesSpec[0]
145
+ } else if datasetSpec.axesSpec[1].name == col.spec.axesSpec[0].name {
146
+ cloneTable.add(col, {header: "linker." + string(i)})
147
+ cloneTable.setAxisHeader(col.spec.axesSpec[1].name, "cluster_" + string(i))
148
+ linkerAxisSpec["cluster_" + string(i)] = col.spec.axesSpec[1]
149
+ }
150
+ }
151
+ }
152
+ cloneTable = cloneTable.build()
127
153
 
128
- if topClonotypes != undefined {
129
154
  // Run sampling script
130
155
  sampleClones := exec.builder().
131
156
  software(assets.importSoftware("@platforma-open/milaboratories.top-antibodies.sample-clonotypes:main")).