@sjcrh/proteinpaint-types 2.135.2-0 → 2.137.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.
@@ -21,13 +21,31 @@ var termdbSingleCellDataPayload = {
21
21
  var validTermdbSingleCellDataRequest = (input) => {
22
22
  const errors = [];
23
23
  const __is = (input2) => {
24
- const $io0 = (input3) => "string" === typeof input3.genome && "string" === typeof input3.dslabel && ("object" === typeof input3.sample && null !== input3.sample && $io1(input3.sample)) && (Array.isArray(input3.plots) && input3.plots.every((elem) => "string" === typeof elem)) && (void 0 === input3.gene || "string" === typeof input3.gene);
24
+ const $join = import_typia.createValidate.join;
25
+ const $io0 = (input3) => "string" === typeof input3.genome && "string" === typeof input3.dslabel && ("object" === typeof input3.sample && null !== input3.sample && $io1(input3.sample)) && (Array.isArray(input3.plots) && input3.plots.every((elem) => "string" === typeof elem)) && (void 0 === input3.gene || "string" === typeof input3.gene) && (void 0 === input3.colorBy || "object" === typeof input3.colorBy && null !== input3.colorBy && false === Array.isArray(input3.colorBy) && $io2(input3.colorBy)) && (void 0 === input3.colorMap || "object" === typeof input3.colorMap && null !== input3.colorMap && false === Array.isArray(input3.colorMap) && $io3(input3.colorMap));
25
26
  const $io1 = (input3) => (void 0 === input3.eID || "string" === typeof input3.eID) && "string" === typeof input3.sID;
27
+ const $io2 = (input3) => Object.keys(input3).every((key) => {
28
+ const value = input3[key];
29
+ if (void 0 === value)
30
+ return true;
31
+ if (RegExp(/(.*)/).test(key))
32
+ return "string" === typeof value;
33
+ return true;
34
+ });
35
+ const $io3 = (input3) => Object.keys(input3).every((key) => {
36
+ const value = input3[key];
37
+ if (void 0 === value)
38
+ return true;
39
+ if (RegExp(/(.*)/).test(key))
40
+ return "string" === typeof value;
41
+ return true;
42
+ });
26
43
  return "object" === typeof input2 && null !== input2 && $io0(input2);
27
44
  };
28
45
  if (false === __is(input)) {
29
46
  const $report = import_typia.createValidate.report(errors);
30
47
  ((input2, _path, _exceptionable = true) => {
48
+ const $join = import_typia.createValidate.join;
31
49
  const $vo0 = (input3, _path2, _exceptionable2 = true) => ["string" === typeof input3.genome || $report(_exceptionable2, {
32
50
  path: _path2 + ".genome",
33
51
  expected: "string",
@@ -60,6 +78,22 @@ var validTermdbSingleCellDataRequest = (input) => {
60
78
  path: _path2 + ".gene",
61
79
  expected: "(string | undefined)",
62
80
  value: input3.gene
81
+ }), void 0 === input3.colorBy || ("object" === typeof input3.colorBy && null !== input3.colorBy && false === Array.isArray(input3.colorBy) || $report(_exceptionable2, {
82
+ path: _path2 + ".colorBy",
83
+ expected: "(__type.o1 | undefined)",
84
+ value: input3.colorBy
85
+ })) && $vo2(input3.colorBy, _path2 + ".colorBy", _exceptionable2) || $report(_exceptionable2, {
86
+ path: _path2 + ".colorBy",
87
+ expected: "(__type.o1 | undefined)",
88
+ value: input3.colorBy
89
+ }), void 0 === input3.colorMap || ("object" === typeof input3.colorMap && null !== input3.colorMap && false === Array.isArray(input3.colorMap) || $report(_exceptionable2, {
90
+ path: _path2 + ".colorMap",
91
+ expected: "(__type.o2 | undefined)",
92
+ value: input3.colorMap
93
+ })) && $vo3(input3.colorMap, _path2 + ".colorMap", _exceptionable2) || $report(_exceptionable2, {
94
+ path: _path2 + ".colorMap",
95
+ expected: "(__type.o2 | undefined)",
96
+ value: input3.colorMap
63
97
  })].every((flag) => flag);
64
98
  const $vo1 = (input3, _path2, _exceptionable2 = true) => [void 0 === input3.eID || "string" === typeof input3.eID || $report(_exceptionable2, {
65
99
  path: _path2 + ".eID",
@@ -70,6 +104,30 @@ var validTermdbSingleCellDataRequest = (input) => {
70
104
  expected: "string",
71
105
  value: input3.sID
72
106
  })].every((flag) => flag);
107
+ const $vo2 = (input3, _path2, _exceptionable2 = true) => [false === _exceptionable2 || Object.keys(input3).map((key) => {
108
+ const value = input3[key];
109
+ if (void 0 === value)
110
+ return true;
111
+ if (RegExp(/(.*)/).test(key))
112
+ return "string" === typeof value || $report(_exceptionable2, {
113
+ path: _path2 + $join(key),
114
+ expected: "string",
115
+ value
116
+ });
117
+ return true;
118
+ }).every((flag) => flag)].every((flag) => flag);
119
+ const $vo3 = (input3, _path2, _exceptionable2 = true) => [false === _exceptionable2 || Object.keys(input3).map((key) => {
120
+ const value = input3[key];
121
+ if (void 0 === value)
122
+ return true;
123
+ if (RegExp(/(.*)/).test(key))
124
+ return "string" === typeof value || $report(_exceptionable2, {
125
+ path: _path2 + $join(key),
126
+ expected: "string",
127
+ value
128
+ });
129
+ return true;
130
+ }).every((flag) => flag)].every((flag) => flag);
73
131
  return ("object" === typeof input2 && null !== input2 || $report(true, {
74
132
  path: _path + "",
75
133
  expected: "TermdbSingleCellDataRequest",
@@ -91,20 +149,11 @@ var validTermdbSingleCellDataRequest = (input) => {
91
149
  var validTermdbSingleCellDataResponse = (input) => {
92
150
  const errors = [];
93
151
  const __is = (input2) => {
94
- const $join = import_typia.createValidate.join;
95
152
  const $io0 = (input3) => "number" === typeof input3.status && "string" === typeof input3.error;
96
153
  const $io1 = (input3) => "boolean" === typeof input3.nodata;
97
154
  const $io2 = (input3) => Array.isArray(input3.plots) && input3.plots.every((elem) => "object" === typeof elem && null !== elem && $io3(elem));
98
- const $io3 = (input3) => "string" === typeof input3.name && (void 0 === input3.expCells || Array.isArray(input3.expCells) && input3.expCells.every((elem) => "object" === typeof elem && null !== elem && $io4(elem))) && (void 0 === input3.noExpCells || Array.isArray(input3.noExpCells) && input3.noExpCells.every((elem) => "object" === typeof elem && null !== elem && $io4(elem))) && "string" === typeof input3.colorBy && (Array.isArray(input3.colorColumns) && input3.colorColumns.every((elem) => "string" === typeof elem)) && (void 0 === input3.colorMap || "object" === typeof input3.colorMap && null !== input3.colorMap && false === Array.isArray(input3.colorMap) && $io5(input3.colorMap));
155
+ const $io3 = (input3) => "string" === typeof input3.name && (Array.isArray(input3.expCells) && input3.expCells.every((elem) => "object" === typeof elem && null !== elem && $io4(elem))) && (Array.isArray(input3.noExpCells) && input3.noExpCells.every((elem) => "object" === typeof elem && null !== elem && $io4(elem))) && (Array.isArray(input3.colorColumns) && input3.colorColumns.every((elem) => "string" === typeof elem)) && "string" === typeof input3.colorBy && true;
99
156
  const $io4 = (input3) => "string" === typeof input3.cellId && "number" === typeof input3.x && "number" === typeof input3.y && (void 0 === input3.z || "number" === typeof input3.z) && "string" === typeof input3.category && (void 0 === input3.geneExp || "number" === typeof input3.geneExp);
100
- const $io5 = (input3) => Object.keys(input3).every((key) => {
101
- const value = input3[key];
102
- if (void 0 === value)
103
- return true;
104
- if (RegExp(/(.*)/).test(key))
105
- return "string" === typeof value;
106
- return true;
107
- });
108
157
  const $iu0 = (input3) => (() => {
109
158
  if (void 0 !== input3.status)
110
159
  return $io0(input3);
@@ -119,7 +168,6 @@ var validTermdbSingleCellDataResponse = (input) => {
119
168
  if (false === __is(input)) {
120
169
  const $report = import_typia.createValidate.report(errors);
121
170
  ((input2, _path, _exceptionable = true) => {
122
- const $join = import_typia.createValidate.join;
123
171
  const $vo0 = (input3, _path2, _exceptionable2 = true) => ["number" === typeof input3.status || $report(_exceptionable2, {
124
172
  path: _path2 + ".status",
125
173
  expected: "number",
@@ -155,9 +203,9 @@ var validTermdbSingleCellDataResponse = (input) => {
155
203
  path: _path2 + ".name",
156
204
  expected: "string",
157
205
  value: input3.name
158
- }), void 0 === input3.expCells || (Array.isArray(input3.expCells) || $report(_exceptionable2, {
206
+ }), (Array.isArray(input3.expCells) || $report(_exceptionable2, {
159
207
  path: _path2 + ".expCells",
160
- expected: "(Array<Cell> | undefined)",
208
+ expected: "Array<Cell>",
161
209
  value: input3.expCells
162
210
  })) && input3.expCells.map((elem, _index2) => ("object" === typeof elem && null !== elem || $report(_exceptionable2, {
163
211
  path: _path2 + ".expCells[" + _index2 + "]",
@@ -169,11 +217,11 @@ var validTermdbSingleCellDataResponse = (input) => {
169
217
  value: elem
170
218
  })).every((flag) => flag) || $report(_exceptionable2, {
171
219
  path: _path2 + ".expCells",
172
- expected: "(Array<Cell> | undefined)",
220
+ expected: "Array<Cell>",
173
221
  value: input3.expCells
174
- }), void 0 === input3.noExpCells || (Array.isArray(input3.noExpCells) || $report(_exceptionable2, {
222
+ }), (Array.isArray(input3.noExpCells) || $report(_exceptionable2, {
175
223
  path: _path2 + ".noExpCells",
176
- expected: "(Array<Cell> | undefined)",
224
+ expected: "Array<Cell>",
177
225
  value: input3.noExpCells
178
226
  })) && input3.noExpCells.map((elem, _index3) => ("object" === typeof elem && null !== elem || $report(_exceptionable2, {
179
227
  path: _path2 + ".noExpCells[" + _index3 + "]",
@@ -185,12 +233,8 @@ var validTermdbSingleCellDataResponse = (input) => {
185
233
  value: elem
186
234
  })).every((flag) => flag) || $report(_exceptionable2, {
187
235
  path: _path2 + ".noExpCells",
188
- expected: "(Array<Cell> | undefined)",
236
+ expected: "Array<Cell>",
189
237
  value: input3.noExpCells
190
- }), "string" === typeof input3.colorBy || $report(_exceptionable2, {
191
- path: _path2 + ".colorBy",
192
- expected: "string",
193
- value: input3.colorBy
194
238
  }), (Array.isArray(input3.colorColumns) || $report(_exceptionable2, {
195
239
  path: _path2 + ".colorColumns",
196
240
  expected: "Array<string>",
@@ -203,15 +247,11 @@ var validTermdbSingleCellDataResponse = (input) => {
203
247
  path: _path2 + ".colorColumns",
204
248
  expected: "Array<string>",
205
249
  value: input3.colorColumns
206
- }), void 0 === input3.colorMap || ("object" === typeof input3.colorMap && null !== input3.colorMap && false === Array.isArray(input3.colorMap) || $report(_exceptionable2, {
207
- path: _path2 + ".colorMap",
208
- expected: "(__type | undefined)",
209
- value: input3.colorMap
210
- })) && $vo5(input3.colorMap, _path2 + ".colorMap", _exceptionable2) || $report(_exceptionable2, {
211
- path: _path2 + ".colorMap",
212
- expected: "(__type | undefined)",
213
- value: input3.colorMap
214
- })].every((flag) => flag);
250
+ }), "string" === typeof input3.colorBy || $report(_exceptionable2, {
251
+ path: _path2 + ".colorBy",
252
+ expected: "string",
253
+ value: input3.colorBy
254
+ }), true].every((flag) => flag);
215
255
  const $vo4 = (input3, _path2, _exceptionable2 = true) => ["string" === typeof input3.cellId || $report(_exceptionable2, {
216
256
  path: _path2 + ".cellId",
217
257
  expected: "string",
@@ -237,18 +277,6 @@ var validTermdbSingleCellDataResponse = (input) => {
237
277
  expected: "(number | undefined)",
238
278
  value: input3.geneExp
239
279
  })].every((flag) => flag);
240
- const $vo5 = (input3, _path2, _exceptionable2 = true) => [false === _exceptionable2 || Object.keys(input3).map((key) => {
241
- const value = input3[key];
242
- if (void 0 === value)
243
- return true;
244
- if (RegExp(/(.*)/).test(key))
245
- return "string" === typeof value || $report(_exceptionable2, {
246
- path: _path2 + $join(key),
247
- expected: "string",
248
- value
249
- });
250
- return true;
251
- }).every((flag) => flag)].every((flag) => flag);
252
280
  const $vu0 = (input3, _path2, _exceptionable2 = true) => (() => {
253
281
  if (void 0 !== input3.status)
254
282
  return $vo0(input3, _path2, _exceptionable2);
@@ -0,0 +1,339 @@
1
+ import {
2
+ __toESM,
3
+ require_lib
4
+ } from "./chunk-CNSSF43V.js";
5
+
6
+ // dist/grin2.ts
7
+ var import_typia = __toESM(require_lib(), 1);
8
+
9
+ // src/routes/grin2.ts
10
+ var GRIN2Payload = {
11
+ request: {
12
+ typeId: "GRIN2Request"
13
+ },
14
+ response: {
15
+ typeId: "GRIN2Response"
16
+ }
17
+ };
18
+
19
+ // dist/grin2.ts
20
+ var validGRIN2Request = (input) => {
21
+ const errors = [];
22
+ const __is = (input2) => {
23
+ const $io0 = (input3) => "string" === typeof input3.genome && "string" === typeof input3.dslabel && true && (void 0 === input3.snvindelOptions || "object" === typeof input3.snvindelOptions && null !== input3.snvindelOptions && false === Array.isArray(input3.snvindelOptions) && $io1(input3.snvindelOptions)) && (void 0 === input3.cnvOptions || "object" === typeof input3.cnvOptions && null !== input3.cnvOptions && false === Array.isArray(input3.cnvOptions) && $io2(input3.cnvOptions)) && (void 0 === input3.fusionOptions || "object" === typeof input3.fusionOptions && null !== input3.fusionOptions && false === Array.isArray(input3.fusionOptions) && $io3(input3.fusionOptions));
24
+ const $io1 = (input3) => (void 0 === input3.minTotalDepth || "number" === typeof input3.minTotalDepth) && (void 0 === input3.minAltAlleleCount || "number" === typeof input3.minAltAlleleCount) && (void 0 === input3.consequences || Array.isArray(input3.consequences) && input3.consequences.every((elem) => "string" === typeof elem)) && (void 0 === input3.hyperMutator || "number" === typeof input3.hyperMutator);
25
+ const $io2 = (input3) => (void 0 === input3.lossThreshold || "number" === typeof input3.lossThreshold) && (void 0 === input3.gainThreshold || "number" === typeof input3.gainThreshold) && (void 0 === input3.maxSegLength || "number" === typeof input3.maxSegLength) && (void 0 === input3.minSegLength || "number" === typeof input3.minSegLength) && (void 0 === input3.hyperMutator || "number" === typeof input3.hyperMutator);
26
+ const $io3 = (input3) => (void 0 === input3.fusionTypes || Array.isArray(input3.fusionTypes) && input3.fusionTypes.every((elem) => "gene-gene" === elem || "gene-intergenic" === elem || "readthrough" === elem)) && (void 0 === input3.minConfidence || "number" === typeof input3.minConfidence);
27
+ return "object" === typeof input2 && null !== input2 && $io0(input2);
28
+ };
29
+ if (false === __is(input)) {
30
+ const $report = import_typia.createValidate.report(errors);
31
+ ((input2, _path, _exceptionable = true) => {
32
+ const $vo0 = (input3, _path2, _exceptionable2 = true) => ["string" === typeof input3.genome || $report(_exceptionable2, {
33
+ path: _path2 + ".genome",
34
+ expected: "string",
35
+ value: input3.genome
36
+ }), "string" === typeof input3.dslabel || $report(_exceptionable2, {
37
+ path: _path2 + ".dslabel",
38
+ expected: "string",
39
+ value: input3.dslabel
40
+ }), true, void 0 === input3.snvindelOptions || ("object" === typeof input3.snvindelOptions && null !== input3.snvindelOptions && false === Array.isArray(input3.snvindelOptions) || $report(_exceptionable2, {
41
+ path: _path2 + ".snvindelOptions",
42
+ expected: "(__type | undefined)",
43
+ value: input3.snvindelOptions
44
+ })) && $vo1(input3.snvindelOptions, _path2 + ".snvindelOptions", _exceptionable2) || $report(_exceptionable2, {
45
+ path: _path2 + ".snvindelOptions",
46
+ expected: "(__type | undefined)",
47
+ value: input3.snvindelOptions
48
+ }), void 0 === input3.cnvOptions || ("object" === typeof input3.cnvOptions && null !== input3.cnvOptions && false === Array.isArray(input3.cnvOptions) || $report(_exceptionable2, {
49
+ path: _path2 + ".cnvOptions",
50
+ expected: "(__type.o1 | undefined)",
51
+ value: input3.cnvOptions
52
+ })) && $vo2(input3.cnvOptions, _path2 + ".cnvOptions", _exceptionable2) || $report(_exceptionable2, {
53
+ path: _path2 + ".cnvOptions",
54
+ expected: "(__type.o1 | undefined)",
55
+ value: input3.cnvOptions
56
+ }), void 0 === input3.fusionOptions || ("object" === typeof input3.fusionOptions && null !== input3.fusionOptions && false === Array.isArray(input3.fusionOptions) || $report(_exceptionable2, {
57
+ path: _path2 + ".fusionOptions",
58
+ expected: "(__type.o2 | undefined)",
59
+ value: input3.fusionOptions
60
+ })) && $vo3(input3.fusionOptions, _path2 + ".fusionOptions", _exceptionable2) || $report(_exceptionable2, {
61
+ path: _path2 + ".fusionOptions",
62
+ expected: "(__type.o2 | undefined)",
63
+ value: input3.fusionOptions
64
+ })].every((flag) => flag);
65
+ const $vo1 = (input3, _path2, _exceptionable2 = true) => [void 0 === input3.minTotalDepth || "number" === typeof input3.minTotalDepth || $report(_exceptionable2, {
66
+ path: _path2 + ".minTotalDepth",
67
+ expected: "(number | undefined)",
68
+ value: input3.minTotalDepth
69
+ }), void 0 === input3.minAltAlleleCount || "number" === typeof input3.minAltAlleleCount || $report(_exceptionable2, {
70
+ path: _path2 + ".minAltAlleleCount",
71
+ expected: "(number | undefined)",
72
+ value: input3.minAltAlleleCount
73
+ }), void 0 === input3.consequences || (Array.isArray(input3.consequences) || $report(_exceptionable2, {
74
+ path: _path2 + ".consequences",
75
+ expected: "(Array<string> | undefined)",
76
+ value: input3.consequences
77
+ })) && input3.consequences.map((elem, _index1) => "string" === typeof elem || $report(_exceptionable2, {
78
+ path: _path2 + ".consequences[" + _index1 + "]",
79
+ expected: "string",
80
+ value: elem
81
+ })).every((flag) => flag) || $report(_exceptionable2, {
82
+ path: _path2 + ".consequences",
83
+ expected: "(Array<string> | undefined)",
84
+ value: input3.consequences
85
+ }), void 0 === input3.hyperMutator || "number" === typeof input3.hyperMutator || $report(_exceptionable2, {
86
+ path: _path2 + ".hyperMutator",
87
+ expected: "(number | undefined)",
88
+ value: input3.hyperMutator
89
+ })].every((flag) => flag);
90
+ const $vo2 = (input3, _path2, _exceptionable2 = true) => [void 0 === input3.lossThreshold || "number" === typeof input3.lossThreshold || $report(_exceptionable2, {
91
+ path: _path2 + ".lossThreshold",
92
+ expected: "(number | undefined)",
93
+ value: input3.lossThreshold
94
+ }), void 0 === input3.gainThreshold || "number" === typeof input3.gainThreshold || $report(_exceptionable2, {
95
+ path: _path2 + ".gainThreshold",
96
+ expected: "(number | undefined)",
97
+ value: input3.gainThreshold
98
+ }), void 0 === input3.maxSegLength || "number" === typeof input3.maxSegLength || $report(_exceptionable2, {
99
+ path: _path2 + ".maxSegLength",
100
+ expected: "(number | undefined)",
101
+ value: input3.maxSegLength
102
+ }), void 0 === input3.minSegLength || "number" === typeof input3.minSegLength || $report(_exceptionable2, {
103
+ path: _path2 + ".minSegLength",
104
+ expected: "(number | undefined)",
105
+ value: input3.minSegLength
106
+ }), void 0 === input3.hyperMutator || "number" === typeof input3.hyperMutator || $report(_exceptionable2, {
107
+ path: _path2 + ".hyperMutator",
108
+ expected: "(number | undefined)",
109
+ value: input3.hyperMutator
110
+ })].every((flag) => flag);
111
+ const $vo3 = (input3, _path2, _exceptionable2 = true) => [void 0 === input3.fusionTypes || (Array.isArray(input3.fusionTypes) || $report(_exceptionable2, {
112
+ path: _path2 + ".fusionTypes",
113
+ expected: '(Array<"gene-gene" | "gene-intergenic" | "readthrough"> | undefined)',
114
+ value: input3.fusionTypes
115
+ })) && input3.fusionTypes.map((elem, _index2) => "gene-gene" === elem || "gene-intergenic" === elem || "readthrough" === elem || $report(_exceptionable2, {
116
+ path: _path2 + ".fusionTypes[" + _index2 + "]",
117
+ expected: '("gene-gene" | "gene-intergenic" | "readthrough")',
118
+ value: elem
119
+ })).every((flag) => flag) || $report(_exceptionable2, {
120
+ path: _path2 + ".fusionTypes",
121
+ expected: '(Array<"gene-gene" | "gene-intergenic" | "readthrough"> | undefined)',
122
+ value: input3.fusionTypes
123
+ }), void 0 === input3.minConfidence || "number" === typeof input3.minConfidence || $report(_exceptionable2, {
124
+ path: _path2 + ".minConfidence",
125
+ expected: "(number | undefined)",
126
+ value: input3.minConfidence
127
+ })].every((flag) => flag);
128
+ return ("object" === typeof input2 && null !== input2 || $report(true, {
129
+ path: _path + "",
130
+ expected: "GRIN2Request",
131
+ value: input2
132
+ })) && $vo0(input2, _path + "", true) || $report(true, {
133
+ path: _path + "",
134
+ expected: "GRIN2Request",
135
+ value: input2
136
+ });
137
+ })(input, "$input", true);
138
+ }
139
+ const success = 0 === errors.length;
140
+ return {
141
+ success,
142
+ errors,
143
+ data: success ? input : void 0
144
+ };
145
+ };
146
+ var validGRIN2Response = (input) => {
147
+ const errors = [];
148
+ const __is = (input2) => {
149
+ const $io0 = (input3) => ("success" === input3.status || "error" === input3.status) && (void 0 === input3.error || "string" === typeof input3.error) && (void 0 === input3.pngImg || "string" === typeof input3.pngImg) && true && (void 0 === input3.topGeneTable || "object" === typeof input3.topGeneTable && null !== input3.topGeneTable && $io1(input3.topGeneTable)) && (void 0 === input3.totalGenes || "number" === typeof input3.totalGenes) && (void 0 === input3.showingTop || "number" === typeof input3.showingTop) && (void 0 === input3.timing || "object" === typeof input3.timing && null !== input3.timing && $io4(input3.timing)) && (void 0 === input3.processingSummary || "object" === typeof input3.processingSummary && null !== input3.processingSummary && $io5(input3.processingSummary));
150
+ const $io1 = (input3) => Array.isArray(input3.columns) && input3.columns.every((elem) => "object" === typeof elem && null !== elem && $io2(elem)) && (Array.isArray(input3.rows) && input3.rows.every((elem) => Array.isArray(elem) && elem.every((elem2) => "object" === typeof elem2 && null !== elem2 && $io3(elem2))));
151
+ const $io2 = (input3) => "string" === typeof input3.label && "boolean" === typeof input3.sortable;
152
+ const $io3 = (input3) => "string" === typeof input3.value || "number" === typeof input3.value;
153
+ const $io4 = (input3) => "number" === typeof input3.processingTime && "number" === typeof input3.grin2Time && "number" === typeof input3.totalTime;
154
+ const $io5 = (input3) => "number" === typeof input3.totalSamples && "number" === typeof input3.successfulSamples && "number" === typeof input3.failedSamples && (Array.isArray(input3.failedFiles) && input3.failedFiles.every((elem) => "object" === typeof elem && null !== elem && $io6(elem)));
155
+ const $io6 = (input3) => "string" === typeof input3.sampleName && "string" === typeof input3.filePath && "string" === typeof input3.error;
156
+ return "object" === typeof input2 && null !== input2 && $io0(input2);
157
+ };
158
+ if (false === __is(input)) {
159
+ const $report = import_typia.createValidate.report(errors);
160
+ ((input2, _path, _exceptionable = true) => {
161
+ const $vo0 = (input3, _path2, _exceptionable2 = true) => ["success" === input3.status || "error" === input3.status || $report(_exceptionable2, {
162
+ path: _path2 + ".status",
163
+ expected: '("error" | "success")',
164
+ value: input3.status
165
+ }), void 0 === input3.error || "string" === typeof input3.error || $report(_exceptionable2, {
166
+ path: _path2 + ".error",
167
+ expected: "(string | undefined)",
168
+ value: input3.error
169
+ }), void 0 === input3.pngImg || "string" === typeof input3.pngImg || $report(_exceptionable2, {
170
+ path: _path2 + ".pngImg",
171
+ expected: "(string | undefined)",
172
+ value: input3.pngImg
173
+ }), true, void 0 === input3.topGeneTable || ("object" === typeof input3.topGeneTable && null !== input3.topGeneTable || $report(_exceptionable2, {
174
+ path: _path2 + ".topGeneTable",
175
+ expected: "(__type | undefined)",
176
+ value: input3.topGeneTable
177
+ })) && $vo1(input3.topGeneTable, _path2 + ".topGeneTable", _exceptionable2) || $report(_exceptionable2, {
178
+ path: _path2 + ".topGeneTable",
179
+ expected: "(__type | undefined)",
180
+ value: input3.topGeneTable
181
+ }), void 0 === input3.totalGenes || "number" === typeof input3.totalGenes || $report(_exceptionable2, {
182
+ path: _path2 + ".totalGenes",
183
+ expected: "(number | undefined)",
184
+ value: input3.totalGenes
185
+ }), void 0 === input3.showingTop || "number" === typeof input3.showingTop || $report(_exceptionable2, {
186
+ path: _path2 + ".showingTop",
187
+ expected: "(number | undefined)",
188
+ value: input3.showingTop
189
+ }), void 0 === input3.timing || ("object" === typeof input3.timing && null !== input3.timing || $report(_exceptionable2, {
190
+ path: _path2 + ".timing",
191
+ expected: "(__type.o3 | undefined)",
192
+ value: input3.timing
193
+ })) && $vo4(input3.timing, _path2 + ".timing", _exceptionable2) || $report(_exceptionable2, {
194
+ path: _path2 + ".timing",
195
+ expected: "(__type.o3 | undefined)",
196
+ value: input3.timing
197
+ }), void 0 === input3.processingSummary || ("object" === typeof input3.processingSummary && null !== input3.processingSummary || $report(_exceptionable2, {
198
+ path: _path2 + ".processingSummary",
199
+ expected: "(__type.o4 | undefined)",
200
+ value: input3.processingSummary
201
+ })) && $vo5(input3.processingSummary, _path2 + ".processingSummary", _exceptionable2) || $report(_exceptionable2, {
202
+ path: _path2 + ".processingSummary",
203
+ expected: "(__type.o4 | undefined)",
204
+ value: input3.processingSummary
205
+ })].every((flag) => flag);
206
+ const $vo1 = (input3, _path2, _exceptionable2 = true) => [(Array.isArray(input3.columns) || $report(_exceptionable2, {
207
+ path: _path2 + ".columns",
208
+ expected: "Array<__type>",
209
+ value: input3.columns
210
+ })) && input3.columns.map((elem, _index1) => ("object" === typeof elem && null !== elem || $report(_exceptionable2, {
211
+ path: _path2 + ".columns[" + _index1 + "]",
212
+ expected: "__type.o1",
213
+ value: elem
214
+ })) && $vo2(elem, _path2 + ".columns[" + _index1 + "]", _exceptionable2) || $report(_exceptionable2, {
215
+ path: _path2 + ".columns[" + _index1 + "]",
216
+ expected: "__type.o1",
217
+ value: elem
218
+ })).every((flag) => flag) || $report(_exceptionable2, {
219
+ path: _path2 + ".columns",
220
+ expected: "Array<__type>",
221
+ value: input3.columns
222
+ }), (Array.isArray(input3.rows) || $report(_exceptionable2, {
223
+ path: _path2 + ".rows",
224
+ expected: "Array<Array<__type>>",
225
+ value: input3.rows
226
+ })) && input3.rows.map((elem, _index2) => (Array.isArray(elem) || $report(_exceptionable2, {
227
+ path: _path2 + ".rows[" + _index2 + "]",
228
+ expected: "Array<__type>.o1",
229
+ value: elem
230
+ })) && elem.map((elem2, _index3) => ("object" === typeof elem2 && null !== elem2 || $report(_exceptionable2, {
231
+ path: _path2 + ".rows[" + _index2 + "][" + _index3 + "]",
232
+ expected: "__type.o2",
233
+ value: elem2
234
+ })) && $vo3(elem2, _path2 + ".rows[" + _index2 + "][" + _index3 + "]", _exceptionable2) || $report(_exceptionable2, {
235
+ path: _path2 + ".rows[" + _index2 + "][" + _index3 + "]",
236
+ expected: "__type.o2",
237
+ value: elem2
238
+ })).every((flag) => flag) || $report(_exceptionable2, {
239
+ path: _path2 + ".rows[" + _index2 + "]",
240
+ expected: "Array<__type>.o1",
241
+ value: elem
242
+ })).every((flag) => flag) || $report(_exceptionable2, {
243
+ path: _path2 + ".rows",
244
+ expected: "Array<Array<__type>>",
245
+ value: input3.rows
246
+ })].every((flag) => flag);
247
+ const $vo2 = (input3, _path2, _exceptionable2 = true) => ["string" === typeof input3.label || $report(_exceptionable2, {
248
+ path: _path2 + ".label",
249
+ expected: "string",
250
+ value: input3.label
251
+ }), "boolean" === typeof input3.sortable || $report(_exceptionable2, {
252
+ path: _path2 + ".sortable",
253
+ expected: "boolean",
254
+ value: input3.sortable
255
+ })].every((flag) => flag);
256
+ const $vo3 = (input3, _path2, _exceptionable2 = true) => ["string" === typeof input3.value || "number" === typeof input3.value || $report(_exceptionable2, {
257
+ path: _path2 + ".value",
258
+ expected: "(number | string)",
259
+ value: input3.value
260
+ })].every((flag) => flag);
261
+ const $vo4 = (input3, _path2, _exceptionable2 = true) => ["number" === typeof input3.processingTime || $report(_exceptionable2, {
262
+ path: _path2 + ".processingTime",
263
+ expected: "number",
264
+ value: input3.processingTime
265
+ }), "number" === typeof input3.grin2Time || $report(_exceptionable2, {
266
+ path: _path2 + ".grin2Time",
267
+ expected: "number",
268
+ value: input3.grin2Time
269
+ }), "number" === typeof input3.totalTime || $report(_exceptionable2, {
270
+ path: _path2 + ".totalTime",
271
+ expected: "number",
272
+ value: input3.totalTime
273
+ })].every((flag) => flag);
274
+ const $vo5 = (input3, _path2, _exceptionable2 = true) => ["number" === typeof input3.totalSamples || $report(_exceptionable2, {
275
+ path: _path2 + ".totalSamples",
276
+ expected: "number",
277
+ value: input3.totalSamples
278
+ }), "number" === typeof input3.successfulSamples || $report(_exceptionable2, {
279
+ path: _path2 + ".successfulSamples",
280
+ expected: "number",
281
+ value: input3.successfulSamples
282
+ }), "number" === typeof input3.failedSamples || $report(_exceptionable2, {
283
+ path: _path2 + ".failedSamples",
284
+ expected: "number",
285
+ value: input3.failedSamples
286
+ }), (Array.isArray(input3.failedFiles) || $report(_exceptionable2, {
287
+ path: _path2 + ".failedFiles",
288
+ expected: "Array<__type>.o2",
289
+ value: input3.failedFiles
290
+ })) && input3.failedFiles.map((elem, _index4) => ("object" === typeof elem && null !== elem || $report(_exceptionable2, {
291
+ path: _path2 + ".failedFiles[" + _index4 + "]",
292
+ expected: "__type.o5",
293
+ value: elem
294
+ })) && $vo6(elem, _path2 + ".failedFiles[" + _index4 + "]", _exceptionable2) || $report(_exceptionable2, {
295
+ path: _path2 + ".failedFiles[" + _index4 + "]",
296
+ expected: "__type.o5",
297
+ value: elem
298
+ })).every((flag) => flag) || $report(_exceptionable2, {
299
+ path: _path2 + ".failedFiles",
300
+ expected: "Array<__type>.o2",
301
+ value: input3.failedFiles
302
+ })].every((flag) => flag);
303
+ const $vo6 = (input3, _path2, _exceptionable2 = true) => ["string" === typeof input3.sampleName || $report(_exceptionable2, {
304
+ path: _path2 + ".sampleName",
305
+ expected: "string",
306
+ value: input3.sampleName
307
+ }), "string" === typeof input3.filePath || $report(_exceptionable2, {
308
+ path: _path2 + ".filePath",
309
+ expected: "string",
310
+ value: input3.filePath
311
+ }), "string" === typeof input3.error || $report(_exceptionable2, {
312
+ path: _path2 + ".error",
313
+ expected: "string",
314
+ value: input3.error
315
+ })].every((flag) => flag);
316
+ return ("object" === typeof input2 && null !== input2 || $report(true, {
317
+ path: _path + "",
318
+ expected: "GRIN2Response",
319
+ value: input2
320
+ })) && $vo0(input2, _path + "", true) || $report(true, {
321
+ path: _path + "",
322
+ expected: "GRIN2Response",
323
+ value: input2
324
+ });
325
+ })(input, "$input", true);
326
+ }
327
+ const success = 0 === errors.length;
328
+ return {
329
+ success,
330
+ errors,
331
+ data: success ? input : void 0
332
+ };
333
+ };
334
+
335
+ export {
336
+ GRIN2Payload,
337
+ validGRIN2Request,
338
+ validGRIN2Response
339
+ };
package/dist/grin2.js ADDED
@@ -0,0 +1,11 @@
1
+ import {
2
+ GRIN2Payload,
3
+ validGRIN2Request,
4
+ validGRIN2Response
5
+ } from "./chunk-Z2VOERJ2.js";
6
+ import "./chunk-CNSSF43V.js";
7
+ export {
8
+ GRIN2Payload,
9
+ validGRIN2Request,
10
+ validGRIN2Response
11
+ };
package/dist/index.js CHANGED
@@ -1,3 +1,8 @@
1
+ import {
2
+ topMutatedGenePayload,
3
+ validtopMutatedGeneRequest,
4
+ validtopMutatedGeneResponse
5
+ } from "./chunk-YGX6BZZY.js";
1
6
  import {
2
7
  termdbTopTermsByTypePayload,
3
8
  validTermdbTopTermsByTypeRequest,
@@ -28,6 +33,11 @@ import {
28
33
  validWSISamplesResponse,
29
34
  wsiSamplesPayload
30
35
  } from "./chunk-W6NLM363.js";
36
+ import {
37
+ rootTermPayload,
38
+ validRootTermRequest,
39
+ validRootTermResponse
40
+ } from "./chunk-AASWRJMS.js";
31
41
  import {
32
42
  termdbSampleImagesPayload,
33
43
  validTermdbSampleImagesRequest,
@@ -47,7 +57,7 @@ import {
47
57
  termdbSingleCellDataPayload,
48
58
  validTermdbSingleCellDataRequest,
49
59
  validTermdbSingleCellDataResponse
50
- } from "./chunk-ZAMCS7PC.js";
60
+ } from "./chunk-K5POIB3P.js";
51
61
  import {
52
62
  termdbSingleCellSamplesPayload,
53
63
  validTermdbSingleCellSamplesRequest,
@@ -64,10 +74,10 @@ import {
64
74
  validTermsByIdsResponse
65
75
  } from "./chunk-HLGKC33X.js";
66
76
  import {
67
- topMutatedGenePayload,
68
- validtopMutatedGeneRequest,
69
- validtopMutatedGeneResponse
70
- } from "./chunk-YGX6BZZY.js";
77
+ boxplotPayload,
78
+ validBoxPlotRequest,
79
+ validBoxPlotResponse
80
+ } from "./chunk-VMZC4IN7.js";
71
81
  import {
72
82
  termdbCategoriesPayload,
73
83
  validCategoriesRequest,
@@ -104,10 +114,10 @@ import {
104
114
  validPercentileResponse
105
115
  } from "./chunk-GVBBTRW4.js";
106
116
  import {
107
- rootTermPayload,
108
- validRootTermRequest,
109
- validRootTermResponse
110
- } from "./chunk-AASWRJMS.js";
117
+ ntseqPayload,
118
+ validNtseqRequest,
119
+ validNtseqResponse
120
+ } from "./chunk-HIPWQ6AW.js";
111
121
  import {
112
122
  pdomainPayload,
113
123
  validPdomainRequest,
@@ -144,10 +154,10 @@ import {
144
154
  validDEResponse
145
155
  } from "./chunk-3C26VWPU.js";
146
156
  import {
147
- boxplotPayload,
148
- validBoxPlotRequest,
149
- validBoxPlotResponse
150
- } from "./chunk-VMZC4IN7.js";
157
+ GRIN2Payload,
158
+ validGRIN2Request,
159
+ validGRIN2Response
160
+ } from "./chunk-Z2VOERJ2.js";
151
161
  import {
152
162
  healthcheckPayload,
153
163
  validHealthCheckRequest,
@@ -178,11 +188,6 @@ import {
178
188
  validIsoformLstRequest,
179
189
  validIsoformLstResponse
180
190
  } from "./chunk-B43GFRT4.js";
181
- import {
182
- ntseqPayload,
183
- validNtseqRequest,
184
- validNtseqResponse
185
- } from "./chunk-HIPWQ6AW.js";
186
191
  import {
187
192
  dzImagesPayload,
188
193
  validDZImagesRequest,
@@ -267,6 +272,7 @@ import "./chunk-CNSSF43V.js";
267
272
  export {
268
273
  CorrelationVolcanoPayload,
269
274
  FilterTermValuesPayload,
275
+ GRIN2Payload,
270
276
  GdcMafPayload,
271
277
  ProfileFormScoresPayload,
272
278
  ProfileScoresPayload,
@@ -341,6 +347,8 @@ export {
341
347
  validDsDataResponse,
342
348
  validFilterTermValuesRequest,
343
349
  validFilterTermValuesResponse,
350
+ validGRIN2Request,
351
+ validGRIN2Response,
344
352
  validGdcGRIN2listRequest,
345
353
  validGdcGRIN2listResponse,
346
354
  validGdcMafBuildRequest,
@@ -2,7 +2,7 @@ import {
2
2
  termdbSingleCellDataPayload,
3
3
  validTermdbSingleCellDataRequest,
4
4
  validTermdbSingleCellDataResponse
5
- } from "./chunk-ZAMCS7PC.js";
5
+ } from "./chunk-K5POIB3P.js";
6
6
  import "./chunk-CNSSF43V.js";
7
7
  export {
8
8
  termdbSingleCellDataPayload,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjcrh/proteinpaint-types",
3
- "version": "2.135.2-0",
3
+ "version": "2.137.0",
4
4
  "type": "module",
5
5
  "description": "Shared type definitions between ProteinPaint server and client code",
6
6
  "main": "src/index.ts",
package/src/dataset.ts CHANGED
@@ -371,11 +371,45 @@ type SvFusion = {
371
371
  }
372
372
 
373
373
  type SingleSampleMutationQuery = {
374
+ /** for native ds, each file should contain a stringified json array with elements below
375
+ for non-native ds, the getter should return an json array with same structure:
376
+
377
+ cnv example entry:
378
+ {
379
+ "chromosome": "chr1",
380
+ "start": 123456,
381
+ "end": 123789,
382
+ "type": "cnv",
383
+ "log2Ratio": null
384
+ }
385
+
386
+ snvindel example entry:
387
+ {
388
+ "chromosome": "chr1",
389
+ "start": 123456,
390
+ "end": 123789,
391
+ "type": "snvindel"
392
+ }
393
+ TODO specify property names for read depth; needed for grin2 filtering
394
+
395
+ fusion example entry:
396
+ {
397
+ "chromosome": "chr1",
398
+ "start": 123456,
399
+ "end": 123789,
400
+ "type": "fusion",
401
+ "fusionType": null,
402
+ "confidence": null
403
+ }
404
+ */
374
405
  src: 'native' | 'gdcapi' | string
375
406
  /** which property of client mutation object to retrieve sample identifier for
376
407
  * querying single sample data with */
377
408
  sample_id_key: string
378
- /** only required for src=native */
409
+ /** only required for src=native
410
+ folder contains a set of files, one file per sample, file named by sample name
411
+ each file contains a stringified json array of mutation/cnv/sv entries (aka mlst)
412
+ */
379
413
  folder?: string
380
414
  /** disco plot will be launched when singleSampleMutation is enabled. supply customization options here */
381
415
  discoPlot?: {
@@ -766,24 +800,26 @@ type ColorColumn = {
766
800
 
767
801
  /** defines a tsne type of plot for cells from one sample */
768
802
  type SingleCellPlot = {
769
- /** type of the plot, e.g. tsne or umap, also display as plot name on ui */
803
+ /** value is display as plot name on ui and also used as identifier for a plot, must be unique */
770
804
  name: string
771
805
  /** folder in which per-sample files are stored.
772
- each file is a tabular text file with all cells (rows) from that sample.
773
- all files must have same set of columns
774
- file columns include cell types and x/y coords, as described by other parameters
775
- */
806
+ each file is a tabular text file with all cells (rows) from that sample.
807
+ all files must have same set of columns:
808
+ - 1st column is cell barcode
809
+ - x/y coordinate column number is defined in coordsColumns{x,y} below
810
+ - additional columns for cell annotations, corresponds to colorColumns
811
+ */
776
812
  folder: string
813
+ /** 0-based column number for x/y coordinate for this plot */
814
+ coordsColumns: { x: number; y: number }
777
815
  /** optional suffix to locate the file for a sample, via ${folder}/${sampleName}${fileSuffix}
778
- assumes that file name always start with sample name.
779
- if not introduce filePrefix
780
- */
816
+ assumes that file name always start with sample name.
817
+ if not introduce filePrefix
818
+ */
781
819
  fileSuffix?: string
782
820
  /** list of columns in tabular text file that define cell categories and can be used to color the cells in the plot. must have categorical values
783
821
  */
784
822
  colorColumns: ColorColumn[]
785
- /** 0-based column number for x/y coordinate for this plot */
786
- coordsColumns: { x: number; y: number }
787
823
  /** if true the plot is shown by default. otherwise hidden */
788
824
  selected?: boolean
789
825
  }
package/src/index.ts CHANGED
@@ -18,6 +18,7 @@ export * from './routes/filter.gdc.ts'
18
18
  export * from './routes/gdc.maf.ts'
19
19
  export * from './routes/gdc.mafBuild.ts'
20
20
  export * from './routes/gdc.grin2.ts'
21
+ export * from './routes/grin2.ts'
21
22
  export * from './routes/termdb.topMutatedGenes.ts'
22
23
  export * from './routes/genelookup.ts'
23
24
  export * from './routes/genesetEnrichment.ts'
@@ -0,0 +1,119 @@
1
+ /** General GRIN2 route
2
+ * This route handles the GRIN2 analysis for any non-GDC data.
3
+ * It processes the incoming data structure via PP's existing filter infrastructure
4
+ * and returns the same structured results as GDC-GRIN2.
5
+ * Specifically it will return a sortable table of top mutated genes and
6
+ * a static PNG manhattan-like plot of the -log10(q-value).
7
+ * We allow the user to customize the snvindel, CNV, and fusion filtering options.
8
+ */
9
+
10
+ import type { RoutePayload } from './routeApi.js'
11
+
12
+ /** GRIN2 request */
13
+ export type GRIN2Request = {
14
+ /** Genome build identifier (e.g., 'hg38', 'hg19') */
15
+ genome: string
16
+
17
+ /** Dataset label within the genome */
18
+ dslabel: string
19
+
20
+ /** Filter from existing PP infrastructure */
21
+ filter: any // Filter object passed to get_samples(filter, ds)
22
+
23
+ /** Options for filtering SNV/indel file content */
24
+ snvindelOptions?: {
25
+ /** Minimum total depth of returned SNV/indel files */
26
+ minTotalDepth?: number // Default: 10
27
+ /** Minimum alternate allele count of returned SNV/indel files */
28
+ minAltAlleleCount?: number // Default: 2
29
+ /** String array of consequence types to include */
30
+ consequences?: string[]
31
+ /** Maximum mutation count cutoff for highly mutated scenarios */
32
+ hyperMutator?: number // Default: 1000
33
+ }
34
+
35
+ /** Options for filtering CNV file content */
36
+ cnvOptions?: {
37
+ /** Threshold for copy number loss detection */
38
+ lossThreshold?: number // Default: -0.4
39
+ /** Threshold for copy number gain detection */
40
+ gainThreshold?: number // Default: 0.3
41
+ /** Maximum segment length to include (0 = no filter) */
42
+ maxSegLength?: number // Default: 0
43
+ /** Minimum segment length to include (0 = no filter) */
44
+ minSegLength?: number // Default: 0
45
+ /** Hypermutator max cut off for CNVs per case */
46
+ hyperMutator?: number // Default: 500
47
+ }
48
+
49
+ /** Options for filtering fusion file content */
50
+ fusionOptions?: {
51
+ /** Filter by fusion type */
52
+ fusionTypes?: ('gene-gene' | 'gene-intergenic' | 'readthrough')[]
53
+ /** Minimum confidence score (0-1) */
54
+ minConfidence?: number // Default: 0.7
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Response for GRIN2 analysis run
60
+ */
61
+ export type GRIN2Response = {
62
+ /** Status of the analysis */
63
+ status: 'success' | 'error'
64
+ /** Error message if status is 'error' */
65
+ error?: string
66
+ /** Base64-encoded PNG Manhattan plot image */
67
+ pngImg?: string
68
+ /** Download status/info */
69
+ download?: any
70
+ /** Sortable table of top genes identified by GRIN2 */
71
+ topGeneTable?: {
72
+ /** Column definitions with labels and sort capabilities */
73
+ columns: Array<{
74
+ label: string
75
+ sortable: boolean
76
+ }>
77
+ /** Data rows with gene information and statistics */
78
+ rows: Array<
79
+ Array<{
80
+ value: string | number
81
+ }>
82
+ >
83
+ }
84
+ /** Summary statistics */
85
+ totalGenes?: number
86
+ showingTop?: number
87
+ /** Timing info for the analysis */
88
+ timing?: {
89
+ /** Time taken to run data processing */
90
+ processingTime: number
91
+ /** Time taken to run GRIN2 processing */
92
+ grin2Time: number
93
+ /** Total time taken for the entire run */
94
+ totalTime: number
95
+ }
96
+ /** Detailed processing summary */
97
+ processingSummary?: {
98
+ totalSamples: number
99
+ successfulSamples: number
100
+ failedSamples: number
101
+ failedFiles: Array<{
102
+ sampleName: string
103
+ filePath: string
104
+ error: string
105
+ }>
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Route payload definitions for type checking
111
+ */
112
+ export const GRIN2Payload: RoutePayload = {
113
+ request: {
114
+ typeId: 'GRIN2Request'
115
+ },
116
+ response: {
117
+ typeId: 'GRIN2Response'
118
+ }
119
+ }
@@ -20,13 +20,12 @@ export type Plot = {
20
20
  /** name of the plot */
21
21
  name: string
22
22
  /** List of cells with gene expression */
23
- expCells?: Cell[]
23
+ expCells: Cell[]
24
24
  /** List of cells with no gene expression, if no gene provided all cells will be here */
25
- noExpCells?: Cell[]
26
- /** Column name to color by, e.g Cell type, CNV, Fusion */
27
- colorBy: string
25
+ noExpCells: Cell[]
28
26
  colorColumns: string[]
29
- colorMap?: { [key: string]: string }
27
+ colorBy: string
28
+ colorMap: any
30
29
  }
31
30
 
32
31
  export type TermdbSingleCellDataRequest = {
@@ -41,14 +40,17 @@ export type TermdbSingleCellDataRequest = {
41
40
  plots: string[]
42
41
  /** Gene name to retrieve expression data for all cells of the given sample, and to overlay on maps */
43
42
  gene?: string
43
+ /** in each plot, what Column name to color by
44
+ key: plot.name, value: column name
45
+ if missing, use default setting of the plot
46
+ */
47
+ colorBy?: { [key: string]: string }
48
+ colorMap?: { [key: string]: string }
44
49
  }
45
50
 
46
51
  export type HasdataResponse = {
47
52
  /** List of plots from singlecell experiment of this sample */
48
53
  plots: Plot[]
49
-
50
- /** Terms used to annotate cells */
51
- //terms: Term[]
52
54
  }
53
55
 
54
56
  export type NodataResponse = {