@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.
@@ -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.7 build /home/runner/work/3d-structure-prediction/3d-structure-prediction/workflow
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
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.3d-structure-prediction.workflow",
3
- "version": "1.0.7",
3
+ "version": "1.1.0",
4
4
  "description": "Block Workflow",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@platforma-sdk/workflow-tengo": "5.25.0",
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.1",
12
- "@platforma-sdk/test": "1.77.5"
11
+ "@platforma-sdk/tengo-builder": "3.0.5",
12
+ "@platforma-sdk/test": "1.77.14"
13
13
  },
14
14
  "peerDependencies": {
15
15
  "vitest": "*"
@@ -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: "3D Structure Prediction"
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, trace.inject(v.spec), v.data)
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, trace.inject(v.spec), v.data)
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",