@platforma-open/milaboratories.immune-assay-data.workflow 1.8.0 → 1.8.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/immune-assay-data/immune-assay-data/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-open/milaboratories.immune-assay-data.workflow@1.8.0 build /home/runner/work/immune-assay-data/immune-assay-data/workflow
3
+ > @platforma-open/milaboratories.immune-assay-data.workflow@1.8.1 build /home/runner/work/immune-assay-data/immune-assay-data/workflow
4
4
  > rm -rf dist && pl-tengo check && pl-tengo build
5
5
 
6
6
  Processing "src/analysis.tpl.tengo"...
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @platforma-open/milaboratories.immune-assay-data.workflow
2
2
 
3
+ ## 1.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 36ed105: Improve empty input detection
8
+ - Updated dependencies [36ed105]
9
+ - @platforma-open/milaboratories.immune-assay-data.check-content-empty@1.0.1
10
+
3
11
  ## 1.8.0
4
12
 
5
13
  ### Minor Changes
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.immune-assay-data.workflow",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "type": "module",
5
5
  "description": "Tengo-based template",
6
6
  "dependencies": {
7
7
  "@platforma-sdk/workflow-tengo": "5.9.1",
8
8
  "@platforma-open/soedinglab.software-mmseqs2": "1.18.3",
9
- "@platforma-open/milaboratories.immune-assay-data.add-header": "1.1.3",
10
9
  "@platforma-open/milaboratories.immune-assay-data.prepare-fasta": "1.1.3",
10
+ "@platforma-open/milaboratories.immune-assay-data.add-header": "1.1.3",
11
11
  "@platforma-open/milaboratories.immune-assay-data.coverage-mode-calc": "1.2.0",
12
12
  "@platforma-open/milaboratories.immune-assay-data.fasta-to-tsv": "1.1.3",
13
- "@platforma-open/milaboratories.immune-assay-data.xlsx-to-csv": "1.1.0"
13
+ "@platforma-open/milaboratories.immune-assay-data.xlsx-to-csv": "1.1.0",
14
+ "@platforma-open/milaboratories.immune-assay-data.check-content-empty": "1.0.1"
14
15
  },
15
16
  "devDependencies": {
16
- "@platforma-sdk/tengo-builder": "2.4.27"
17
+ "@platforma-sdk/tengo-builder": "2.4.28"
17
18
  },
18
19
  "scripts": {
19
20
  "build": "rm -rf dist && pl-tengo check && pl-tengo build",
@@ -12,6 +12,7 @@ fastaToTsvSw := assets.importSoftware("@platforma-open/milaboratories.immune-ass
12
12
  addHeaderSw := assets.importSoftware("@platforma-open/milaboratories.immune-assay-data.add-header:main")
13
13
  covModeCalcSw := assets.importSoftware("@platforma-open/milaboratories.immune-assay-data.coverage-mode-calc:main")
14
14
  xlsxToCsvSw := assets.importSoftware("@platforma-open/milaboratories.immune-assay-data.xlsx-to-csv:main")
15
+ checkContentEmptySw := assets.importSoftware("@platforma-open/milaboratories.immune-assay-data.check-content-empty:main")
15
16
 
16
17
  runAlignmentTpl := assets.importTemplate(":run-alignment")
17
18
  checkContentEmptyTpl := assets.importTemplate(":check-content-empty")
@@ -274,16 +275,24 @@ self.body(func(args) {
274
275
  arg("-o").arg("results_with_header.tsv").
275
276
  addFile("results.tsv", mmseqsOutput).
276
277
  saveFile("results_with_header.tsv").
277
- saveFileContent("results_with_header.tsv").
278
278
  run()
279
279
 
280
280
  mmseqsResultTsv := addHeaderRun.getFile("results_with_header.tsv")
281
- mmseqsResultContent := addHeaderRun.getFileContent("results_with_header.tsv")
282
281
 
283
- // Use subtemplate to check if file is empty
282
+ // Check if results are empty (only header line or nothing)
283
+ checkResultsRun := exec.builder().
284
+ software(checkContentEmptySw).
285
+ arg("-i").arg("input.file").
286
+ arg("-n").arg("2"). // Require at least 2 non-empty lines (header + 1 data line)
287
+ addFile("input.file", mmseqsResultTsv).
288
+ saveStdoutContent().
289
+ mem("8GiB").
290
+ cpu(1).
291
+ inLightQueue().
292
+ run()
293
+
284
294
  checkResult := render.create(checkContentEmptyTpl, {
285
- content: mmseqsResultContent,
286
- mode: "headerOnly"
295
+ content: checkResultsRun.getStdoutContent()
287
296
  })
288
297
  emptyResults := checkResult.output("result")
289
298
 
@@ -4,18 +4,6 @@ text := import("text")
4
4
  self.defineOutputs("result")
5
5
 
6
6
  self.body(func(args) {
7
- content := string(args.content.getData())
8
- mode := args.mode
9
-
10
- isEmpty := false
11
- if mode == "raw" {
12
- // No header line (e.g. FASTA): empty content means no data
13
- isEmpty = text.trim_space(content) == ""
14
- } else if mode == "headerOnly" {
15
- // File has a header line (e.g. TSV with added header): empty means <= 1 line
16
- lines := text.split(text.trim_space(content), "\n")
17
- isEmpty = len(lines) <= 1
18
- }
19
-
20
- return { result: isEmpty }
7
+ // 'content' is the stdout of the check-software (already a "true"/"false" string)
8
+ return { result: text.trim_space(string(args.content.getData())) == "true" }
21
9
  })
@@ -16,6 +16,7 @@ processOutputsTpl := assets.importTemplate(":process-outputs")
16
16
  checkContentEmptyTpl := assets.importTemplate(":check-content-empty")
17
17
 
18
18
  prepareFastaSw := assets.importSoftware("@platforma-open/milaboratories.immune-assay-data.prepare-fasta:main")
19
+ checkContentEmptySw := assets.importSoftware("@platforma-open/milaboratories.immune-assay-data.check-content-empty:main")
19
20
 
20
21
  wf.prepare(func(args){
21
22
  bundleBuilder := wf.createPBundleBuilder()
@@ -103,15 +104,23 @@ wf.body(func(args) {
103
104
  arg("--seq_col").arg("sequence").
104
105
  arg("--id_col").arg("seqId").
105
106
  saveFile("output.fasta").
106
- saveFileContent("output.fasta").
107
107
  run()
108
108
  clonesFasta := clonesFastaRun.getFile("output.fasta")
109
- clonesFastaContent := clonesFastaRun.getFileContent("output.fasta")
110
109
 
111
110
  // Check if clones are empty before running mmseqs2
111
+ checkClonesRun := exec.builder().
112
+ software(checkContentEmptySw).
113
+ arg("-i").arg("input.file").
114
+ arg("-n").arg("1").
115
+ addFile("input.file", clonesFasta).
116
+ saveStdoutContent().
117
+ mem("8GiB").
118
+ cpu(1).
119
+ inLightQueue().
120
+ run()
121
+
112
122
  checkClonesResult := render.create(checkContentEmptyTpl, {
113
- content: clonesFastaContent,
114
- mode: "raw"
123
+ content: checkClonesRun.getStdoutContent()
115
124
  })
116
125
  emptyClonesInput := checkClonesResult.output("result")
117
126