@platforma-open/milaboratories.3d-structure-prediction.workflow 1.0.7 → 1.1.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/tengo/lib/structure-cols-conv.lib.tengo +9 -3
- package/dist/tengo/tpl/build-pdbs-map.plj.gz +0 -0
- package/dist/tengo/tpl/main.plj.gz +0 -0
- package/dist/tengo/tpl/predict-batch.plj.gz +0 -0
- package/dist/tengo/tpl/prerun.plj.gz +0 -0
- package/package.json +4 -4
- package/src/main.tpl.tengo +24 -5
- package/src/structure-cols-conv.lib.tengo +9 -3
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/work/3d-structure-prediction/3d-structure-prediction/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-open/milaboratories.3d-structure-prediction.workflow@1.0
|
|
3
|
+
> @platforma-open/milaboratories.3d-structure-prediction.workflow@1.1.0 build /home/runner/work/3d-structure-prediction/3d-structure-prediction/workflow
|
|
4
4
|
> shx rm -rf dist && pl-tengo check && pl-tengo build
|
|
5
5
|
|
|
6
6
|
info: Skipping unknown file type: wf.test.ts
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @platforma-open/milaboratories.3d-structure-prediction.workflow
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 35caf17: Make subset columns (`confident`, `predictionSuccessful`) distinguishable per block instance. The spec domain now carries `pl7.app/structure/prediction/blockId`, so two 3D-prediction instances on the same dataset no longer collapse into one entry in downstream dataset selectors. The trace label uses the instance's `customBlockLabel` / `defaultBlockLabel` instead of the hardcoded `"3D Structure Prediction"`, so consumers can tell instances apart.
|
|
8
|
+
|
|
9
|
+
## 1.0.8
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 374ef16: Annotate the `pdbsMap` output column with `pl7.app/isAnchor: "true"` so downstream consumers can surface it as a primary dataset in `PlDatasetSelector` instead of `PlDropdownRef`. No behavior change for existing consumers.
|
|
14
|
+
|
|
3
15
|
## 1.0.7
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -140,6 +140,9 @@ getConfidenceColumns := func(isPaired) {
|
|
|
140
140
|
|
|
141
141
|
|
|
142
142
|
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
143
146
|
getPdbsMapSpec := func() {
|
|
144
147
|
return {
|
|
145
148
|
kind: "PColumn",
|
|
@@ -149,14 +152,15 @@ getPdbsMapSpec := func() {
|
|
|
149
152
|
axesSpec: [],
|
|
150
153
|
annotations: {
|
|
151
154
|
"pl7.app/label": "Predicted PDB structure",
|
|
152
|
-
"pl7.app/structure/numbering": "imgt"
|
|
155
|
+
"pl7.app/structure/numbering": "imgt",
|
|
156
|
+
"pl7.app/isAnchor": "true"
|
|
153
157
|
}
|
|
154
158
|
}
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
|
|
158
162
|
|
|
159
|
-
getPredictionSuccessfulSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
163
|
+
getPredictionSuccessfulSettings := func(clonotypeAxisSpec, clonotypeAxisName, blockId) {
|
|
160
164
|
return {
|
|
161
165
|
axes: [{ column: clonotypeAxisName, spec: clonotypeAxisSpec }],
|
|
162
166
|
columns: [{
|
|
@@ -164,6 +168,7 @@ getPredictionSuccessfulSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
|
164
168
|
spec: {
|
|
165
169
|
valueType: "Int",
|
|
166
170
|
name: "pl7.app/structure/predictionSuccessful",
|
|
171
|
+
domain: { "pl7.app/structure/prediction/blockId": blockId },
|
|
167
172
|
annotations: {
|
|
168
173
|
"pl7.app/label": "All structures",
|
|
169
174
|
"pl7.app/isSubset": "true",
|
|
@@ -177,7 +182,7 @@ getPredictionSuccessfulSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
|
177
182
|
|
|
178
183
|
|
|
179
184
|
|
|
180
|
-
getConfidentSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
185
|
+
getConfidentSettings := func(clonotypeAxisSpec, clonotypeAxisName, blockId) {
|
|
181
186
|
return {
|
|
182
187
|
axes: [{ column: clonotypeAxisName, spec: clonotypeAxisSpec }],
|
|
183
188
|
columns: [{
|
|
@@ -185,6 +190,7 @@ getConfidentSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
|
185
190
|
spec: {
|
|
186
191
|
valueType: "Int",
|
|
187
192
|
name: "pl7.app/structure/confident",
|
|
193
|
+
domain: { "pl7.app/structure/prediction/blockId": blockId },
|
|
188
194
|
annotations: {
|
|
189
195
|
"pl7.app/label": "Confident structures",
|
|
190
196
|
"pl7.app/isSubset": "true",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-open/milaboratories.3d-structure-prediction.workflow",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Block Workflow",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@platforma-sdk/workflow-tengo": "
|
|
7
|
+
"@platforma-sdk/workflow-tengo": "6.0.0",
|
|
8
8
|
"@platforma-open/milaboratories.3d-structure-prediction.software": "1.0.6"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"@platforma-sdk/tengo-builder": "3.0.
|
|
12
|
-
"@platforma-sdk/test": "1.77.
|
|
11
|
+
"@platforma-sdk/tengo-builder": "3.0.5",
|
|
12
|
+
"@platforma-sdk/test": "1.77.14"
|
|
13
13
|
},
|
|
14
14
|
"peerDependencies": {
|
|
15
15
|
"vitest": "*"
|
package/src/main.tpl.tengo
CHANGED
|
@@ -167,11 +167,30 @@ wf.body(func(args) {
|
|
|
167
167
|
)
|
|
168
168
|
|
|
169
169
|
// Trace stamp for every confidence + subset column.
|
|
170
|
+
traceLabel := args.customBlockLabel
|
|
171
|
+
if is_undefined(traceLabel) || traceLabel == "" {
|
|
172
|
+
traceLabel = args.defaultBlockLabel
|
|
173
|
+
}
|
|
174
|
+
if is_undefined(traceLabel) || traceLabel == "" {
|
|
175
|
+
traceLabel = "3D Structure Prediction"
|
|
176
|
+
}
|
|
170
177
|
trace := pSpec.makeTrace(datasetSpec, {
|
|
171
178
|
type: "milaboratories.3d-structure-prediction",
|
|
172
179
|
id: blockId,
|
|
173
180
|
importance: 20,
|
|
174
|
-
label:
|
|
181
|
+
label: traceLabel
|
|
182
|
+
})
|
|
183
|
+
confidentTrace := pSpec.makeTrace(datasetSpec, {
|
|
184
|
+
type: "milaboratories.3d-structure-prediction",
|
|
185
|
+
id: blockId,
|
|
186
|
+
importance: 20,
|
|
187
|
+
label: "Confident structures - " + traceLabel
|
|
188
|
+
})
|
|
189
|
+
predictionSuccessfulTrace := pSpec.makeTrace(datasetSpec, {
|
|
190
|
+
type: "milaboratories.3d-structure-prediction",
|
|
191
|
+
id: blockId,
|
|
192
|
+
importance: 20,
|
|
193
|
+
label: "All structures - " + traceLabel
|
|
175
194
|
})
|
|
176
195
|
|
|
177
196
|
// Confidence pframe — one PColumn per Xsv column declared above.
|
|
@@ -205,12 +224,12 @@ wf.body(func(args) {
|
|
|
205
224
|
|
|
206
225
|
predictionSuccessfulPf := xsv.importFile(
|
|
207
226
|
subsetRun.getFile("subsets.tsv"), "tsv",
|
|
208
|
-
structureColsConv.getPredictionSuccessfulSettings(clonotypeAxisSpec, clonotypeAxisName),
|
|
227
|
+
structureColsConv.getPredictionSuccessfulSettings(clonotypeAxisSpec, clonotypeAxisName, blockId),
|
|
209
228
|
{ splitDataAndSpec: true })
|
|
210
229
|
|
|
211
230
|
confidentPf := xsv.importFile(
|
|
212
231
|
subsetRun.getFile("confident.tsv"), "tsv",
|
|
213
|
-
structureColsConv.getConfidentSettings(clonotypeAxisSpec, clonotypeAxisName),
|
|
232
|
+
structureColsConv.getConfidentSettings(clonotypeAxisSpec, clonotypeAxisName, blockId),
|
|
214
233
|
{ splitDataAndSpec: true })
|
|
215
234
|
|
|
216
235
|
// Final structures pframe: confidence + subset columns. The label column
|
|
@@ -221,10 +240,10 @@ wf.body(func(args) {
|
|
|
221
240
|
finalPfb.add(col.id, trace.inject(out.spec), out.data)
|
|
222
241
|
}
|
|
223
242
|
for k, v in predictionSuccessfulPf {
|
|
224
|
-
finalPfb.add("subset/" + k,
|
|
243
|
+
finalPfb.add("subset/" + k, predictionSuccessfulTrace.inject(v.spec), v.data)
|
|
225
244
|
}
|
|
226
245
|
for k, v in confidentPf {
|
|
227
|
-
finalPfb.add("subset/" + k,
|
|
246
|
+
finalPfb.add("subset/" + k, confidentTrace.inject(v.spec), v.data)
|
|
228
247
|
}
|
|
229
248
|
finalPf := finalPfb.build()
|
|
230
249
|
|
|
@@ -140,6 +140,9 @@ getConfidenceColumns := func(isPaired) {
|
|
|
140
140
|
|
|
141
141
|
// PDB ResourceMap spec — produced by the batch orchestrator (merged across
|
|
142
142
|
// batches via merge-resource-maps). Failed clonotypes have no entry.
|
|
143
|
+
// `pl7.app/isAnchor` lets downstream consumers (e.g. 3D Structure-Based
|
|
144
|
+
// Liabilities) surface this column in a `PlDatasetSelector` instead of a
|
|
145
|
+
// plain `PlDropdownRef`, with subset filters auto-attached.
|
|
143
146
|
getPdbsMapSpec := func() {
|
|
144
147
|
return {
|
|
145
148
|
kind: "PColumn",
|
|
@@ -149,14 +152,15 @@ getPdbsMapSpec := func() {
|
|
|
149
152
|
axesSpec: [],
|
|
150
153
|
annotations: {
|
|
151
154
|
"pl7.app/label": "Predicted PDB structure",
|
|
152
|
-
"pl7.app/structure/numbering": "imgt"
|
|
155
|
+
"pl7.app/structure/numbering": "imgt",
|
|
156
|
+
"pl7.app/isAnchor": "true"
|
|
153
157
|
}
|
|
154
158
|
}
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
// xsv.importFile settings for the predictionSuccessful subset PColumn —
|
|
158
162
|
// 1 = prediction succeeded (failureReason was null), 0 = failed.
|
|
159
|
-
getPredictionSuccessfulSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
163
|
+
getPredictionSuccessfulSettings := func(clonotypeAxisSpec, clonotypeAxisName, blockId) {
|
|
160
164
|
return {
|
|
161
165
|
axes: [{ column: clonotypeAxisName, spec: clonotypeAxisSpec }],
|
|
162
166
|
columns: [{
|
|
@@ -164,6 +168,7 @@ getPredictionSuccessfulSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
|
164
168
|
spec: {
|
|
165
169
|
valueType: "Int",
|
|
166
170
|
name: "pl7.app/structure/predictionSuccessful",
|
|
171
|
+
domain: { "pl7.app/structure/prediction/blockId": blockId },
|
|
167
172
|
annotations: {
|
|
168
173
|
"pl7.app/label": "All structures",
|
|
169
174
|
"pl7.app/isSubset": "true",
|
|
@@ -177,7 +182,7 @@ getPredictionSuccessfulSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
|
177
182
|
|
|
178
183
|
// xsv.importFile settings for the `confident` subset PColumn — 1 when the
|
|
179
184
|
// user-selected confidence metric is ≤ threshold AND prediction succeeded.
|
|
180
|
-
getConfidentSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
185
|
+
getConfidentSettings := func(clonotypeAxisSpec, clonotypeAxisName, blockId) {
|
|
181
186
|
return {
|
|
182
187
|
axes: [{ column: clonotypeAxisName, spec: clonotypeAxisSpec }],
|
|
183
188
|
columns: [{
|
|
@@ -185,6 +190,7 @@ getConfidentSettings := func(clonotypeAxisSpec, clonotypeAxisName) {
|
|
|
185
190
|
spec: {
|
|
186
191
|
valueType: "Int",
|
|
187
192
|
name: "pl7.app/structure/confident",
|
|
193
|
+
domain: { "pl7.app/structure/prediction/blockId": blockId },
|
|
188
194
|
annotations: {
|
|
189
195
|
"pl7.app/label": "Confident structures",
|
|
190
196
|
"pl7.app/isSubset": "true",
|