@sjcrh/proteinpaint-shared 2.187.0 → 2.188.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/constants/AiHisto.ts +27 -0
- package/constants/README.md +11 -0
- package/devTs.ts +3 -0
- package/dist/constants/AiHisto.d.ts +23 -0
- package/dist/constants/AiHisto.js +31 -0
- package/dist/constants/AiHisto.js.map +7 -0
- package/dist/src/aiHisto.d.ts +5 -0
- package/dist/src/aiHisto.js +15 -0
- package/dist/src/aiHisto.js.map +7 -0
- package/dist/src/bulk.cnv.js +83 -0
- package/dist/src/bulk.cnv.js.map +7 -0
- package/dist/src/bulk.del.js +119 -0
- package/dist/src/bulk.del.js.map +7 -0
- package/dist/src/bulk.itd.js +119 -0
- package/dist/src/bulk.itd.js.map +7 -0
- package/dist/src/bulk.js +183 -0
- package/dist/src/bulk.js.map +7 -0
- package/dist/src/bulk.snv.js +175 -0
- package/dist/src/bulk.snv.js.map +7 -0
- package/dist/src/bulk.sv.js +266 -0
- package/dist/src/bulk.sv.js.map +7 -0
- package/dist/src/bulk.svjson.js +151 -0
- package/dist/src/bulk.svjson.js.map +7 -0
- package/dist/src/bulk.trunc.js +122 -0
- package/dist/src/bulk.trunc.js.map +7 -0
- package/dist/src/clustering.js +71 -0
- package/dist/src/clustering.js.map +7 -0
- package/dist/src/common.js +1302 -0
- package/dist/src/common.js.map +7 -0
- package/dist/src/compute.percentile.js +10 -0
- package/dist/src/compute.percentile.js.map +7 -0
- package/dist/src/doc.d.ts +7 -0
- package/dist/src/doc.js +10 -0
- package/dist/src/doc.js.map +7 -0
- package/dist/src/fetch-helpers.js +177 -0
- package/dist/src/fetch-helpers.js.map +7 -0
- package/dist/src/fileSize.js +10 -0
- package/dist/src/fileSize.js.map +7 -0
- package/dist/src/filter.d.ts +62 -0
- package/dist/src/filter.js +194 -0
- package/dist/src/filter.js.map +7 -0
- package/dist/src/hash.js +20 -0
- package/dist/src/hash.js.map +7 -0
- package/dist/src/helpers.js +66 -0
- package/dist/src/helpers.js.map +7 -0
- package/dist/src/index.d.ts +26 -0
- package/dist/src/index.js +27 -0
- package/dist/src/index.js.map +7 -0
- package/dist/src/joinUrl.d.ts +1 -0
- package/dist/src/joinUrl.js +17 -0
- package/dist/src/joinUrl.js.map +7 -0
- package/dist/src/mds3tk.js +64 -0
- package/dist/src/mds3tk.js.map +7 -0
- package/dist/src/roundValue.js +57 -0
- package/dist/src/roundValue.js.map +7 -0
- package/dist/src/termdb.bins.js +272 -0
- package/dist/src/termdb.bins.js.map +7 -0
- package/dist/src/termdb.initbinconfig.js +79 -0
- package/dist/src/termdb.initbinconfig.js.map +7 -0
- package/dist/src/termdb.usecase.js +239 -0
- package/dist/src/termdb.usecase.js.map +7 -0
- package/dist/src/terms.d.ts +83 -0
- package/dist/src/terms.js +327 -0
- package/dist/src/terms.js.map +7 -0
- package/dist/src/time.d.ts +9 -0
- package/dist/src/time.js +23 -0
- package/dist/src/time.js.map +7 -0
- package/dist/src/tree.js +82 -0
- package/dist/src/tree.js.map +7 -0
- package/dist/src/urljson.d.ts +8 -0
- package/dist/src/urljson.js +31 -0
- package/dist/src/urljson.js.map +7 -0
- package/dist/src/vcf.ann.js +56 -0
- package/dist/src/vcf.ann.js.map +7 -0
- package/dist/src/vcf.csq.js +82 -0
- package/dist/src/vcf.csq.js.map +7 -0
- package/dist/src/vcf.info.js +40 -0
- package/dist/src/vcf.info.js.map +7 -0
- package/dist/src/vcf.js +439 -0
- package/dist/src/vcf.js.map +7 -0
- package/dist/src/vcf.type.js +17 -0
- package/dist/src/vcf.type.js.map +7 -0
- package/package.json +20 -11
- package/src/bulk.cnv.js +0 -86
- package/src/bulk.del.js +0 -124
- package/src/bulk.itd.js +0 -123
- package/src/bulk.js +0 -197
- package/src/bulk.snv.js +0 -271
- package/src/bulk.sv.js +0 -276
- package/src/bulk.svjson.js +0 -164
- package/src/bulk.trunc.js +0 -132
- package/src/clustering.js +0 -66
- package/src/common.js +0 -1608
- package/src/compute.percentile.js +0 -11
- package/src/doc.js +0 -6
- package/src/fetch-helpers.js +0 -323
- package/src/fileSize.js +0 -6
- package/src/filter.js +0 -221
- package/src/hash.js +0 -21
- package/src/helpers.js +0 -88
- package/src/index.js +0 -26
- package/src/joinUrl.js +0 -14
- package/src/mds3tk.js +0 -100
- package/src/roundValue.js +0 -94
- package/src/termdb.bins.js +0 -456
- package/src/termdb.initbinconfig.js +0 -130
- package/src/termdb.usecase.js +0 -344
- package/src/terms.js +0 -341
- package/src/time.js +0 -22
- package/src/tree.js +0 -138
- package/src/urljson.js +0 -41
- package/src/vcf.ann.js +0 -62
- package/src/vcf.csq.js +0 -153
- package/src/vcf.info.js +0 -50
- package/src/vcf.js +0 -654
- package/src/vcf.type.js +0 -24
package/README.md
CHANGED
|
@@ -13,14 +13,22 @@ are specific to `nodejs` or `browser` environments, like `fs` or `DOM` elements
|
|
|
13
13
|
|
|
14
14
|
## Develop
|
|
15
15
|
|
|
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
|
+
|
|
16
20
|
For server dev, the `tsx` library will accept imports with or without file extension.
|
|
17
|
-
Server (consumer) code
|
|
18
|
-
|
|
21
|
+
Server (consumer) code should use `@sjcrh/proteinpaint-shared`, or if for some reason
|
|
22
|
+
a shared file must be specific, it MUST use the `.js` file extension (e.g.,
|
|
23
|
+
`#shared/someFile.js`).
|
|
19
24
|
|
|
20
25
|
For client dev, the esbuild config will bundle the #shared imports correctly, even
|
|
21
26
|
when `.js` extension is used to import what is actually a `.ts` file, by using
|
|
22
27
|
custom plugins like dirname.
|
|
23
28
|
|
|
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`).
|
|
31
|
+
|
|
24
32
|
## Build
|
|
25
33
|
|
|
26
34
|
This package will be bundled as part of the client dependencies.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export enum FlagStatus {
|
|
2
|
+
Normal = 0,
|
|
3
|
+
Skipped = 1,
|
|
4
|
+
Flagged = 2,
|
|
5
|
+
Deleted = 3
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export enum FeaturePrefixes {
|
|
9
|
+
Star = 'annotation-star-',
|
|
10
|
+
Square = 'annotation-square-',
|
|
11
|
+
Border = 'annotation-border-',
|
|
12
|
+
PredBorder = 'prediction-border-'
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const SelectionPrefixes = {
|
|
16
|
+
TileSelection: 'ts_',
|
|
17
|
+
Prediction: 'pred_',
|
|
18
|
+
Annotation: 'anno_'
|
|
19
|
+
} as const
|
|
20
|
+
|
|
21
|
+
export type SelectionPrefixValues = (typeof SelectionPrefixes)[keyof typeof SelectionPrefixes]
|
|
22
|
+
|
|
23
|
+
export const FlagStatusMessages = {
|
|
24
|
+
[FlagStatus.Normal]: '',
|
|
25
|
+
[FlagStatus.Skipped]: '(Skipped)',
|
|
26
|
+
[FlagStatus.Flagged]: '(Flagged)'
|
|
27
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Shared Constants
|
|
2
|
+
|
|
3
|
+
The goal of the `constants` code is to allow shared/types code to be able to import type definitions
|
|
4
|
+
from shared/utils with no bundling or tsc compilation issues. Ideally, there would be a separate
|
|
5
|
+
`shared/constants` workspace. However, due to time constraints and effort required to set up a
|
|
6
|
+
new workspace, this `shared/utils/constants` directory was created instead.
|
|
7
|
+
|
|
8
|
+
The code files in proteinpaint/shared/utils/constants:
|
|
9
|
+
- typescript files
|
|
10
|
+
- must have no imports from outside this folder, to prevent cyclical references/imports that crash bundling and/or tsc compilation
|
|
11
|
+
- must export constants that can be transitively exported to devTs.ts file and shared/utils/src/index.js
|
package/devTs.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare enum FlagStatus {
|
|
2
|
+
Normal = 0,
|
|
3
|
+
Skipped = 1,
|
|
4
|
+
Flagged = 2,
|
|
5
|
+
Deleted = 3
|
|
6
|
+
}
|
|
7
|
+
export declare enum FeaturePrefixes {
|
|
8
|
+
Star = "annotation-star-",
|
|
9
|
+
Square = "annotation-square-",
|
|
10
|
+
Border = "annotation-border-",
|
|
11
|
+
PredBorder = "prediction-border-"
|
|
12
|
+
}
|
|
13
|
+
export declare const SelectionPrefixes: {
|
|
14
|
+
readonly TileSelection: "ts_";
|
|
15
|
+
readonly Prediction: "pred_";
|
|
16
|
+
readonly Annotation: "anno_";
|
|
17
|
+
};
|
|
18
|
+
export type SelectionPrefixValues = (typeof SelectionPrefixes)[keyof typeof SelectionPrefixes];
|
|
19
|
+
export declare const FlagStatusMessages: {
|
|
20
|
+
0: string;
|
|
21
|
+
1: string;
|
|
22
|
+
2: string;
|
|
23
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var FlagStatus = /* @__PURE__ */ ((FlagStatus2) => {
|
|
2
|
+
FlagStatus2[FlagStatus2["Normal"] = 0] = "Normal";
|
|
3
|
+
FlagStatus2[FlagStatus2["Skipped"] = 1] = "Skipped";
|
|
4
|
+
FlagStatus2[FlagStatus2["Flagged"] = 2] = "Flagged";
|
|
5
|
+
FlagStatus2[FlagStatus2["Deleted"] = 3] = "Deleted";
|
|
6
|
+
return FlagStatus2;
|
|
7
|
+
})(FlagStatus || {});
|
|
8
|
+
var FeaturePrefixes = /* @__PURE__ */ ((FeaturePrefixes2) => {
|
|
9
|
+
FeaturePrefixes2["Star"] = "annotation-star-";
|
|
10
|
+
FeaturePrefixes2["Square"] = "annotation-square-";
|
|
11
|
+
FeaturePrefixes2["Border"] = "annotation-border-";
|
|
12
|
+
FeaturePrefixes2["PredBorder"] = "prediction-border-";
|
|
13
|
+
return FeaturePrefixes2;
|
|
14
|
+
})(FeaturePrefixes || {});
|
|
15
|
+
const SelectionPrefixes = {
|
|
16
|
+
TileSelection: "ts_",
|
|
17
|
+
Prediction: "pred_",
|
|
18
|
+
Annotation: "anno_"
|
|
19
|
+
};
|
|
20
|
+
const FlagStatusMessages = {
|
|
21
|
+
[0 /* Normal */]: "",
|
|
22
|
+
[1 /* Skipped */]: "(Skipped)",
|
|
23
|
+
[2 /* Flagged */]: "(Flagged)"
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
FeaturePrefixes,
|
|
27
|
+
FlagStatus,
|
|
28
|
+
FlagStatusMessages,
|
|
29
|
+
SelectionPrefixes
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=AiHisto.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../constants/AiHisto.ts"],
|
|
4
|
+
"sourcesContent": ["export enum FlagStatus {\n\tNormal = 0,\n\tSkipped = 1,\n\tFlagged = 2,\n\tDeleted = 3\n}\n\nexport enum FeaturePrefixes {\n\tStar = 'annotation-star-',\n\tSquare = 'annotation-square-',\n\tBorder = 'annotation-border-',\n\tPredBorder = 'prediction-border-'\n}\n\nexport const SelectionPrefixes = {\n\tTileSelection: 'ts_',\n\tPrediction: 'pred_',\n\tAnnotation: 'anno_'\n} as const\n\nexport type SelectionPrefixValues = (typeof SelectionPrefixes)[keyof typeof SelectionPrefixes]\n\nexport const FlagStatusMessages = {\n\t[FlagStatus.Normal]: '',\n\t[FlagStatus.Skipped]: '(Skipped)',\n\t[FlagStatus.Flagged]: '(Flagged)'\n}\n"],
|
|
5
|
+
"mappings": "AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACN,EAAAA,wBAAA,YAAS,KAAT;AACA,EAAAA,wBAAA,aAAU,KAAV;AACA,EAAAA,wBAAA,aAAU,KAAV;AACA,EAAAA,wBAAA,aAAU,KAAV;AAJW,SAAAA;AAAA,GAAA;AAOL,IAAK,kBAAL,kBAAKC,qBAAL;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,gBAAa;AAJF,SAAAA;AAAA,GAAA;AAOL,MAAM,oBAAoB;AAAA,EAChC,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,YAAY;AACb;AAIO,MAAM,qBAAqB;AAAA,EACjC,CAAC,cAAiB,GAAG;AAAA,EACrB,CAAC,eAAkB,GAAG;AAAA,EACtB,CAAC,eAAkB,GAAG;AACvB;",
|
|
6
|
+
"names": ["FlagStatus", "FeaturePrefixes"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type TileSelection } from '@sjcrh/proteinpaint-types';
|
|
2
|
+
import type { FeaturePrefixes, SelectionPrefixValues } from '../constants/AiHisto.js';
|
|
3
|
+
export declare function createSelectionID(prefix: SelectionPrefixValues, coordinates: [number, number]): string;
|
|
4
|
+
export declare function checkSelectionType(tileSelection: TileSelection, suspectedPrefix: SelectionPrefixValues): boolean;
|
|
5
|
+
export declare function createFeatureID(featurePrefix: FeaturePrefixes, coords: [number, number]): string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function createSelectionID(prefix, coordinates) {
|
|
2
|
+
return prefix + JSON.stringify(coordinates);
|
|
3
|
+
}
|
|
4
|
+
function checkSelectionType(tileSelection, suspectedPrefix) {
|
|
5
|
+
return tileSelection.id.startsWith(suspectedPrefix);
|
|
6
|
+
}
|
|
7
|
+
function createFeatureID(featurePrefix, coords) {
|
|
8
|
+
return featurePrefix + JSON.stringify(coords);
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
checkSelectionType,
|
|
12
|
+
createFeatureID,
|
|
13
|
+
createSelectionID
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=aiHisto.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/aiHisto.ts"],
|
|
4
|
+
"sourcesContent": ["import { type TileSelection } from '@sjcrh/proteinpaint-types'\nimport type { FeaturePrefixes, SelectionPrefixValues } from '../constants/AiHisto.js'\n\nexport function createSelectionID(prefix: SelectionPrefixValues, coordinates: [number, number]): string {\n\treturn prefix + JSON.stringify(coordinates)\n}\n\nexport function checkSelectionType(tileSelection: TileSelection, suspectedPrefix: SelectionPrefixValues): boolean {\n\treturn tileSelection.id.startsWith(suspectedPrefix)\n}\n\nexport function createFeatureID(featurePrefix: FeaturePrefixes, coords: [number, number]) {\n\treturn featurePrefix + JSON.stringify(coords)\n}\n"],
|
|
5
|
+
"mappings": "AAGO,SAAS,kBAAkB,QAA+B,aAAuC;AACvG,SAAO,SAAS,KAAK,UAAU,WAAW;AAC3C;AAEO,SAAS,mBAAmB,eAA8B,iBAAiD;AACjH,SAAO,cAAc,GAAG,WAAW,eAAe;AACnD;AAEO,SAAS,gBAAgB,eAAgC,QAA0B;AACzF,SAAO,gBAAgB,KAAK,UAAU,MAAM;AAC7C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
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 CNV";
|
|
6
|
+
const htry = (...lst) => {
|
|
7
|
+
for (const i2 of lst) {
|
|
8
|
+
const j = header.indexOf(i2);
|
|
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("cnv");
|
|
17
|
+
if (i == -1) return "CNV missing from header";
|
|
18
|
+
header[i] = "cnv";
|
|
19
|
+
i = htry("sample", "sample_name", "tumor_sample_barcode");
|
|
20
|
+
if (i != -1) header[i] = "sample";
|
|
21
|
+
i = htry("patient", "donor", "target_case_id");
|
|
22
|
+
if (i != -1) header[i] = "patient";
|
|
23
|
+
i = htry("disease");
|
|
24
|
+
if (i != -1) header[i] = "disease";
|
|
25
|
+
i = htry("origin");
|
|
26
|
+
if (i != -1) header[i] = "origin";
|
|
27
|
+
i = htry("sampletype", "sample type", "sample_type");
|
|
28
|
+
if (i != -1) header[i] = "sampletype";
|
|
29
|
+
flag.cnv.header = header;
|
|
30
|
+
flag.cnv.loaded = true;
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
function parseline(i, line, flag) {
|
|
34
|
+
if (line == "" || line[0] == "#") return;
|
|
35
|
+
const lst = line.split(" ");
|
|
36
|
+
const m = {};
|
|
37
|
+
for (let j = 0; j < flag.cnv.header.length; j++) {
|
|
38
|
+
m[flag.cnv.header[j]] = lst[j];
|
|
39
|
+
}
|
|
40
|
+
if (!m.gene) {
|
|
41
|
+
flag.cnv.badlines.push([i, "missing gene", lst]);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!m.cnv) {
|
|
45
|
+
flag.cnv.badlines.push([i, "missing cnv value", lst]);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const value = m.cnv.toLowerCase();
|
|
49
|
+
switch (value) {
|
|
50
|
+
case "amplification":
|
|
51
|
+
case "gain":
|
|
52
|
+
m.class = common.mclasscnvgain;
|
|
53
|
+
break;
|
|
54
|
+
case "deletion":
|
|
55
|
+
case "loss":
|
|
56
|
+
m.class = common.mclasscnvloss;
|
|
57
|
+
break;
|
|
58
|
+
case "loh":
|
|
59
|
+
m.class = common.mclasscnvloh;
|
|
60
|
+
break;
|
|
61
|
+
default:
|
|
62
|
+
flag.cnv.badlines.push([i, "invalid cnv value: " + m.cnv, lst]);
|
|
63
|
+
m.class = null;
|
|
64
|
+
}
|
|
65
|
+
if (!m.class) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (bulk.parsesample(m, flag, i, lst, flag.cnv.badlines)) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
m.dt = common.dtcnv;
|
|
72
|
+
flag.good++;
|
|
73
|
+
const n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
|
|
74
|
+
if (!(n in flag.data)) {
|
|
75
|
+
flag.data[n] = [];
|
|
76
|
+
}
|
|
77
|
+
flag.data[n].push(m);
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
parseheader,
|
|
81
|
+
parseline
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=bulk.cnv.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
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;",
|
|
6
|
+
"names": ["i"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
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 intragenic deletion";
|
|
6
|
+
const htry = (...lst) => {
|
|
7
|
+
for (const i2 of lst) {
|
|
8
|
+
const j = header.indexOf(i2);
|
|
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
|
+
i = htry("rnaposition");
|
|
28
|
+
if (i != -1) {
|
|
29
|
+
header[i] = "rnaposition";
|
|
30
|
+
i = htry("rnadellength");
|
|
31
|
+
if (i == -1) return "rnadellength is required when rnaPosition is used";
|
|
32
|
+
header[i] = "rnadellength";
|
|
33
|
+
}
|
|
34
|
+
i = htry("chromosome", "chr");
|
|
35
|
+
if (i != -1) {
|
|
36
|
+
header[i] = "chr";
|
|
37
|
+
i = htry("chr_start");
|
|
38
|
+
if (i == -1) return "chr_start is required when chr is used";
|
|
39
|
+
header[i] = "chrpos1";
|
|
40
|
+
i = htry("chr_stop");
|
|
41
|
+
if (i == -1) return "chr_stop is required when chr is used";
|
|
42
|
+
header[i] = "chrpos2";
|
|
43
|
+
}
|
|
44
|
+
i = htry("sample", "sample_name", "tumor_sample_barcode");
|
|
45
|
+
if (i != -1) header[i] = "sample";
|
|
46
|
+
i = htry("patient", "donor", "target_case_id");
|
|
47
|
+
if (i != -1) header[i] = "patient";
|
|
48
|
+
i = htry("disease");
|
|
49
|
+
if (i != -1) header[i] = "disease";
|
|
50
|
+
i = htry("origin");
|
|
51
|
+
if (i != -1) header[i] = "origin";
|
|
52
|
+
i = htry("sampletype", "sample type", "sample_type");
|
|
53
|
+
if (i != -1) header[i] = "sampletype";
|
|
54
|
+
flag.del.header = header;
|
|
55
|
+
flag.del.loaded = true;
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
function parseline(i, line, flag) {
|
|
59
|
+
if (line == "" || line[0] == "#") return;
|
|
60
|
+
const lst = line.split(" ");
|
|
61
|
+
const m = {};
|
|
62
|
+
for (let j = 0; j < flag.del.header.length; j++) {
|
|
63
|
+
if (lst[j] == void 0) break;
|
|
64
|
+
m[flag.del.header[j]] = lst[j];
|
|
65
|
+
}
|
|
66
|
+
if (!m.gene) {
|
|
67
|
+
flag.del.badlines.push([i, "missing gene", lst]);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (m.rnaposition) {
|
|
71
|
+
let v = Number.parseInt(m.rnaposition);
|
|
72
|
+
if (Number.isNaN(v) || v < 0) {
|
|
73
|
+
flag.del.badlines.push([i, "invalid rnaPosition value", lst]);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
m.rnaposition = v;
|
|
77
|
+
if (!m.rnadellength) {
|
|
78
|
+
flag.del.badlines.push([i, "missing rnaDellength value", lst]);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
v = Number.parseInt(m.rnadellength);
|
|
82
|
+
if (Number.isNaN(v) || v < 0) {
|
|
83
|
+
flag.del.badlines.push([i, "invalid rnaDellength value", lst]);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
m.rnadellength = v;
|
|
87
|
+
}
|
|
88
|
+
if (m.chr) {
|
|
89
|
+
let v = Number.parseInt(m.chrpos1);
|
|
90
|
+
if (Number.isNaN(v) || v < 0) {
|
|
91
|
+
flag.del.badlines.push([i, "invalid chr_start value", lst]);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
m.chrpos1 = v;
|
|
95
|
+
v = Number.parseInt(m.chrpos2);
|
|
96
|
+
if (Number.isNaN(v) || v < 0) {
|
|
97
|
+
flag.del.badlines.push([i, "invalid chr_stop value", lst]);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
m.chrpos2 = v;
|
|
101
|
+
}
|
|
102
|
+
if (bulk.parsesample(m, flag, i, lst, flag.del.badlines)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
m.dt = common.dtdel;
|
|
106
|
+
m.class = common.mclassdel;
|
|
107
|
+
m.mname = "DEL";
|
|
108
|
+
flag.good++;
|
|
109
|
+
var n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
|
|
110
|
+
if (!(n in flag.data)) {
|
|
111
|
+
flag.data[n] = [];
|
|
112
|
+
}
|
|
113
|
+
flag.data[n].push(m);
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
parseheader,
|
|
117
|
+
parseline
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=bulk.del.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
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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",
|
|
6
|
+
"names": ["i"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
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 ITD";
|
|
6
|
+
const htry = (...lst) => {
|
|
7
|
+
for (const i2 of lst) {
|
|
8
|
+
const j = header.indexOf(i2);
|
|
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
|
+
i = htry("rnaposition");
|
|
28
|
+
if (i != -1) {
|
|
29
|
+
header[i] = "rnaposition";
|
|
30
|
+
i = htry("rnaduplength");
|
|
31
|
+
if (i == -1) return "rnaduplength is required when rnaposition is present";
|
|
32
|
+
header[i] = "rnaduplength";
|
|
33
|
+
}
|
|
34
|
+
i = htry("chromosome", "chr");
|
|
35
|
+
if (i != -1) {
|
|
36
|
+
header[i] = "chr";
|
|
37
|
+
i = htry("chr_start");
|
|
38
|
+
if (i == -1) return "chr_start is required when chr is present";
|
|
39
|
+
header[i] = "chrpos1";
|
|
40
|
+
i = htry("chr_stop");
|
|
41
|
+
if (i == -1) return "chr_stop is required when chr is present";
|
|
42
|
+
header[i] = "chrpos2";
|
|
43
|
+
}
|
|
44
|
+
i = htry("sample", "sample_name", "tumor_sample_barcode");
|
|
45
|
+
if (i != -1) header[i] = "sample";
|
|
46
|
+
i = htry("patient", "donor", "target_case_id");
|
|
47
|
+
if (i != -1) header[i] = "patient";
|
|
48
|
+
i = htry("disease");
|
|
49
|
+
if (i != -1) header[i] = "disease";
|
|
50
|
+
i = htry("origin");
|
|
51
|
+
if (i != -1) header[i] = "origin";
|
|
52
|
+
i = htry("sampletype", "sample type", "sample_type");
|
|
53
|
+
if (i != -1) header[i] = "sampletype";
|
|
54
|
+
flag.itd.header = header;
|
|
55
|
+
flag.itd.loaded = true;
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
function parseline(i, line, flag) {
|
|
59
|
+
if (line == "" || line[0] == "#") return;
|
|
60
|
+
const lst = line.split(" ");
|
|
61
|
+
const m = {};
|
|
62
|
+
for (let j = 0; j < flag.itd.header.length; j++) {
|
|
63
|
+
if (lst[j] == void 0) break;
|
|
64
|
+
m[flag.itd.header[j]] = lst[j];
|
|
65
|
+
}
|
|
66
|
+
if (!m.gene) {
|
|
67
|
+
flag.itd.badlines.push([i, "missing gene", lst]);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (m.rnaposition) {
|
|
71
|
+
let v = Number.parseInt(m.rnaposition);
|
|
72
|
+
if (Number.isNaN(v) || v < 0) {
|
|
73
|
+
flag.itd.badlines.push([i, "invalid rnaPosition value", lst]);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
m.rnaposition = v;
|
|
77
|
+
if (!m.rnaduplength) {
|
|
78
|
+
flag.itd.badlines.push([i, "missing rnaDuplength value", lst]);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
v = Number.parseInt(m.rnaduplength);
|
|
82
|
+
if (Number.isNaN(v) || v < 0) {
|
|
83
|
+
flag.itd.badlines.push([i, "invalid rnaDuplength value", lst]);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
m.rnaduplength = v;
|
|
87
|
+
}
|
|
88
|
+
if (m.chr) {
|
|
89
|
+
let v = Number.parseInt(m.chrpos1);
|
|
90
|
+
if (Number.isNaN(v) || v < 0) {
|
|
91
|
+
flag.itd.badlines.push([i, "invalid chr_start value", lst]);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
m.chrpos1 = v;
|
|
95
|
+
v = Number.parseInt(m.chrpos2);
|
|
96
|
+
if (Number.isNaN(v) || v < 0) {
|
|
97
|
+
flag.itd.badlines.push([i, "invalid chr_stop value", lst]);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
m.chrpos2 = v;
|
|
101
|
+
}
|
|
102
|
+
if (bulk.parsesample(m, flag, i, lst, flag.itd.badlines)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
m.dt = common.dtitd;
|
|
106
|
+
m.class = common.mclassitd;
|
|
107
|
+
m.mname = "ITD";
|
|
108
|
+
flag.good++;
|
|
109
|
+
var n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene;
|
|
110
|
+
if (!(n in flag.data)) {
|
|
111
|
+
flag.data[n] = [];
|
|
112
|
+
}
|
|
113
|
+
flag.data[n].push(m);
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
parseheader,
|
|
117
|
+
parseline
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=bulk.itd.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
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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",
|
|
6
|
+
"names": ["i"]
|
|
7
|
+
}
|