@jbrowse/img 1.6.4 → 1.6.7
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/dist/index.js +116 -41
- package/dist/index.testmod.js +178 -75
- package/dist/parseArgv.js +7 -5
- package/dist/parseArgv.testmod.js +2 -2
- package/dist/renderRegion.js +240 -151
- package/dist/util.js +3 -1
- package/package.json +9 -5
package/dist/index.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
|
|
7
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
|
|
5
9
|
var _fs = _interopRequireDefault(require("fs"));
|
|
6
10
|
|
|
7
11
|
var _yargs = _interopRequireDefault(require("yargs"));
|
|
@@ -12,10 +16,26 @@ var _renderRegion = require("./renderRegion");
|
|
|
12
16
|
|
|
13
17
|
var _tmp = _interopRequireDefault(require("tmp"));
|
|
14
18
|
|
|
19
|
+
require("abortcontroller-polyfill/dist/abortcontroller-polyfill-only");
|
|
20
|
+
|
|
15
21
|
var _child_process = require("child_process");
|
|
16
22
|
|
|
17
23
|
/* eslint-disable no-console */
|
|
18
|
-
|
|
24
|
+
var err = console.error;
|
|
25
|
+
|
|
26
|
+
console.error = function () {
|
|
27
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
28
|
+
args[_key] = arguments[_key];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if ("".concat(args[0]).match('useLayoutEffect')) {
|
|
32
|
+
return null;
|
|
33
|
+
} else {
|
|
34
|
+
err(args);
|
|
35
|
+
}
|
|
36
|
+
}; // eslint-disable-next-line no-unused-expressions
|
|
37
|
+
|
|
38
|
+
|
|
19
39
|
_yargs.default.command('jb2export', 'Creates a jbrowse 2 image snapshot').option('config', {
|
|
20
40
|
description: 'Path to config file',
|
|
21
41
|
type: 'string'
|
|
@@ -85,46 +105,101 @@ _yargs.default.command('jb2export', 'Creates a jbrowse 2 image snapshot').option
|
|
|
85
105
|
type: 'boolean'
|
|
86
106
|
}).help().alias('help', 'h').alias('width', 'w').argv; // prints to stderr the time it takes to execute cb
|
|
87
107
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const ret = await cb();
|
|
91
|
-
console.log(`Finished rendering: ${(+Date.now() - start) / 1000}s`);
|
|
92
|
-
return ret;
|
|
108
|
+
function time(_x) {
|
|
109
|
+
return _time.apply(this, arguments);
|
|
93
110
|
}
|
|
94
111
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
_fs.default.writeFileSync(tmpobj.name, result);
|
|
121
|
-
|
|
122
|
-
const ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, tmpobj.name, '-f', 'pdf', '-o', outfile]);
|
|
123
|
-
console.log(`rsvg-convert stderr: ${ls.stderr.toString()}`);
|
|
124
|
-
console.log(`rsvg-convert stdout: ${ls.stdout.toString()}`);
|
|
112
|
+
function _time() {
|
|
113
|
+
_time = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(cb) {
|
|
114
|
+
var start, ret;
|
|
115
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
116
|
+
while (1) {
|
|
117
|
+
switch (_context2.prev = _context2.next) {
|
|
118
|
+
case 0:
|
|
119
|
+
start = +Date.now();
|
|
120
|
+
_context2.next = 3;
|
|
121
|
+
return cb();
|
|
122
|
+
|
|
123
|
+
case 3:
|
|
124
|
+
ret = _context2.sent;
|
|
125
|
+
console.log("Finished rendering: ".concat((+Date.now() - start) / 1000, "s"));
|
|
126
|
+
return _context2.abrupt("return", ret);
|
|
127
|
+
|
|
128
|
+
case 6:
|
|
129
|
+
case "end":
|
|
130
|
+
return _context2.stop();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}, _callee2);
|
|
134
|
+
}));
|
|
135
|
+
return _time.apply(this, arguments);
|
|
136
|
+
}
|
|
125
137
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
138
|
+
var args = (0, _parseArgv.standardizeArgv)((0, _parseArgv.parseArgv)(process.argv.slice(2)), ['bam', 'cram', 'vcfgz', 'hic', 'bigwig', 'bigbed', 'bedgz', 'gffgz', 'configtracks']);
|
|
139
|
+
time( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
140
|
+
var result, outfile, tmpobj, ls, _tmpobj, _ls;
|
|
141
|
+
|
|
142
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
143
|
+
while (1) {
|
|
144
|
+
switch (_context.prev = _context.next) {
|
|
145
|
+
case 0:
|
|
146
|
+
_context.prev = 0;
|
|
147
|
+
_context.next = 3;
|
|
148
|
+
return (0, _renderRegion.renderRegion)(args);
|
|
149
|
+
|
|
150
|
+
case 3:
|
|
151
|
+
result = _context.sent;
|
|
152
|
+
outfile = args.out || 'out.svg';
|
|
153
|
+
|
|
154
|
+
if (outfile.endsWith('.png')) {
|
|
155
|
+
tmpobj = _tmp.default.fileSync({
|
|
156
|
+
mode: 420,
|
|
157
|
+
prefix: 'prefix-',
|
|
158
|
+
postfix: '.svg'
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
_fs.default.writeFileSync(tmpobj.name, result);
|
|
162
|
+
|
|
163
|
+
ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, tmpobj.name, '-o', outfile]);
|
|
164
|
+
console.log("rsvg-convert stderr: ".concat(ls.stderr.toString()));
|
|
165
|
+
console.log("rsvg-convert stdout: ".concat(ls.stdout.toString()));
|
|
166
|
+
|
|
167
|
+
_fs.default.unlinkSync(tmpobj.name);
|
|
168
|
+
} else if (outfile.endsWith('.pdf')) {
|
|
169
|
+
_tmpobj = _tmp.default.fileSync({
|
|
170
|
+
mode: 420,
|
|
171
|
+
prefix: 'prefix-',
|
|
172
|
+
postfix: '.svg'
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
_fs.default.writeFileSync(_tmpobj.name, result);
|
|
176
|
+
|
|
177
|
+
_ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, _tmpobj.name, '-f', 'pdf', '-o', outfile]);
|
|
178
|
+
console.log("rsvg-convert stderr: ".concat(_ls.stderr.toString()));
|
|
179
|
+
console.log("rsvg-convert stdout: ".concat(_ls.stdout.toString()));
|
|
180
|
+
|
|
181
|
+
_fs.default.unlinkSync(_tmpobj.name);
|
|
182
|
+
} else {
|
|
183
|
+
_fs.default.writeFileSync(outfile, result);
|
|
184
|
+
} // manually exit the process after done rendering because autoruns or
|
|
185
|
+
// something similar otherwise keeps the nodejs process alive xref
|
|
186
|
+
// https://github.com/GMOD/jb2export/issues/6
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
process.exit(0);
|
|
190
|
+
_context.next = 13;
|
|
191
|
+
break;
|
|
192
|
+
|
|
193
|
+
case 9:
|
|
194
|
+
_context.prev = 9;
|
|
195
|
+
_context.t0 = _context["catch"](0);
|
|
196
|
+
console.error(_context.t0);
|
|
197
|
+
process.exit(1);
|
|
198
|
+
|
|
199
|
+
case 13:
|
|
200
|
+
case "end":
|
|
201
|
+
return _context.stop();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}, _callee, null, [[0, 9]]);
|
|
205
|
+
})));
|
package/dist/index.testmod.js
CHANGED
|
@@ -2,19 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
|
|
7
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
|
|
5
9
|
var _renderRegion = require("./renderRegion");
|
|
6
10
|
|
|
7
11
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
12
|
|
|
9
13
|
function hashCode(str) {
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
var hash = 0;
|
|
15
|
+
var chr;
|
|
12
16
|
|
|
13
17
|
if (str.length === 0) {
|
|
14
18
|
return hash;
|
|
15
19
|
}
|
|
16
20
|
|
|
17
|
-
for (
|
|
21
|
+
for (var i = 0; i < str.length; i++) {
|
|
18
22
|
chr = str.charCodeAt(i);
|
|
19
23
|
hash = (hash << 5) - hash + chr;
|
|
20
24
|
hash |= 0; // Convert to 32bit integer
|
|
@@ -23,75 +27,174 @@ function hashCode(str) {
|
|
|
23
27
|
return hash;
|
|
24
28
|
}
|
|
25
29
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
xtest('renders a region with --session and --config args',
|
|
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
|
-
|
|
30
|
+
var timeout = 20000; // commented out for using remote files currently
|
|
31
|
+
|
|
32
|
+
xtest('renders a region with --session and --config args', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
33
|
+
var result;
|
|
34
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
35
|
+
while (1) {
|
|
36
|
+
switch (_context.prev = _context.next) {
|
|
37
|
+
case 0:
|
|
38
|
+
_context.next = 2;
|
|
39
|
+
return (0, _renderRegion.renderRegion)({
|
|
40
|
+
session: require.resolve('../test/clingen_session.json'),
|
|
41
|
+
config: require.resolve('../data/config.json')
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
case 2:
|
|
45
|
+
result = _context.sent;
|
|
46
|
+
|
|
47
|
+
_fs.default.writeFileSync('svg_from_config_and_session_param.svg', result);
|
|
48
|
+
|
|
49
|
+
expect(hashCode(result)).toMatchSnapshot();
|
|
50
|
+
|
|
51
|
+
case 5:
|
|
52
|
+
case "end":
|
|
53
|
+
return _context.stop();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}, _callee);
|
|
57
|
+
})), timeout); // commented out for using remote files currently
|
|
58
|
+
|
|
59
|
+
xtest('renders a region with --session, --tracks, and --assembly args', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
60
|
+
var result;
|
|
61
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
62
|
+
while (1) {
|
|
63
|
+
switch (_context2.prev = _context2.next) {
|
|
64
|
+
case 0:
|
|
65
|
+
_context2.next = 2;
|
|
66
|
+
return (0, _renderRegion.renderRegion)({
|
|
67
|
+
session: require.resolve('../test/clingen_session.json'),
|
|
68
|
+
tracks: require.resolve('../data/tracks.json'),
|
|
69
|
+
assembly: require.resolve('../data/assembly.json')
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
case 2:
|
|
73
|
+
result = _context2.sent;
|
|
74
|
+
|
|
75
|
+
_fs.default.writeFileSync('svg_from_separate_session_and_tracks.svg', result);
|
|
76
|
+
|
|
77
|
+
expect(hashCode(result)).toMatchSnapshot();
|
|
78
|
+
|
|
79
|
+
case 5:
|
|
80
|
+
case "end":
|
|
81
|
+
return _context2.stop();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}, _callee2);
|
|
85
|
+
})), timeout);
|
|
86
|
+
test('renders volvox with variety of args', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
87
|
+
var result;
|
|
88
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
89
|
+
while (1) {
|
|
90
|
+
switch (_context3.prev = _context3.next) {
|
|
91
|
+
case 0:
|
|
92
|
+
console.error = jest.fn();
|
|
93
|
+
_context3.next = 3;
|
|
94
|
+
return (0, _renderRegion.renderRegion)({
|
|
95
|
+
fasta: require.resolve('../data/volvox/volvox.fa'),
|
|
96
|
+
trackList: [['bam', [require.resolve('../data/volvox/volvox-sorted.bam')]], ['cram', [require.resolve('../data/volvox/volvox-sorted.cram')]], ['bigwig', [require.resolve('../data/volvox/volvox-sorted.bam.coverage.bw')]], ['vcfgz', [require.resolve('../data/volvox/volvox.filtered.vcf.gz')]], ['gffgz', [require.resolve('../data/volvox/volvox.sort.gff3.gz')]], ['bigbed', [require.resolve('../data/volvox/volvox.bb')]], ['bedgz', [require.resolve('../data/volvox/volvox-bed12.bed.gz')]]],
|
|
97
|
+
loc: 'ctgA:1000-2000'
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
case 3:
|
|
101
|
+
result = _context3.sent;
|
|
102
|
+
|
|
103
|
+
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
104
|
+
_fs.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam.svg'), result);
|
|
105
|
+
|
|
106
|
+
expect(result).toBeTruthy();
|
|
107
|
+
|
|
108
|
+
case 6:
|
|
109
|
+
case "end":
|
|
110
|
+
return _context3.stop();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}, _callee3);
|
|
114
|
+
})), timeout); // commented out for using remote files currently
|
|
115
|
+
|
|
116
|
+
xtest('configtracks arg with urls', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
117
|
+
var result;
|
|
118
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
119
|
+
while (1) {
|
|
120
|
+
switch (_context4.prev = _context4.next) {
|
|
121
|
+
case 0:
|
|
122
|
+
_context4.next = 2;
|
|
123
|
+
return (0, _renderRegion.renderRegion)({
|
|
124
|
+
config: 'data/config.json',
|
|
125
|
+
trackList: [['configtracks', ['ncbi_refseq_109_hg38']]],
|
|
126
|
+
assembly: 'GRCh38',
|
|
127
|
+
loc: 'chr1:50,000-60,000'
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
case 2:
|
|
131
|
+
result = _context4.sent;
|
|
132
|
+
|
|
133
|
+
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
134
|
+
_fs.default.writeFileSync('svg_configtracks_simple.svg', result);
|
|
135
|
+
|
|
136
|
+
expect(result).toBeTruthy();
|
|
137
|
+
|
|
138
|
+
case 5:
|
|
139
|
+
case "end":
|
|
140
|
+
return _context4.stop();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}, _callee4);
|
|
144
|
+
})), timeout * 3);
|
|
145
|
+
test('configtracks arg with local files', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
146
|
+
var result;
|
|
147
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
148
|
+
while (1) {
|
|
149
|
+
switch (_context5.prev = _context5.next) {
|
|
150
|
+
case 0:
|
|
151
|
+
_context5.next = 2;
|
|
152
|
+
return (0, _renderRegion.renderRegion)({
|
|
153
|
+
config: require.resolve('../data/volvox/config.json'),
|
|
154
|
+
trackList: [['configtracks', ['volvox_sv']]],
|
|
155
|
+
assembly: 'volvox',
|
|
156
|
+
loc: 'ctgA:1-50,000'
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
case 2:
|
|
160
|
+
result = _context5.sent;
|
|
161
|
+
|
|
162
|
+
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
163
|
+
_fs.default.writeFileSync(require.resolve('../test/svg_configtracks_local.svg'), result);
|
|
164
|
+
|
|
165
|
+
expect(result).toBeTruthy();
|
|
166
|
+
|
|
167
|
+
case 5:
|
|
168
|
+
case "end":
|
|
169
|
+
return _context5.stop();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}, _callee5);
|
|
173
|
+
})), timeout * 3);
|
|
174
|
+
xtest('renders --hic', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
|
|
175
|
+
var result;
|
|
176
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
177
|
+
while (1) {
|
|
178
|
+
switch (_context6.prev = _context6.next) {
|
|
179
|
+
case 0:
|
|
180
|
+
_context6.next = 2;
|
|
181
|
+
return (0, _renderRegion.renderRegion)({
|
|
182
|
+
fasta: 'https://jbrowse.org/genomes/hg19/fasta/hg19.fa.gz',
|
|
183
|
+
trackList: [['hic', ['https://s3.amazonaws.com/igv.broadinstitute.org/data/hic/intra_nofrag_30.hic']]],
|
|
184
|
+
loc: '1:2,000,000-10,000,000'
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
case 2:
|
|
188
|
+
result = _context6.sent;
|
|
189
|
+
|
|
190
|
+
_fs.default.writeFileSync(require.resolve('../test/svg_from_human_hic.svg'), result);
|
|
191
|
+
|
|
192
|
+
expect(result).toBeTruthy();
|
|
193
|
+
|
|
194
|
+
case 5:
|
|
195
|
+
case "end":
|
|
196
|
+
return _context6.stop();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}, _callee6);
|
|
200
|
+
})), 20000);
|
package/dist/parseArgv.js
CHANGED
|
@@ -7,12 +7,14 @@ exports.parseArgv = parseArgv;
|
|
|
7
7
|
exports.standardizeArgv = standardizeArgv;
|
|
8
8
|
|
|
9
9
|
function parseArgv(argv) {
|
|
10
|
-
|
|
10
|
+
var map = [];
|
|
11
11
|
|
|
12
12
|
while (argv.length) {
|
|
13
|
-
|
|
13
|
+
var val = argv[0].slice(2);
|
|
14
14
|
argv = argv.slice(1);
|
|
15
|
-
|
|
15
|
+
var next = argv.findIndex(function (arg) {
|
|
16
|
+
return arg.startsWith('-');
|
|
17
|
+
});
|
|
16
18
|
|
|
17
19
|
if (next !== -1) {
|
|
18
20
|
map.push([val, argv.slice(0, next)]);
|
|
@@ -27,10 +29,10 @@ function parseArgv(argv) {
|
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
function standardizeArgv(args, trackTypes) {
|
|
30
|
-
|
|
32
|
+
var result = {
|
|
31
33
|
trackList: []
|
|
32
34
|
};
|
|
33
|
-
args.forEach(arg
|
|
35
|
+
args.forEach(function (arg) {
|
|
34
36
|
if (trackTypes.includes(arg[0])) {
|
|
35
37
|
result.trackList.push(arg);
|
|
36
38
|
} else {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _parseArgv = require("./parseArgv");
|
|
4
4
|
|
|
5
|
-
test('parse', ()
|
|
6
|
-
|
|
5
|
+
test('parse', function () {
|
|
6
|
+
var args = '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam --defaultSession --out out.svg --noRasterize';
|
|
7
7
|
expect((0, _parseArgv.parseArgv)(args.split(' '))).toEqual([['bam', ['dad.bam', 'color:red']], ['vcf', ['variants.vcf']], ['bam', ['mom.bam']], ['defaultSession', []], ['out', ['out.svg']], ['noRasterize', []]]);
|
|
8
8
|
});
|
package/dist/renderRegion.js
CHANGED
|
@@ -8,6 +8,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.readData = readData;
|
|
9
9
|
exports.renderRegion = renderRegion;
|
|
10
10
|
|
|
11
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
+
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
|
|
15
|
+
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
|
|
16
|
+
|
|
17
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
18
|
+
|
|
19
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
20
|
+
|
|
21
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
22
|
+
|
|
23
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
24
|
+
|
|
11
25
|
var _reactLinearGenomeView = require("@jbrowse/react-linear-genome-view");
|
|
12
26
|
|
|
13
27
|
var _pluginLinearGenomeView = require("@jbrowse/plugin-linear-genome-view");
|
|
@@ -20,13 +34,17 @@ var _fs = _interopRequireDefault(require("fs"));
|
|
|
20
34
|
|
|
21
35
|
var _util = require("./util");
|
|
22
36
|
|
|
37
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
38
|
+
|
|
39
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
40
|
+
|
|
23
41
|
function read(file) {
|
|
24
|
-
|
|
42
|
+
var res;
|
|
25
43
|
|
|
26
44
|
try {
|
|
27
45
|
res = JSON.parse(_fs.default.readFileSync(file));
|
|
28
46
|
} catch (e) {
|
|
29
|
-
throw new Error(
|
|
47
|
+
throw new Error("Failed to parse ".concat(file, " as JSON, use --fasta if you mean to pass a FASTA file"));
|
|
30
48
|
}
|
|
31
49
|
|
|
32
50
|
return res;
|
|
@@ -41,9 +59,11 @@ function makeLocation(file) {
|
|
|
41
59
|
}
|
|
42
60
|
|
|
43
61
|
function addRelativePaths(config, configPath) {
|
|
44
|
-
if (
|
|
45
|
-
for (
|
|
46
|
-
|
|
62
|
+
if ((0, _typeof2.default)(config) === 'object') {
|
|
63
|
+
for (var _i = 0, _Object$keys = Object.keys(config); _i < _Object$keys.length; _i++) {
|
|
64
|
+
var key = _Object$keys[_i];
|
|
65
|
+
|
|
66
|
+
if ((0, _typeof2.default)(config[key]) === 'object') {
|
|
47
67
|
addRelativePaths(config[key], configPath);
|
|
48
68
|
} else if (key === 'localPath') {
|
|
49
69
|
config.localPath = _path.default.resolve(configPath, config.localPath);
|
|
@@ -55,20 +75,19 @@ function addRelativePaths(config, configPath) {
|
|
|
55
75
|
function readData(opts) {
|
|
56
76
|
var _sessionData, _sessionData2, _configData$assemblie;
|
|
57
77
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
let sessionData = session ? read(session) : undefined;
|
|
78
|
+
var asm = opts.assembly,
|
|
79
|
+
config = opts.config,
|
|
80
|
+
session = opts.session,
|
|
81
|
+
fasta = opts.fasta,
|
|
82
|
+
aliases = opts.aliases,
|
|
83
|
+
defaultSession = opts.defaultSession,
|
|
84
|
+
_opts$trackList = opts.trackList,
|
|
85
|
+
trackList = _opts$trackList === void 0 ? [] : _opts$trackList,
|
|
86
|
+
tracks = opts.tracks;
|
|
87
|
+
var assemblyData = asm && _fs.default.existsSync(asm) ? read(asm) : undefined;
|
|
88
|
+
var tracksData = tracks ? read(tracks) : undefined;
|
|
89
|
+
var configData = config ? read(config) : {};
|
|
90
|
+
var sessionData = session ? read(session) : undefined;
|
|
72
91
|
|
|
73
92
|
if (config) {
|
|
74
93
|
addRelativePaths(configData, _path.default.dirname(_path.default.resolve(config)));
|
|
@@ -91,10 +110,12 @@ function readData(opts) {
|
|
|
91
110
|
configData.assembly = assemblyData;
|
|
92
111
|
} // else check if it was an assembly name in a config file
|
|
93
112
|
else if ((_configData$assemblie = configData.assemblies) !== null && _configData$assemblie !== void 0 && _configData$assemblie.length) {
|
|
94
|
-
configData.assembly = asm ? configData.assemblies.find(
|
|
113
|
+
configData.assembly = asm ? configData.assemblies.find(function (entry) {
|
|
114
|
+
return entry.name === asm;
|
|
115
|
+
}) : configData.assemblies[0];
|
|
95
116
|
} // else load fasta from command line
|
|
96
117
|
else if (fasta) {
|
|
97
|
-
|
|
118
|
+
var bgzip = fasta.endsWith('gz');
|
|
98
119
|
configData.assembly = {
|
|
99
120
|
name: _path.default.basename(fasta),
|
|
100
121
|
sequence: {
|
|
@@ -130,11 +151,14 @@ function readData(opts) {
|
|
|
130
151
|
configData.tracks = [];
|
|
131
152
|
}
|
|
132
153
|
|
|
133
|
-
trackList.forEach(track
|
|
134
|
-
|
|
154
|
+
trackList.forEach(function (track) {
|
|
155
|
+
var _track = (0, _slicedToArray2.default)(track, 2),
|
|
156
|
+
type = _track[0],
|
|
157
|
+
_track$ = (0, _slicedToArray2.default)(_track[1], 1),
|
|
158
|
+
file = _track$[0];
|
|
135
159
|
|
|
136
160
|
if (type === 'bam') {
|
|
137
|
-
configData.tracks = [
|
|
161
|
+
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
138
162
|
type: 'AlignmentsTrack',
|
|
139
163
|
trackId: _path.default.basename(file),
|
|
140
164
|
name: _path.default.basename(file),
|
|
@@ -147,11 +171,11 @@ function readData(opts) {
|
|
|
147
171
|
},
|
|
148
172
|
sequenceAdapter: configData.assembly.sequence.adapter
|
|
149
173
|
}
|
|
150
|
-
}];
|
|
174
|
+
}]);
|
|
151
175
|
}
|
|
152
176
|
|
|
153
177
|
if (type === 'cram') {
|
|
154
|
-
configData.tracks = [
|
|
178
|
+
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
155
179
|
type: 'AlignmentsTrack',
|
|
156
180
|
trackId: _path.default.basename(file),
|
|
157
181
|
name: _path.default.basename(file),
|
|
@@ -162,11 +186,11 @@ function readData(opts) {
|
|
|
162
186
|
craiLocation: makeLocation(file + '.crai'),
|
|
163
187
|
sequenceAdapter: configData.assembly.sequence.adapter
|
|
164
188
|
}
|
|
165
|
-
}];
|
|
189
|
+
}]);
|
|
166
190
|
}
|
|
167
191
|
|
|
168
192
|
if (type === 'bigwig') {
|
|
169
|
-
configData.tracks = [
|
|
193
|
+
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
170
194
|
type: 'QuantitativeTrack',
|
|
171
195
|
trackId: _path.default.basename(file),
|
|
172
196
|
name: _path.default.basename(file),
|
|
@@ -175,11 +199,11 @@ function readData(opts) {
|
|
|
175
199
|
type: 'BigWigAdapter',
|
|
176
200
|
bigWigLocation: makeLocation(file)
|
|
177
201
|
}
|
|
178
|
-
}];
|
|
202
|
+
}]);
|
|
179
203
|
}
|
|
180
204
|
|
|
181
205
|
if (type === 'vcfgz') {
|
|
182
|
-
configData.tracks = [
|
|
206
|
+
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
183
207
|
type: 'VariantTrack',
|
|
184
208
|
trackId: _path.default.basename(file),
|
|
185
209
|
name: _path.default.basename(file),
|
|
@@ -191,11 +215,11 @@ function readData(opts) {
|
|
|
191
215
|
location: makeLocation(file + '.tbi')
|
|
192
216
|
}
|
|
193
217
|
}
|
|
194
|
-
}];
|
|
218
|
+
}]);
|
|
195
219
|
}
|
|
196
220
|
|
|
197
221
|
if (type === 'gffgz') {
|
|
198
|
-
configData.tracks = [
|
|
222
|
+
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
199
223
|
type: 'FeatureTrack',
|
|
200
224
|
trackId: _path.default.basename(file),
|
|
201
225
|
name: _path.default.basename(file),
|
|
@@ -207,11 +231,11 @@ function readData(opts) {
|
|
|
207
231
|
location: makeLocation(file + '.tbi')
|
|
208
232
|
}
|
|
209
233
|
}
|
|
210
|
-
}];
|
|
234
|
+
}]);
|
|
211
235
|
}
|
|
212
236
|
|
|
213
237
|
if (type === 'hic') {
|
|
214
|
-
configData.tracks = [
|
|
238
|
+
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
215
239
|
type: 'HicTrack',
|
|
216
240
|
trackId: _path.default.basename(file),
|
|
217
241
|
name: _path.default.basename(file),
|
|
@@ -220,11 +244,11 @@ function readData(opts) {
|
|
|
220
244
|
type: 'HicAdapter',
|
|
221
245
|
hicLocation: makeLocation(file)
|
|
222
246
|
}
|
|
223
|
-
}];
|
|
247
|
+
}]);
|
|
224
248
|
}
|
|
225
249
|
|
|
226
250
|
if (type === 'bigbed') {
|
|
227
|
-
configData.tracks = [
|
|
251
|
+
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
228
252
|
type: 'FeatureTrack',
|
|
229
253
|
trackId: _path.default.basename(file),
|
|
230
254
|
name: _path.default.basename(file),
|
|
@@ -233,11 +257,11 @@ function readData(opts) {
|
|
|
233
257
|
type: 'BigBedAdapter',
|
|
234
258
|
bigBedLocation: makeLocation(file)
|
|
235
259
|
}
|
|
236
|
-
}];
|
|
260
|
+
}]);
|
|
237
261
|
}
|
|
238
262
|
|
|
239
263
|
if (type === 'bedgz') {
|
|
240
|
-
configData.tracks = [
|
|
264
|
+
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
241
265
|
type: 'FeatureTrack',
|
|
242
266
|
trackId: _path.default.basename(file),
|
|
243
267
|
name: _path.default.basename(file),
|
|
@@ -249,7 +273,7 @@ function readData(opts) {
|
|
|
249
273
|
location: makeLocation(file + '.tbi')
|
|
250
274
|
}
|
|
251
275
|
}
|
|
252
|
-
}];
|
|
276
|
+
}]);
|
|
253
277
|
}
|
|
254
278
|
});
|
|
255
279
|
|
|
@@ -267,119 +291,184 @@ function readData(opts) {
|
|
|
267
291
|
return configData;
|
|
268
292
|
}
|
|
269
293
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
loc,
|
|
274
|
-
width = 1500,
|
|
275
|
-
trackList = [],
|
|
276
|
-
session: sessionParam,
|
|
277
|
-
defaultSession
|
|
278
|
-
} = opts;
|
|
279
|
-
const {
|
|
280
|
-
session
|
|
281
|
-
} = model;
|
|
282
|
-
const {
|
|
283
|
-
view
|
|
284
|
-
} = session;
|
|
285
|
-
const {
|
|
286
|
-
assemblyManager
|
|
287
|
-
} = model;
|
|
288
|
-
view.setWidth(width);
|
|
289
|
-
await (0, _mobx.when)(() => {
|
|
290
|
-
var _assemblyManager$allP;
|
|
291
|
-
|
|
292
|
-
return ((_assemblyManager$allP = assemblyManager.allPossibleRefNames) === null || _assemblyManager$allP === void 0 ? void 0 : _assemblyManager$allP.length) && model.session.view.initialized;
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
if (loc) {
|
|
296
|
-
const assembly = assemblyManager.assemblies[0];
|
|
297
|
-
const region = assembly.regions[0];
|
|
298
|
-
|
|
299
|
-
if (region) {
|
|
300
|
-
view.setDisplayedRegions([region]);
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
if (loc === 'all') {
|
|
304
|
-
view.showAllRegionsInAssembly(assembly.name);
|
|
305
|
-
} else {
|
|
306
|
-
view.navToLocString(loc);
|
|
307
|
-
}
|
|
308
|
-
} else if (!sessionParam && !defaultSession) {
|
|
309
|
-
console.warn('No loc specified');
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
function process(trackEntry, extra = () => {}) {
|
|
313
|
-
const [, [track, ...opts]] = trackEntry;
|
|
314
|
-
const currentTrack = view.showTrack(extra(track));
|
|
315
|
-
const display = currentTrack.displays[0];
|
|
316
|
-
opts.forEach(opt => {
|
|
317
|
-
// apply height to any track
|
|
318
|
-
if (opt.startsWith('height:')) {
|
|
319
|
-
const [, height] = opt.split(':');
|
|
320
|
-
display.setHeight(+height);
|
|
321
|
-
} // apply sort to pileup
|
|
322
|
-
else if (opt.startsWith('sort:')) {
|
|
323
|
-
const [, type, tag] = opt.split(':');
|
|
324
|
-
display.PileupDisplay.setSortedBy(type, tag);
|
|
325
|
-
} // apply color scheme to pileup
|
|
326
|
-
else if (opt.startsWith('color:')) {
|
|
327
|
-
const [, type, tag] = opt.split(':');
|
|
328
|
-
|
|
329
|
-
if (display.PileupDisplay) {
|
|
330
|
-
display.PileupDisplay.setColorScheme({
|
|
331
|
-
type,
|
|
332
|
-
tag
|
|
333
|
-
});
|
|
334
|
-
} else {
|
|
335
|
-
display.setColor(type);
|
|
336
|
-
}
|
|
337
|
-
} // force track to render even if maxbpperpx limit hit...
|
|
338
|
-
else if (opt.startsWith('force:')) {
|
|
339
|
-
const [, force] = opt.split(':');
|
|
294
|
+
function renderRegion() {
|
|
295
|
+
return _renderRegion.apply(this, arguments);
|
|
296
|
+
}
|
|
340
297
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
298
|
+
function _renderRegion() {
|
|
299
|
+
_renderRegion = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
300
|
+
var opts,
|
|
301
|
+
model,
|
|
302
|
+
loc,
|
|
303
|
+
_opts$width,
|
|
304
|
+
width,
|
|
305
|
+
_opts$trackList2,
|
|
306
|
+
trackList,
|
|
307
|
+
sessionParam,
|
|
308
|
+
defaultSession,
|
|
309
|
+
session,
|
|
310
|
+
view,
|
|
311
|
+
assemblyManager,
|
|
312
|
+
assembly,
|
|
313
|
+
region,
|
|
314
|
+
process,
|
|
315
|
+
_args = arguments;
|
|
316
|
+
|
|
317
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
318
|
+
while (1) {
|
|
319
|
+
switch (_context.prev = _context.next) {
|
|
320
|
+
case 0:
|
|
321
|
+
process = function _process(trackEntry) {
|
|
322
|
+
var extra = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
|
|
323
|
+
|
|
324
|
+
var _trackEntry = (0, _slicedToArray2.default)(trackEntry, 2),
|
|
325
|
+
_trackEntry$ = (0, _toArray2.default)(_trackEntry[1]),
|
|
326
|
+
track = _trackEntry$[0],
|
|
327
|
+
opts = _trackEntry$.slice(1);
|
|
328
|
+
|
|
329
|
+
var currentTrack = view.showTrack(extra(track));
|
|
330
|
+
var display = currentTrack.displays[0];
|
|
331
|
+
opts.forEach(function (opt) {
|
|
332
|
+
// apply height to any track
|
|
333
|
+
if (opt.startsWith('height:')) {
|
|
334
|
+
var _opt$split = opt.split(':'),
|
|
335
|
+
_opt$split2 = (0, _slicedToArray2.default)(_opt$split, 2),
|
|
336
|
+
height = _opt$split2[1];
|
|
337
|
+
|
|
338
|
+
display.setHeight(+height);
|
|
339
|
+
} // apply sort to pileup
|
|
340
|
+
else if (opt.startsWith('sort:')) {
|
|
341
|
+
var _opt$split3 = opt.split(':'),
|
|
342
|
+
_opt$split4 = (0, _slicedToArray2.default)(_opt$split3, 3),
|
|
343
|
+
type = _opt$split4[1],
|
|
344
|
+
tag = _opt$split4[2];
|
|
345
|
+
|
|
346
|
+
display.PileupDisplay.setSortedBy(type, tag);
|
|
347
|
+
} // apply color scheme to pileup
|
|
348
|
+
else if (opt.startsWith('color:')) {
|
|
349
|
+
var _opt$split5 = opt.split(':'),
|
|
350
|
+
_opt$split6 = (0, _slicedToArray2.default)(_opt$split5, 3),
|
|
351
|
+
_type = _opt$split6[1],
|
|
352
|
+
_tag = _opt$split6[2];
|
|
353
|
+
|
|
354
|
+
if (display.PileupDisplay) {
|
|
355
|
+
display.PileupDisplay.setColorScheme({
|
|
356
|
+
type: _type,
|
|
357
|
+
tag: _tag
|
|
358
|
+
});
|
|
359
|
+
} else {
|
|
360
|
+
display.setColor(_type);
|
|
361
|
+
}
|
|
362
|
+
} // force track to render even if maxbpperpx limit hit...
|
|
363
|
+
else if (opt.startsWith('force:')) {
|
|
364
|
+
var _opt$split7 = opt.split(':'),
|
|
365
|
+
_opt$split8 = (0, _slicedToArray2.default)(_opt$split7, 2),
|
|
366
|
+
force = _opt$split8[1];
|
|
367
|
+
|
|
368
|
+
if (Boolean(force)) {
|
|
369
|
+
display.setUserFeatureScreenDensity(Number.MAX_VALUE);
|
|
370
|
+
}
|
|
371
|
+
} // apply wiggle autoscale
|
|
372
|
+
else if (opt.startsWith('autoscale:')) {
|
|
373
|
+
var _opt$split9 = opt.split(':'),
|
|
374
|
+
_opt$split10 = (0, _slicedToArray2.default)(_opt$split9, 2),
|
|
375
|
+
autoscale = _opt$split10[1];
|
|
376
|
+
|
|
377
|
+
display.setAutoscale(autoscale);
|
|
378
|
+
} // apply min and max score to wiggle
|
|
379
|
+
else if (opt.startsWith('minmax:')) {
|
|
380
|
+
var _opt$split11 = opt.split(':'),
|
|
381
|
+
_opt$split12 = (0, _slicedToArray2.default)(_opt$split11, 3),
|
|
382
|
+
min = _opt$split12[1],
|
|
383
|
+
max = _opt$split12[2];
|
|
384
|
+
|
|
385
|
+
display.setMinScore(+min);
|
|
386
|
+
display.setMaxScore(+max);
|
|
387
|
+
} // apply linear or log scale to wiggle
|
|
388
|
+
else if (opt.startsWith('scaletype:')) {
|
|
389
|
+
var _opt$split13 = opt.split(':'),
|
|
390
|
+
_opt$split14 = (0, _slicedToArray2.default)(_opt$split13, 2),
|
|
391
|
+
scaletype = _opt$split14[1];
|
|
392
|
+
|
|
393
|
+
display.setScaleType(scaletype);
|
|
394
|
+
} // draw crosshatches on wiggle
|
|
395
|
+
else if (opt.startsWith('crosshatch:')) {
|
|
396
|
+
var _opt$split15 = opt.split(':'),
|
|
397
|
+
_opt$split16 = (0, _slicedToArray2.default)(_opt$split15, 2),
|
|
398
|
+
val = _opt$split16[1];
|
|
399
|
+
|
|
400
|
+
display.setCrossHatches((0, _util.booleanize)(val));
|
|
401
|
+
} // turn off fill on bigwig with fill:false
|
|
402
|
+
else if (opt.startsWith('fill:')) {
|
|
403
|
+
var _opt$split17 = opt.split(':'),
|
|
404
|
+
_opt$split18 = (0, _slicedToArray2.default)(_opt$split17, 2),
|
|
405
|
+
_val = _opt$split18[1];
|
|
406
|
+
|
|
407
|
+
display.setFill((0, _util.booleanize)(_val));
|
|
408
|
+
} // set resolution:superfine to use finer bigwig bin size
|
|
409
|
+
else if (opt.startsWith('resolution:')) {
|
|
410
|
+
var _opt$split19 = opt.split(':'),
|
|
411
|
+
_opt$split20 = (0, _slicedToArray2.default)(_opt$split19, 2),
|
|
412
|
+
_val2 = _opt$split20[1];
|
|
413
|
+
|
|
414
|
+
if (_val2 === 'fine') {
|
|
415
|
+
_val2 = 10;
|
|
416
|
+
} else if (_val2 === 'superfine') {
|
|
417
|
+
_val2 = 100;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
display.setResolution(_val2);
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
opts = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
426
|
+
model = (0, _reactLinearGenomeView.createViewState)(readData(opts));
|
|
427
|
+
loc = opts.loc, _opts$width = opts.width, width = _opts$width === void 0 ? 1500 : _opts$width, _opts$trackList2 = opts.trackList, trackList = _opts$trackList2 === void 0 ? [] : _opts$trackList2, sessionParam = opts.session, defaultSession = opts.defaultSession;
|
|
428
|
+
session = model.session;
|
|
429
|
+
view = session.view;
|
|
430
|
+
assemblyManager = model.assemblyManager;
|
|
431
|
+
view.setWidth(width);
|
|
432
|
+
_context.next = 10;
|
|
433
|
+
return (0, _mobx.when)(function () {
|
|
434
|
+
var _assemblyManager$allP;
|
|
435
|
+
|
|
436
|
+
return ((_assemblyManager$allP = assemblyManager.allPossibleRefNames) === null || _assemblyManager$allP === void 0 ? void 0 : _assemblyManager$allP.length) && model.session.view.initialized;
|
|
437
|
+
});
|
|
438
|
+
|
|
439
|
+
case 10:
|
|
440
|
+
if (loc) {
|
|
441
|
+
assembly = assemblyManager.assemblies[0];
|
|
442
|
+
region = assembly.regions[0];
|
|
443
|
+
|
|
444
|
+
if (region) {
|
|
445
|
+
view.setDisplayedRegions([region]);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
if (loc === 'all') {
|
|
449
|
+
view.showAllRegionsInAssembly(assembly.name);
|
|
450
|
+
} else {
|
|
451
|
+
view.navToLocString(loc);
|
|
452
|
+
}
|
|
453
|
+
} else if (!sessionParam && !defaultSession) {
|
|
454
|
+
console.warn('No loc specified');
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
trackList.forEach(function (track) {
|
|
458
|
+
return process(track, function (extra) {
|
|
459
|
+
return _path.default.basename(extra);
|
|
460
|
+
});
|
|
461
|
+
});
|
|
462
|
+
return _context.abrupt("return", (0, _pluginLinearGenomeView.renderToSvg)(view, _objectSpread({
|
|
463
|
+
rasterizeLayers: !opts.noRasterize
|
|
464
|
+
}, opts)));
|
|
465
|
+
|
|
466
|
+
case 13:
|
|
467
|
+
case "end":
|
|
468
|
+
return _context.stop();
|
|
373
469
|
}
|
|
374
|
-
|
|
375
|
-
display.setResolution(val);
|
|
376
470
|
}
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
trackList.forEach(track => process(track, extra => _path.default.basename(extra)));
|
|
381
|
-
return (0, _pluginLinearGenomeView.renderToSvg)(view, {
|
|
382
|
-
rasterizeLayers: !opts.noRasterize,
|
|
383
|
-
...opts
|
|
384
|
-
});
|
|
471
|
+
}, _callee);
|
|
472
|
+
}));
|
|
473
|
+
return _renderRegion.apply(this, arguments);
|
|
385
474
|
}
|
package/dist/util.js
CHANGED
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.booleanize = void 0;
|
|
7
7
|
|
|
8
8
|
// nice helper function from https://stackoverflow.com/questions/263965/
|
|
9
|
-
|
|
9
|
+
var booleanize = function booleanize(string) {
|
|
10
|
+
return string === 'false' ? false : !!string;
|
|
11
|
+
};
|
|
10
12
|
|
|
11
13
|
exports.booleanize = booleanize;
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/img",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.7",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"author": "JBrowse Team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=14"
|
|
9
|
+
},
|
|
7
10
|
"bin": {
|
|
8
11
|
"jb2export": "./dist/bin.js"
|
|
9
12
|
},
|
|
@@ -14,7 +17,7 @@
|
|
|
14
17
|
"pretest": "cd ../jbrowse-react-linear-genome-view; yarn build; cd ../jb2export",
|
|
15
18
|
"test": "jest",
|
|
16
19
|
"prebuild": "rm -rf dist",
|
|
17
|
-
"build": "babel src -d dist",
|
|
20
|
+
"build": "babel --root-mode upward src -d dist",
|
|
18
21
|
"preversion": "npm run build",
|
|
19
22
|
"snap": "npm run build && node dist/index.js --config data/config.json --defaultSession --out out.svg",
|
|
20
23
|
"snappng": "npm run build && node dist/index.js --config data/config.json --defaultSession --out out.png",
|
|
@@ -25,8 +28,9 @@
|
|
|
25
28
|
"postversion": "git push --follow-tags"
|
|
26
29
|
},
|
|
27
30
|
"dependencies": {
|
|
28
|
-
"@jbrowse/plugin-linear-genome-view": "^1.6.
|
|
29
|
-
"@jbrowse/react-linear-genome-view": "^1.6.
|
|
31
|
+
"@jbrowse/plugin-linear-genome-view": "^1.6.7",
|
|
32
|
+
"@jbrowse/react-linear-genome-view": "^1.6.7",
|
|
33
|
+
"abortcontroller-polyfill": "^1.7.3",
|
|
30
34
|
"mobx": "^5.10.1",
|
|
31
35
|
"react": "^17.0.1",
|
|
32
36
|
"react-dom": "^17.0.1",
|
|
@@ -36,5 +40,5 @@
|
|
|
36
40
|
"publishConfig": {
|
|
37
41
|
"access": "public"
|
|
38
42
|
},
|
|
39
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "02012ec299c36647f755316571775d36b0fee5ec"
|
|
40
44
|
}
|