@platforma-open/milaboratories.samples-and-data.workflow 2.2.1 → 2.3.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/dist/index.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  module.exports = { Templates: {
2
2
  'parse-bulk-count-matrix': { type: 'from-file', path: require.resolve('./tengo/tpl/parse-bulk-count-matrix.plj.gz') },
3
3
  'parse-multisample-h5ad': { type: 'from-file', path: require.resolve('./tengo/tpl/parse-multisample-h5ad.plj.gz') },
4
+ 'parse-multisample-seurat': { type: 'from-file', path: require.resolve('./tengo/tpl/parse-multisample-seurat.plj.gz') },
4
5
  'prerun': { type: 'from-file', path: require.resolve('./tengo/tpl/prerun.plj.gz') },
5
6
  'main': { type: 'from-file', path: require.resolve('./tengo/tpl/main.plj.gz') }
6
7
  }};
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  declare type TemplateFromFile = { readonly type: "from-file"; readonly path: string; };
2
- declare type TplName = "parse-bulk-count-matrix" | "parse-multisample-h5ad" | "prerun" | "main";
2
+ declare type TplName = "parse-bulk-count-matrix" | "parse-multisample-h5ad" | "parse-multisample-seurat" | "prerun" | "main";
3
3
  declare const Templates: Record<TplName, TemplateFromFile>;
4
4
  export { Templates };
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import { resolve } from 'node:path';
2
2
  export const Templates = {
3
3
  'parse-bulk-count-matrix': { type: 'from-file', path: resolve(import.meta.dirname, './tengo/tpl/parse-bulk-count-matrix.plj.gz') },
4
4
  'parse-multisample-h5ad': { type: 'from-file', path: resolve(import.meta.dirname, './tengo/tpl/parse-multisample-h5ad.plj.gz') },
5
+ 'parse-multisample-seurat': { type: 'from-file', path: resolve(import.meta.dirname, './tengo/tpl/parse-multisample-seurat.plj.gz') },
5
6
  'prerun': { type: 'from-file', path: resolve(import.meta.dirname, './tengo/tpl/prerun.plj.gz') },
6
7
  'main': { type: 'from-file', path: resolve(import.meta.dirname, './tengo/tpl/main.plj.gz') }
7
8
  };
@@ -37,6 +37,10 @@ getSamples := func(dataset, importFile) {
37
37
  return result
38
38
  }
39
39
 
40
+ createGroupAxis := func(groupIdAxis, _) {
41
+ return copy(groupIdAxis)
42
+ }
43
+
40
44
  createDataset := func(blockId, sampleIdAxis, groupIdAxis, dataset, importFile) {
41
45
 
42
46
  extension := dataset.content.xsvType + (dataset.content.gzipped ? ".gz" : "")
@@ -64,5 +68,6 @@ createDataset := func(blockId, sampleIdAxis, groupIdAxis, dataset, importFile) {
64
68
  export {
65
69
  isGrouped: true,
66
70
  getSamples: getSamples,
71
+ createGroupAxis: createGroupAxis,
67
72
  createDataset: createDataset
68
73
  }
@@ -5,6 +5,10 @@ json := import("json")
5
5
  smart := import("@platforma-sdk/workflow-tengo:smart")
6
6
  util := import("@platforma-open/milaboratories.samples-and-data.workflow:util")
7
7
 
8
+ createGroupAxis := func(groupIdAxis, _) {
9
+ return copy(groupIdAxis)
10
+ }
11
+
8
12
  createDataset := func(blockId, sampleIdAxis, groupIdAxis, dataset, importFile) {
9
13
  extension := dataset.content.gzipped ? "fastq.gz" : "fastq"
10
14
 
@@ -50,6 +54,7 @@ getSamples := func(dataset, importFile) {
50
54
 
51
55
  export {
52
56
  isGrouped: true,
57
+ createGroupAxis: createGroupAxis,
53
58
  createDataset: createDataset,
54
59
  getSamples: getSamples
55
60
  }
@@ -18,10 +18,7 @@ getColumns := func(fImport, importFile) {
18
18
 
19
19
  getSamples := func(dataset, importFile) {
20
20
  result := {}
21
- sampleColumnName := dataset.content.sampleColumnName
22
- if !sampleColumnName {
23
- sampleColumnName = "sample"
24
- }
21
+ sampleColumnName := util.getSampleColumnName(dataset)
25
22
  for groupId, importHandle in dataset.content.data {
26
23
  if !importHandle {
27
24
  ll.panic("File handle not set for group %v", groupId)
@@ -36,6 +33,13 @@ getSamples := func(dataset, importFile) {
36
33
  return result
37
34
  }
38
35
 
36
+ createGroupAxis := func(groupIdAxis, dataset) {
37
+ sampleColumnName := util.getSampleColumnName(dataset)
38
+ result := copy(groupIdAxis)
39
+ result.annotations["pl7.app/sampleColumnName"] = sampleColumnName
40
+ return result
41
+ }
42
+
39
43
  createDataset := func(blockId, sampleIdAxis, groupIdAxis, dataset, importFile) {
40
44
 
41
45
  extension := "h5ad"
@@ -64,6 +68,7 @@ export {
64
68
  isGrouped: true,
65
69
  getColumns: getColumns,
66
70
  getSamples: getSamples,
71
+ createGroupAxis: createGroupAxis,
67
72
  createDataset: createDataset
68
73
  }
69
74
 
@@ -0,0 +1,75 @@
1
+ ll := import("@platforma-sdk/workflow-tengo:ll")
2
+ render := import("@platforma-sdk/workflow-tengo:render")
3
+ assets := import("@platforma-sdk/workflow-tengo:assets")
4
+ pColumn := import("@platforma-sdk/workflow-tengo:pframes.pcolumn")
5
+ parseSeuratTpl := assets.importTemplate("@platforma-open/milaboratories.samples-and-data.workflow:parse-multisample-seurat")
6
+
7
+ util := import("@platforma-open/milaboratories.samples-and-data.workflow:util")
8
+
9
+ getColumns := func(fImport, importFile) {
10
+ seuratFile := importFile(fImport)
11
+ columnsCsv := render.create(parseSeuratTpl, {
12
+ seuratFile: seuratFile,
13
+ sampleColumnName: "sample"
14
+ }).output("columnsCsv")
15
+
16
+ return columnsCsv
17
+ }
18
+
19
+ getSamples := func(dataset, importFile) {
20
+ result := {}
21
+ sampleColumnName := util.getSampleColumnName(dataset)
22
+ for groupId, importHandle in dataset.content.data {
23
+ if !importHandle {
24
+ ll.panic("File handle not set for group %v", groupId)
25
+ }
26
+ seuratFile := importFile(importHandle)
27
+ samplesCsv := render.create(parseSeuratTpl, {
28
+ seuratFile: seuratFile,
29
+ sampleColumnName: sampleColumnName
30
+ }).output("samplesCsv")
31
+ result[groupId] = samplesCsv
32
+ }
33
+ return result
34
+ }
35
+
36
+ createGroupAxis := func(groupIdAxis, dataset) {
37
+ sampleColumnName := util.getSampleColumnName(dataset)
38
+ result := copy(groupIdAxis)
39
+ result.annotations["pl7.app/sampleColumnName"] = sampleColumnName
40
+ return result
41
+ }
42
+
43
+ createDataset := func(blockId, sampleIdAxis, groupIdAxis, dataset, importFile) {
44
+
45
+ extension := "rds"
46
+
47
+ spec := util.datasetColumnSpecBase(blockId, dataset, extension)
48
+ spec.axesSpec = [groupIdAxis]
49
+
50
+ data := pColumn.resourceMapBuilder(1)
51
+ for groupId, importHandle in dataset.content.data {
52
+ if !importHandle {
53
+ ll.panic("File handle not set for sample %v", groupId)
54
+ }
55
+ data.add([groupId], importFile(importHandle))
56
+ }
57
+
58
+ result := {}
59
+ result["dataset." + dataset.id] = {
60
+ spec: spec,
61
+ data: data.build()
62
+ }
63
+
64
+ return result
65
+ }
66
+
67
+ export {
68
+ isGrouped: true,
69
+ getColumns: getColumns,
70
+ getSamples: getSamples,
71
+ createGroupAxis: createGroupAxis,
72
+ createDataset: createDataset
73
+ }
74
+
75
+
@@ -0,0 +1,34 @@
1
+
2
+ ll := import("@platforma-sdk/workflow-tengo:ll")
3
+ pColumn := import("@platforma-sdk/workflow-tengo:pframes.pcolumn")
4
+
5
+ util := import("@platforma-open/milaboratories.samples-and-data.workflow:util")
6
+
7
+ export {
8
+ isGrouped: false,
9
+
10
+ createDataset: func(blockId, sampleIdAxis, dataset, importFile) {
11
+ extension := "rds"
12
+
13
+ spec := util.datasetColumnSpecBase(blockId, dataset, extension)
14
+ spec.axesSpec = [sampleIdAxis]
15
+
16
+ data := pColumn.resourceMapBuilder(1)
17
+ for sampleId, importHandle in dataset.content.data {
18
+ if !importHandle {
19
+ ll.panic("File handle not set for sample %v", sampleId)
20
+ }
21
+ data.add([sampleId], importFile(importHandle))
22
+ }
23
+
24
+ result := {}
25
+ result["dataset." + dataset.id] = {
26
+ spec: spec,
27
+ data: data.build()
28
+ }
29
+
30
+ return result
31
+ }
32
+ }
33
+
34
+
@@ -72,9 +72,18 @@ sampleGroupsLinkerColumn := func(blockId, dataset, sampleIdAxis, groupIdAxis) {
72
72
  }
73
73
  }
74
74
 
75
+ getSampleColumnName := func(dataset) {
76
+ sampleColumnName := dataset.content.sampleColumnName
77
+ if !sampleColumnName {
78
+ return "sample"
79
+ }
80
+ return sampleColumnName
81
+ }
82
+
75
83
 
76
84
  export {
77
85
  createJsonPColumnData: createJsonPColumnData,
78
86
  datasetColumnSpecBase: datasetColumnSpecBase,
79
- sampleGroupsLinkerColumn: sampleGroupsLinkerColumn
87
+ sampleGroupsLinkerColumn: sampleGroupsLinkerColumn,
88
+ getSampleColumnName: getSampleColumnName
80
89
  }
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-open/milaboratories.samples-and-data.workflow",
3
- "version": "2.2.1",
3
+ "version": "2.3.1",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "./dist/**/*"
@@ -8,10 +8,11 @@
8
8
  "description": "Tengo-based template",
9
9
  "dependencies": {
10
10
  "@platforma-sdk/workflow-tengo": "5.6.1",
11
- "@platforma-open/milaboratories.samples-and-data.parse-h5ad": "1.1.1"
11
+ "@platforma-open/milaboratories.samples-and-data.parse-h5ad": "1.1.1",
12
+ "@platforma-open/milaboratories.samples-and-data.parse-seurat": "1.1.0"
12
13
  },
13
14
  "devDependencies": {
14
- "@platforma-sdk/tengo-builder": "2.3.9"
15
+ "@platforma-sdk/tengo-builder": "2.3.10"
15
16
  },
16
17
  "scripts": {
17
18
  "build": "rm -rf dist/* && pl-tengo check && pl-tengo build",