@sjcrh/proteinpaint-shared 2.187.0 → 2.188.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.
Files changed (117) hide show
  1. package/README.md +10 -2
  2. package/constants/AiHisto.ts +27 -0
  3. package/constants/README.md +11 -0
  4. package/devTs.ts +3 -0
  5. package/dist/constants/AiHisto.d.ts +23 -0
  6. package/dist/constants/AiHisto.js +31 -0
  7. package/dist/constants/AiHisto.js.map +7 -0
  8. package/dist/src/aiHisto.d.ts +5 -0
  9. package/dist/src/aiHisto.js +15 -0
  10. package/dist/src/aiHisto.js.map +7 -0
  11. package/dist/src/bulk.cnv.js +83 -0
  12. package/dist/src/bulk.cnv.js.map +7 -0
  13. package/dist/src/bulk.del.js +119 -0
  14. package/dist/src/bulk.del.js.map +7 -0
  15. package/dist/src/bulk.itd.js +119 -0
  16. package/dist/src/bulk.itd.js.map +7 -0
  17. package/dist/src/bulk.js +183 -0
  18. package/dist/src/bulk.js.map +7 -0
  19. package/dist/src/bulk.snv.js +175 -0
  20. package/dist/src/bulk.snv.js.map +7 -0
  21. package/dist/src/bulk.sv.js +266 -0
  22. package/dist/src/bulk.sv.js.map +7 -0
  23. package/dist/src/bulk.svjson.js +151 -0
  24. package/dist/src/bulk.svjson.js.map +7 -0
  25. package/dist/src/bulk.trunc.js +122 -0
  26. package/dist/src/bulk.trunc.js.map +7 -0
  27. package/dist/src/clustering.js +71 -0
  28. package/dist/src/clustering.js.map +7 -0
  29. package/dist/src/common.js +1302 -0
  30. package/dist/src/common.js.map +7 -0
  31. package/dist/src/compute.percentile.js +10 -0
  32. package/dist/src/compute.percentile.js.map +7 -0
  33. package/dist/src/doc.d.ts +7 -0
  34. package/dist/src/doc.js +10 -0
  35. package/dist/src/doc.js.map +7 -0
  36. package/dist/src/fetch-helpers.js +177 -0
  37. package/dist/src/fetch-helpers.js.map +7 -0
  38. package/dist/src/fileSize.js +10 -0
  39. package/dist/src/fileSize.js.map +7 -0
  40. package/dist/src/filter.d.ts +62 -0
  41. package/dist/src/filter.js +194 -0
  42. package/dist/src/filter.js.map +7 -0
  43. package/dist/src/hash.js +20 -0
  44. package/dist/src/hash.js.map +7 -0
  45. package/dist/src/helpers.js +66 -0
  46. package/dist/src/helpers.js.map +7 -0
  47. package/dist/src/index.d.ts +26 -0
  48. package/dist/src/index.js +27 -0
  49. package/dist/src/index.js.map +7 -0
  50. package/dist/src/joinUrl.d.ts +1 -0
  51. package/dist/src/joinUrl.js +17 -0
  52. package/dist/src/joinUrl.js.map +7 -0
  53. package/dist/src/mds3tk.js +64 -0
  54. package/dist/src/mds3tk.js.map +7 -0
  55. package/dist/src/roundValue.js +57 -0
  56. package/dist/src/roundValue.js.map +7 -0
  57. package/dist/src/termdb.bins.js +272 -0
  58. package/dist/src/termdb.bins.js.map +7 -0
  59. package/dist/src/termdb.initbinconfig.js +79 -0
  60. package/dist/src/termdb.initbinconfig.js.map +7 -0
  61. package/dist/src/termdb.usecase.js +239 -0
  62. package/dist/src/termdb.usecase.js.map +7 -0
  63. package/dist/src/terms.d.ts +83 -0
  64. package/dist/src/terms.js +327 -0
  65. package/dist/src/terms.js.map +7 -0
  66. package/dist/src/time.d.ts +9 -0
  67. package/dist/src/time.js +23 -0
  68. package/dist/src/time.js.map +7 -0
  69. package/dist/src/tree.js +82 -0
  70. package/dist/src/tree.js.map +7 -0
  71. package/dist/src/urljson.d.ts +8 -0
  72. package/dist/src/urljson.js +31 -0
  73. package/dist/src/urljson.js.map +7 -0
  74. package/dist/src/vcf.ann.js +56 -0
  75. package/dist/src/vcf.ann.js.map +7 -0
  76. package/dist/src/vcf.csq.js +82 -0
  77. package/dist/src/vcf.csq.js.map +7 -0
  78. package/dist/src/vcf.info.js +40 -0
  79. package/dist/src/vcf.info.js.map +7 -0
  80. package/dist/src/vcf.js +439 -0
  81. package/dist/src/vcf.js.map +7 -0
  82. package/dist/src/vcf.type.js +17 -0
  83. package/dist/src/vcf.type.js.map +7 -0
  84. package/package.json +20 -11
  85. package/src/bulk.cnv.js +0 -86
  86. package/src/bulk.del.js +0 -124
  87. package/src/bulk.itd.js +0 -123
  88. package/src/bulk.js +0 -197
  89. package/src/bulk.snv.js +0 -271
  90. package/src/bulk.sv.js +0 -276
  91. package/src/bulk.svjson.js +0 -164
  92. package/src/bulk.trunc.js +0 -132
  93. package/src/clustering.js +0 -66
  94. package/src/common.js +0 -1608
  95. package/src/compute.percentile.js +0 -11
  96. package/src/doc.js +0 -6
  97. package/src/fetch-helpers.js +0 -323
  98. package/src/fileSize.js +0 -6
  99. package/src/filter.js +0 -221
  100. package/src/hash.js +0 -21
  101. package/src/helpers.js +0 -88
  102. package/src/index.js +0 -26
  103. package/src/joinUrl.js +0 -14
  104. package/src/mds3tk.js +0 -100
  105. package/src/roundValue.js +0 -94
  106. package/src/termdb.bins.js +0 -456
  107. package/src/termdb.initbinconfig.js +0 -130
  108. package/src/termdb.usecase.js +0 -344
  109. package/src/terms.js +0 -341
  110. package/src/time.js +0 -22
  111. package/src/tree.js +0 -138
  112. package/src/urljson.js +0 -41
  113. package/src/vcf.ann.js +0 -62
  114. package/src/vcf.csq.js +0 -153
  115. package/src/vcf.info.js +0 -50
  116. package/src/vcf.js +0 -654
  117. package/src/vcf.type.js +0 -24
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bulk.sv.js"],
4
+ "sourcesContent": ["import * as bulk from './bulk.js'\nimport * as common from './common.js'\n\n/////////////////////////////////\n//\n// client/server shared\n//\n/////////////////////////////////\n\n// work for both sv/fusion\n// must tell if the data is fusion or sv\n\nexport function parseheader(line, flag, issv) {\n\tconst header = line.toLowerCase().split('\\t')\n\tif (header.length <= 1) return 'invalid file header for fusions'\n\tconst htry = (...lst) => {\n\t\tfor (const a of lst) {\n\t\t\tconst j = header.indexOf(a)\n\t\t\tif (j != -1) return j\n\t\t}\n\t\treturn -1\n\t}\n\tlet i = htry('gene_a', 'gene1', 'genea')\n\tif (i == -1) return 'gene_a missing from header'\n\theader[i] = 'gene1'\n\ti = htry('gene_b', 'gene2', 'geneb')\n\tif (i == -1) return 'gene_b missing from header'\n\theader[i] = 'gene2'\n\ti = htry('chr_a', 'chr1', 'chra')\n\tif (i == -1) return 'chr_a missing from header'\n\theader[i] = 'chr1'\n\ti = htry('chr_b', 'chr2', 'chrb')\n\tif (i == -1) return 'chr_b missing from header'\n\theader[i] = 'chr2'\n\ti = htry('pos_a', 'position_a', 'position1', 'posa')\n\tif (i == -1) return 'pos_a missing from header'\n\theader[i] = 'position1'\n\ti = htry('pos_b', 'position_b', 'position2', 'posb')\n\tif (i == -1) return 'pos_b missing from header'\n\theader[i] = 'position2'\n\ti = htry('isoform_a', 'refseq_a', 'refseq1', 'isoform1', 'sv_refseqa')\n\tif (i == -1) return 'isoform_a missing from header'\n\theader[i] = 'isoform1'\n\ti = htry('isoform_b', 'refseq_b', 'refseq2', 'isoform2', 'sv_refseqb')\n\tif (i == -1) return 'isoform_b missing from header'\n\theader[i] = 'isoform2'\n\ti = htry('strand_a', 'orta')\n\tif (i == -1) return 'strand_a missing from header'\n\theader[i] = 'strand1'\n\ti = htry('strand_b', 'ortb')\n\tif (i == -1) return 'strand_b missing from header'\n\theader[i] = 'strand2'\n\t// optional\n\ti = htry('sample', 'sample_name', 'tumor_sample_barcode')\n\tif (i != -1) header[i] = 'sample'\n\ti = htry('patient', 'donor', 'target_case_id')\n\tif (i != -1) header[i] = 'patient'\n\ti = htry('sampletype', 'sample type', 'sample_type')\n\tif (i != -1) header[i] = 'sampletype'\n\ti = htry('disease')\n\tif (i != -1) header[i] = 'disease'\n\ti = htry('origin')\n\tif (i != -1) header[i] = 'origin'\n\tif (issv) {\n\t\tflag.sv.loaded = true\n\t\tflag.sv.header = header\n\t} else {\n\t\tflag.fusion.loaded = true\n\t\tflag.fusion.header = header\n\t}\n\treturn false\n}\n\nexport function parseline(i, line, flag, issv) {\n\tif (line == '' || line[0] == '#') return\n\tconst lst = line.split('\\t')\n\tconst m = {}\n\tconst header = issv ? flag.sv.header : flag.fusion.header\n\tconst badlines = issv ? flag.sv.badlines : flag.fusion.badlines\n\n\tfor (let j = 0; j < header.length; j++) {\n\t\tm[header[j]] = lst[j]\n\t}\n\tif (!m.chr1) {\n\t\tbadlines.push([i, 'missing chr1', lst])\n\t\treturn\n\t}\n\tif (m.chr1.toLowerCase().indexOf('chr') != 0) {\n\t\tm.chr1 = 'chr' + m.chr1\n\t}\n\tif (!m.chr2) {\n\t\tbadlines.push([i, 'missing chr2', lst])\n\t\treturn\n\t}\n\tif (m.chr2.toLowerCase().indexOf('chr') != 0) {\n\t\tm.chr2 = 'chr' + m.chr2\n\t}\n\tlet v = m.position1\n\tif (!v) {\n\t\tbadlines.push([i, 'missing position1', lst])\n\t\treturn\n\t}\n\tlet v2 = Number.parseInt(v)\n\tif (Number.isNaN(v2) || v2 <= 0) {\n\t\tbadlines.push([i, 'invalid value for position1', lst])\n\t\treturn\n\t}\n\tm.position1 = v2\n\tv = m.position2\n\tif (!v) {\n\t\tbadlines.push([i, 'missing position2', lst])\n\t\treturn\n\t}\n\tv2 = Number.parseInt(v)\n\tif (Number.isNaN(v2) || v2 <= 0) {\n\t\tbadlines.push([i, 'invalid value for position2', lst])\n\t\treturn\n\t}\n\tm.position2 = v2\n\tif (bulk.parsesample(m, flag, i, lst, badlines)) {\n\t\treturn\n\t}\n\tif (m.isoform1 && m.isoform1.indexOf(',') != -1) {\n\t\tconst lst2 = m.isoform1.split(',')\n\t\tm.isoform1 = undefined\n\t\tfor (const t of lst2) {\n\t\t\tif (t != '') m.isoform1 = t\n\t\t}\n\t}\n\tif (m.isoform2 && m.isoform2.indexOf(',') != -1) {\n\t\tconst lst2 = m.isoform2.split(',')\n\t\tm.isoform2 = undefined\n\t\tfor (const t of lst2) {\n\t\t\tif (t != '') m.isoform2 = t\n\t\t}\n\t}\n\tif (!m.gene1) {\n\t\tm.isoform1 = undefined\n\t}\n\tif (!m.gene2) {\n\t\tm.isoform2 = undefined\n\t}\n\tif (m.gene1) {\n\t\t// put data under gene1\n\t\tflag.good++\n\t\tconst m2 = {\n\t\t\tdt: issv ? common.dtsv : common.dtfusionrna,\n\t\t\tclass: issv ? common.mclasssv : common.mclassfusionrna,\n\t\t\tisoform: m.isoform1,\n\t\t\tmname: m.gene2 || m.chr2,\n\t\t\tsample: m.sample,\n\t\t\tpatient: m.patient,\n\t\t\tsampletype: m.sampletype,\n\t\t\torigin: m.origin,\n\t\t\tdisease: m.disease,\n\t\t\tpairlst: [\n\t\t\t\t{\n\t\t\t\t\ta: {\n\t\t\t\t\t\tname: m.gene1,\n\t\t\t\t\t\tisoform: m.isoform1,\n\t\t\t\t\t\tstrand: m.strand1,\n\t\t\t\t\t\tchr: m.chr1,\n\t\t\t\t\t\tposition: m.position1\n\t\t\t\t\t},\n\t\t\t\t\tb: {\n\t\t\t\t\t\tname: m.gene2,\n\t\t\t\t\t\tisoform: m.isoform2,\n\t\t\t\t\t\tstrand: m.strand2,\n\t\t\t\t\t\tchr: m.chr2,\n\t\t\t\t\t\tposition: m.position2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\tconst n = flag.geneToUpper ? m.gene1.toUpperCase() : m.gene1\n\t\tif (!flag.data[n]) {\n\t\t\tflag.data[n] = []\n\t\t}\n\t\tflag.data[n].push(m2)\n\t}\n\tif (m.gene2 && m.gene2 != m.gene1) {\n\t\t// put data under gene2\n\t\tflag.good++\n\t\tconst m2 = {\n\t\t\tdt: issv ? common.dtsv : common.dtfusionrna,\n\t\t\tclass: issv ? common.mclasssv : common.mclassfusionrna,\n\t\t\tisoform: m.isoform2,\n\t\t\tmname: m.gene1 || m.chr1,\n\t\t\tsample: m.sample,\n\t\t\tpatient: m.patient,\n\t\t\tsampletype: m.sampletype,\n\t\t\torigin: m.origin,\n\t\t\tdisease: m.disease,\n\t\t\tpairlst: [\n\t\t\t\t{\n\t\t\t\t\ta: {\n\t\t\t\t\t\tname: m.gene1,\n\t\t\t\t\t\tisoform: m.isoform1,\n\t\t\t\t\t\tstrand: m.strand1,\n\t\t\t\t\t\tchr: m.chr1,\n\t\t\t\t\t\tposition: m.position1\n\t\t\t\t\t},\n\t\t\t\t\tb: {\n\t\t\t\t\t\tname: m.gene2,\n\t\t\t\t\t\tisoform: m.isoform2,\n\t\t\t\t\t\tstrand: m.strand2,\n\t\t\t\t\t\tchr: m.chr2,\n\t\t\t\t\t\tposition: m.position2\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\tconst n = flag.geneToUpper ? m.gene2.toUpperCase() : m.gene2\n\t\tif (!flag.data[n]) {\n\t\t\tflag.data[n] = []\n\t\t}\n\t\tflag.data[n].push(m2)\n\t}\n}\n\nexport function duplicate(m) {\n\tconst n = {}\n\tfor (const k in m) {\n\t\tif (k == 'pairlst') continue\n\t\tconst v = m[k]\n\t\tconst type = typeof v\n\t\tif (type == 'object') {\n\t\t\tcontinue\n\t\t}\n\t\tn[k] = v\n\t}\n\tif (m.pairlst) {\n\t\tn.pairlst = []\n\t\tfor (const pair of m.pairlst) {\n\t\t\tconst p = {}\n\t\t\tfor (const k in pair) {\n\t\t\t\tif (k == 'a' || k == 'b' || k == 'interstitial') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tp[k] = pair[k]\n\t\t\t}\n\t\t\tif (pair.a) {\n\t\t\t\tp.a = {}\n\t\t\t\tfor (const k in pair.a) {\n\t\t\t\t\tconst v = pair.a[k]\n\t\t\t\t\tif (typeof v == 'object') {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tp.a[k] = v\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pair.b) {\n\t\t\t\tp.b = {}\n\t\t\t\tfor (const k in pair.b) {\n\t\t\t\t\tconst v = pair.b[k]\n\t\t\t\t\tif (typeof v == 'object') {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tp.b[k] = v\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pair.interstitial) {\n\t\t\t\tp.interstitial = {}\n\t\t\t\tfor (const k in pair.interstitial) {\n\t\t\t\t\tconst v = pair.interstitial[k]\n\t\t\t\t\tif (typeof v == 'object') {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tp.interstitial[k] = v\n\t\t\t\t}\n\t\t\t}\n\t\t\tn.pairlst.push(p)\n\t\t}\n\t}\n\treturn n\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,151 @@
1
+ import * as common from "./common.js";
2
+ import * as bulk from "./bulk.js";
3
+ function parseheader(line, flag) {
4
+ const header = line.toLowerCase().split(" ");
5
+ if (header.length <= 1) return "invalid file header for svjson";
6
+ const htry = (...lst) => {
7
+ for (const a of lst) {
8
+ const j = header.indexOf(a);
9
+ if (j != -1) return j;
10
+ }
11
+ return -1;
12
+ };
13
+ let i = htry("sample");
14
+ if (i != -1) header[i] = "sample";
15
+ i = htry("sampletype");
16
+ if (i != -1) header[i] = "sampletype";
17
+ i = htry("patient");
18
+ if (i != -1) header[i] = "patient";
19
+ i = htry("json", "jsontext");
20
+ if (i == -1) return ["json missing from header"];
21
+ header[i] = "jsontext";
22
+ return [null, header];
23
+ }
24
+ function parseline(i, line, flag, header) {
25
+ if (line == "" || line[0] == "#") return;
26
+ const lst = line.split(" ");
27
+ const m = {};
28
+ const badlines = flag.svjson.badlines;
29
+ for (let j = 0; j < header.length; j++) {
30
+ m[header[j]] = lst[j];
31
+ }
32
+ if (!m.jsontext) {
33
+ badlines.push([i, "missing jsontext", lst]);
34
+ return;
35
+ }
36
+ if (bulk.parsesample(m, flag, i, lst, badlines)) {
37
+ return;
38
+ }
39
+ let json;
40
+ try {
41
+ json = JSON.parse(m.jsontext);
42
+ } catch (e) {
43
+ badlines.push([i, "invalid JSON text", lst]);
44
+ return;
45
+ }
46
+ if (Array.isArray(json)) {
47
+ for (const pair of json) {
48
+ if (pair.a && pair.a.name && pair.a.isoform) {
49
+ flag.good++;
50
+ const m2 = {
51
+ dt: common.dtfusionrna,
52
+ class: common.mclassfusionrna,
53
+ isoform: pair.a.isoform,
54
+ mname: pair.b.name
55
+ };
56
+ for (const k in m) {
57
+ if (k != "jsontext") m2[k] = m[k];
58
+ }
59
+ m2.pairlst = duplicate(json);
60
+ const n = pair.a.name.toUpperCase();
61
+ if (!flag.data[n]) {
62
+ flag.data[n] = [];
63
+ }
64
+ flag.data[n].push(m2);
65
+ }
66
+ if (pair.b && pair.b.name && pair.b.isoform) {
67
+ flag.good++;
68
+ const m2 = {
69
+ dt: common.dtfusionrna,
70
+ class: common.mclassfusionrna,
71
+ isoform: pair.b.isoform,
72
+ mname: pair.a.name
73
+ };
74
+ for (const k in m) {
75
+ if (k != "jsontext") m2[k] = m[k];
76
+ }
77
+ m2.pairlst = duplicate(json);
78
+ const n = pair.b.name.toUpperCase();
79
+ if (!flag.data[n]) {
80
+ flag.data[n] = [];
81
+ }
82
+ flag.data[n].push(m2);
83
+ }
84
+ }
85
+ } else {
86
+ json.dt = json.typecode;
87
+ delete json.typecode;
88
+ switch (json.dt) {
89
+ case common.dtitd:
90
+ json.class = common.mclassitd;
91
+ json.mname = "ITD";
92
+ break;
93
+ case common.dtnloss:
94
+ json.class = common.mclassnloss;
95
+ json.mname = "N-loss";
96
+ break;
97
+ case common.dtcloss:
98
+ json.class = common.mclasscloss;
99
+ json.mname = "C-loss";
100
+ break;
101
+ case common.dtdel:
102
+ json.class = common.mclassdel;
103
+ json.mname = "Del";
104
+ break;
105
+ case common.dtsv:
106
+ json.class = common.mclasssv;
107
+ json.mname = "SV";
108
+ break;
109
+ default:
110
+ badlines.push([i, "unknown datatype", lst]);
111
+ return;
112
+ }
113
+ if (!json.gene) {
114
+ badlines.push([i, "json.gene missing", lst]);
115
+ return;
116
+ }
117
+ flag.good++;
118
+ for (const k in m) {
119
+ if (k != "jsontext") {
120
+ json[k] = m[k];
121
+ }
122
+ }
123
+ const n = flag.geneToUpper ? json.gene.toUpperCase() : json.gene.toUpperCase();
124
+ if (!flag.data[n]) {
125
+ flag.data[n] = [];
126
+ }
127
+ flag.data[n].push(json);
128
+ }
129
+ }
130
+ function duplicate(lst) {
131
+ const d = [];
132
+ for (const pair of lst) {
133
+ const p = { a: {}, b: {} };
134
+ for (const k in pair) {
135
+ if (k != "a" && k != "b") p[k] = pair[k];
136
+ }
137
+ for (const k in pair.a) {
138
+ p.a[k] = pair.a[k];
139
+ }
140
+ for (const k in pair.b) {
141
+ p.b[k] = pair.b[k];
142
+ }
143
+ d.push(p);
144
+ }
145
+ return d;
146
+ }
147
+ export {
148
+ parseheader,
149
+ parseline
150
+ };
151
+ //# sourceMappingURL=bulk.svjson.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bulk.svjson.js"],
4
+ "sourcesContent": ["/////////////////////////////////\n//\n// client/server shared\n//\n/////////////////////////////////\n\nimport * as common from './common.js'\nimport * as bulk from './bulk.js'\n\n// work for both sv/fusion\n// must tell if the data is fusion or sv\n\nexport function parseheader(line, flag) {\n\tconst header = line.toLowerCase().split('\\t')\n\tif (header.length <= 1) return 'invalid file header for svjson'\n\tconst htry = (...lst) => {\n\t\tfor (const a of lst) {\n\t\t\tconst j = header.indexOf(a)\n\t\t\tif (j != -1) return j\n\t\t}\n\t\treturn -1\n\t}\n\tlet i = htry('sample')\n\tif (i != -1) header[i] = 'sample'\n\ti = htry('sampletype')\n\tif (i != -1) header[i] = 'sampletype'\n\ti = htry('patient')\n\tif (i != -1) header[i] = 'patient'\n\ti = htry('json', 'jsontext')\n\tif (i == -1) return ['json missing from header']\n\theader[i] = 'jsontext'\n\treturn [null, header]\n}\n\nexport function parseline(i, line, flag, header) {\n\tif (line == '' || line[0] == '#') return\n\tconst lst = line.split('\\t')\n\tconst m = {}\n\tconst badlines = flag.svjson.badlines\n\n\tfor (let j = 0; j < header.length; j++) {\n\t\tm[header[j]] = lst[j]\n\t}\n\tif (!m.jsontext) {\n\t\tbadlines.push([i, 'missing jsontext', lst])\n\t\treturn\n\t}\n\tif (bulk.parsesample(m, flag, i, lst, badlines)) {\n\t\treturn\n\t}\n\tlet json\n\ttry {\n\t\tjson = JSON.parse(m.jsontext)\n\t} catch (e) {\n\t\tbadlines.push([i, 'invalid JSON text', lst])\n\t\treturn\n\t}\n\t// duplicating logic in pediatric.js\n\tif (Array.isArray(json)) {\n\t\t// json is pairlst\n\t\tfor (const pair of json) {\n\t\t\tif (pair.a && pair.a.name && pair.a.isoform) {\n\t\t\t\tflag.good++\n\t\t\t\tconst m2 = {\n\t\t\t\t\tdt: common.dtfusionrna,\n\t\t\t\t\tclass: common.mclassfusionrna,\n\t\t\t\t\tisoform: pair.a.isoform,\n\t\t\t\t\tmname: pair.b.name\n\t\t\t\t}\n\t\t\t\tfor (const k in m) {\n\t\t\t\t\tif (k != 'jsontext') m2[k] = m[k]\n\t\t\t\t}\n\t\t\t\tm2.pairlst = duplicate(json)\n\t\t\t\tconst n = pair.a.name.toUpperCase()\n\t\t\t\tif (!flag.data[n]) {\n\t\t\t\t\tflag.data[n] = []\n\t\t\t\t}\n\t\t\t\tflag.data[n].push(m2)\n\t\t\t}\n\t\t\tif (pair.b && pair.b.name && pair.b.isoform) {\n\t\t\t\tflag.good++\n\t\t\t\tconst m2 = {\n\t\t\t\t\tdt: common.dtfusionrna,\n\t\t\t\t\tclass: common.mclassfusionrna,\n\t\t\t\t\tisoform: pair.b.isoform,\n\t\t\t\t\tmname: pair.a.name\n\t\t\t\t}\n\t\t\t\tfor (const k in m) {\n\t\t\t\t\tif (k != 'jsontext') m2[k] = m[k]\n\t\t\t\t}\n\t\t\t\tm2.pairlst = duplicate(json)\n\t\t\t\tconst n = pair.b.name.toUpperCase()\n\t\t\t\tif (!flag.data[n]) {\n\t\t\t\t\tflag.data[n] = []\n\t\t\t\t}\n\t\t\t\tflag.data[n].push(m2)\n\t\t\t}\n\t\t}\n\t} else {\n\t\tjson.dt = json.typecode\n\t\tdelete json.typecode\n\t\tswitch (json.dt) {\n\t\t\tcase common.dtitd:\n\t\t\t\tjson.class = common.mclassitd\n\t\t\t\tjson.mname = 'ITD'\n\t\t\t\tbreak\n\t\t\tcase common.dtnloss:\n\t\t\t\tjson.class = common.mclassnloss\n\t\t\t\tjson.mname = 'N-loss'\n\t\t\t\tbreak\n\t\t\tcase common.dtcloss:\n\t\t\t\tjson.class = common.mclasscloss\n\t\t\t\tjson.mname = 'C-loss'\n\t\t\t\tbreak\n\t\t\tcase common.dtdel:\n\t\t\t\tjson.class = common.mclassdel\n\t\t\t\tjson.mname = 'Del'\n\t\t\t\tbreak\n\t\t\tcase common.dtsv:\n\t\t\t\tjson.class = common.mclasssv\n\t\t\t\tjson.mname = 'SV'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbadlines.push([i, 'unknown datatype', lst])\n\t\t\t\treturn\n\t\t}\n\t\t// record only about a single gene\n\t\tif (!json.gene) {\n\t\t\tbadlines.push([i, 'json.gene missing', lst])\n\t\t\treturn\n\t\t}\n\t\tflag.good++\n\t\tfor (const k in m) {\n\t\t\tif (k != 'jsontext') {\n\t\t\t\tjson[k] = m[k]\n\t\t\t}\n\t\t}\n\t\tconst n = flag.geneToUpper ? json.gene.toUpperCase() : json.gene.toUpperCase()\n\t\tif (!flag.data[n]) {\n\t\t\tflag.data[n] = []\n\t\t}\n\t\tflag.data[n].push(json)\n\t}\n}\n\nfunction duplicate(lst) {\n\tconst d = []\n\tfor (const pair of lst) {\n\t\tconst p = { a: {}, b: {} }\n\t\tfor (const k in pair) {\n\t\t\tif (k != 'a' && k != 'b') p[k] = pair[k]\n\t\t}\n\t\tfor (const k in pair.a) {\n\t\t\tp.a[k] = pair.a[k]\n\t\t}\n\t\tfor (const k in pair.b) {\n\t\t\tp.b[k] = pair.b[k]\n\t\t}\n\t\td.push(p)\n\t}\n\treturn d\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,122 @@
1
+ import * as common from "./common.js";
2
+ import * as bulk from "./bulk.js";
3
+ function parseheader(line, flag) {
4
+ const header = line.toLowerCase().split(" ");
5
+ if (header.length <= 1) return "invalid header line for truncation";
6
+ const htry = (...lst) => {
7
+ for (const e of lst) {
8
+ const j = header.indexOf(e);
9
+ if (j != -1) return j;
10
+ }
11
+ return -1;
12
+ };
13
+ let i = htry("gene");
14
+ if (i == -1) return "gene missing from header";
15
+ header[i] = "gene";
16
+ i = htry(
17
+ "annovar_isoform",
18
+ "mrna_accession",
19
+ "mrna accession",
20
+ "refseq_mrna_id",
21
+ "annovar_sj_filter_isoform",
22
+ "refseq",
23
+ "isoform"
24
+ );
25
+ if (i == -1) return "isoform missing from header";
26
+ header[i] = "isoform";
27
+ let hasrnapos = false;
28
+ i = htry("rnaposition");
29
+ if (i != -1) {
30
+ header[i] = "rnaposition";
31
+ hasrnapos = true;
32
+ }
33
+ i = htry("losstype");
34
+ if (i == -1) return "lossType missing from header";
35
+ header[i] = "losstype";
36
+ let hasgenomic = false;
37
+ i = htry("chromosome", "chr");
38
+ if (i != -1) {
39
+ header[i] = "chr";
40
+ i = htry("start", "start_position", "wu_hg19_pos", "chr_position", "position");
41
+ if (i == -1) {
42
+ return "genomic position missing from header";
43
+ }
44
+ header[i] = "pos";
45
+ hasgenomic = true;
46
+ }
47
+ if (!hasrnapos && !hasgenomic) {
48
+ return "neither rnaposition nor genomic position is given";
49
+ }
50
+ i = htry("sample", "sample_name", "tumor_sample_barcode");
51
+ if (i != -1) header[i] = "sample";
52
+ i = htry("patient", "donor", "target_case_id");
53
+ if (i != -1) header[i] = "patient";
54
+ i = htry("disease");
55
+ if (i != -1) header[i] = "disease";
56
+ i = htry("origin");
57
+ if (i != -1) header[i] = "origin";
58
+ i = htry("sampletype", "sample type", "sample_type");
59
+ if (i != -1) header[i] = "sampletype";
60
+ flag.truncation.header = header;
61
+ flag.truncation.loaded = true;
62
+ return false;
63
+ }
64
+ function parseline(i, line, flag) {
65
+ if (line == "" || line[0] == "#") return;
66
+ const lst = line.split(" ");
67
+ const m = {};
68
+ for (let j = 0; j < flag.truncation.header.length; j++) {
69
+ m[flag.truncation.header[j]] = lst[j];
70
+ }
71
+ if (!m.gene) {
72
+ flag.truncation.badlines.push([i, "missing gene", lst]);
73
+ return;
74
+ }
75
+ if (m.rnaposition) {
76
+ const v = Number.parseInt(m.rnaposition);
77
+ if (Number.isNaN(v) || v < 0) {
78
+ flag.truncation.badlines.push([i, "invalid rnaPosition value", lst]);
79
+ return;
80
+ }
81
+ m.rnaposition = v;
82
+ }
83
+ if (m.pos) {
84
+ const v = Number.parseInt(m.pos);
85
+ if (Number.isNaN(v) || v < 0) {
86
+ flag.truncation.badlines.push([i, "invalid genomic position", lst]);
87
+ return;
88
+ }
89
+ m.pos = v;
90
+ }
91
+ if (!m.losstype) {
92
+ flag.truncation.badlines.push([i, "missing lossType value", lst]);
93
+ return;
94
+ }
95
+ if (m.losstype != "n" && m.losstype != "c") {
96
+ flag.truncation.badlines.push([i, 'lossType value not "n" or "c"', lst]);
97
+ return;
98
+ }
99
+ if (bulk.parsesample(m, flag, i, lst, flag.truncation.badlines)) {
100
+ return;
101
+ }
102
+ if (m.losstype == "n") {
103
+ m.dt = common.dtnloss;
104
+ m.class = common.mclassnloss;
105
+ m.mname = "N-loss";
106
+ } else {
107
+ m.dt = common.dtcloss;
108
+ m.class = common.mclasscloss;
109
+ m.mname = "C-loss";
110
+ }
111
+ flag.good++;
112
+ const n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
113
+ if (!(n in flag.data)) {
114
+ flag.data[n] = [];
115
+ }
116
+ flag.data[n].push(m);
117
+ }
118
+ export {
119
+ parseheader,
120
+ parseline
121
+ };
122
+ //# sourceMappingURL=bulk.trunc.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bulk.trunc.js"],
4
+ "sourcesContent": ["////////////////////////////////////\n//\n// shared between client and server\n//\n////////////////////////////////////\n\nimport * as common from './common.js'\nimport * as bulk from './bulk.js'\n\nexport function parseheader(line, flag) {\n\tconst header = line.toLowerCase().split('\\t')\n\tif (header.length <= 1) return 'invalid header line for truncation'\n\tconst htry = (...lst) => {\n\t\tfor (const e of lst) {\n\t\t\tconst j = header.indexOf(e)\n\t\t\tif (j != -1) return j\n\t\t}\n\t\treturn -1\n\t}\n\tlet i = htry('gene')\n\tif (i == -1) return 'gene missing from header'\n\theader[i] = 'gene'\n\ti = htry(\n\t\t'annovar_isoform',\n\t\t'mrna_accession',\n\t\t'mrna accession',\n\t\t'refseq_mrna_id',\n\t\t'annovar_sj_filter_isoform',\n\t\t'refseq',\n\t\t'isoform'\n\t)\n\tif (i == -1) return 'isoform missing from header'\n\theader[i] = 'isoform'\n\tlet hasrnapos = false\n\ti = htry('rnaposition')\n\tif (i != -1) {\n\t\theader[i] = 'rnaposition'\n\t\thasrnapos = true\n\t}\n\ti = htry('losstype')\n\tif (i == -1) return 'lossType missing from header'\n\theader[i] = 'losstype'\n\tlet hasgenomic = false\n\ti = htry('chromosome', 'chr')\n\tif (i != -1) {\n\t\theader[i] = 'chr'\n\t\ti = htry('start', 'start_position', 'wu_hg19_pos', 'chr_position', 'position')\n\t\tif (i == -1) {\n\t\t\treturn 'genomic position missing from header'\n\t\t}\n\t\theader[i] = 'pos'\n\t\thasgenomic = true\n\t}\n\tif (!hasrnapos && !hasgenomic) {\n\t\treturn 'neither rnaposition nor genomic position is given'\n\t}\n\n\ti = htry('sample', 'sample_name', 'tumor_sample_barcode')\n\tif (i != -1) header[i] = 'sample'\n\ti = htry('patient', 'donor', 'target_case_id')\n\tif (i != -1) header[i] = 'patient'\n\ti = htry('disease')\n\tif (i != -1) header[i] = 'disease'\n\ti = htry('origin')\n\tif (i != -1) header[i] = 'origin'\n\ti = htry('sampletype', 'sample type', 'sample_type')\n\tif (i != -1) header[i] = 'sampletype'\n\tflag.truncation.header = header\n\tflag.truncation.loaded = true\n\treturn false\n}\n\nexport function parseline(i, line, flag) {\n\tif (line == '' || line[0] == '#') return\n\tconst lst = line.split('\\t')\n\tconst m = {}\n\tfor (let j = 0; j < flag.truncation.header.length; j++) {\n\t\tm[flag.truncation.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.truncation.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.rnaposition) {\n\t\tconst v = Number.parseInt(m.rnaposition)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.truncation.badlines.push([i, 'invalid rnaPosition value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaposition = v\n\t}\n\tif (m.pos) {\n\t\tconst v = Number.parseInt(m.pos)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.truncation.badlines.push([i, 'invalid genomic position', lst])\n\t\t\treturn\n\t\t}\n\t\tm.pos = v\n\t}\n\tif (!m.losstype) {\n\t\tflag.truncation.badlines.push([i, 'missing lossType value', lst])\n\t\treturn\n\t}\n\tif (m.losstype != 'n' && m.losstype != 'c') {\n\t\tflag.truncation.badlines.push([i, 'lossType value not \"n\" or \"c\"', lst])\n\t\treturn\n\t}\n\tif (bulk.parsesample(m, flag, i, lst, flag.truncation.badlines)) {\n\t\treturn\n\t}\n\tif (m.losstype == 'n') {\n\t\tm.dt = common.dtnloss\n\t\tm.class = common.mclassnloss\n\t\tm.mname = 'N-loss'\n\t} else {\n\t\tm.dt = common.dtcloss\n\t\tm.class = common.mclasscloss\n\t\tm.mname = 'C-loss'\n\t}\n\tflag.good++\n\tconst n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene\n\tif (!(n in flag.data)) {\n\t\tflag.data[n] = []\n\t}\n\tflag.data[n].push(m)\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,71 @@
1
+ const clusterMethodLst = [
2
+ {
3
+ label: "Average",
4
+ value: "average",
5
+ title: `Cluster by average value`
6
+ },
7
+ {
8
+ label: `Complete`,
9
+ value: "complete",
10
+ title: `Use the complete clustering method`
11
+ },
12
+ {
13
+ label: `Single`,
14
+ value: "single",
15
+ title: `Use the single clustering method`
16
+ },
17
+ {
18
+ label: `Ward.D`,
19
+ value: "ward.D",
20
+ title: `Use the ward.D clustering method`
21
+ },
22
+ {
23
+ label: `Ward.D2`,
24
+ value: "ward.D2",
25
+ title: `Use the ward.D2 clustering method`
26
+ },
27
+ {
28
+ label: `Mcquitty`,
29
+ value: "mcquitty",
30
+ title: `Use the Mcquity clustering method`
31
+ }
32
+ /* These methods are currently disabled because the dendrogram lines tend to cross one another.
33
+ {
34
+ label: `Centroid`,
35
+ value: 'centroid',
36
+ title: `Use the centroid clustering method`
37
+ },
38
+ {
39
+ label: `Median`,
40
+ value: 'median',
41
+ title: `Use the median clustering method`
42
+ }
43
+ */
44
+ ];
45
+ const distanceMethodLst = [
46
+ {
47
+ label: "Euclidean",
48
+ value: "euclidean",
49
+ title: `Calculate distance using euclidean method`
50
+ },
51
+ {
52
+ label: "Maximum",
53
+ value: "maximum",
54
+ title: `Maximum distance between two components of x and y`
55
+ },
56
+ {
57
+ label: "Manhattan",
58
+ value: "manhattan",
59
+ title: `Calculate distance using the absolute distance between the two vectors`
60
+ },
61
+ {
62
+ label: "Canberra",
63
+ value: "canberra",
64
+ title: `Calculate distance using Canberra method`
65
+ }
66
+ ];
67
+ export {
68
+ clusterMethodLst,
69
+ distanceMethodLst
70
+ };
71
+ //# sourceMappingURL=clustering.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/clustering.js"],
4
+ "sourcesContent": ["export const clusterMethodLst = [\n\t{\n\t\tlabel: 'Average',\n\t\tvalue: 'average',\n\t\ttitle: `Cluster by average value`\n\t},\n\t{\n\t\tlabel: `Complete`,\n\t\tvalue: 'complete',\n\t\ttitle: `Use the complete clustering method`\n\t},\n\t{\n\t\tlabel: `Single`,\n\t\tvalue: 'single',\n\t\ttitle: `Use the single clustering method`\n\t},\n\t{\n\t\tlabel: `Ward.D`,\n\t\tvalue: 'ward.D',\n\t\ttitle: `Use the ward.D clustering method`\n\t},\n\t{\n\t\tlabel: `Ward.D2`,\n\t\tvalue: 'ward.D2',\n\t\ttitle: `Use the ward.D2 clustering method`\n\t},\n\t{\n\t\tlabel: `Mcquitty`,\n\t\tvalue: 'mcquitty',\n\t\ttitle: `Use the Mcquity clustering method`\n\t}\n\t/* These methods are currently disabled because the dendrogram lines tend to cross one another.\n\t{\n\t\tlabel: `Centroid`,\n\t\tvalue: 'centroid',\n\t\ttitle: `Use the centroid clustering method`\n\t},\n \t{\n\t\tlabel: `Median`,\n\t\tvalue: 'median',\n\t\ttitle: `Use the median clustering method`\n\t}\n */\n]\nexport const distanceMethodLst = [\n\t{\n\t\tlabel: 'Euclidean',\n\t\tvalue: 'euclidean',\n\t\ttitle: `Calculate distance using euclidean method`\n\t},\n\t{\n\t\tlabel: 'Maximum',\n\t\tvalue: 'maximum',\n\t\ttitle: `Maximum distance between two components of x and y`\n\t},\n\t{\n\t\tlabel: 'Manhattan',\n\t\tvalue: 'manhattan',\n\t\ttitle: `Calculate distance using the absolute distance between the two vectors`\n\t},\n\t{\n\t\tlabel: 'Canberra',\n\t\tvalue: 'canberra',\n\t\ttitle: `Calculate distance using Canberra method`\n\t}\n]\n"],
5
+ "mappings": "AAAO,MAAM,mBAAmB;AAAA,EAC/B;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaD;AACO,MAAM,oBAAoB;AAAA,EAChC;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AACD;",
6
+ "names": []
7
+ }