@platforma-open/milaboratories.top-antibodies.workflow 4.0.0 → 4.0.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,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@4.0.0 build /home/runner/work/antibody-tcr-lead-selection/antibody-tcr-lead-selection/workflow
3
+ > @platforma-open/milaboratories.top-antibodies.workflow@4.0.1 build /home/runner/work/antibody-tcr-lead-selection/antibody-tcr-lead-selection/workflow
4
4
  > shx rm -rf dist && pl-tengo check && pl-tengo build
5
5
 
6
6
  Processing "src/assembling-fasta.tpl.tengo"...
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @platforma-open/milaboratories.top-antibodies.workflow
2
2
 
3
+ ## 4.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - dd754ae: Accept both pre- and post-peptide-adaptation spec names from upstream blocks so projects using either version remain functional:
8
+
9
+ - Preset filter/ranking allowlists now include `pl7.app/enrichment*` (clonotype-enrichment) and `pl7.app/developability*` (antibody-sequence-liabilities) alongside the legacy `pl7.app/vdj/`-prefixed names.
10
+ - Diversification dropdown, cluster-axis matching, hidden cluster-mapping column, and workflow-side linker matching now recognize both `pl7.app/clusterId` and `pl7.app/vdj/clusterId` axis names (clonotype-clustering rename).
11
+ - Cluster-size query uses a namePattern matching both `pl7.app/clustering/clusterSize` and `pl7.app/vdj/clustering/clusterSize`.
12
+
3
13
  ## 4.0.0
4
14
 
5
15
  ### Major Changes
@@ -13,6 +13,13 @@ inVivoScoreSourceColumns := {
13
13
 
14
14
 
15
15
 
16
+ isClusterIdAxis := func(name) {
17
+ return name == "pl7.app/clusterId" || name == "pl7.app/vdj/clusterId"
18
+ }
19
+
20
+
21
+
22
+
16
23
 
17
24
 
18
25
 
@@ -61,7 +68,7 @@ findMatchingLinkerIndex := func(colsSpec, linkerColumns) {
61
68
 
62
69
  rankingClusterIdAxis := undefined
63
70
  for axis in colsSpec.axesSpec {
64
- if axis.name == "pl7.app/clusterId" {
71
+ if isClusterIdAxis(axis.name) {
65
72
  rankingClusterIdAxis = axis
66
73
  break
67
74
  }
@@ -76,7 +83,7 @@ findMatchingLinkerIndex := func(colsSpec, linkerColumns) {
76
83
 
77
84
  linkerClusterIdAxis := undefined
78
85
  for axis in linkerCol.spec.axesSpec {
79
- if axis.name == "pl7.app/clusterId" {
86
+ if isClusterIdAxis(axis.name) {
80
87
  linkerClusterIdAxis = axis
81
88
  break
82
89
  }
@@ -195,7 +202,7 @@ resolveClusterColumnHeader := func(args, columns, sortedLinkers) {
195
202
 
196
203
  selectedClusterIdAxis := undefined
197
204
  for axis in selectedLinkerSpec.axesSpec {
198
- if axis.name == "pl7.app/clusterId" {
205
+ if isClusterIdAxis(axis.name) {
199
206
  selectedClusterIdAxis = axis
200
207
  break
201
208
  }
@@ -209,7 +216,7 @@ resolveClusterColumnHeader := func(args, columns, sortedLinkers) {
209
216
  for linkerIdx, col in sortedLinkers {
210
217
 
211
218
  for axis in col.spec.axesSpec {
212
- if axis.name == "pl7.app/clusterId" {
219
+ if isClusterIdAxis(axis.name) {
213
220
 
214
221
  if clusterAxisDomainsMatch(selectedClusterIdAxis, axis) {
215
222
  return "clusterAxis_" + string(linkerIdx) + "_0"
@@ -409,7 +416,7 @@ initializeCloneTable := func(pframes, columns, args, datasetSpec) {
409
416
  addedCols = true
410
417
  }
411
418
 
412
- if !is_undefined(clusterIdAxis) && clusterIdAxis.name == "pl7.app/clusterId" {
419
+ if !is_undefined(clusterIdAxis) && isClusterIdAxis(clusterIdAxis.name) {
413
420
  linkerClusterIdAxesWithIdx = append(linkerClusterIdAxesWithIdx, {
414
421
  axis: clusterIdAxis,
415
422
  linkerIdx: linkerIdx
@@ -423,7 +430,7 @@ initializeCloneTable := func(pframes, columns, args, datasetSpec) {
423
430
 
424
431
  clusterSizeClusterIdAxis := undefined
425
432
  for axis in col.spec.axesSpec {
426
- if axis.name == "pl7.app/clusterId" {
433
+ if isClusterIdAxis(axis.name) {
427
434
  clusterSizeClusterIdAxis = axis
428
435
  break
429
436
  }
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.top-antibodies.workflow",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "type": "module",
5
5
  "description": "Block Workflow",
6
6
  "dependencies": {
@@ -8,9 +8,9 @@
8
8
  "@platforma-open/milaboratories.software-anarci": "^0.0.3",
9
9
  "@platforma-open/milaboratories.top-antibodies.sample-clonotypes": "2.1.2",
10
10
  "@platforma-open/milaboratories.top-antibodies.assembling-fasta": "1.3.2",
11
+ "@platforma-open/milaboratories.top-antibodies.umap": "1.2.3",
11
12
  "@platforma-open/milaboratories.top-antibodies.anarci-kabat": "1.4.3",
12
- "@platforma-open/milaboratories.top-antibodies.spectratype": "1.8.3",
13
- "@platforma-open/milaboratories.top-antibodies.umap": "1.2.3"
13
+ "@platforma-open/milaboratories.top-antibodies.spectratype": "1.8.3"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@platforma-sdk/tengo-builder": "2.5.20"
@@ -75,9 +75,11 @@ wf.prepare(func(args){
75
75
  bundleBuilder.addAnchor("selectedCluster", args.diversificationColumn)
76
76
  }
77
77
 
78
- // Add cluster size columns from clustering blocks
78
+ // Add cluster size columns from clustering blocks. The namePattern matches
79
+ // both the post-peptide-adaptation name and the pre-peptide `pl7.app/vdj/`
80
+ // variant so older clonotype-clustering instances remain usable.
79
81
  bundleBuilder.addMulti({
80
- name: "pl7.app/vdj/clustering/clusterSize",
82
+ namePattern: "^pl7\\.app/(vdj/)?clustering/clusterSize$",
81
83
  partialAxesMatch: true
82
84
  }, "clusterSizes")
83
85
 
@@ -10,6 +10,13 @@ inVivoScoreSourceColumns := {
10
10
  "nMutations": "pl7.app/vdj/sequence/nMutations"
11
11
  }
12
12
 
13
+ // Cluster-id axis names — both unprefixed (post-peptide-adaptation) and
14
+ // `pl7.app/vdj/`-prefixed (pre-peptide) so older clonotype-clustering
15
+ // instances remain selectable as diversification linkers.
16
+ isClusterIdAxis := func(name) {
17
+ return name == "pl7.app/clusterId" || name == "pl7.app/vdj/clusterId"
18
+ }
19
+
13
20
  /**
14
21
  * Checks if two clusterId axes have matching domains.
15
22
  * Used to determine if two columns belong to the same clustering run.
@@ -61,7 +68,7 @@ findMatchingLinkerIndex := func(colsSpec, linkerColumns) {
61
68
  // Find the clusterId axis in the ranking column
62
69
  rankingClusterIdAxis := undefined
63
70
  for axis in colsSpec.axesSpec {
64
- if axis.name == "pl7.app/clusterId" {
71
+ if isClusterIdAxis(axis.name) {
65
72
  rankingClusterIdAxis = axis
66
73
  break
67
74
  }
@@ -76,7 +83,7 @@ findMatchingLinkerIndex := func(colsSpec, linkerColumns) {
76
83
  // Get the clusterId axis from the linker column
77
84
  linkerClusterIdAxis := undefined
78
85
  for axis in linkerCol.spec.axesSpec {
79
- if axis.name == "pl7.app/clusterId" {
86
+ if isClusterIdAxis(axis.name) {
80
87
  linkerClusterIdAxis = axis
81
88
  break
82
89
  }
@@ -195,7 +202,7 @@ resolveClusterColumnHeader := func(args, columns, sortedLinkers) {
195
202
  // Find the clusterId axis in the selected linker
196
203
  selectedClusterIdAxis := undefined
197
204
  for axis in selectedLinkerSpec.axesSpec {
198
- if axis.name == "pl7.app/clusterId" {
205
+ if isClusterIdAxis(axis.name) {
199
206
  selectedClusterIdAxis = axis
200
207
  break
201
208
  }
@@ -209,7 +216,7 @@ resolveClusterColumnHeader := func(args, columns, sortedLinkers) {
209
216
  for linkerIdx, col in sortedLinkers {
210
217
  // Get the clusterId axis from this linker
211
218
  for axis in col.spec.axesSpec {
212
- if axis.name == "pl7.app/clusterId" {
219
+ if isClusterIdAxis(axis.name) {
213
220
  // Use clusterAxisDomainsMatch for proper domain comparison
214
221
  if clusterAxisDomainsMatch(selectedClusterIdAxis, axis) {
215
222
  return "clusterAxis_" + string(linkerIdx) + "_0"
@@ -409,7 +416,7 @@ initializeCloneTable := func(pframes, columns, args, datasetSpec) {
409
416
  addedCols = true
410
417
  }
411
418
  // Collect clusterId axes from linker columns to match cluster size columns
412
- if !is_undefined(clusterIdAxis) && clusterIdAxis.name == "pl7.app/clusterId" {
419
+ if !is_undefined(clusterIdAxis) && isClusterIdAxis(clusterIdAxis.name) {
413
420
  linkerClusterIdAxesWithIdx = append(linkerClusterIdAxesWithIdx, {
414
421
  axis: clusterIdAxis,
415
422
  linkerIdx: linkerIdx
@@ -423,7 +430,7 @@ initializeCloneTable := func(pframes, columns, args, datasetSpec) {
423
430
  // Find the clusterId axis in this cluster size column
424
431
  clusterSizeClusterIdAxis := undefined
425
432
  for axis in col.spec.axesSpec {
426
- if axis.name == "pl7.app/clusterId" {
433
+ if isClusterIdAxis(axis.name) {
427
434
  clusterSizeClusterIdAxis = axis
428
435
  break
429
436
  }