@sjcrh/proteinpaint-shared 2.188.1 → 2.190.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 (88) hide show
  1. package/README.md +14 -10
  2. package/dist/src/bulk.cnv.d.ts +2 -0
  3. package/dist/src/bulk.cnv.js +1 -1
  4. package/dist/src/bulk.cnv.js.map +3 -3
  5. package/dist/src/bulk.d.ts +56 -0
  6. package/dist/src/bulk.del.d.ts +2 -0
  7. package/dist/src/bulk.del.js +2 -2
  8. package/dist/src/bulk.del.js.map +3 -3
  9. package/dist/src/bulk.itd.d.ts +2 -0
  10. package/dist/src/bulk.itd.js +2 -2
  11. package/dist/src/bulk.itd.js.map +3 -3
  12. package/dist/src/bulk.js +1 -2
  13. package/dist/src/bulk.js.map +3 -3
  14. package/dist/src/bulk.snv.d.ts +2 -0
  15. package/dist/src/bulk.snv.js +3 -3
  16. package/dist/src/bulk.snv.js.map +3 -3
  17. package/dist/src/bulk.sv.d.ts +3 -0
  18. package/dist/src/bulk.sv.js +1 -1
  19. package/dist/src/bulk.sv.js.map +3 -3
  20. package/dist/src/bulk.svjson.d.ts +2 -0
  21. package/dist/src/bulk.svjson.js +3 -3
  22. package/dist/src/bulk.svjson.js.map +3 -3
  23. package/dist/src/bulk.trunc.d.ts +2 -0
  24. package/dist/src/bulk.trunc.js +1 -1
  25. package/dist/src/bulk.trunc.js.map +3 -3
  26. package/dist/src/clustering.d.ts +10 -0
  27. package/dist/src/clustering.js.map +1 -1
  28. package/dist/src/common.d.ts +431 -0
  29. package/dist/src/common.js +62 -22
  30. package/dist/src/common.js.map +3 -3
  31. package/dist/src/compute.percentile.d.ts +1 -0
  32. package/dist/src/compute.percentile.js.map +1 -1
  33. package/dist/src/fetch-helpers.d.ts +10 -0
  34. package/dist/src/fetch-helpers.js +17 -18
  35. package/dist/src/fetch-helpers.js.map +3 -3
  36. package/dist/src/fileSize.d.ts +1 -0
  37. package/dist/src/fileSize.js.map +1 -1
  38. package/dist/src/hash.d.ts +1 -0
  39. package/dist/src/hash.js.map +1 -1
  40. package/dist/src/helpers.d.ts +14 -0
  41. package/dist/src/helpers.js +3 -4
  42. package/dist/src/helpers.js.map +3 -3
  43. package/dist/src/index.d.ts +1 -2
  44. package/dist/src/index.js +1 -2
  45. package/dist/src/index.js.map +2 -2
  46. package/dist/src/mds3tk.d.ts +6 -0
  47. package/dist/src/mds3tk.js.map +3 -3
  48. package/dist/src/roundValue.d.ts +14 -0
  49. package/dist/src/roundValue.js.map +1 -1
  50. package/dist/src/scatter.d.ts +8 -0
  51. package/dist/src/scatter.js +17 -0
  52. package/dist/src/scatter.js.map +7 -0
  53. package/dist/src/termdb.bins.d.ts +5 -0
  54. package/dist/src/termdb.bins.js +1 -1
  55. package/dist/src/termdb.bins.js.map +3 -3
  56. package/dist/src/termdb.initbinconfig.d.ts +1 -0
  57. package/dist/src/termdb.initbinconfig.js +1 -1
  58. package/dist/src/termdb.initbinconfig.js.map +3 -3
  59. package/dist/src/termdb.usecase.d.ts +2 -0
  60. package/dist/src/termdb.usecase.js.map +3 -3
  61. package/dist/src/terms.d.ts +29 -52
  62. package/dist/src/terms.js +71 -56
  63. package/dist/src/terms.js.map +3 -3
  64. package/dist/src/tree.d.ts +1 -0
  65. package/dist/src/tree.js.map +3 -3
  66. package/dist/src/vcf.ann.d.ts +1 -0
  67. package/dist/src/vcf.ann.js +1 -2
  68. package/dist/src/vcf.ann.js.map +3 -3
  69. package/dist/src/vcf.csq.d.ts +1 -0
  70. package/dist/src/vcf.csq.js +1 -2
  71. package/dist/src/vcf.csq.js.map +3 -3
  72. package/dist/src/vcf.d.ts +2 -0
  73. package/dist/src/vcf.info.d.ts +1 -0
  74. package/dist/src/vcf.info.js.map +1 -1
  75. package/dist/src/vcf.js +47 -42
  76. package/dist/src/vcf.js.map +4 -4
  77. package/dist/src/vcf.type.d.ts +1 -0
  78. package/dist/src/vcf.type.js.map +1 -1
  79. package/package.json +21 -20
  80. package/constants/AiHisto.ts +0 -27
  81. package/constants/README.md +0 -11
  82. package/devTs.ts +0 -3
  83. package/dist/constants/AiHisto.d.ts +0 -23
  84. package/dist/constants/AiHisto.js +0 -31
  85. package/dist/constants/AiHisto.js.map +0 -7
  86. package/dist/src/aiHisto.d.ts +0 -5
  87. package/dist/src/aiHisto.js +0 -15
  88. package/dist/src/aiHisto.js.map +0 -7
package/README.md CHANGED
@@ -8,26 +8,30 @@ code. Do NOT put utility/helper code here that are specific to only one
8
8
  workspace, those files should be saved in that workspace.
9
9
 
10
10
  IMPORTANT:
11
- - code must work in browser and nodejs: do not import libs, deps, or globals that
12
- are specific to `nodejs` or `browser` environments, like `fs` or `DOM` elements
11
+ - Shared code must work in browser and nodejs: do not import libs, deps, or globals that
12
+ are specific to `nodejs` or `browser` environments, like `fs` or `DOM` elements.
13
+ - Except for contants, do not import from this workspace (aka `@sjcrh/proteinpaint-shared/`
14
+ or `#shared`) into `shared/types` as that will cause cyclical imports that break bundler
15
+ startup or `tsc` compilation.
13
16
 
14
17
  ## Develop
15
18
 
16
- It is much simpler to import *runtime* code directly from `@sjcrh/proteinpaint-shared`,
17
- or static code from `@sjcrh/proteinpaint-shared/devTs`, instead of specifying a code
18
- filename.
19
+ It is much simpler to import directly from `@sjcrh/proteinpaint-shared`. Avoid file-specific
20
+ imports unless tree-shaking performance is a concern. If a specific shared file must be imported,
21
+ prefer an alias such as `#shared/someFile.js`, which shields importers from shared code
22
+ file renames or reorganizations.
19
23
 
20
24
  For server dev, the `tsx` library will accept imports with or without file extension.
21
25
  Server (consumer) code should use `@sjcrh/proteinpaint-shared`, or if for some reason
22
26
  a shared file must be specific, it MUST use the `.js` file extension (e.g.,
23
27
  `#shared/someFile.js`).
24
28
 
25
- For client dev, the esbuild config will bundle the #shared imports correctly, even
26
- when `.js` extension is used to import what is actually a `.ts` file, by using
27
- custom plugins like dirname.
29
+ For client dev, the esbuild config will bundle the `#shared` imports correctly, even
30
+ when `.js` extension is used to import what is actually a `.ts` file.
28
31
 
29
- When importing types that are defined in `shared/utils` to `shared/types` dev,
30
- always use `@sjcrh/proteinpaint-shared/devTs` (or an alias such as `#shared/devTs`).
32
+ Do not import from `#shared/utils` to `#shared/types` - it may cause `tsc` compilation or `esbuild`
33
+ build errors. Only imports in the opposite direction, from `shared/types` to `shared/utils`, is allowed
34
+ to to ensure that there are no cyclical imports that breaks type checks or bundling.
31
35
 
32
36
  ## Build
33
37
 
@@ -0,0 +1,2 @@
1
+ export declare function parseheader(line: any, flag: any): false | "invalid file header for CNV" | "gene missing from header" | "CNV missing from header";
2
+ export declare function parseline(i: any, line: any, flag: any): void;
@@ -65,7 +65,7 @@ function parseline(i, line, flag) {
65
65
  if (!m.class) {
66
66
  return;
67
67
  }
68
- if (bulk.parsesample(m, flag, i, lst, flag.cnv.badlines)) {
68
+ if (bulk.parsesample(m, flag, i, lst)) {
69
69
  return;
70
70
  }
71
71
  m.dt = common.dtcnv;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/bulk.cnv.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 file header for CNV'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\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('cnv')\n\tif (i == -1) return 'CNV missing from header'\n\theader[i] = 'cnv'\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.cnv.header = header\n\tflag.cnv.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.cnv.header.length; j++) {\n\t\tm[flag.cnv.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.cnv.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (!m.cnv) {\n\t\tflag.cnv.badlines.push([i, 'missing cnv value', lst])\n\t\treturn\n\t}\n\tconst value = m.cnv.toLowerCase()\n\tswitch (value) {\n\t\tcase 'amplification':\n\t\tcase 'gain':\n\t\t\tm.class = common.mclasscnvgain\n\t\t\tbreak\n\t\tcase 'deletion':\n\t\tcase 'loss':\n\t\t\tm.class = common.mclasscnvloss\n\t\t\tbreak\n\t\tcase 'loh':\n\t\t\tm.class = common.mclasscnvloh\n\t\t\tbreak\n\t\tdefault:\n\t\t\tflag.cnv.badlines.push([i, 'invalid cnv value: ' + m.cnv, lst])\n\t\t\tm.class = null\n\t}\n\tif (!m.class) {\n\t\treturn\n\t}\n\tif (bulk.parsesample(m, flag, i, lst, flag.cnv.badlines)) {\n\t\treturn\n\t}\n\tm.dt = common.dtcnv\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": "AAMA,YAAY,YAAY;AACxB,YAAY,UAAU;AAEf,SAAS,YAAY,MAAM,MAAM;AACvC,QAAM,SAAS,KAAK,YAAY,EAAE,MAAM,GAAI;AAC5C,MAAI,OAAO,UAAU,EAAG,QAAO;AAC/B,QAAM,OAAO,IAAI,QAAQ;AACxB,eAAWA,MAAK,KAAK;AACpB,YAAM,IAAI,OAAO,QAAQA,EAAC;AAC1B,UAAI,KAAK,GAAI,QAAO;AAAA,IACrB;AACA,WAAO;AAAA,EACR;AACA,MAAI,IAAI,KAAK,MAAM;AACnB,MAAI,KAAK,GAAI,QAAO;AACpB,SAAO,CAAC,IAAI;AACZ,MAAI,KAAK,KAAK;AACd,MAAI,KAAK,GAAI,QAAO;AACpB,SAAO,CAAC,IAAI;AACZ,MAAI,KAAK,UAAU,eAAe,sBAAsB;AACxD,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,WAAW,SAAS,gBAAgB;AAC7C,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,SAAS;AAClB,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,QAAQ;AACjB,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,cAAc,eAAe,aAAa;AACnD,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,OAAK,IAAI,SAAS;AAClB,OAAK,IAAI,SAAS;AAClB,SAAO;AACR;AAEO,SAAS,UAAU,GAAG,MAAM,MAAM;AACxC,MAAI,QAAQ,MAAM,KAAK,CAAC,KAAK,IAAK;AAClC,QAAM,MAAM,KAAK,MAAM,GAAI;AAC3B,QAAM,IAAI,CAAC;AACX,WAAS,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,QAAQ,KAAK;AAChD,MAAE,KAAK,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,EAC9B;AACA,MAAI,CAAC,EAAE,MAAM;AACZ,SAAK,IAAI,SAAS,KAAK,CAAC,GAAG,gBAAgB,GAAG,CAAC;AAC/C;AAAA,EACD;AACA,MAAI,CAAC,EAAE,KAAK;AACX,SAAK,IAAI,SAAS,KAAK,CAAC,GAAG,qBAAqB,GAAG,CAAC;AACpD;AAAA,EACD;AACA,QAAM,QAAQ,EAAE,IAAI,YAAY;AAChC,UAAQ,OAAO;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD;AACC,WAAK,IAAI,SAAS,KAAK,CAAC,GAAG,wBAAwB,EAAE,KAAK,GAAG,CAAC;AAC9D,QAAE,QAAQ;AAAA,EACZ;AACA,MAAI,CAAC,EAAE,OAAO;AACb;AAAA,EACD;AACA,MAAI,KAAK,YAAY,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,QAAQ,GAAG;AACzD;AAAA,EACD;AACA,IAAE,KAAK,OAAO;AACd,OAAK;AACL,QAAM,IAAI,KAAK,cAAc,EAAE,KAAK,YAAY,IAAI,EAAE;AACtD,MAAI,EAAE,KAAK,KAAK,OAAO;AACtB,SAAK,KAAK,CAAC,IAAI,CAAC;AAAA,EACjB;AACA,OAAK,KAAK,CAAC,EAAE,KAAK,CAAC;AACpB;",
3
+ "sources": ["../../src/bulk.cnv.ts"],
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 file header for CNV'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\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('cnv')\n\tif (i == -1) return 'CNV missing from header'\n\theader[i] = 'cnv'\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.cnv.header = header\n\tflag.cnv.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: Record<string, any> = {}\n\tfor (let j = 0; j < flag.cnv.header.length; j++) {\n\t\tm[flag.cnv.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.cnv.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (!m.cnv) {\n\t\tflag.cnv.badlines.push([i, 'missing cnv value', lst])\n\t\treturn\n\t}\n\tconst value = m.cnv.toLowerCase()\n\tswitch (value) {\n\t\tcase 'amplification':\n\t\tcase 'gain':\n\t\t\tm.class = common.mclasscnvgain\n\t\t\tbreak\n\t\tcase 'deletion':\n\t\tcase 'loss':\n\t\t\tm.class = common.mclasscnvloss\n\t\t\tbreak\n\t\tcase 'loh':\n\t\t\tm.class = common.mclasscnvloh\n\t\t\tbreak\n\t\tdefault:\n\t\t\tflag.cnv.badlines.push([i, 'invalid cnv value: ' + m.cnv, lst])\n\t\t\tm.class = null\n\t}\n\tif (!m.class) {\n\t\treturn\n\t}\n\tif (bulk.parsesample(m, flag, i, lst)) {\n\t\treturn\n\t}\n\tm.dt = common.dtcnv\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": "AAMA,YAAY,YAAY;AACxB,YAAY,UAAU;AAEf,SAAS,YAAY,MAAM,MAAM;AACvC,QAAM,SAAS,KAAK,YAAY,EAAE,MAAM,GAAI;AAC5C,MAAI,OAAO,UAAU,EAAG,QAAO;AAC/B,QAAM,OAAO,IAAI,QAAQ;AACxB,eAAWA,MAAK,KAAK;AACpB,YAAM,IAAI,OAAO,QAAQA,EAAC;AAC1B,UAAI,KAAK,GAAI,QAAO;AAAA,IACrB;AACA,WAAO;AAAA,EACR;AACA,MAAI,IAAI,KAAK,MAAM;AACnB,MAAI,KAAK,GAAI,QAAO;AACpB,SAAO,CAAC,IAAI;AACZ,MAAI,KAAK,KAAK;AACd,MAAI,KAAK,GAAI,QAAO;AACpB,SAAO,CAAC,IAAI;AACZ,MAAI,KAAK,UAAU,eAAe,sBAAsB;AACxD,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,WAAW,SAAS,gBAAgB;AAC7C,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,SAAS;AAClB,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,QAAQ;AACjB,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,MAAI,KAAK,cAAc,eAAe,aAAa;AACnD,MAAI,KAAK,GAAI,QAAO,CAAC,IAAI;AACzB,OAAK,IAAI,SAAS;AAClB,OAAK,IAAI,SAAS;AAClB,SAAO;AACR;AAEO,SAAS,UAAU,GAAG,MAAM,MAAM;AACxC,MAAI,QAAQ,MAAM,KAAK,CAAC,KAAK,IAAK;AAClC,QAAM,MAAM,KAAK,MAAM,GAAI;AAC3B,QAAM,IAAyB,CAAC;AAChC,WAAS,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,QAAQ,KAAK;AAChD,MAAE,KAAK,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,EAC9B;AACA,MAAI,CAAC,EAAE,MAAM;AACZ,SAAK,IAAI,SAAS,KAAK,CAAC,GAAG,gBAAgB,GAAG,CAAC;AAC/C;AAAA,EACD;AACA,MAAI,CAAC,EAAE,KAAK;AACX,SAAK,IAAI,SAAS,KAAK,CAAC,GAAG,qBAAqB,GAAG,CAAC;AACpD;AAAA,EACD;AACA,QAAM,QAAQ,EAAE,IAAI,YAAY;AAChC,UAAQ,OAAO;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD,KAAK;AACJ,QAAE,QAAQ,OAAO;AACjB;AAAA,IACD;AACC,WAAK,IAAI,SAAS,KAAK,CAAC,GAAG,wBAAwB,EAAE,KAAK,GAAG,CAAC;AAC9D,QAAE,QAAQ;AAAA,EACZ;AACA,MAAI,CAAC,EAAE,OAAO;AACb;AAAA,EACD;AACA,MAAI,KAAK,YAAY,GAAG,MAAM,GAAG,GAAG,GAAG;AACtC;AAAA,EACD;AACA,IAAE,KAAK,OAAO;AACd,OAAK;AACL,QAAM,IAAI,KAAK,cAAc,EAAE,KAAK,YAAY,IAAI,EAAE;AACtD,MAAI,EAAE,KAAK,KAAK,OAAO;AACtB,SAAK,KAAK,CAAC,IAAI,CAAC;AAAA,EACjB;AACA,OAAK,KAAK,CAAC,EAAE,KAAK,CAAC;AACpB;",
6
6
  "names": ["i"]
7
7
  }
@@ -0,0 +1,56 @@
1
+ declare const _default: {};
2
+ export default _default;
3
+ export declare function init_bulk_flag(genome: any): {
4
+ genome: any;
5
+ mclasslabel2key: {};
6
+ data: {};
7
+ sample2disease: {};
8
+ patient2st: {};
9
+ good: number;
10
+ geneToUpper: boolean;
11
+ snv: {
12
+ loaded: boolean;
13
+ header: null;
14
+ badlines: never[];
15
+ missense: number;
16
+ silent: number;
17
+ };
18
+ svjson: {
19
+ loaded: boolean;
20
+ header: null;
21
+ badlines: never[];
22
+ };
23
+ fusion: {
24
+ loaded: boolean;
25
+ header: null;
26
+ badlines: never[];
27
+ original: never[];
28
+ };
29
+ sv: {
30
+ loaded: boolean;
31
+ header: null;
32
+ badlines: never[];
33
+ original: never[];
34
+ };
35
+ cnv: {
36
+ loaded: boolean;
37
+ header: null;
38
+ badlines: never[];
39
+ };
40
+ itd: {
41
+ loaded: boolean;
42
+ header: null;
43
+ badlines: never[];
44
+ };
45
+ del: {
46
+ loaded: boolean;
47
+ header: null;
48
+ badlines: never[];
49
+ };
50
+ truncation: {
51
+ loaded: boolean;
52
+ header: null;
53
+ badlines: never[];
54
+ };
55
+ } | null;
56
+ export declare function parsesample(m: any, flag: any, i: any, lst: any): boolean | undefined;
@@ -0,0 +1,2 @@
1
+ export declare function parseheader(line: any, flag: any): false | "gene missing from header" | "invalid header line for intragenic deletion" | "isoform missing from header" | "rnadellength is required when rnaPosition is used" | "chr_start is required when chr is used" | "chr_stop is required when chr is used";
2
+ export declare function parseline(i: any, line: any, flag: any): void;
@@ -99,14 +99,14 @@ function parseline(i, line, flag) {
99
99
  }
100
100
  m.chrpos2 = v;
101
101
  }
102
- if (bulk.parsesample(m, flag, i, lst, flag.del.badlines)) {
102
+ if (bulk.parsesample(m, flag, i, lst)) {
103
103
  return;
104
104
  }
105
105
  m.dt = common.dtdel;
106
106
  m.class = common.mclassdel;
107
107
  m.mname = "DEL";
108
108
  flag.good++;
109
- var n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
109
+ const n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
110
110
  if (!(n in flag.data)) {
111
111
  flag.data[n] = [];
112
112
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/bulk.del.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 intragenic deletion'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\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\ti = htry('rnaposition')\n\tif (i != -1) {\n\t\theader[i] = 'rnaposition'\n\t\ti = htry('rnadellength')\n\t\tif (i == -1) return 'rnadellength is required when rnaPosition is used'\n\t\theader[i] = 'rnadellength'\n\t}\n\ti = htry('chromosome', 'chr')\n\tif (i != -1) {\n\t\theader[i] = 'chr'\n\t\ti = htry('chr_start')\n\t\tif (i == -1) return 'chr_start is required when chr is used'\n\t\theader[i] = 'chrpos1'\n\t\ti = htry('chr_stop')\n\t\tif (i == -1) return 'chr_stop is required when chr is used'\n\t\theader[i] = 'chrpos2'\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.del.header = header\n\tflag.del.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.del.header.length; j++) {\n\t\tif (lst[j] == undefined) break\n\t\tm[flag.del.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.del.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.rnaposition) {\n\t\tlet v = Number.parseInt(m.rnaposition)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid rnaPosition value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaposition = v\n\t\tif (!m.rnadellength) {\n\t\t\tflag.del.badlines.push([i, 'missing rnaDellength value', lst])\n\t\t\treturn\n\t\t}\n\t\tv = Number.parseInt(m.rnadellength)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid rnaDellength value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnadellength = v\n\t}\n\tif (m.chr) {\n\t\tlet v = Number.parseInt(m.chrpos1)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid chr_start value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos1 = v\n\t\tv = Number.parseInt(m.chrpos2)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid chr_stop value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos2 = v\n\t}\n\n\tif (bulk.parsesample(m, flag, i, lst, flag.del.badlines)) {\n\t\treturn\n\t}\n\tm.dt = common.dtdel\n\tm.class = common.mclassdel\n\tm.mname = 'DEL'\n\tflag.good++\n\tvar 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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",
3
+ "sources": ["../../src/bulk.del.ts"],
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 intragenic deletion'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\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\ti = htry('rnaposition')\n\tif (i != -1) {\n\t\theader[i] = 'rnaposition'\n\t\ti = htry('rnadellength')\n\t\tif (i == -1) return 'rnadellength is required when rnaPosition is used'\n\t\theader[i] = 'rnadellength'\n\t}\n\ti = htry('chromosome', 'chr')\n\tif (i != -1) {\n\t\theader[i] = 'chr'\n\t\ti = htry('chr_start')\n\t\tif (i == -1) return 'chr_start is required when chr is used'\n\t\theader[i] = 'chrpos1'\n\t\ti = htry('chr_stop')\n\t\tif (i == -1) return 'chr_stop is required when chr is used'\n\t\theader[i] = 'chrpos2'\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.del.header = header\n\tflag.del.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: Record<string, any> = {}\n\tfor (let j = 0; j < flag.del.header.length; j++) {\n\t\tif (lst[j] == undefined) break\n\t\tm[flag.del.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.del.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.rnaposition) {\n\t\tlet v = Number.parseInt(m.rnaposition)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid rnaPosition value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaposition = v\n\t\tif (!m.rnadellength) {\n\t\t\tflag.del.badlines.push([i, 'missing rnaDellength value', lst])\n\t\t\treturn\n\t\t}\n\t\tv = Number.parseInt(m.rnadellength)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid rnaDellength value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnadellength = v\n\t}\n\tif (m.chr) {\n\t\tlet v = Number.parseInt(m.chrpos1)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid chr_start value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos1 = v\n\t\tv = Number.parseInt(m.chrpos2)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.del.badlines.push([i, 'invalid chr_stop value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos2 = v\n\t}\n\n\tif (bulk.parsesample(m, flag, i, lst)) {\n\t\treturn\n\t}\n\tm.dt = common.dtdel\n\tm.class = common.mclassdel\n\tm.mname = 'DEL'\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
6
  "names": ["i"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ export declare function parseheader(line: any, flag: any): false | "gene missing from header" | "isoform missing from header" | "invalid header line for ITD" | "rnaduplength is required when rnaposition is present" | "chr_start is required when chr is present" | "chr_stop is required when chr is present";
2
+ export declare function parseline(i: any, line: any, flag: any): void;
@@ -99,14 +99,14 @@ function parseline(i, line, flag) {
99
99
  }
100
100
  m.chrpos2 = v;
101
101
  }
102
- if (bulk.parsesample(m, flag, i, lst, flag.itd.badlines)) {
102
+ if (bulk.parsesample(m, flag, i, lst)) {
103
103
  return;
104
104
  }
105
105
  m.dt = common.dtitd;
106
106
  m.class = common.mclassitd;
107
107
  m.mname = "ITD";
108
108
  flag.good++;
109
- var n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
109
+ const n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
110
110
  if (!(n in flag.data)) {
111
111
  flag.data[n] = [];
112
112
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/bulk.itd.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 ITD'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\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\ti = htry('rnaposition')\n\tif (i != -1) {\n\t\theader[i] = 'rnaposition'\n\t\ti = htry('rnaduplength')\n\t\tif (i == -1) return 'rnaduplength is required when rnaposition is present'\n\t\theader[i] = 'rnaduplength'\n\t}\n\ti = htry('chromosome', 'chr')\n\tif (i != -1) {\n\t\theader[i] = 'chr'\n\t\ti = htry('chr_start')\n\t\tif (i == -1) return 'chr_start is required when chr is present'\n\t\theader[i] = 'chrpos1'\n\t\ti = htry('chr_stop')\n\t\tif (i == -1) return 'chr_stop is required when chr is present'\n\t\theader[i] = 'chrpos2'\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.itd.header = header\n\tflag.itd.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.itd.header.length; j++) {\n\t\tif (lst[j] == undefined) break\n\t\tm[flag.itd.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.itd.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.rnaposition) {\n\t\tlet v = Number.parseInt(m.rnaposition)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid rnaPosition value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaposition = v\n\t\tif (!m.rnaduplength) {\n\t\t\tflag.itd.badlines.push([i, 'missing rnaDuplength value', lst])\n\t\t\treturn\n\t\t}\n\t\tv = Number.parseInt(m.rnaduplength)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid rnaDuplength value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaduplength = v\n\t}\n\tif (m.chr) {\n\t\tlet v = Number.parseInt(m.chrpos1)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid chr_start value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos1 = v\n\t\tv = Number.parseInt(m.chrpos2)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid chr_stop value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos2 = v\n\t}\n\tif (bulk.parsesample(m, flag, i, lst, flag.itd.badlines)) {\n\t\treturn\n\t}\n\tm.dt = common.dtitd\n\tm.class = common.mclassitd\n\tm.mname = 'ITD'\n\tflag.good++\n\tvar 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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",
3
+ "sources": ["../../src/bulk.itd.ts"],
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 ITD'\n\tconst htry = (...lst) => {\n\t\tfor (const i of lst) {\n\t\t\tconst j = header.indexOf(i)\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\ti = htry('rnaposition')\n\tif (i != -1) {\n\t\theader[i] = 'rnaposition'\n\t\ti = htry('rnaduplength')\n\t\tif (i == -1) return 'rnaduplength is required when rnaposition is present'\n\t\theader[i] = 'rnaduplength'\n\t}\n\ti = htry('chromosome', 'chr')\n\tif (i != -1) {\n\t\theader[i] = 'chr'\n\t\ti = htry('chr_start')\n\t\tif (i == -1) return 'chr_start is required when chr is present'\n\t\theader[i] = 'chrpos1'\n\t\ti = htry('chr_stop')\n\t\tif (i == -1) return 'chr_stop is required when chr is present'\n\t\theader[i] = 'chrpos2'\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.itd.header = header\n\tflag.itd.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: Record<string, any> = {}\n\tfor (let j = 0; j < flag.itd.header.length; j++) {\n\t\tif (lst[j] == undefined) break\n\t\tm[flag.itd.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.itd.badlines.push([i, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.rnaposition) {\n\t\tlet v = Number.parseInt(m.rnaposition)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid rnaPosition value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaposition = v\n\t\tif (!m.rnaduplength) {\n\t\t\tflag.itd.badlines.push([i, 'missing rnaDuplength value', lst])\n\t\t\treturn\n\t\t}\n\t\tv = Number.parseInt(m.rnaduplength)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid rnaDuplength value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.rnaduplength = v\n\t}\n\tif (m.chr) {\n\t\tlet v = Number.parseInt(m.chrpos1)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid chr_start value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos1 = v\n\t\tv = Number.parseInt(m.chrpos2)\n\t\tif (Number.isNaN(v) || v < 0) {\n\t\t\tflag.itd.badlines.push([i, 'invalid chr_stop value', lst])\n\t\t\treturn\n\t\t}\n\t\tm.chrpos2 = v\n\t}\n\tif (bulk.parsesample(m, flag, i, lst)) {\n\t\treturn\n\t}\n\tm.dt = common.dtitd\n\tm.class = common.mclassitd\n\tm.mname = 'ITD'\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
6
  "names": ["i"]
7
7
  }
package/dist/src/bulk.js CHANGED
@@ -69,7 +69,7 @@ function init_bulk_flag(genome) {
69
69
  }
70
70
  };
71
71
  }
72
- function parsesample(m, flag, i, lst, badline) {
72
+ function parsesample(m, flag, i, lst) {
73
73
  let variantorigin = common.moriginsomatic;
74
74
  if (m.sampletype) {
75
75
  const s = m.sampletype.toLowerCase();
@@ -145,7 +145,6 @@ function parsesample(m, flag, i, lst, badline) {
145
145
  return;
146
146
  }
147
147
  const nopatientname = "no patient/individual name";
148
- let p;
149
148
  if (m.patient) {
150
149
  if (!flag.patient2st[m.patient]) {
151
150
  flag.patient2st[m.patient] = {};
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/bulk.js"],
4
- "sourcesContent": ["////////////////////////////////////\n//\n// shared between client and server\n//\n////////////////////////////////////\n\nimport * as common from './common.js'\n\nexport default {}\n\nexport function init_bulk_flag(genome) {\n\tif (!genome) {\n\t\treturn null\n\t}\n\tconst mclasslabel2key = {}\n\tfor (const n in common.mclass) {\n\t\tmclasslabel2key[common.mclass[n].label.toUpperCase()] = n\n\t}\n\treturn {\n\t\tgenome: genome,\n\t\tmclasslabel2key: mclasslabel2key,\n\t\tdata: {},\n\t\tsample2disease: {}, // (proof) k: sample, v: disease\n\t\t// will only record this when origin is used\n\t\tpatient2st: {},\n\t\t// k: patient, v: { k: sampletype, v: sample }\n\t\t// new sample names always override old\n\t\tgood: 0,\n\t\tgeneToUpper: true, // option to not force uppercase on gene names\n\t\tsnv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\t// jinghui: based on missense/silent ratio of entire dataset to decide whether to include silent when importing...\n\t\t\t// hard-coded class codes\n\t\t\tmissense: 0,\n\t\t\tsilent: 0\n\t\t},\n\t\tsvjson: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t},\n\t\tfusion: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\toriginal: []\n\t\t},\n\t\tsv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\toriginal: []\n\t\t},\n\t\tcnv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t},\n\t\titd: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t},\n\t\tdel: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t},\n\t\ttruncation: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t}\n\t}\n}\n\nexport function parsesample(m, flag, i, lst, badline) {\n\tlet variantorigin = common.moriginsomatic\n\tif (m.sampletype) {\n\t\tconst s = m.sampletype.toLowerCase()\n\t\tswitch (s) {\n\t\t\tcase 'relapse':\n\t\t\t\tvariantorigin = common.moriginrelapse\n\t\t\t\tbreak\n\t\t\tcase 'germline':\n\t\t\t\tvariantorigin = common.morigingermline\n\t\t\t\tbreak\n\t\t\tcase 'somatic':\n\t\t\tcase 'diagnosis':\n\t\t\t\tbreak\n\t\t}\n\t\tif (m.sample) {\n\t\t\tif (m.patient) {\n\t\t\t\t// good\n\t\t\t} else {\n\t\t\t\tm.patient = m.sample + ' ' + m.sampletype\n\t\t\t}\n\t\t} else {\n\t\t\tif (m.patient) {\n\t\t\t\tm.sample = m.patient + ' ' + m.sampletype\n\t\t\t} else {\n\t\t\t\t// neither sample or patient, will quit later\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (m.patient) {\n\t\t\tif (m.sample) {\n\t\t\t\tm.sampletype = m.sample\n\t\t\t} else {\n\t\t\t\tm.sample = m.sampletype = m.patient\n\t\t\t}\n\t\t} else {\n\t\t\tif (m.sample) {\n\t\t\t\tm.sampletype = m.sample\n\t\t\t} else {\n\t\t\t\t// no patient/sample, will quit later\n\t\t\t}\n\t\t}\n\t}\n\tif (m.origin) {\n\t\t// override existing variantorigin\n\t\tconst s = m.origin.toLowerCase()\n\t\tswitch (s) {\n\t\t\tcase 'r':\n\t\t\tcase 'relapse':\n\t\t\t\tvariantorigin = common.moriginrelapse\n\t\t\t\tm.isrim2 = true\n\t\t\t\tbreak\n\t\t\tcase 'g':\n\t\t\tcase 'germline':\n\t\t\t\tvariantorigin = common.morigingermline\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase 'gp':\n\t\t\tcase 'germline pathogenic':\n\t\t\t\tvariantorigin = common.morigingermlinepathogenic\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase 'gnp':\n\t\t\tcase 'germline nonpathogenic':\n\t\t\tcase 'germline non-pathogenic':\n\t\t\t\tvariantorigin = common.morigingermlinenonpathogenic\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase 's':\n\t\t\tcase 'somatic':\n\t\t\tcase 'diagnosis':\n\t\t\t\tvariantorigin = common.moriginsomatic\n\t\t\t\tbreak\n\t\t}\n\t}\n\tm.origin = variantorigin\n\n\tif (!m.sample && !m.patient) {\n\t\t// will not go into sample table\n\t\treturn\n\t}\n\n\tconst nopatientname = 'no patient/individual name'\n\tlet p\n\tif (m.patient) {\n\t\tif (!flag.patient2st[m.patient]) {\n\t\t\tflag.patient2st[m.patient] = {}\n\t\t}\n\t\tflag.patient2st[m.patient][m.sampletype] = m.sample\n\t} else {\n\t\tif (!flag.patient2st[nopatientname]) {\n\t\t\tflag.patient2st[nopatientname] = {}\n\t\t}\n\t\tflag.patient2st[nopatientname][m.sampletype] = m.sample\n\t}\n\n\tif (m.sample) {\n\t\tif (m.disease) {\n\t\t\tif (m.sample in flag.sample2disease) {\n\t\t\t\tif (m.disease != flag.sample2disease[m.sample]) {\n\t\t\t\t\tflag.snv.badlines.push([\n\t\t\t\t\t\ti,\n\t\t\t\t\t\t'conflict of disease types for sample \"' +\n\t\t\t\t\t\t\tm.sample +\n\t\t\t\t\t\t\t'\": ' +\n\t\t\t\t\t\t\tm.disease +\n\t\t\t\t\t\t\t', ' +\n\t\t\t\t\t\t\tflag.sample2disease[m.sample],\n\t\t\t\t\t\tlst\n\t\t\t\t\t])\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag.sample2disease[m.sample] = m.disease\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../src/bulk.ts"],
4
+ "sourcesContent": ["////////////////////////////////////\n//\n// shared between client and server\n//\n////////////////////////////////////\n\nimport * as common from './common.js'\n\nexport default {}\n\nexport function init_bulk_flag(genome) {\n\tif (!genome) {\n\t\treturn null\n\t}\n\tconst mclasslabel2key = {}\n\tfor (const n in common.mclass) {\n\t\tmclasslabel2key[common.mclass[n].label.toUpperCase()] = n\n\t}\n\treturn {\n\t\tgenome: genome,\n\t\tmclasslabel2key: mclasslabel2key,\n\t\tdata: {},\n\t\tsample2disease: {}, // (proof) k: sample, v: disease\n\t\t// will only record this when origin is used\n\t\tpatient2st: {},\n\t\t// k: patient, v: { k: sampletype, v: sample }\n\t\t// new sample names always override old\n\t\tgood: 0,\n\t\tgeneToUpper: true, // option to not force uppercase on gene names\n\t\tsnv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\t// jinghui: based on missense/silent ratio of entire dataset to decide whether to include silent when importing...\n\t\t\t// hard-coded class codes\n\t\t\tmissense: 0,\n\t\t\tsilent: 0\n\t\t},\n\t\tsvjson: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t},\n\t\tfusion: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\toriginal: []\n\t\t},\n\t\tsv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\toriginal: []\n\t\t},\n\t\tcnv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t},\n\t\titd: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t},\n\t\tdel: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t},\n\t\ttruncation: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: []\n\t\t}\n\t}\n}\n\nexport function parsesample(m, flag, i, lst) {\n\tlet variantorigin = common.moriginsomatic\n\tif (m.sampletype) {\n\t\tconst s = m.sampletype.toLowerCase()\n\t\tswitch (s) {\n\t\t\tcase 'relapse':\n\t\t\t\tvariantorigin = common.moriginrelapse\n\t\t\t\tbreak\n\t\t\tcase 'germline':\n\t\t\t\tvariantorigin = common.morigingermline\n\t\t\t\tbreak\n\t\t\tcase 'somatic':\n\t\t\tcase 'diagnosis':\n\t\t\t\tbreak\n\t\t}\n\t\tif (m.sample) {\n\t\t\tif (m.patient) {\n\t\t\t\t// good\n\t\t\t} else {\n\t\t\t\tm.patient = m.sample + ' ' + m.sampletype\n\t\t\t}\n\t\t} else {\n\t\t\tif (m.patient) {\n\t\t\t\tm.sample = m.patient + ' ' + m.sampletype\n\t\t\t} else {\n\t\t\t\t// neither sample or patient, will quit later\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (m.patient) {\n\t\t\tif (m.sample) {\n\t\t\t\tm.sampletype = m.sample\n\t\t\t} else {\n\t\t\t\tm.sample = m.sampletype = m.patient\n\t\t\t}\n\t\t} else {\n\t\t\tif (m.sample) {\n\t\t\t\tm.sampletype = m.sample\n\t\t\t} else {\n\t\t\t\t// no patient/sample, will quit later\n\t\t\t}\n\t\t}\n\t}\n\tif (m.origin) {\n\t\t// override existing variantorigin\n\t\tconst s = m.origin.toLowerCase()\n\t\tswitch (s) {\n\t\t\tcase 'r':\n\t\t\tcase 'relapse':\n\t\t\t\tvariantorigin = common.moriginrelapse\n\t\t\t\tm.isrim2 = true\n\t\t\t\tbreak\n\t\t\tcase 'g':\n\t\t\tcase 'germline':\n\t\t\t\tvariantorigin = common.morigingermline\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase 'gp':\n\t\t\tcase 'germline pathogenic':\n\t\t\t\tvariantorigin = common.morigingermlinepathogenic\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase 'gnp':\n\t\t\tcase 'germline nonpathogenic':\n\t\t\tcase 'germline non-pathogenic':\n\t\t\t\tvariantorigin = common.morigingermlinenonpathogenic\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase 's':\n\t\t\tcase 'somatic':\n\t\t\tcase 'diagnosis':\n\t\t\t\tvariantorigin = common.moriginsomatic\n\t\t\t\tbreak\n\t\t}\n\t}\n\tm.origin = variantorigin\n\n\tif (!m.sample && !m.patient) {\n\t\t// will not go into sample table\n\t\treturn\n\t}\n\n\tconst nopatientname = 'no patient/individual name'\n\n\tif (m.patient) {\n\t\tif (!flag.patient2st[m.patient]) {\n\t\t\tflag.patient2st[m.patient] = {}\n\t\t}\n\t\tflag.patient2st[m.patient][m.sampletype] = m.sample\n\t} else {\n\t\tif (!flag.patient2st[nopatientname]) {\n\t\t\tflag.patient2st[nopatientname] = {}\n\t\t}\n\t\tflag.patient2st[nopatientname][m.sampletype] = m.sample\n\t}\n\n\tif (m.sample) {\n\t\tif (m.disease) {\n\t\t\tif (m.sample in flag.sample2disease) {\n\t\t\t\tif (m.disease != flag.sample2disease[m.sample]) {\n\t\t\t\t\tflag.snv.badlines.push([\n\t\t\t\t\t\ti,\n\t\t\t\t\t\t'conflict of disease types for sample \"' +\n\t\t\t\t\t\t\tm.sample +\n\t\t\t\t\t\t\t'\": ' +\n\t\t\t\t\t\t\tm.disease +\n\t\t\t\t\t\t\t', ' +\n\t\t\t\t\t\t\tflag.sample2disease[m.sample],\n\t\t\t\t\t\tlst\n\t\t\t\t\t])\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag.sample2disease[m.sample] = m.disease\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,2 @@
1
+ export declare function parseheader(line: any, flag: any): false | "gene missing from header" | "isoform missing from header" | "invalid file header for snv/indel" | "amino_acid_change missing from header" | "variant_class missing from header" | "chromosome missing from header" | "start missing from header";
2
+ export declare function parseline(linei: any, line: any, flag: any): void;
@@ -109,7 +109,7 @@ function parseline(linei, line, flag) {
109
109
  return;
110
110
  }
111
111
  }
112
- if (bulk.parsesample(m, flag, linei, lst, flag.snv.badlines)) {
112
+ if (bulk.parsesample(m, flag, linei, lst)) {
113
113
  return;
114
114
  }
115
115
  if (!m.chr) {
@@ -132,7 +132,7 @@ function parseline(linei, line, flag) {
132
132
  if (m.maf_tumor_v2 != void 0 && m.maf_tumor_v1 != void 0) {
133
133
  if (m.maf_tumor_v2 == "") {
134
134
  } else {
135
- let v1 = Number.parseInt(m.maf_tumor_v1), v2 = Number.parseInt(m.maf_tumor_v2);
135
+ const v1 = Number.parseInt(m.maf_tumor_v1), v2 = Number.parseInt(m.maf_tumor_v2);
136
136
  if (Number.isNaN(v1) || Number.isNaN(v2)) {
137
137
  flag.snv.badlines.push([linei, "invalid maf_tumor mutant and/or total read count", lst]);
138
138
  return;
@@ -145,7 +145,7 @@ function parseline(linei, line, flag) {
145
145
  if (m.maf_normal_v1 != void 0 && m.maf_normal_v2 != void 0) {
146
146
  if (m.maf_normal_v2 == "") {
147
147
  } else {
148
- let v1 = Number.parseInt(m.maf_normal_v1), v2 = Number.parseInt(m.maf_normal_v2);
148
+ const v1 = Number.parseInt(m.maf_normal_v1), v2 = Number.parseInt(m.maf_normal_v2);
149
149
  if (Number.isNaN(v1) || Number.isNaN(v2)) {
150
150
  flag.snv.badlines.push([linei, "invalid maf_normal mutant and/or total read count", lst]);
151
151
  return;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/bulk.snv.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 file header for snv/indel'\n\tconst htry = (...args) => {\n\t\tfor (const s of args) {\n\t\t\tconst i = header.indexOf(s)\n\t\t\tif (i != -1) return i\n\t\t}\n\t\treturn -1\n\t}\n\tlet i = htry('annovar_gene', 'annovar_sj_gene', 'gene', 'genename', 'gene_symbol', 'hugo_symbol')\n\tif (i == -1) return 'gene missing from header'\n\theader[i] = 'gene'\n\ti = htry('annovar_aachange', 'amino_acid_change', 'annovar_sj_aachange', 'aachange', 'protein_change', 'variant')\n\tif (i == -1) return 'amino_acid_change missing from header'\n\theader[i] = 'mname'\n\ti = htry('annovar_class', 'class', 'mclass', 'variant_class', 'variant_classification', 'annovar_sj_class')\n\tif (i == -1) return 'variant_class missing from header'\n\theader[i] = 'class'\n\ti = htry('chromosome', 'chr')\n\tif (i == -1) return 'chromosome missing from header'\n\theader[i] = 'chr'\n\ti = htry('wu_hg19_pos', 'start', 'start_position', 'chr_position', 'position')\n\tif (i == -1) return 'start missing from header'\n\theader[i] = 'pos'\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\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('quantitative_measurements')\n\tif (i != -1) header[i] = 'qmset'\n\t// dna maf tumor\n\ti = htry('mutant_reads_in_case', 'mutant_in_tumor', 'tumor_readcount_alt')\n\tif (i != -1) header[i] = 'maf_tumor_v1'\n\ti = htry('total_reads_in_case', 'total_in_tumor', 'tumor_readcount_total')\n\tif (i != -1) header[i] = 'maf_tumor_v2'\n\t// dna maf normal\n\ti = htry('mutant_reads_in_control', 'mutant_in_normal', 'normal_readcount_alt')\n\tif (i != -1) header[i] = 'maf_normal_v1'\n\ti = htry('total_reads_in_control', 'total_in_normal', 'normal_readcount_total')\n\tif (i != -1) header[i] = 'maf_normal_v2'\n\t// rna maf\n\t// cdna\n\ti = htry('cdna_change')\n\tif (i != -1) header[i] = 'cdna_change'\n\ti = htry('sampletype', 'sample type', 'sample_type')\n\tif (i != -1) header[i] = 'sampletype'\n\ti = htry('origin')\n\tif (i != -1) header[i] = 'origin'\n\ti = htry('cancer', 'disease', 'diagnosis')\n\tif (i != -1) header[i] = 'disease'\n\tflag.snv.header = header\n\tflag.snv.loaded = true\n\treturn false\n}\n\nexport function parseline(linei, line, flag) {\n\tif (line == '' || line[0] == '#') return\n\tconst lst = line.split('\\t')\n\tconst m = {}\n\tfor (let j = 0; j < flag.snv.header.length; j++) {\n\t\tif (lst[j] == undefined) break\n\t\tm[flag.snv.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.snv.badlines.push([linei, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.gene.toUpperCase() == 'UNKNOWN') {\n\t\tflag.snv.badlines.push([linei, 'gene name is UNKNOWN', lst])\n\t\treturn\n\t}\n\tif (!m.isoform) {\n\t\tflag.snv.badlines.push([linei, 'missing isoform', lst])\n\t\treturn\n\t}\n\tif (!m.mname) {\n\t\tm.mname = m.cdna_change\n\t\tif (!m.mname) {\n\t\t\tflag.snv.badlines.push([linei, 'missing amino acid change', lst])\n\t\t\treturn\n\t\t}\n\t} else {\n\t\tif (m.mname.indexOf('p.') == 0) {\n\t\t\tm.mname = m.mname.replace(/^p\\./, '')\n\t\t}\n\t}\n\tif (!m.class) {\n\t\tflag.snv.badlines.push([linei, 'missing mutation class', lst])\n\t\treturn\n\t}\n\tlet _c = flag.mclasslabel2key[m.class.toUpperCase()]\n\tif (_c) {\n\t\tm.class = _c\n\t} else {\n\t\t_c = common.mclasstester(m.class)\n\t\tif (_c) {\n\t\t\tm.class = _c\n\t\t} else {\n\t\t\tflag.snv.badlines.push([linei, 'wrong mutation class: ' + m.class, lst])\n\t\t\treturn\n\t\t}\n\t}\n\tif (bulk.parsesample(m, flag, linei, lst, flag.snv.badlines)) {\n\t\treturn\n\t}\n\tif (!m.chr) {\n\t\tflag.snv.badlines.push([linei, 'missing chromosome', lst])\n\t\treturn\n\t}\n\tif (m.chr.toLowerCase().indexOf('chr') != 0) {\n\t\tm.chr = 'chr' + m.chr\n\t}\n\tif (!m.pos) {\n\t\tflag.snv.badlines.push([linei, 'missing chromosome position', lst])\n\t\treturn\n\t}\n\tconst v = Number.parseInt(m.pos)\n\tif (Number.isNaN(v)) {\n\t\tflag.snv.badlines.push([linei, 'invalid chromosome position', lst])\n\t\treturn\n\t}\n\tm.pos = v - 1\n\n\tif (m.maf_tumor_v2 != undefined && m.maf_tumor_v1 != undefined) {\n\t\tif (m.maf_tumor_v2 == '') {\n\t\t\t// no value, do not parse\n\t\t} else {\n\t\t\tlet v1 = Number.parseInt(m.maf_tumor_v1),\n\t\t\t\tv2 = Number.parseInt(m.maf_tumor_v2)\n\t\t\tif (Number.isNaN(v1) || Number.isNaN(v2)) {\n\t\t\t\tflag.snv.badlines.push([linei, 'invalid maf_tumor mutant and/or total read count', lst])\n\t\t\t\treturn\n\t\t\t}\n\t\t\tm.maf_tumor = { f: v1 / v2, v1: v1, v2: v2 }\n\t\t}\n\t\tdelete m.maf_tumor_v1\n\t\tdelete m.maf_tumor_v2\n\t}\n\n\tif (m.maf_normal_v1 != undefined && m.maf_normal_v2 != undefined) {\n\t\tif (m.maf_normal_v2 == '') {\n\t\t\t// no value\n\t\t} else {\n\t\t\tlet v1 = Number.parseInt(m.maf_normal_v1),\n\t\t\t\tv2 = Number.parseInt(m.maf_normal_v2)\n\t\t\tif (Number.isNaN(v1) || Number.isNaN(v2)) {\n\t\t\t\tflag.snv.badlines.push([linei, 'invalid maf_normal mutant and/or total read count', lst])\n\t\t\t\treturn\n\t\t\t}\n\t\t\tm.maf_normal = { f: v1 / v2, v1: v1, v2: v2 }\n\t\t}\n\t\tdelete m.maf_normal_v1\n\t\tdelete m.maf_normal_v2\n\t}\n\n\t/*\n\tif(m.qmset) {\n\t\ttry{\n\t\t\tvar v=JSON.parse(m.qmset)\n\t\t} catch(e){\n\t\t\tflag.snv.badlines.push([linei,'invalid JSON for quantitative_measurements',lst])\n\t\t\tv=null\n\t\t} finally {\n\t\t\tif(v) {\n\t\t\t\tif(typeof(v)!='object') {\n\t\t\t\t\tflag.snv.badlines.push([linei,'value of quantitative_measurements must be an object',lst])\n\t\t\t\t\tdelete m.qmset\n\t\t\t\t} else {\n\t\t\t\t\tfor(var n in v) {\n\t\t\t\t\t\tif(!Array.isArray(v[n])) {\n\t\t\t\t\t\t\tflag.snv.badlines.push([linei,'quantitative_measurements: \"'+n+'\" value must be an array',lst])\n\t\t\t\t\t\t\tdelete v[n]\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar tmp=[]\n\t\t\t\t\t\t\tv[n].forEach(function(v2){\n\t\t\t\t\t\t\t\tif(typeof(v2)=='number') {\n\t\t\t\t\t\t\t\t\ttmp.push({v:v2})\n\t\t\t\t\t\t\t\t} else if(v2.v && typeof(v2.v)=='number') {\n\t\t\t\t\t\t\t\t\ttmp.push(v2)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tif(tmp.length) {\n\t\t\t\t\t\t\t\tv[n]=tmp\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tflag.snv.badlines.push([linei,'quantitative_measurements: no valid value for \"'+n+'\"',lst])\n\t\t\t\t\t\t\t\tdelete v[n]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tm.qmset=v\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete m.qmset\n\t\t\t}\n\t\t}\n\t}\n\t*/\n\tflag.good++\n\t// FIXME hard-coded M and S\n\tif (m.class == 'M') {\n\t\tflag.snv.missense++\n\t} else if (m.class == 'S') {\n\t\tflag.snv.silent++\n\t}\n\tconst n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene\n\tif (!flag.data[n]) {\n\t\tflag.data[n] = []\n\t}\n\tm.dt = common.dtsnvindel\n\tflag.data[n].push(m)\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../src/bulk.snv.ts"],
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 file header for snv/indel'\n\tconst htry = (...args) => {\n\t\tfor (const s of args) {\n\t\t\tconst i = header.indexOf(s)\n\t\t\tif (i != -1) return i\n\t\t}\n\t\treturn -1\n\t}\n\tlet i = htry('annovar_gene', 'annovar_sj_gene', 'gene', 'genename', 'gene_symbol', 'hugo_symbol')\n\tif (i == -1) return 'gene missing from header'\n\theader[i] = 'gene'\n\ti = htry('annovar_aachange', 'amino_acid_change', 'annovar_sj_aachange', 'aachange', 'protein_change', 'variant')\n\tif (i == -1) return 'amino_acid_change missing from header'\n\theader[i] = 'mname'\n\ti = htry('annovar_class', 'class', 'mclass', 'variant_class', 'variant_classification', 'annovar_sj_class')\n\tif (i == -1) return 'variant_class missing from header'\n\theader[i] = 'class'\n\ti = htry('chromosome', 'chr')\n\tif (i == -1) return 'chromosome missing from header'\n\theader[i] = 'chr'\n\ti = htry('wu_hg19_pos', 'start', 'start_position', 'chr_position', 'position')\n\tif (i == -1) return 'start missing from header'\n\theader[i] = 'pos'\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\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('quantitative_measurements')\n\tif (i != -1) header[i] = 'qmset'\n\t// dna maf tumor\n\ti = htry('mutant_reads_in_case', 'mutant_in_tumor', 'tumor_readcount_alt')\n\tif (i != -1) header[i] = 'maf_tumor_v1'\n\ti = htry('total_reads_in_case', 'total_in_tumor', 'tumor_readcount_total')\n\tif (i != -1) header[i] = 'maf_tumor_v2'\n\t// dna maf normal\n\ti = htry('mutant_reads_in_control', 'mutant_in_normal', 'normal_readcount_alt')\n\tif (i != -1) header[i] = 'maf_normal_v1'\n\ti = htry('total_reads_in_control', 'total_in_normal', 'normal_readcount_total')\n\tif (i != -1) header[i] = 'maf_normal_v2'\n\t// rna maf\n\t// cdna\n\ti = htry('cdna_change')\n\tif (i != -1) header[i] = 'cdna_change'\n\ti = htry('sampletype', 'sample type', 'sample_type')\n\tif (i != -1) header[i] = 'sampletype'\n\ti = htry('origin')\n\tif (i != -1) header[i] = 'origin'\n\ti = htry('cancer', 'disease', 'diagnosis')\n\tif (i != -1) header[i] = 'disease'\n\tflag.snv.header = header\n\tflag.snv.loaded = true\n\treturn false\n}\n\nexport function parseline(linei, line, flag) {\n\tif (line == '' || line[0] == '#') return\n\tconst lst = line.split('\\t')\n\tconst m: Record<string, any> = {}\n\tfor (let j = 0; j < flag.snv.header.length; j++) {\n\t\tif (lst[j] == undefined) break\n\t\tm[flag.snv.header[j]] = lst[j]\n\t}\n\tif (!m.gene) {\n\t\tflag.snv.badlines.push([linei, 'missing gene', lst])\n\t\treturn\n\t}\n\tif (m.gene.toUpperCase() == 'UNKNOWN') {\n\t\tflag.snv.badlines.push([linei, 'gene name is UNKNOWN', lst])\n\t\treturn\n\t}\n\tif (!m.isoform) {\n\t\tflag.snv.badlines.push([linei, 'missing isoform', lst])\n\t\treturn\n\t}\n\tif (!m.mname) {\n\t\tm.mname = m.cdna_change\n\t\tif (!m.mname) {\n\t\t\tflag.snv.badlines.push([linei, 'missing amino acid change', lst])\n\t\t\treturn\n\t\t}\n\t} else {\n\t\tif (m.mname.indexOf('p.') == 0) {\n\t\t\tm.mname = m.mname.replace(/^p\\./, '')\n\t\t}\n\t}\n\tif (!m.class) {\n\t\tflag.snv.badlines.push([linei, 'missing mutation class', lst])\n\t\treturn\n\t}\n\tlet _c = flag.mclasslabel2key[m.class.toUpperCase()]\n\tif (_c) {\n\t\tm.class = _c\n\t} else {\n\t\t_c = common.mclasstester(m.class)\n\t\tif (_c) {\n\t\t\tm.class = _c\n\t\t} else {\n\t\t\tflag.snv.badlines.push([linei, 'wrong mutation class: ' + m.class, lst])\n\t\t\treturn\n\t\t}\n\t}\n\tif (bulk.parsesample(m, flag, linei, lst)) {\n\t\treturn\n\t}\n\tif (!m.chr) {\n\t\tflag.snv.badlines.push([linei, 'missing chromosome', lst])\n\t\treturn\n\t}\n\tif (m.chr.toLowerCase().indexOf('chr') != 0) {\n\t\tm.chr = 'chr' + m.chr\n\t}\n\tif (!m.pos) {\n\t\tflag.snv.badlines.push([linei, 'missing chromosome position', lst])\n\t\treturn\n\t}\n\tconst v = Number.parseInt(m.pos)\n\tif (Number.isNaN(v)) {\n\t\tflag.snv.badlines.push([linei, 'invalid chromosome position', lst])\n\t\treturn\n\t}\n\tm.pos = v - 1\n\n\tif (m.maf_tumor_v2 != undefined && m.maf_tumor_v1 != undefined) {\n\t\tif (m.maf_tumor_v2 == '') {\n\t\t\t// no value, do not parse\n\t\t} else {\n\t\t\tconst v1 = Number.parseInt(m.maf_tumor_v1),\n\t\t\t\tv2 = Number.parseInt(m.maf_tumor_v2)\n\t\t\tif (Number.isNaN(v1) || Number.isNaN(v2)) {\n\t\t\t\tflag.snv.badlines.push([linei, 'invalid maf_tumor mutant and/or total read count', lst])\n\t\t\t\treturn\n\t\t\t}\n\t\t\tm.maf_tumor = { f: v1 / v2, v1: v1, v2: v2 }\n\t\t}\n\t\tdelete m.maf_tumor_v1\n\t\tdelete m.maf_tumor_v2\n\t}\n\n\tif (m.maf_normal_v1 != undefined && m.maf_normal_v2 != undefined) {\n\t\tif (m.maf_normal_v2 == '') {\n\t\t\t// no value\n\t\t} else {\n\t\t\tconst v1 = Number.parseInt(m.maf_normal_v1),\n\t\t\t\tv2 = Number.parseInt(m.maf_normal_v2)\n\t\t\tif (Number.isNaN(v1) || Number.isNaN(v2)) {\n\t\t\t\tflag.snv.badlines.push([linei, 'invalid maf_normal mutant and/or total read count', lst])\n\t\t\t\treturn\n\t\t\t}\n\t\t\tm.maf_normal = { f: v1 / v2, v1: v1, v2: v2 }\n\t\t}\n\t\tdelete m.maf_normal_v1\n\t\tdelete m.maf_normal_v2\n\t}\n\n\t/*\n\tif(m.qmset) {\n\t\ttry{\n\t\t\tvar v=JSON.parse(m.qmset)\n\t\t} catch(e){\n\t\t\tflag.snv.badlines.push([linei,'invalid JSON for quantitative_measurements',lst])\n\t\t\tv=null\n\t\t} finally {\n\t\t\tif(v) {\n\t\t\t\tif(typeof(v)!='object') {\n\t\t\t\t\tflag.snv.badlines.push([linei,'value of quantitative_measurements must be an object',lst])\n\t\t\t\t\tdelete m.qmset\n\t\t\t\t} else {\n\t\t\t\t\tfor(var n in v) {\n\t\t\t\t\t\tif(!Array.isArray(v[n])) {\n\t\t\t\t\t\t\tflag.snv.badlines.push([linei,'quantitative_measurements: \"'+n+'\" value must be an array',lst])\n\t\t\t\t\t\t\tdelete v[n]\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar tmp=[]\n\t\t\t\t\t\t\tv[n].forEach(function(v2){\n\t\t\t\t\t\t\t\tif(typeof(v2)=='number') {\n\t\t\t\t\t\t\t\t\ttmp.push({v:v2})\n\t\t\t\t\t\t\t\t} else if(v2.v && typeof(v2.v)=='number') {\n\t\t\t\t\t\t\t\t\ttmp.push(v2)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tif(tmp.length) {\n\t\t\t\t\t\t\t\tv[n]=tmp\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tflag.snv.badlines.push([linei,'quantitative_measurements: no valid value for \"'+n+'\"',lst])\n\t\t\t\t\t\t\t\tdelete v[n]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tm.qmset=v\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete m.qmset\n\t\t\t}\n\t\t}\n\t}\n\t*/\n\tflag.good++\n\t// FIXME hard-coded M and S\n\tif (m.class == 'M') {\n\t\tflag.snv.missense++\n\t} else if (m.class == 'S') {\n\t\tflag.snv.silent++\n\t}\n\tconst n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene\n\tif (!flag.data[n]) {\n\t\tflag.data[n] = []\n\t}\n\tm.dt = common.dtsnvindel\n\tflag.data[n].push(m)\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["i"]
7
7
  }
@@ -0,0 +1,3 @@
1
+ export declare function parseheader(line: any, flag: any, issv: any): false | "invalid file header for fusions" | "gene_a missing from header" | "gene_b missing from header" | "chr_a missing from header" | "chr_b missing from header" | "pos_a missing from header" | "pos_b missing from header" | "isoform_a missing from header" | "isoform_b missing from header" | "strand_a missing from header" | "strand_b missing from header";
2
+ export declare function parseline(i: any, line: any, flag: any, issv: any): void;
3
+ export declare function duplicate(m: any): Record<string, any>;
@@ -104,7 +104,7 @@ function parseline(i, line, flag, issv) {
104
104
  return;
105
105
  }
106
106
  m.position2 = v2;
107
- if (bulk.parsesample(m, flag, i, lst, badlines)) {
107
+ if (bulk.parsesample(m, flag, i, lst)) {
108
108
  return;
109
109
  }
110
110
  if (m.isoform1 && m.isoform1.indexOf(",") != -1) {
@@ -1,7 +1,7 @@
1
1
  {
2
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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",
3
+ "sources": ["../../src/bulk.sv.ts"],
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: Record<string, any> = {}\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)) {\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: Record<string, any> = {}\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: Record<string, any> = {}\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
6
  "names": []
7
7
  }
@@ -0,0 +1,2 @@
1
+ export declare function parseheader(line: any): any[] | "invalid file header for svjson";
2
+ export declare function parseline(i: any, line: any, flag: any, header: any): void;
@@ -1,6 +1,6 @@
1
1
  import * as common from "./common.js";
2
2
  import * as bulk from "./bulk.js";
3
- function parseheader(line, flag) {
3
+ function parseheader(line) {
4
4
  const header = line.toLowerCase().split(" ");
5
5
  if (header.length <= 1) return "invalid file header for svjson";
6
6
  const htry = (...lst) => {
@@ -33,13 +33,13 @@ function parseline(i, line, flag, header) {
33
33
  badlines.push([i, "missing jsontext", lst]);
34
34
  return;
35
35
  }
36
- if (bulk.parsesample(m, flag, i, lst, badlines)) {
36
+ if (bulk.parsesample(m, flag, i, lst)) {
37
37
  return;
38
38
  }
39
39
  let json;
40
40
  try {
41
41
  json = JSON.parse(m.jsontext);
42
- } catch (e) {
42
+ } catch (_) {
43
43
  badlines.push([i, "invalid JSON text", lst]);
44
44
  return;
45
45
  }