@sjcrh/proteinpaint-shared 2.180.0 → 2.180.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjcrh/proteinpaint-shared",
3
- "version": "2.180.0",
3
+ "version": "2.180.1",
4
4
  "description": "ProteinPaint code that is shared between server and client-side workspaces",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -14,7 +14,7 @@
14
14
  "./*": "./src/*"
15
15
  },
16
16
  "scripts": {
17
- "build": "esbuild src/*.ts --platform=node --outdir=src/ --format=esm && prettier --no-semi --use-tabs --write src/urljson.js src/joinUrl.js src/time.js src/doc.js",
17
+ "build": "esbuild src/*.ts --platform=node --outdir=src/ --format=esm && prettier --no-semi --use-tabs --write src/*.js",
18
18
  "prepack": "npm run build",
19
19
  "pretest": "mkdir -p test && node emitImports > test/internals-test.ts",
20
20
  "spec:coverage": "node test/relevant.js",
package/src/bulk.cnv.js CHANGED
@@ -4,12 +4,12 @@
4
4
  //
5
5
  ////////////////////////////////////
6
6
 
7
- import * as common from './common.js'
8
- import * as bulk from './bulk.js'
7
+ import * as common from "./common.js"
8
+ import * as bulk from "./bulk.js"
9
9
 
10
10
  export function parseheader(line, flag) {
11
- const header = line.toLowerCase().split('\t')
12
- if (header.length <= 1) return 'invalid file header for CNV'
11
+ const header = line.toLowerCase().split("\t")
12
+ if (header.length <= 1) return "invalid file header for CNV"
13
13
  const htry = (...lst) => {
14
14
  for (const i of lst) {
15
15
  const j = header.indexOf(i)
@@ -17,57 +17,57 @@ export function parseheader(line, flag) {
17
17
  }
18
18
  return -1
19
19
  }
20
- let i = htry('gene')
21
- if (i == -1) return 'gene missing from header'
22
- header[i] = 'gene'
23
- i = htry('cnv')
24
- if (i == -1) return 'CNV missing from header'
25
- header[i] = 'cnv'
26
- i = htry('sample', 'sample_name', 'tumor_sample_barcode')
27
- if (i != -1) header[i] = 'sample'
28
- i = htry('patient', 'donor', 'target_case_id')
29
- if (i != -1) header[i] = 'patient'
30
- i = htry('disease')
31
- if (i != -1) header[i] = 'disease'
32
- i = htry('origin')
33
- if (i != -1) header[i] = 'origin'
34
- i = htry('sampletype', 'sample type', 'sample_type')
35
- if (i != -1) header[i] = 'sampletype'
20
+ let i = htry("gene")
21
+ if (i == -1) return "gene missing from header"
22
+ header[i] = "gene"
23
+ i = htry("cnv")
24
+ if (i == -1) return "CNV missing from header"
25
+ header[i] = "cnv"
26
+ i = htry("sample", "sample_name", "tumor_sample_barcode")
27
+ if (i != -1) header[i] = "sample"
28
+ i = htry("patient", "donor", "target_case_id")
29
+ if (i != -1) header[i] = "patient"
30
+ i = htry("disease")
31
+ if (i != -1) header[i] = "disease"
32
+ i = htry("origin")
33
+ if (i != -1) header[i] = "origin"
34
+ i = htry("sampletype", "sample type", "sample_type")
35
+ if (i != -1) header[i] = "sampletype"
36
36
  flag.cnv.header = header
37
37
  flag.cnv.loaded = true
38
38
  return false
39
39
  }
40
40
 
41
41
  export function parseline(i, line, flag) {
42
- if (line == '' || line[0] == '#') return
43
- const lst = line.split('\t')
42
+ if (line == "" || line[0] == "#") return
43
+ const lst = line.split("\t")
44
44
  const m = {}
45
45
  for (let j = 0; j < flag.cnv.header.length; j++) {
46
46
  m[flag.cnv.header[j]] = lst[j]
47
47
  }
48
48
  if (!m.gene) {
49
- flag.cnv.badlines.push([i, 'missing gene', lst])
49
+ flag.cnv.badlines.push([i, "missing gene", lst])
50
50
  return
51
51
  }
52
52
  if (!m.cnv) {
53
- flag.cnv.badlines.push([i, 'missing cnv value', lst])
53
+ flag.cnv.badlines.push([i, "missing cnv value", lst])
54
54
  return
55
55
  }
56
56
  const value = m.cnv.toLowerCase()
57
57
  switch (value) {
58
- case 'amplification':
59
- case 'gain':
58
+ case "amplification":
59
+ case "gain":
60
60
  m.class = common.mclasscnvgain
61
61
  break
62
- case 'deletion':
63
- case 'loss':
62
+ case "deletion":
63
+ case "loss":
64
64
  m.class = common.mclasscnvloss
65
65
  break
66
- case 'loh':
66
+ case "loh":
67
67
  m.class = common.mclasscnvloh
68
68
  break
69
69
  default:
70
- flag.cnv.badlines.push([i, 'invalid cnv value: ' + m.cnv, lst])
70
+ flag.cnv.badlines.push([i, "invalid cnv value: " + m.cnv, lst])
71
71
  m.class = null
72
72
  }
73
73
  if (!m.class) {
package/src/bulk.del.js CHANGED
@@ -4,12 +4,12 @@
4
4
  //
5
5
  ////////////////////////////////////
6
6
 
7
- import * as common from './common.js'
8
- import * as bulk from './bulk.js'
7
+ import * as common from "./common.js"
8
+ import * as bulk from "./bulk.js"
9
9
 
10
10
  export function parseheader(line, flag) {
11
- const header = line.toLowerCase().split('\t')
12
- if (header.length <= 1) return 'invalid header line for intragenic deletion'
11
+ const header = line.toLowerCase().split("\t")
12
+ if (header.length <= 1) return "invalid header line for intragenic deletion"
13
13
  const htry = (...lst) => {
14
14
  for (const i of lst) {
15
15
  const j = header.indexOf(i)
@@ -17,79 +17,79 @@ export function parseheader(line, flag) {
17
17
  }
18
18
  return -1
19
19
  }
20
- let i = htry('gene')
21
- if (i == -1) return 'gene missing from header'
22
- header[i] = 'gene'
20
+ let i = htry("gene")
21
+ if (i == -1) return "gene missing from header"
22
+ header[i] = "gene"
23
23
  i = htry(
24
- 'annovar_isoform',
25
- 'mrna_accession',
26
- 'mrna accession',
27
- 'refseq_mrna_id',
28
- 'annovar_sj_filter_isoform',
29
- 'refseq',
30
- 'isoform'
24
+ "annovar_isoform",
25
+ "mrna_accession",
26
+ "mrna accession",
27
+ "refseq_mrna_id",
28
+ "annovar_sj_filter_isoform",
29
+ "refseq",
30
+ "isoform"
31
31
  )
32
- if (i == -1) return 'isoform missing from header'
33
- header[i] = 'isoform'
34
- i = htry('rnaposition')
32
+ if (i == -1) return "isoform missing from header"
33
+ header[i] = "isoform"
34
+ i = htry("rnaposition")
35
35
  if (i != -1) {
36
- header[i] = 'rnaposition'
37
- i = htry('rnadellength')
38
- if (i == -1) return 'rnadellength is required when rnaPosition is used'
39
- header[i] = 'rnadellength'
36
+ header[i] = "rnaposition"
37
+ i = htry("rnadellength")
38
+ if (i == -1) return "rnadellength is required when rnaPosition is used"
39
+ header[i] = "rnadellength"
40
40
  }
41
- i = htry('chromosome', 'chr')
41
+ i = htry("chromosome", "chr")
42
42
  if (i != -1) {
43
- header[i] = 'chr'
44
- i = htry('chr_start')
45
- if (i == -1) return 'chr_start is required when chr is used'
46
- header[i] = 'chrpos1'
47
- i = htry('chr_stop')
48
- if (i == -1) return 'chr_stop is required when chr is used'
49
- header[i] = 'chrpos2'
43
+ header[i] = "chr"
44
+ i = htry("chr_start")
45
+ if (i == -1) return "chr_start is required when chr is used"
46
+ header[i] = "chrpos1"
47
+ i = htry("chr_stop")
48
+ if (i == -1) return "chr_stop is required when chr is used"
49
+ header[i] = "chrpos2"
50
50
  }
51
51
 
52
- i = htry('sample', 'sample_name', 'tumor_sample_barcode')
53
- if (i != -1) header[i] = 'sample'
54
- i = htry('patient', 'donor', 'target_case_id')
55
- if (i != -1) header[i] = 'patient'
56
- i = htry('disease')
57
- if (i != -1) header[i] = 'disease'
58
- i = htry('origin')
59
- if (i != -1) header[i] = 'origin'
60
- i = htry('sampletype', 'sample type', 'sample_type')
61
- if (i != -1) header[i] = 'sampletype'
52
+ i = htry("sample", "sample_name", "tumor_sample_barcode")
53
+ if (i != -1) header[i] = "sample"
54
+ i = htry("patient", "donor", "target_case_id")
55
+ if (i != -1) header[i] = "patient"
56
+ i = htry("disease")
57
+ if (i != -1) header[i] = "disease"
58
+ i = htry("origin")
59
+ if (i != -1) header[i] = "origin"
60
+ i = htry("sampletype", "sample type", "sample_type")
61
+ if (i != -1) header[i] = "sampletype"
62
62
  flag.del.header = header
63
63
  flag.del.loaded = true
64
64
  return false
65
65
  }
66
66
 
67
67
  export function parseline(i, line, flag) {
68
- if (line == '' || line[0] == '#') return
69
- const lst = line.split('\t')
68
+ if (line == "" || line[0] == "#") return
69
+ const lst = line.split("\t")
70
70
  const m = {}
71
71
  for (let j = 0; j < flag.del.header.length; j++) {
72
72
  if (lst[j] == undefined) break
73
73
  m[flag.del.header[j]] = lst[j]
74
74
  }
75
75
  if (!m.gene) {
76
- flag.del.badlines.push([i, 'missing gene', lst])
76
+ flag.del.badlines.push([i, "missing gene", lst])
77
77
  return
78
78
  }
79
79
  if (m.rnaposition) {
80
80
  let v = Number.parseInt(m.rnaposition)
81
81
  if (Number.isNaN(v) || v < 0) {
82
- flag.del.badlines.push([i, 'invalid rnaPosition value', lst])
82
+ flag.del.badlines.push([i, "invalid rnaPosition value", lst])
83
83
  return
84
84
  }
85
85
  m.rnaposition = v
86
86
  if (!m.rnadellength) {
87
- flag.del.badlines.push([i, 'missing rnaDellength value', lst])
87
+ flag.del.badlines.push([i, "missing rnaDellength value", lst])
88
88
  return
89
89
  }
90
90
  v = Number.parseInt(m.rnadellength)
91
91
  if (Number.isNaN(v) || v < 0) {
92
- flag.del.badlines.push([i, 'invalid rnaDellength value', lst])
92
+ flag.del.badlines.push([i, "invalid rnaDellength value", lst])
93
93
  return
94
94
  }
95
95
  m.rnadellength = v
@@ -97,13 +97,13 @@ export function parseline(i, line, flag) {
97
97
  if (m.chr) {
98
98
  let v = Number.parseInt(m.chrpos1)
99
99
  if (Number.isNaN(v) || v < 0) {
100
- flag.del.badlines.push([i, 'invalid chr_start value', lst])
100
+ flag.del.badlines.push([i, "invalid chr_start value", lst])
101
101
  return
102
102
  }
103
103
  m.chrpos1 = v
104
104
  v = Number.parseInt(m.chrpos2)
105
105
  if (Number.isNaN(v) || v < 0) {
106
- flag.del.badlines.push([i, 'invalid chr_stop value', lst])
106
+ flag.del.badlines.push([i, "invalid chr_stop value", lst])
107
107
  return
108
108
  }
109
109
  m.chrpos2 = v
@@ -114,7 +114,7 @@ export function parseline(i, line, flag) {
114
114
  }
115
115
  m.dt = common.dtdel
116
116
  m.class = common.mclassdel
117
- m.mname = 'DEL'
117
+ m.mname = "DEL"
118
118
  flag.good++
119
119
  var n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene
120
120
  if (!(n in flag.data)) {
package/src/bulk.itd.js CHANGED
@@ -4,12 +4,12 @@
4
4
  //
5
5
  ////////////////////////////////////
6
6
 
7
- import * as common from './common.js'
8
- import * as bulk from './bulk.js'
7
+ import * as common from "./common.js"
8
+ import * as bulk from "./bulk.js"
9
9
 
10
10
  export function parseheader(line, flag) {
11
- const header = line.toLowerCase().split('\t')
12
- if (header.length <= 1) return 'invalid header line for ITD'
11
+ const header = line.toLowerCase().split("\t")
12
+ if (header.length <= 1) return "invalid header line for ITD"
13
13
  const htry = (...lst) => {
14
14
  for (const i of lst) {
15
15
  const j = header.indexOf(i)
@@ -17,79 +17,79 @@ export function parseheader(line, flag) {
17
17
  }
18
18
  return -1
19
19
  }
20
- let i = htry('gene')
21
- if (i == -1) return 'gene missing from header'
22
- header[i] = 'gene'
20
+ let i = htry("gene")
21
+ if (i == -1) return "gene missing from header"
22
+ header[i] = "gene"
23
23
  i = htry(
24
- 'annovar_isoform',
25
- 'mrna_accession',
26
- 'mrna accession',
27
- 'refseq_mrna_id',
28
- 'annovar_sj_filter_isoform',
29
- 'refseq',
30
- 'isoform'
24
+ "annovar_isoform",
25
+ "mrna_accession",
26
+ "mrna accession",
27
+ "refseq_mrna_id",
28
+ "annovar_sj_filter_isoform",
29
+ "refseq",
30
+ "isoform"
31
31
  )
32
- if (i == -1) return 'isoform missing from header'
33
- header[i] = 'isoform'
34
- i = htry('rnaposition')
32
+ if (i == -1) return "isoform missing from header"
33
+ header[i] = "isoform"
34
+ i = htry("rnaposition")
35
35
  if (i != -1) {
36
- header[i] = 'rnaposition'
37
- i = htry('rnaduplength')
38
- if (i == -1) return 'rnaduplength is required when rnaposition is present'
39
- header[i] = 'rnaduplength'
36
+ header[i] = "rnaposition"
37
+ i = htry("rnaduplength")
38
+ if (i == -1) return "rnaduplength is required when rnaposition is present"
39
+ header[i] = "rnaduplength"
40
40
  }
41
- i = htry('chromosome', 'chr')
41
+ i = htry("chromosome", "chr")
42
42
  if (i != -1) {
43
- header[i] = 'chr'
44
- i = htry('chr_start')
45
- if (i == -1) return 'chr_start is required when chr is present'
46
- header[i] = 'chrpos1'
47
- i = htry('chr_stop')
48
- if (i == -1) return 'chr_stop is required when chr is present'
49
- header[i] = 'chrpos2'
43
+ header[i] = "chr"
44
+ i = htry("chr_start")
45
+ if (i == -1) return "chr_start is required when chr is present"
46
+ header[i] = "chrpos1"
47
+ i = htry("chr_stop")
48
+ if (i == -1) return "chr_stop is required when chr is present"
49
+ header[i] = "chrpos2"
50
50
  }
51
51
 
52
- i = htry('sample', 'sample_name', 'tumor_sample_barcode')
53
- if (i != -1) header[i] = 'sample'
54
- i = htry('patient', 'donor', 'target_case_id')
55
- if (i != -1) header[i] = 'patient'
56
- i = htry('disease')
57
- if (i != -1) header[i] = 'disease'
58
- i = htry('origin')
59
- if (i != -1) header[i] = 'origin'
60
- i = htry('sampletype', 'sample type', 'sample_type')
61
- if (i != -1) header[i] = 'sampletype'
52
+ i = htry("sample", "sample_name", "tumor_sample_barcode")
53
+ if (i != -1) header[i] = "sample"
54
+ i = htry("patient", "donor", "target_case_id")
55
+ if (i != -1) header[i] = "patient"
56
+ i = htry("disease")
57
+ if (i != -1) header[i] = "disease"
58
+ i = htry("origin")
59
+ if (i != -1) header[i] = "origin"
60
+ i = htry("sampletype", "sample type", "sample_type")
61
+ if (i != -1) header[i] = "sampletype"
62
62
  flag.itd.header = header
63
63
  flag.itd.loaded = true
64
64
  return false
65
65
  }
66
66
 
67
67
  export function parseline(i, line, flag) {
68
- if (line == '' || line[0] == '#') return
69
- const lst = line.split('\t')
68
+ if (line == "" || line[0] == "#") return
69
+ const lst = line.split("\t")
70
70
  const m = {}
71
71
  for (let j = 0; j < flag.itd.header.length; j++) {
72
72
  if (lst[j] == undefined) break
73
73
  m[flag.itd.header[j]] = lst[j]
74
74
  }
75
75
  if (!m.gene) {
76
- flag.itd.badlines.push([i, 'missing gene', lst])
76
+ flag.itd.badlines.push([i, "missing gene", lst])
77
77
  return
78
78
  }
79
79
  if (m.rnaposition) {
80
80
  let v = Number.parseInt(m.rnaposition)
81
81
  if (Number.isNaN(v) || v < 0) {
82
- flag.itd.badlines.push([i, 'invalid rnaPosition value', lst])
82
+ flag.itd.badlines.push([i, "invalid rnaPosition value", lst])
83
83
  return
84
84
  }
85
85
  m.rnaposition = v
86
86
  if (!m.rnaduplength) {
87
- flag.itd.badlines.push([i, 'missing rnaDuplength value', lst])
87
+ flag.itd.badlines.push([i, "missing rnaDuplength value", lst])
88
88
  return
89
89
  }
90
90
  v = Number.parseInt(m.rnaduplength)
91
91
  if (Number.isNaN(v) || v < 0) {
92
- flag.itd.badlines.push([i, 'invalid rnaDuplength value', lst])
92
+ flag.itd.badlines.push([i, "invalid rnaDuplength value", lst])
93
93
  return
94
94
  }
95
95
  m.rnaduplength = v
@@ -97,13 +97,13 @@ export function parseline(i, line, flag) {
97
97
  if (m.chr) {
98
98
  let v = Number.parseInt(m.chrpos1)
99
99
  if (Number.isNaN(v) || v < 0) {
100
- flag.itd.badlines.push([i, 'invalid chr_start value', lst])
100
+ flag.itd.badlines.push([i, "invalid chr_start value", lst])
101
101
  return
102
102
  }
103
103
  m.chrpos1 = v
104
104
  v = Number.parseInt(m.chrpos2)
105
105
  if (Number.isNaN(v) || v < 0) {
106
- flag.itd.badlines.push([i, 'invalid chr_stop value', lst])
106
+ flag.itd.badlines.push([i, "invalid chr_stop value", lst])
107
107
  return
108
108
  }
109
109
  m.chrpos2 = v
@@ -113,7 +113,7 @@ export function parseline(i, line, flag) {
113
113
  }
114
114
  m.dt = common.dtitd
115
115
  m.class = common.mclassitd
116
- m.mname = 'ITD'
116
+ m.mname = "ITD"
117
117
  flag.good++
118
118
  var n = flag.geneToUpper ? m.gene.toUpperCase() : m.gene
119
119
  if (!(n in flag.data)) {
package/src/bulk.js CHANGED
@@ -4,7 +4,7 @@
4
4
  //
5
5
  ////////////////////////////////////
6
6
 
7
- import * as common from './common.js'
7
+ import * as common from "./common.js"
8
8
 
9
9
  export default {}
10
10
 
@@ -34,45 +34,45 @@ export function init_bulk_flag(genome) {
34
34
  // jinghui: based on missense/silent ratio of entire dataset to decide whether to include silent when importing...
35
35
  // hard-coded class codes
36
36
  missense: 0,
37
- silent: 0
37
+ silent: 0,
38
38
  },
39
39
  svjson: {
40
40
  loaded: false,
41
41
  header: null,
42
- badlines: []
42
+ badlines: [],
43
43
  },
44
44
  fusion: {
45
45
  loaded: false,
46
46
  header: null,
47
47
  badlines: [],
48
- original: []
48
+ original: [],
49
49
  },
50
50
  sv: {
51
51
  loaded: false,
52
52
  header: null,
53
53
  badlines: [],
54
- original: []
54
+ original: [],
55
55
  },
56
56
  cnv: {
57
57
  loaded: false,
58
58
  header: null,
59
- badlines: []
59
+ badlines: [],
60
60
  },
61
61
  itd: {
62
62
  loaded: false,
63
63
  header: null,
64
- badlines: []
64
+ badlines: [],
65
65
  },
66
66
  del: {
67
67
  loaded: false,
68
68
  header: null,
69
- badlines: []
69
+ badlines: [],
70
70
  },
71
71
  truncation: {
72
72
  loaded: false,
73
73
  header: null,
74
- badlines: []
75
- }
74
+ badlines: [],
75
+ },
76
76
  }
77
77
  }
78
78
 
@@ -81,25 +81,25 @@ export function parsesample(m, flag, i, lst, badline) {
81
81
  if (m.sampletype) {
82
82
  const s = m.sampletype.toLowerCase()
83
83
  switch (s) {
84
- case 'relapse':
84
+ case "relapse":
85
85
  variantorigin = common.moriginrelapse
86
86
  break
87
- case 'germline':
87
+ case "germline":
88
88
  variantorigin = common.morigingermline
89
89
  break
90
- case 'somatic':
91
- case 'diagnosis':
90
+ case "somatic":
91
+ case "diagnosis":
92
92
  break
93
93
  }
94
94
  if (m.sample) {
95
95
  if (m.patient) {
96
96
  // good
97
97
  } else {
98
- m.patient = m.sample + ' ' + m.sampletype
98
+ m.patient = m.sample + " " + m.sampletype
99
99
  }
100
100
  } else {
101
101
  if (m.patient) {
102
- m.sample = m.patient + ' ' + m.sampletype
102
+ m.sample = m.patient + " " + m.sampletype
103
103
  } else {
104
104
  // neither sample or patient, will quit later
105
105
  }
@@ -123,30 +123,30 @@ export function parsesample(m, flag, i, lst, badline) {
123
123
  // override existing variantorigin
124
124
  const s = m.origin.toLowerCase()
125
125
  switch (s) {
126
- case 'r':
127
- case 'relapse':
126
+ case "r":
127
+ case "relapse":
128
128
  variantorigin = common.moriginrelapse
129
129
  m.isrim2 = true
130
130
  break
131
- case 'g':
132
- case 'germline':
131
+ case "g":
132
+ case "germline":
133
133
  variantorigin = common.morigingermline
134
134
  m.isrim1 = true
135
135
  break
136
- case 'gp':
137
- case 'germline pathogenic':
136
+ case "gp":
137
+ case "germline pathogenic":
138
138
  variantorigin = common.morigingermlinepathogenic
139
139
  m.isrim1 = true
140
140
  break
141
- case 'gnp':
142
- case 'germline nonpathogenic':
143
- case 'germline non-pathogenic':
141
+ case "gnp":
142
+ case "germline nonpathogenic":
143
+ case "germline non-pathogenic":
144
144
  variantorigin = common.morigingermlinenonpathogenic
145
145
  m.isrim1 = true
146
146
  break
147
- case 's':
148
- case 'somatic':
149
- case 'diagnosis':
147
+ case "s":
148
+ case "somatic":
149
+ case "diagnosis":
150
150
  variantorigin = common.moriginsomatic
151
151
  break
152
152
  }
@@ -158,7 +158,7 @@ export function parsesample(m, flag, i, lst, badline) {
158
158
  return
159
159
  }
160
160
 
161
- const nopatientname = 'no patient/individual name'
161
+ const nopatientname = "no patient/individual name"
162
162
  let p
163
163
  if (m.patient) {
164
164
  if (!flag.patient2st[m.patient]) {
@@ -182,9 +182,9 @@ export function parsesample(m, flag, i, lst, badline) {
182
182
  m.sample +
183
183
  '": ' +
184
184
  m.disease +
185
- ', ' +
185
+ ", " +
186
186
  flag.sample2disease[m.sample],
187
- lst
187
+ lst,
188
188
  ])
189
189
  return true
190
190
  }