@sjcrh/proteinpaint-server 2.116.0 → 2.116.1-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.
@@ -20,6 +20,7 @@ var termdb_test_default = {
20
20
  file: "files/hg38/TermdbTest/db"
21
21
  },
22
22
  termdb: {
23
+ allowedTermTypes: ["geneVariant"],
23
24
  displaySampleIds: true,
24
25
  // allow to display sample-level data
25
26
  timeUnit: "years",
@@ -83,7 +84,12 @@ var termdb_test_default = {
83
84
  ignoreCnvValues: true
84
85
  }
85
86
  },
86
- termid2totalsize2: {}
87
+ termid2totalsize2: {},
88
+ regression: {
89
+ settings: {
90
+ coxDisclaimer: "This is a test disclaimer for the cox regression analysis."
91
+ }
92
+ }
87
93
  },
88
94
  scatterplots: {
89
95
  plots: [
@@ -127,8 +133,6 @@ var termdb_test_default = {
127
133
  sunburst_twLst: [{ id: "sex", q: {} }]
128
134
  },
129
135
  queries: {
130
- // temporary fix for genomeBrowser app to show gene model
131
- defaultBlock2GeneMode: true,
132
136
  snvindel: {
133
137
  forTrack: true,
134
138
  byrange: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjcrh/proteinpaint-server",
3
- "version": "2.116.0",
3
+ "version": "2.116.1-1",
4
4
  "type": "module",
5
5
  "description": "a genomics visualization tool for exploring a cohort's genotype and phenotype data",
6
6
  "main": "src/app.js",
@@ -67,8 +67,8 @@
67
67
  "dependencies": {
68
68
  "@sjcrh/augen": "2.116.0",
69
69
  "@sjcrh/proteinpaint-rust": "2.116.0",
70
- "@sjcrh/proteinpaint-shared": "2.116.0",
71
- "@sjcrh/proteinpaint-types": "2.115.0",
70
+ "@sjcrh/proteinpaint-shared": "2.116.1-1",
71
+ "@sjcrh/proteinpaint-types": "2.116.1-1",
72
72
  "@types/express": "^5.0.0",
73
73
  "@types/express-session": "^1.18.1",
74
74
  "better-sqlite3": "^9.4.1",
@@ -2,7 +2,6 @@ import serverconfig from "#src/serverconfig.js";
2
2
  import { authApi } from "#src/auth.js";
3
3
  import { get_ds_tdb } from "#src/termdb.js";
4
4
  import { mayCopyFromCookie } from "#src/utils.js";
5
- import { mayComputeTermtypeByCohort } from "#src/termdb.server.init.ts";
6
5
  import { TermTypes } from "#shared/terms.js";
7
6
  const api = {
8
7
  endpoint: "termdb/config",
@@ -60,7 +59,8 @@ function make(q, req, res, ds, genome) {
60
59
  tracks: tdb.tracks,
61
60
  sampleTypes: ds.cohort.termdb.sampleTypes,
62
61
  hasSampleAncestry: ds.cohort.termdb.hasSampleAncestry,
63
- defaultChartType: ds.cohort.defaultChartType
62
+ defaultChartType: ds.cohort.defaultChartType,
63
+ invalidTokenErrorHandling: tdb.invalidTokenErrorHandling
64
64
  };
65
65
  if (tdb.plotConfigByCohort)
66
66
  c.plotConfigByCohort = tdb.plotConfigByCohort;
@@ -141,11 +141,10 @@ function addNonDictionaryQueries(c, ds, genome) {
141
141
  if (!q)
142
142
  return;
143
143
  c.queries = {
144
- defaultCoord: q.defaultCoord || genome.defaultcoord
144
+ defaultCoord: q.defaultCoord || genome.defaultcoord,
145
+ gbRestrictMode: q.gbRestrictMode
145
146
  };
146
147
  const q2 = c.queries;
147
- if (q.defaultBlock2GeneMode)
148
- q2.defaultBlock2GeneMode = q.defaultBlock2GeneMode;
149
148
  if (q.snvindel) {
150
149
  q2.snvindel = {
151
150
  allowSNPs: q.snvindel.allowSNPs,
@@ -255,7 +254,6 @@ function addNonDictionaryQueries(c, ds, genome) {
255
254
  }
256
255
  }
257
256
  function getAllowedTermTypes(ds) {
258
- mayComputeTermtypeByCohort(ds);
259
257
  const typeSet = /* @__PURE__ */ new Set();
260
258
  for (const r of ds.cohort.termdb.termtypeByCohort) {
261
259
  if (r.termType)
@@ -265,9 +263,6 @@ function getAllowedTermTypes(ds) {
265
263
  for (const t of ds.cohort.termdb.allowedTermTypes)
266
264
  typeSet.add(t);
267
265
  }
268
- if (ds?.queries?.defaultBlock2GeneMode) {
269
- typeSet.add("geneVariant");
270
- }
271
266
  if (ds?.queries?.geneExpression)
272
267
  typeSet.add(TermTypes.GENE_EXPRESSION);
273
268
  if (ds?.queries?.metaboliteIntensity)
@@ -1,4 +1,6 @@
1
1
  import { topMutatedGenePayload } from "#types/checkers";
2
+ import { get_samples } from "#src/termdb.sql.js";
3
+ import { mayLog } from "#src/helpers.ts";
2
4
  const api = {
3
5
  endpoint: "termdb/topMutatedGenes",
4
6
  methods: {
@@ -42,7 +44,96 @@ function validate_query_getTopMutatedGenes(ds, genome) {
42
44
  return;
43
45
  if (typeof q.get == "function")
44
46
  return;
47
+ if (!q.arguments) {
48
+ q.arguments = [];
49
+ q.arguments.push({ id: "maxGenes", label: "Gene Count", type: "number", value: 50 });
50
+ if (ds.queries.snvindel) {
51
+ q.arguments.push({ id: "snv_mfndi", label: "Protein-changing mutation", type: "boolean", value: true });
52
+ q.arguments.push({ id: "snv_splice", label: "Splice mutation", type: "boolean", value: true });
53
+ q.arguments.push({ id: "snv_utr", label: "UTR mutation", type: "boolean", value: true });
54
+ q.arguments.push({ id: "snv_s", label: "Silent mutation", type: "boolean", value: true });
55
+ }
56
+ if (ds.queries.svfusion) {
57
+ q.arguments.push({ id: "sv", label: "Structural variation", type: "boolean", value: true });
58
+ q.arguments.push({ id: "fusion", label: "RNA fusion", type: "boolean", value: true });
59
+ }
60
+ if (ds.queries.cnv) {
61
+ q.arguments.push({
62
+ id: "cnv",
63
+ type: "boolean",
64
+ label: "CNV",
65
+ checked: false,
66
+ noStyle: true,
67
+ //This is a hack
68
+ options: [
69
+ {
70
+ id: "cnv_ms",
71
+ label: "Max size",
72
+ type: "radio",
73
+ options: [
74
+ { id: "cnv_1mb", label: "<1Mb", value: "cnv_1mb" },
75
+ { id: "cnv_2mb", label: "<2Mb", value: "cnv_2mb" },
76
+ { id: "cnv_4mb", label: "<4Mb", value: "cnv_4mb" }
77
+ ]
78
+ },
79
+ {
80
+ id: "cnv_logratio",
81
+ label: "Min absolute log(ratio)",
82
+ type: "radio",
83
+ options: [
84
+ { id: "_01", label: ">0.1", value: "_01" },
85
+ { id: "_02", label: ">0.2", value: "_02" },
86
+ { id: "_03", label: ">0.3", value: "_03" }
87
+ ]
88
+ }
89
+ ]
90
+ });
91
+ }
92
+ }
45
93
  q.get = async (param) => {
94
+ let sampleStatement = "";
95
+ if (param.filter) {
96
+ const lst = await get_samples(param.filter, ds);
97
+ if (lst.length == 0)
98
+ throw "empty sample filter";
99
+ sampleStatement = `WHERE sample IN (${lst.map((i) => i.id).join(",")})`;
100
+ }
101
+ const fields = [];
102
+ if (param.snv_mfndi)
103
+ fields.push("snv_mfndi");
104
+ if (param.snv_splice)
105
+ fields.push("snv_splice");
106
+ if (param.snv_utr)
107
+ fields.push("snv_utr");
108
+ if (param.snv_s)
109
+ fields.push("snv_s");
110
+ if (param.sv)
111
+ fields.push("sv");
112
+ if (param.fusion)
113
+ fields.push("fusion");
114
+ if (param.cnv == 1 && param.cnv_ms?.type && param.cnv_logratio?.type) {
115
+ fields.push(param.cnv_ms.type + param.cnv_logratio.type);
116
+ }
117
+ if (!fields.length)
118
+ throw "no fields";
119
+ const query = `WITH
120
+ filtered AS (
121
+ SELECT genesymbol, ${fields.join("+")} AS total FROM genesamplemutationcount
122
+ ${sampleStatement}
123
+ )
124
+ SELECT genesymbol, SUM(total) AS count
125
+ FROM filtered
126
+ GROUP BY genesymbol
127
+ ORDER BY count DESC
128
+ LIMIT ${param.maxGenes || 20}`;
129
+ const t = Date.now();
130
+ const genes = ds.cohort.db.connection.prepare(query).all();
131
+ mayLog("Top mutated gene sql", Date.now() - t, "ms");
132
+ const results = [];
133
+ for (const g of genes) {
134
+ results.push({ gene: g.genesymbol });
135
+ }
136
+ return results;
46
137
  };
47
138
  }
48
139
  export {