@jbrowse/img 2.2.0 → 2.2.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 +1 -4
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +2 -2
- package/dist/bin.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +206 -202
- package/dist/index.js.map +1 -0
- package/dist/index.testmod.d.ts +1 -0
- package/dist/index.testmod.js +165 -206
- package/dist/index.testmod.js.map +1 -0
- package/dist/parseArgv.d.ts +8 -0
- package/dist/parseArgv.js +42 -33
- package/dist/parseArgv.js.map +1 -0
- package/dist/parseArgv.testmod.d.ts +1 -0
- package/dist/parseArgv.testmod.js +25 -6
- package/dist/parseArgv.testmod.js.map +1 -0
- package/dist/renderRegion.d.ts +35 -0
- package/dist/renderRegion.js +345 -425
- package/dist/renderRegion.js.map +1 -0
- package/dist/util.d.ts +5 -0
- package/dist/util.js +31 -9
- package/dist/util.js.map +1 -0
- package/esm/bin.d.ts +2 -0
- package/esm/bin.js +4 -0
- package/esm/bin.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.js +185 -0
- package/esm/index.js.map +1 -0
- package/esm/index.testmod.d.ts +1 -0
- package/esm/index.testmod.js +141 -0
- package/esm/index.testmod.js.map +1 -0
- package/esm/parseArgv.d.ts +8 -0
- package/esm/parseArgv.js +42 -0
- package/esm/parseArgv.js.map +1 -0
- package/esm/parseArgv.testmod.d.ts +1 -0
- package/esm/parseArgv.testmod.js +24 -0
- package/esm/parseArgv.testmod.js.map +1 -0
- package/esm/renderRegion.d.ts +35 -0
- package/esm/renderRegion.js +366 -0
- package/esm/renderRegion.js.map +1 -0
- package/esm/util.d.ts +5 -0
- package/esm/util.js +25 -0
- package/esm/util.js.map +1 -0
- package/package.json +15 -10
- package/src/bin.js +2 -0
- package/src/index.testmod.js +163 -0
- package/src/index.ts +209 -0
- package/src/parseArgv.testmod.js +29 -0
- package/src/parseArgv.ts +48 -0
- package/src/renderRegion.tsx +456 -0
- package/src/util.ts +32 -0
package/dist/index.testmod.js
CHANGED
|
@@ -1,210 +1,169 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const renderRegion_1 = require("./renderRegion");
|
|
30
|
+
const fs_1 = __importDefault(require("fs"));
|
|
31
|
+
const jsdom_1 = require("jsdom");
|
|
9
32
|
require("abortcontroller-polyfill/dist/abortcontroller-polyfill-only");
|
|
10
|
-
|
|
11
|
-
|
|
33
|
+
const canvas_1 = require("canvas");
|
|
34
|
+
const node_fetch_1 = __importStar(require("node-fetch"));
|
|
35
|
+
global.fetch = node_fetch_1.default;
|
|
36
|
+
global.Headers = node_fetch_1.Headers;
|
|
37
|
+
global.Response = node_fetch_1.Response;
|
|
38
|
+
global.Request = node_fetch_1.Request;
|
|
39
|
+
const { document } = new jsdom_1.JSDOM(`...`).window;
|
|
12
40
|
global.document = document;
|
|
13
|
-
global.nodeImage =
|
|
14
|
-
global.nodeCreateCanvas =
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
}, _callee3);
|
|
106
|
-
})), timeout);
|
|
107
|
-
test('renders volvox with variety of args (noRasterize)', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
108
|
-
var fp, result;
|
|
109
|
-
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
110
|
-
while (1) {
|
|
111
|
-
switch (_context4.prev = _context4.next) {
|
|
112
|
-
case 0:
|
|
113
|
-
fp = function fp(f) {
|
|
114
|
-
return require.resolve('../data/volvox/' + f);
|
|
115
|
-
};
|
|
116
|
-
console.error = jest.fn();
|
|
117
|
-
_context4.next = 4;
|
|
118
|
-
return (0, _renderRegion.renderRegion)({
|
|
119
|
-
fasta: fp('volvox.fa'),
|
|
120
|
-
trackList: [['bam', [fp('volvox-sorted.bam')]], ['cram', [fp('volvox-sorted.cram')]], ['bigwig', [fp('volvox-sorted.bam.coverage.bw')]], ['vcfgz', [fp('volvox.filtered.vcf.gz')]], ['gffgz', [fp('volvox.sort.gff3.gz')]], ['bigbed', [fp('volvox.bb')]], ['bedgz', [fp('volvox-bed12.bed.gz')]]],
|
|
121
|
-
loc: 'ctgA:1000-2000',
|
|
122
|
-
noRasterize: true
|
|
123
|
-
});
|
|
124
|
-
case 4:
|
|
125
|
-
result = _context4.sent;
|
|
126
|
-
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
127
|
-
_fs.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam_norasterize.svg'), result);
|
|
128
|
-
expect(result).toBeTruthy();
|
|
129
|
-
case 7:
|
|
130
|
-
case "end":
|
|
131
|
-
return _context4.stop();
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}, _callee4);
|
|
135
|
-
})), timeout);
|
|
136
|
-
|
|
41
|
+
global.nodeImage = canvas_1.Image;
|
|
42
|
+
global.nodeCreateCanvas = canvas_1.createCanvas;
|
|
43
|
+
xtest('renders a region with --session and --config args', async () => {
|
|
44
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
45
|
+
session: require.resolve('../test/clingen_session.json'),
|
|
46
|
+
config: require.resolve('../data/config.json'),
|
|
47
|
+
});
|
|
48
|
+
fs_1.default.writeFileSync('svg_from_config_and_session_param.svg', result);
|
|
49
|
+
expect(result).toMatchSnapshot();
|
|
50
|
+
}, 40000);
|
|
51
|
+
xtest('renders a region with --session, --tracks, and --assembly args', async () => {
|
|
52
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
53
|
+
session: require.resolve('../test/clingen_session.json'),
|
|
54
|
+
tracks: require.resolve('../data/tracks.json'),
|
|
55
|
+
assembly: require.resolve('../data/assembly.json'),
|
|
56
|
+
});
|
|
57
|
+
fs_1.default.writeFileSync('svg_from_separate_session_and_tracks.svg', result);
|
|
58
|
+
expect(result).toMatchSnapshot();
|
|
59
|
+
}, 40000);
|
|
60
|
+
test('renders volvox with variety of args', async () => {
|
|
61
|
+
const fp = f => require.resolve('../data/volvox/' + f);
|
|
62
|
+
console.error = jest.fn();
|
|
63
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
64
|
+
fasta: fp('volvox.fa'),
|
|
65
|
+
trackList: [
|
|
66
|
+
['bam', [fp('volvox-sorted.bam')]],
|
|
67
|
+
['cram', [fp('volvox-sorted.cram')]],
|
|
68
|
+
['bigwig', [fp('volvox-sorted.bam.coverage.bw')]],
|
|
69
|
+
['vcfgz', [fp('volvox.filtered.vcf.gz')]],
|
|
70
|
+
['gffgz', [fp('volvox.sort.gff3.gz')]],
|
|
71
|
+
['bigbed', [fp('volvox.bb')]],
|
|
72
|
+
['bedgz', [fp('volvox-bed12.bed.gz')]],
|
|
73
|
+
],
|
|
74
|
+
loc: 'ctgA:1000-2000',
|
|
75
|
+
});
|
|
76
|
+
fs_1.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam.svg'), result);
|
|
77
|
+
expect(result).toBeTruthy();
|
|
78
|
+
}, 40000);
|
|
79
|
+
xtest('renders human large region with remote urls', async () => {
|
|
80
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
81
|
+
fasta: 'https://jbrowse.org/genomes/GRCh38/fasta/hg38.prefix.fa.gz',
|
|
82
|
+
trackList: [
|
|
83
|
+
[
|
|
84
|
+
'cram',
|
|
85
|
+
[
|
|
86
|
+
'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/skbr3/skbr3.ont.sort.mod.cram',
|
|
87
|
+
'force:true',
|
|
88
|
+
],
|
|
89
|
+
],
|
|
90
|
+
],
|
|
91
|
+
loc: '1:10,000,000-10,030,000',
|
|
92
|
+
});
|
|
93
|
+
fs_1.default.writeFileSync(require.resolve('../test/human_remote_urls_large_region.svg'), result);
|
|
94
|
+
expect(result).toBeTruthy();
|
|
95
|
+
}, 120000);
|
|
96
|
+
xtest('renders volvox with remote urls', async () => {
|
|
97
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
98
|
+
fasta: 'https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa',
|
|
99
|
+
trackList: [
|
|
100
|
+
[
|
|
101
|
+
'bam',
|
|
102
|
+
[
|
|
103
|
+
'https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam',
|
|
104
|
+
],
|
|
105
|
+
],
|
|
106
|
+
],
|
|
107
|
+
loc: 'ctgA:1-1000',
|
|
108
|
+
});
|
|
109
|
+
fs_1.default.writeFileSync(require.resolve('../test/volvox_remote_region.svg'), result);
|
|
110
|
+
expect(result).toBeTruthy();
|
|
111
|
+
}, 20000);
|
|
112
|
+
test('renders volvox with variety of args (noRasterize)', async () => {
|
|
113
|
+
const fp = f => require.resolve('../data/volvox/' + f);
|
|
114
|
+
console.error = jest.fn();
|
|
115
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
116
|
+
fasta: fp('volvox.fa'),
|
|
117
|
+
trackList: [
|
|
118
|
+
['bam', [fp('volvox-sorted.bam')]],
|
|
119
|
+
['cram', [fp('volvox-sorted.cram')]],
|
|
120
|
+
['bigwig', [fp('volvox-sorted.bam.coverage.bw')]],
|
|
121
|
+
['vcfgz', [fp('volvox.filtered.vcf.gz')]],
|
|
122
|
+
['gffgz', [fp('volvox.sort.gff3.gz')]],
|
|
123
|
+
['bigbed', [fp('volvox.bb')]],
|
|
124
|
+
['bedgz', [fp('volvox-bed12.bed.gz')]],
|
|
125
|
+
],
|
|
126
|
+
loc: 'ctgA:1000-2000',
|
|
127
|
+
noRasterize: true,
|
|
128
|
+
});
|
|
129
|
+
fs_1.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam_norasterize.svg'), result);
|
|
130
|
+
expect(result).toBeTruthy();
|
|
131
|
+
}, 40000);
|
|
137
132
|
// commented out for using remote files currently
|
|
138
|
-
xtest('configtracks arg with urls',
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
});
|
|
176
|
-
case 2:
|
|
177
|
-
result = _context6.sent;
|
|
178
|
-
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
179
|
-
_fs.default.writeFileSync(require.resolve('../test/svg_configtracks_local.svg'), result);
|
|
180
|
-
expect(result).toBeTruthy();
|
|
181
|
-
case 5:
|
|
182
|
-
case "end":
|
|
183
|
-
return _context6.stop();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}, _callee6);
|
|
187
|
-
})), timeout * 3);
|
|
188
|
-
xtest('renders --hic', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
|
|
189
|
-
var result;
|
|
190
|
-
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
191
|
-
while (1) {
|
|
192
|
-
switch (_context7.prev = _context7.next) {
|
|
193
|
-
case 0:
|
|
194
|
-
_context7.next = 2;
|
|
195
|
-
return (0, _renderRegion.renderRegion)({
|
|
196
|
-
fasta: 'https://jbrowse.org/genomes/hg19/fasta/hg19.fa.gz',
|
|
197
|
-
trackList: [['hic', ['https://s3.amazonaws.com/igv.broadinstitute.org/data/hic/intra_nofrag_30.hic']]],
|
|
198
|
-
loc: '1:2,000,000-10,000,000'
|
|
199
|
-
});
|
|
200
|
-
case 2:
|
|
201
|
-
result = _context7.sent;
|
|
202
|
-
_fs.default.writeFileSync(require.resolve('../test/svg_from_human_hic.svg'), result);
|
|
203
|
-
expect(result).toBeTruthy();
|
|
204
|
-
case 5:
|
|
205
|
-
case "end":
|
|
206
|
-
return _context7.stop();
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}, _callee7);
|
|
210
|
-
})), 20000);
|
|
133
|
+
xtest('configtracks arg with urls', async () => {
|
|
134
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
135
|
+
config: 'data/config.json',
|
|
136
|
+
trackList: [['configtracks', ['ncbi_refseq_109_hg38']]],
|
|
137
|
+
assembly: 'GRCh38',
|
|
138
|
+
loc: 'chr1:50,000-60,000',
|
|
139
|
+
});
|
|
140
|
+
fs_1.default.writeFileSync('svg_configtracks_simple.svg', result);
|
|
141
|
+
expect(result).toBeTruthy();
|
|
142
|
+
}, 40000);
|
|
143
|
+
test('configtracks arg with local files', async () => {
|
|
144
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
145
|
+
config: require.resolve('../data/volvox/config.json'),
|
|
146
|
+
trackList: [['configtracks', ['volvox_sv']]],
|
|
147
|
+
assembly: 'volvox',
|
|
148
|
+
loc: 'ctgA:1-50,000',
|
|
149
|
+
});
|
|
150
|
+
fs_1.default.writeFileSync(require.resolve('../test/svg_configtracks_local.svg'), result);
|
|
151
|
+
expect(result).toBeTruthy();
|
|
152
|
+
}, 40000);
|
|
153
|
+
xtest('renders --hic', async () => {
|
|
154
|
+
const result = await (0, renderRegion_1.renderRegion)({
|
|
155
|
+
fasta: 'https://jbrowse.org/genomes/hg19/fasta/hg19.fa.gz',
|
|
156
|
+
trackList: [
|
|
157
|
+
[
|
|
158
|
+
'hic',
|
|
159
|
+
[
|
|
160
|
+
'https://s3.amazonaws.com/igv.broadinstitute.org/data/hic/intra_nofrag_30.hic',
|
|
161
|
+
],
|
|
162
|
+
],
|
|
163
|
+
],
|
|
164
|
+
loc: '1:2,000,000-10,000,000',
|
|
165
|
+
});
|
|
166
|
+
fs_1.default.writeFileSync(require.resolve('../test/svg_from_human_hic.svg'), result);
|
|
167
|
+
expect(result).toBeTruthy();
|
|
168
|
+
}, 20000);
|
|
169
|
+
//# sourceMappingURL=index.testmod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.testmod.js","sourceRoot":"","sources":["../src/index.testmod.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type Entry = [string, string[]];
|
|
2
|
+
export declare function parseArgv(argv: string[]): Entry[];
|
|
3
|
+
export declare function standardizeArgv(args: Entry[], trackTypes: string[]): {
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
trackList: Entry[];
|
|
6
|
+
out?: string | undefined;
|
|
7
|
+
pngwidth?: string | undefined;
|
|
8
|
+
};
|
package/dist/parseArgv.js
CHANGED
|
@@ -1,38 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.standardizeArgv = exports.parseArgv = void 0;
|
|
4
|
+
// example (see parseArgv.test.js):
|
|
5
|
+
// const args =
|
|
6
|
+
// '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam --defaultSession --out out.svg --noRasterize'
|
|
7
|
+
//
|
|
8
|
+
// expect(parseArgv(args.split(' '))).toEqual([
|
|
9
|
+
// ['bam', ['dad.bam', 'color:red']],
|
|
10
|
+
// ['vcf', ['variants.vcf']],
|
|
11
|
+
// ['bam', ['mom.bam']],
|
|
12
|
+
// ['defaultSession', []],
|
|
13
|
+
// ['out', ['out.svg']],
|
|
14
|
+
// ['noRasterize', []],
|
|
15
|
+
// ])
|
|
8
16
|
function parseArgv(argv) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
const map = [];
|
|
18
|
+
while (argv.length) {
|
|
19
|
+
const val = argv[0].slice(2);
|
|
20
|
+
argv = argv.slice(1);
|
|
21
|
+
const next = argv.findIndex(arg => arg.startsWith('-'));
|
|
22
|
+
if (next !== -1) {
|
|
23
|
+
map.push([val, argv.slice(0, next)]);
|
|
24
|
+
argv = argv.slice(next);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
map.push([val, argv]);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
22
30
|
}
|
|
23
|
-
|
|
24
|
-
return map;
|
|
31
|
+
return map;
|
|
25
32
|
}
|
|
33
|
+
exports.parseArgv = parseArgv;
|
|
26
34
|
function standardizeArgv(args, trackTypes) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
const result = { trackList: [] };
|
|
36
|
+
args.forEach(arg => {
|
|
37
|
+
if (trackTypes.includes(arg[0])) {
|
|
38
|
+
result.trackList.push(arg);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
result[arg[0]] = arg[1][0] || true;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
exports.standardizeArgv = standardizeArgv;
|
|
47
|
+
//# sourceMappingURL=parseArgv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseArgv.js","sourceRoot":"","sources":["../src/parseArgv.ts"],"names":[],"mappings":";;;AAEA,mCAAmC;AACnC,eAAe;AACf,4GAA4G;AAC5G,EAAE;AACF,+CAA+C;AAC/C,uCAAuC;AACvC,+BAA+B;AAC/B,0BAA0B;AAC1B,4BAA4B;AAC5B,0BAA0B;AAC1B,yBAAyB;AACzB,KAAK;AACL,SAAgB,SAAS,CAAC,IAAc;IACtC,MAAM,GAAG,GAAG,EAAa,CAAA;IACzB,OAAO,IAAI,CAAC,MAAM,EAAE;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAEvD,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;YACf,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;YACpC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SACxB;aAAM;YACL,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;YACrB,MAAK;SACN;KACF;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAhBD,8BAgBC;AAED,SAAgB,eAAe,CAAC,IAAa,EAAE,UAAoB;IACjE,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,EAAE,EAK7B,CAAA;IACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACjB,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC3B;aAAM;YACL,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;SACnC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC;AAfD,0CAeC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
test('parse',
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const parseArgv_1 = require("./parseArgv");
|
|
4
|
+
test('parse', () => {
|
|
5
|
+
const args = '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam --defaultSession --out out.svg --noRasterize';
|
|
6
|
+
expect((0, parseArgv_1.parseArgv)(args.split(' '))).toEqual([
|
|
7
|
+
['bam', ['dad.bam', 'color:red']],
|
|
8
|
+
['vcf', ['variants.vcf']],
|
|
9
|
+
['bam', ['mom.bam']],
|
|
10
|
+
['defaultSession', []],
|
|
11
|
+
['out', ['out.svg']],
|
|
12
|
+
['noRasterize', []],
|
|
13
|
+
]);
|
|
14
|
+
});
|
|
15
|
+
test('parse', () => {
|
|
16
|
+
const args = '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam force:true --defaultSession --out out.svg --noRasterize';
|
|
17
|
+
expect((0, parseArgv_1.parseArgv)(args.split(' '))).toEqual([
|
|
18
|
+
['bam', ['dad.bam', 'color:red']],
|
|
19
|
+
['vcf', ['variants.vcf']],
|
|
20
|
+
['bam', ['mom.bam', 'force:true']],
|
|
21
|
+
['defaultSession', []],
|
|
22
|
+
['out', ['out.svg']],
|
|
23
|
+
['noRasterize', []],
|
|
24
|
+
]);
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=parseArgv.testmod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseArgv.testmod.js","sourceRoot":"","sources":["../src/parseArgv.testmod.js"],"names":[],"mappings":";;AAAA,2CAAuC;AAEvC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;IACjB,MAAM,IAAI,GACR,uGAAuG,CAAA;IAEzG,MAAM,CAAC,IAAA,qBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACjC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC;QACzB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACtB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC,aAAa,EAAE,EAAE,CAAC;KACpB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;IACjB,MAAM,IAAI,GACR,kHAAkH,CAAA;IAEpH,MAAM,CAAC,IAAA,qBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACjC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC;QACzB,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAClC,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACtB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC,aAAa,EAAE,EAAE,CAAC;KACpB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Entry } from './parseArgv';
|
|
2
|
+
export interface Opts {
|
|
3
|
+
noRasterize?: boolean;
|
|
4
|
+
loc?: string;
|
|
5
|
+
width?: number;
|
|
6
|
+
session?: string;
|
|
7
|
+
assembly?: string;
|
|
8
|
+
config?: string;
|
|
9
|
+
fasta?: string;
|
|
10
|
+
aliases?: string;
|
|
11
|
+
cytobands?: string;
|
|
12
|
+
defaultSession?: string;
|
|
13
|
+
trackList: Entry[];
|
|
14
|
+
tracks?: string;
|
|
15
|
+
}
|
|
16
|
+
interface Assembly {
|
|
17
|
+
name: string;
|
|
18
|
+
sequence: Record<string, unknown>;
|
|
19
|
+
refNameAliases?: Record<string, unknown>;
|
|
20
|
+
cytobands?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
interface Track {
|
|
23
|
+
trackId: string;
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
interface Config {
|
|
27
|
+
assemblies: Assembly[];
|
|
28
|
+
assembly: Assembly;
|
|
29
|
+
tracks: Track[];
|
|
30
|
+
[key: string]: unknown;
|
|
31
|
+
}
|
|
32
|
+
export declare function readData({ assembly: asm, config, session, fasta, aliases, cytobands, defaultSession, tracks, trackList, }: Opts): Config;
|
|
33
|
+
export declare const muiCache: import("@emotion/utils").EmotionCache;
|
|
34
|
+
export declare function renderRegion(opts: Opts): Promise<string>;
|
|
35
|
+
export {};
|