@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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +10 -0
- package/dist/tengo/lib/utils.lib.tengo +13 -6
- package/dist/tengo/tpl/assembling-fasta.plj.gz +0 -0
- package/dist/tengo/tpl/filter-and-sample.plj.gz +0 -0
- package/dist/tengo/tpl/main.plj.gz +0 -0
- package/package.json +3 -3
- package/src/main.tpl.tengo +4 -2
- package/src/utils.lib.tengo +13 -6
package/.turbo/turbo-build.log
CHANGED
|
@@ -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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
433
|
+
if isClusterIdAxis(axis.name) {
|
|
427
434
|
clusterSizeClusterIdAxis = axis
|
|
428
435
|
break
|
|
429
436
|
}
|
|
Binary file
|
|
Binary file
|
|
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.
|
|
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"
|
package/src/main.tpl.tengo
CHANGED
|
@@ -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
|
-
|
|
82
|
+
namePattern: "^pl7\\.app/(vdj/)?clustering/clusterSize$",
|
|
81
83
|
partialAxesMatch: true
|
|
82
84
|
}, "clusterSizes")
|
|
83
85
|
|
package/src/utils.lib.tengo
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
433
|
+
if isClusterIdAxis(axis.name) {
|
|
427
434
|
clusterSizeClusterIdAxis = axis
|
|
428
435
|
break
|
|
429
436
|
}
|