@jbrowse/img 2.1.7 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +13 -45
- package/dist/index.testmod.js +6 -45
- package/dist/parseArgv.js +0 -5
- package/dist/parseArgv.testmod.js +0 -1
- package/dist/renderRegion.js +137 -157
- package/dist/util.js +0 -2
- package/package.json +7 -11
package/dist/index.js
CHANGED
|
@@ -1,77 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
8
|
-
|
|
9
6
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
-
|
|
11
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
12
|
-
|
|
13
8
|
var _yargs = _interopRequireDefault(require("yargs"));
|
|
14
|
-
|
|
15
9
|
var _parseArgv = require("./parseArgv");
|
|
16
|
-
|
|
17
10
|
var _renderRegion = require("./renderRegion");
|
|
18
|
-
|
|
19
11
|
var _tmp = _interopRequireDefault(require("tmp"));
|
|
20
|
-
|
|
21
12
|
require("abortcontroller-polyfill/dist/abortcontroller-polyfill-only");
|
|
22
|
-
|
|
23
13
|
var _child_process = require("child_process");
|
|
24
|
-
|
|
25
14
|
var _nodeFetch = _interopRequireWildcard(require("node-fetch"));
|
|
26
|
-
|
|
27
15
|
var _jsdom = require("jsdom");
|
|
28
|
-
|
|
29
16
|
var _canvas = require("canvas");
|
|
30
|
-
|
|
31
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
32
|
-
|
|
33
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
34
|
-
|
|
35
19
|
/* eslint-disable no-console */
|
|
20
|
+
|
|
36
21
|
global.nodeImage = _canvas.Image;
|
|
37
22
|
global.nodeCreateCanvas = _canvas.createCanvas;
|
|
38
23
|
var document = new _jsdom.JSDOM("...").window.document;
|
|
39
24
|
global.document = document;
|
|
40
|
-
|
|
41
25
|
if (!global.fetch) {
|
|
42
26
|
global.fetch = _nodeFetch.default;
|
|
43
27
|
global.Headers = _nodeFetch.Headers;
|
|
44
28
|
global.Response = _nodeFetch.Response;
|
|
45
29
|
global.Request = _nodeFetch.Request;
|
|
46
30
|
}
|
|
47
|
-
|
|
48
31
|
var err = console.error;
|
|
49
|
-
|
|
50
32
|
console.error = function () {
|
|
51
33
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
52
34
|
args[_key] = arguments[_key];
|
|
53
35
|
}
|
|
54
|
-
|
|
55
36
|
if ("".concat(args[0]).match('useLayoutEffect')) {
|
|
56
37
|
return null;
|
|
57
38
|
} else {
|
|
58
39
|
err(args);
|
|
59
40
|
}
|
|
60
41
|
};
|
|
61
|
-
|
|
62
42
|
console.warn = function () {
|
|
63
43
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
64
44
|
args[_key2] = arguments[_key2];
|
|
65
45
|
}
|
|
66
|
-
|
|
67
46
|
if ("".concat(args[0]).match('estimation reached timeout')) {
|
|
68
47
|
return null;
|
|
69
48
|
} else {
|
|
70
49
|
err(args);
|
|
71
50
|
}
|
|
72
|
-
};
|
|
73
|
-
|
|
51
|
+
};
|
|
74
52
|
|
|
53
|
+
// eslint-disable-next-line no-unused-expressions
|
|
75
54
|
_yargs.default.command('jb2export', 'Creates a jbrowse 2 image snapshot').option('config', {
|
|
76
55
|
description: 'Path to config file',
|
|
77
56
|
type: 'string'
|
|
@@ -100,7 +79,8 @@ _yargs.default.command('jb2export', 'Creates a jbrowse 2 image snapshot').option
|
|
|
100
79
|
description: 'Set the width of the png canvas if using png output, default 2048px',
|
|
101
80
|
type: 'number',
|
|
102
81
|
default: 2048
|
|
103
|
-
})
|
|
82
|
+
})
|
|
83
|
+
// track types
|
|
104
84
|
.option('configtracks', {
|
|
105
85
|
description: 'A list of track labels from a config file',
|
|
106
86
|
type: 'array'
|
|
@@ -128,7 +108,9 @@ _yargs.default.command('jb2export', 'Creates a jbrowse 2 image snapshot').option
|
|
|
128
108
|
}).option('bedgz', {
|
|
129
109
|
description: 'A bed tabix file, the --bedgz can be used multiple times to specify multiple bedtabix files',
|
|
130
110
|
type: 'array'
|
|
131
|
-
})
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
// other
|
|
132
114
|
.option('out', {
|
|
133
115
|
description: 'File to output to. Default: out.svg. If a filename with extension .png is supplied the program will try to automatically execute rsvg-convert to convert it to png',
|
|
134
116
|
type: 'string',
|
|
@@ -139,12 +121,12 @@ _yargs.default.command('jb2export', 'Creates a jbrowse 2 image snapshot').option
|
|
|
139
121
|
}).option('defaultSession', {
|
|
140
122
|
description: 'Use the defaultSession from config.json',
|
|
141
123
|
type: 'boolean'
|
|
142
|
-
}).help().alias('help', 'h').alias('width', 'w').argv;
|
|
124
|
+
}).help().alias('help', 'h').alias('width', 'w').argv;
|
|
143
125
|
|
|
126
|
+
// prints to stderr the time it takes to execute cb
|
|
144
127
|
function time(_x) {
|
|
145
128
|
return _time.apply(this, arguments);
|
|
146
129
|
}
|
|
147
|
-
|
|
148
130
|
function _time() {
|
|
149
131
|
_time = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(cb) {
|
|
150
132
|
var start, ret;
|
|
@@ -155,12 +137,10 @@ function _time() {
|
|
|
155
137
|
start = +Date.now();
|
|
156
138
|
_context2.next = 3;
|
|
157
139
|
return cb();
|
|
158
|
-
|
|
159
140
|
case 3:
|
|
160
141
|
ret = _context2.sent;
|
|
161
142
|
console.log("Finished rendering: ".concat((+Date.now() - start) / 1000, "s"));
|
|
162
143
|
return _context2.abrupt("return", ret);
|
|
163
|
-
|
|
164
144
|
case 6:
|
|
165
145
|
case "end":
|
|
166
146
|
return _context2.stop();
|
|
@@ -170,11 +150,9 @@ function _time() {
|
|
|
170
150
|
}));
|
|
171
151
|
return _time.apply(this, arguments);
|
|
172
152
|
}
|
|
173
|
-
|
|
174
153
|
var args = (0, _parseArgv.standardizeArgv)((0, _parseArgv.parseArgv)(process.argv.slice(2)), ['bam', 'cram', 'vcfgz', 'hic', 'bigwig', 'bigbed', 'bedgz', 'gffgz', 'configtracks']);
|
|
175
154
|
time( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
176
155
|
var result, outfile, tmpobj, ls, _tmpobj, _ls;
|
|
177
|
-
|
|
178
156
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
179
157
|
while (1) {
|
|
180
158
|
switch (_context.prev = _context.next) {
|
|
@@ -182,24 +160,19 @@ time( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.de
|
|
|
182
160
|
_context.prev = 0;
|
|
183
161
|
_context.next = 3;
|
|
184
162
|
return (0, _renderRegion.renderRegion)(args);
|
|
185
|
-
|
|
186
163
|
case 3:
|
|
187
164
|
result = _context.sent;
|
|
188
165
|
outfile = args.out || 'out.svg';
|
|
189
|
-
|
|
190
166
|
if (outfile.endsWith('.png')) {
|
|
191
167
|
tmpobj = _tmp.default.fileSync({
|
|
192
168
|
mode: 420,
|
|
193
169
|
prefix: 'prefix-',
|
|
194
170
|
postfix: '.svg'
|
|
195
171
|
});
|
|
196
|
-
|
|
197
172
|
_fs.default.writeFileSync(tmpobj.name, result);
|
|
198
|
-
|
|
199
173
|
ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, tmpobj.name, '-o', outfile]);
|
|
200
174
|
console.log("rsvg-convert stderr: ".concat(ls.stderr.toString()));
|
|
201
175
|
console.log("rsvg-convert stdout: ".concat(ls.stdout.toString()));
|
|
202
|
-
|
|
203
176
|
_fs.default.unlinkSync(tmpobj.name);
|
|
204
177
|
} else if (outfile.endsWith('.pdf')) {
|
|
205
178
|
_tmpobj = _tmp.default.fileSync({
|
|
@@ -207,31 +180,26 @@ time( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.de
|
|
|
207
180
|
prefix: 'prefix-',
|
|
208
181
|
postfix: '.svg'
|
|
209
182
|
});
|
|
210
|
-
|
|
211
183
|
_fs.default.writeFileSync(_tmpobj.name, result);
|
|
212
|
-
|
|
213
184
|
_ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, _tmpobj.name, '-f', 'pdf', '-o', outfile]);
|
|
214
185
|
console.log("rsvg-convert stderr: ".concat(_ls.stderr.toString()));
|
|
215
186
|
console.log("rsvg-convert stdout: ".concat(_ls.stdout.toString()));
|
|
216
|
-
|
|
217
187
|
_fs.default.unlinkSync(_tmpobj.name);
|
|
218
188
|
} else {
|
|
219
189
|
_fs.default.writeFileSync(outfile, result);
|
|
220
|
-
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// manually exit the process after done rendering because autoruns or
|
|
221
193
|
// something similar otherwise keeps the nodejs process alive xref
|
|
222
194
|
// https://github.com/GMOD/jb2export/issues/6
|
|
223
|
-
|
|
224
|
-
|
|
225
195
|
process.exit(0);
|
|
226
196
|
_context.next = 13;
|
|
227
197
|
break;
|
|
228
|
-
|
|
229
198
|
case 9:
|
|
230
199
|
_context.prev = 9;
|
|
231
200
|
_context.t0 = _context["catch"](0);
|
|
232
201
|
console.error(_context.t0);
|
|
233
202
|
process.exit(1);
|
|
234
|
-
|
|
235
203
|
case 13:
|
|
236
204
|
case "end":
|
|
237
205
|
return _context.stop();
|
package/dist/index.testmod.js
CHANGED
|
@@ -1,34 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
-
|
|
7
5
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
-
|
|
9
6
|
var _renderRegion = require("./renderRegion");
|
|
10
|
-
|
|
11
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
12
|
-
|
|
13
8
|
var _jsdom = require("jsdom");
|
|
14
|
-
|
|
15
9
|
require("abortcontroller-polyfill/dist/abortcontroller-polyfill-only");
|
|
16
|
-
|
|
17
10
|
var _canvas = require("canvas");
|
|
18
|
-
|
|
19
11
|
var document = new _jsdom.JSDOM("...").window.document;
|
|
20
12
|
global.document = document;
|
|
21
13
|
global.nodeImage = _canvas.Image;
|
|
22
14
|
global.nodeCreateCanvas = _canvas.createCanvas;
|
|
23
|
-
|
|
24
15
|
function hashCode(str) {
|
|
25
16
|
var hash = 0;
|
|
26
17
|
var chr;
|
|
27
|
-
|
|
28
18
|
if (str.length === 0) {
|
|
29
19
|
return hash;
|
|
30
20
|
}
|
|
31
|
-
|
|
32
21
|
for (var i = 0; i < str.length; i++) {
|
|
33
22
|
chr = str.charCodeAt(i);
|
|
34
23
|
hash = (hash << 5) - hash + chr;
|
|
@@ -37,9 +26,9 @@ function hashCode(str) {
|
|
|
37
26
|
|
|
38
27
|
return hash;
|
|
39
28
|
}
|
|
29
|
+
var timeout = 20000;
|
|
40
30
|
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
// commented out for using remote files currently
|
|
43
32
|
xtest('renders a region with --session and --config args', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
44
33
|
var result;
|
|
45
34
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -51,22 +40,19 @@ xtest('renders a region with --session and --config args', /*#__PURE__*/(0, _asy
|
|
|
51
40
|
session: require.resolve('../test/clingen_session.json'),
|
|
52
41
|
config: require.resolve('../data/config.json')
|
|
53
42
|
});
|
|
54
|
-
|
|
55
43
|
case 2:
|
|
56
44
|
result = _context.sent;
|
|
57
|
-
|
|
58
45
|
_fs.default.writeFileSync('svg_from_config_and_session_param.svg', result);
|
|
59
|
-
|
|
60
46
|
expect(hashCode(result)).toMatchSnapshot();
|
|
61
|
-
|
|
62
47
|
case 5:
|
|
63
48
|
case "end":
|
|
64
49
|
return _context.stop();
|
|
65
50
|
}
|
|
66
51
|
}
|
|
67
52
|
}, _callee);
|
|
68
|
-
})), timeout);
|
|
53
|
+
})), timeout);
|
|
69
54
|
|
|
55
|
+
// commented out for using remote files currently
|
|
70
56
|
xtest('renders a region with --session, --tracks, and --assembly args', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
71
57
|
var result;
|
|
72
58
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
@@ -79,14 +65,10 @@ xtest('renders a region with --session, --tracks, and --assembly args', /*#__PUR
|
|
|
79
65
|
tracks: require.resolve('../data/tracks.json'),
|
|
80
66
|
assembly: require.resolve('../data/assembly.json')
|
|
81
67
|
});
|
|
82
|
-
|
|
83
68
|
case 2:
|
|
84
69
|
result = _context2.sent;
|
|
85
|
-
|
|
86
70
|
_fs.default.writeFileSync('svg_from_separate_session_and_tracks.svg', result);
|
|
87
|
-
|
|
88
71
|
expect(hashCode(result)).toMatchSnapshot();
|
|
89
|
-
|
|
90
72
|
case 5:
|
|
91
73
|
case "end":
|
|
92
74
|
return _context2.stop();
|
|
@@ -103,7 +85,6 @@ test('renders volvox with variety of args', /*#__PURE__*/(0, _asyncToGenerator2.
|
|
|
103
85
|
fp = function fp(f) {
|
|
104
86
|
return require.resolve('../data/volvox/' + f);
|
|
105
87
|
};
|
|
106
|
-
|
|
107
88
|
console.error = jest.fn();
|
|
108
89
|
_context3.next = 4;
|
|
109
90
|
return (0, _renderRegion.renderRegion)({
|
|
@@ -111,15 +92,11 @@ test('renders volvox with variety of args', /*#__PURE__*/(0, _asyncToGenerator2.
|
|
|
111
92
|
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')]]],
|
|
112
93
|
loc: 'ctgA:1000-2000'
|
|
113
94
|
});
|
|
114
|
-
|
|
115
95
|
case 4:
|
|
116
96
|
result = _context3.sent;
|
|
117
|
-
|
|
118
97
|
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
119
98
|
_fs.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam.svg'), result);
|
|
120
|
-
|
|
121
99
|
expect(result).toBeTruthy();
|
|
122
|
-
|
|
123
100
|
case 7:
|
|
124
101
|
case "end":
|
|
125
102
|
return _context3.stop();
|
|
@@ -136,7 +113,6 @@ test('renders volvox with variety of args (noRasterize)', /*#__PURE__*/(0, _asyn
|
|
|
136
113
|
fp = function fp(f) {
|
|
137
114
|
return require.resolve('../data/volvox/' + f);
|
|
138
115
|
};
|
|
139
|
-
|
|
140
116
|
console.error = jest.fn();
|
|
141
117
|
_context4.next = 4;
|
|
142
118
|
return (0, _renderRegion.renderRegion)({
|
|
@@ -145,23 +121,20 @@ test('renders volvox with variety of args (noRasterize)', /*#__PURE__*/(0, _asyn
|
|
|
145
121
|
loc: 'ctgA:1000-2000',
|
|
146
122
|
noRasterize: true
|
|
147
123
|
});
|
|
148
|
-
|
|
149
124
|
case 4:
|
|
150
125
|
result = _context4.sent;
|
|
151
|
-
|
|
152
126
|
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
153
127
|
_fs.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam_norasterize.svg'), result);
|
|
154
|
-
|
|
155
128
|
expect(result).toBeTruthy();
|
|
156
|
-
|
|
157
129
|
case 7:
|
|
158
130
|
case "end":
|
|
159
131
|
return _context4.stop();
|
|
160
132
|
}
|
|
161
133
|
}
|
|
162
134
|
}, _callee4);
|
|
163
|
-
})), timeout);
|
|
135
|
+
})), timeout);
|
|
164
136
|
|
|
137
|
+
// commented out for using remote files currently
|
|
165
138
|
xtest('configtracks arg with urls', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
166
139
|
var result;
|
|
167
140
|
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
@@ -175,15 +148,11 @@ xtest('configtracks arg with urls', /*#__PURE__*/(0, _asyncToGenerator2.default)
|
|
|
175
148
|
assembly: 'GRCh38',
|
|
176
149
|
loc: 'chr1:50,000-60,000'
|
|
177
150
|
});
|
|
178
|
-
|
|
179
151
|
case 2:
|
|
180
152
|
result = _context5.sent;
|
|
181
|
-
|
|
182
153
|
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
183
154
|
_fs.default.writeFileSync('svg_configtracks_simple.svg', result);
|
|
184
|
-
|
|
185
155
|
expect(result).toBeTruthy();
|
|
186
|
-
|
|
187
156
|
case 5:
|
|
188
157
|
case "end":
|
|
189
158
|
return _context5.stop();
|
|
@@ -204,15 +173,11 @@ test('configtracks arg with local files', /*#__PURE__*/(0, _asyncToGenerator2.de
|
|
|
204
173
|
assembly: 'volvox',
|
|
205
174
|
loc: 'ctgA:1-50,000'
|
|
206
175
|
});
|
|
207
|
-
|
|
208
176
|
case 2:
|
|
209
177
|
result = _context6.sent;
|
|
210
|
-
|
|
211
178
|
// can't do a snapshot test here, slightly inconsistent results(?)
|
|
212
179
|
_fs.default.writeFileSync(require.resolve('../test/svg_configtracks_local.svg'), result);
|
|
213
|
-
|
|
214
180
|
expect(result).toBeTruthy();
|
|
215
|
-
|
|
216
181
|
case 5:
|
|
217
182
|
case "end":
|
|
218
183
|
return _context6.stop();
|
|
@@ -232,14 +197,10 @@ xtest('renders --hic', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__
|
|
|
232
197
|
trackList: [['hic', ['https://s3.amazonaws.com/igv.broadinstitute.org/data/hic/intra_nofrag_30.hic']]],
|
|
233
198
|
loc: '1:2,000,000-10,000,000'
|
|
234
199
|
});
|
|
235
|
-
|
|
236
200
|
case 2:
|
|
237
201
|
result = _context7.sent;
|
|
238
|
-
|
|
239
202
|
_fs.default.writeFileSync(require.resolve('../test/svg_from_human_hic.svg'), result);
|
|
240
|
-
|
|
241
203
|
expect(result).toBeTruthy();
|
|
242
|
-
|
|
243
204
|
case 5:
|
|
244
205
|
case "end":
|
|
245
206
|
return _context7.stop();
|
package/dist/parseArgv.js
CHANGED
|
@@ -5,17 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.parseArgv = parseArgv;
|
|
7
7
|
exports.standardizeArgv = standardizeArgv;
|
|
8
|
-
|
|
9
8
|
function parseArgv(argv) {
|
|
10
9
|
var map = [];
|
|
11
|
-
|
|
12
10
|
while (argv.length) {
|
|
13
11
|
var val = argv[0].slice(2);
|
|
14
12
|
argv = argv.slice(1);
|
|
15
13
|
var next = argv.findIndex(function (arg) {
|
|
16
14
|
return arg.startsWith('-');
|
|
17
15
|
});
|
|
18
|
-
|
|
19
16
|
if (next !== -1) {
|
|
20
17
|
map.push([val, argv.slice(0, next)]);
|
|
21
18
|
argv = argv.slice(next);
|
|
@@ -24,10 +21,8 @@ function parseArgv(argv) {
|
|
|
24
21
|
break;
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
|
-
|
|
28
24
|
return map;
|
|
29
25
|
}
|
|
30
|
-
|
|
31
26
|
function standardizeArgv(args, trackTypes) {
|
|
32
27
|
var result = {
|
|
33
28
|
trackList: []
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _parseArgv = require("./parseArgv");
|
|
4
|
-
|
|
5
4
|
test('parse', function () {
|
|
6
5
|
var args = '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam --defaultSession --out out.svg --noRasterize';
|
|
7
6
|
expect((0, _parseArgv.parseArgv)(args.split(' '))).toEqual([['bam', ['dad.bam', 'color:red']], ['vcf', ['variants.vcf']], ['bam', ['mom.bam']], ['defaultSession', []], ['out', ['out.svg']], ['noRasterize', []]]);
|
package/dist/renderRegion.js
CHANGED
|
@@ -1,55 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
7
|
+
exports.muiCache = void 0;
|
|
8
8
|
exports.readData = readData;
|
|
9
9
|
exports.renderRegion = renderRegion;
|
|
10
|
-
|
|
11
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
-
|
|
13
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
-
|
|
15
12
|
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
|
|
16
|
-
|
|
17
13
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
18
|
-
|
|
19
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
20
|
-
|
|
21
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
22
|
-
|
|
23
16
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
24
|
-
|
|
17
|
+
var _react = _interopRequireDefault(require("react"));
|
|
25
18
|
var _reactLinearGenomeView = require("@jbrowse/react-linear-genome-view");
|
|
26
|
-
|
|
27
19
|
var _pluginLinearGenomeView = require("@jbrowse/plugin-linear-genome-view");
|
|
28
|
-
|
|
29
|
-
var
|
|
30
|
-
|
|
20
|
+
var _cache = _interopRequireDefault(require("@emotion/cache"));
|
|
21
|
+
var _react2 = require("@emotion/react");
|
|
31
22
|
var _path = _interopRequireDefault(require("path"));
|
|
32
|
-
|
|
33
23
|
var _fs = _interopRequireDefault(require("fs"));
|
|
34
|
-
|
|
35
24
|
var _util = require("./util");
|
|
36
|
-
|
|
37
25
|
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
26
|
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
|
-
|
|
41
27
|
function read(file) {
|
|
42
28
|
var res;
|
|
43
|
-
|
|
44
29
|
try {
|
|
45
|
-
res = JSON.parse(_fs.default.readFileSync(file));
|
|
30
|
+
res = JSON.parse(_fs.default.readFileSync(file, 'utf8'));
|
|
46
31
|
} catch (e) {
|
|
47
32
|
throw new Error("Failed to parse ".concat(file, " as JSON, use --fasta if you mean to pass a FASTA file"));
|
|
48
33
|
}
|
|
49
|
-
|
|
50
34
|
return res;
|
|
51
35
|
}
|
|
52
|
-
|
|
53
36
|
function makeLocation(file) {
|
|
54
37
|
return file.startsWith('http') ? {
|
|
55
38
|
uri: file
|
|
@@ -57,12 +40,10 @@ function makeLocation(file) {
|
|
|
57
40
|
localPath: file
|
|
58
41
|
};
|
|
59
42
|
}
|
|
60
|
-
|
|
61
43
|
function addRelativePaths(config, configPath) {
|
|
62
44
|
if ((0, _typeof2.default)(config) === 'object') {
|
|
63
45
|
for (var _i = 0, _Object$keys = Object.keys(config); _i < _Object$keys.length; _i++) {
|
|
64
46
|
var key = _Object$keys[_i];
|
|
65
|
-
|
|
66
47
|
if ((0, _typeof2.default)(config[key]) === 'object') {
|
|
67
48
|
addRelativePaths(config[key], configPath);
|
|
68
49
|
} else if (key === 'localPath') {
|
|
@@ -71,49 +52,48 @@ function addRelativePaths(config, configPath) {
|
|
|
71
52
|
}
|
|
72
53
|
}
|
|
73
54
|
}
|
|
74
|
-
|
|
75
55
|
function readData(opts) {
|
|
76
56
|
var _sessionData, _sessionData2, _configData$assemblie;
|
|
77
|
-
|
|
78
57
|
var asm = opts.assembly,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
58
|
+
config = opts.config,
|
|
59
|
+
session = opts.session,
|
|
60
|
+
fasta = opts.fasta,
|
|
61
|
+
aliases = opts.aliases,
|
|
62
|
+
defaultSession = opts.defaultSession,
|
|
63
|
+
_opts$trackList = opts.trackList,
|
|
64
|
+
trackList = _opts$trackList === void 0 ? [] : _opts$trackList,
|
|
65
|
+
tracks = opts.tracks;
|
|
87
66
|
var assemblyData = asm && _fs.default.existsSync(asm) ? read(asm) : undefined;
|
|
88
67
|
var tracksData = tracks ? read(tracks) : undefined;
|
|
89
68
|
var configData = config ? read(config) : {};
|
|
90
69
|
var sessionData = session ? read(session) : undefined;
|
|
91
|
-
|
|
92
70
|
if (config) {
|
|
93
71
|
addRelativePaths(configData, _path.default.dirname(_path.default.resolve(config)));
|
|
94
|
-
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// the session.json can be a raw session or a json file with a "session"
|
|
95
75
|
// attribute, which is what is exported via the "File->Export session" in
|
|
96
76
|
// jbrowse-web
|
|
97
|
-
|
|
98
|
-
|
|
99
77
|
if ((_sessionData = sessionData) !== null && _sessionData !== void 0 && _sessionData.session) {
|
|
100
78
|
sessionData = sessionData.session;
|
|
101
|
-
}
|
|
102
|
-
|
|
79
|
+
}
|
|
103
80
|
|
|
81
|
+
// only export first view
|
|
104
82
|
if ((_sessionData2 = sessionData) !== null && _sessionData2 !== void 0 && _sessionData2.views) {
|
|
105
83
|
sessionData.view = sessionData.views[0];
|
|
106
|
-
}
|
|
107
|
-
|
|
84
|
+
}
|
|
108
85
|
|
|
86
|
+
// use assembly from file if a file existed
|
|
109
87
|
if (assemblyData) {
|
|
110
88
|
configData.assembly = assemblyData;
|
|
111
|
-
}
|
|
89
|
+
}
|
|
90
|
+
// else check if it was an assembly name in a config file
|
|
112
91
|
else if ((_configData$assemblie = configData.assemblies) !== null && _configData$assemblie !== void 0 && _configData$assemblie.length) {
|
|
113
92
|
configData.assembly = asm ? configData.assemblies.find(function (entry) {
|
|
114
93
|
return entry.name === asm;
|
|
115
94
|
}) : configData.assemblies[0];
|
|
116
|
-
}
|
|
95
|
+
}
|
|
96
|
+
// else load fasta from command line
|
|
117
97
|
else if (fasta) {
|
|
118
98
|
var bgzip = fasta.endsWith('gz');
|
|
119
99
|
configData.assembly = {
|
|
@@ -129,7 +109,6 @@ function readData(opts) {
|
|
|
129
109
|
}
|
|
130
110
|
}
|
|
131
111
|
};
|
|
132
|
-
|
|
133
112
|
if (aliases) {
|
|
134
113
|
configData.assembly.refNameAliases = {
|
|
135
114
|
adapter: {
|
|
@@ -138,25 +117,22 @@ function readData(opts) {
|
|
|
138
117
|
}
|
|
139
118
|
};
|
|
140
119
|
}
|
|
141
|
-
}
|
|
142
|
-
|
|
120
|
+
}
|
|
143
121
|
|
|
122
|
+
// throw if still no assembly
|
|
144
123
|
if (!configData.assembly) {
|
|
145
124
|
throw new Error('no assembly specified, use --fasta to supply an indexed FASTA file (generated with samtools faidx yourfile.fa). see README for alternatives with --assembly and --config');
|
|
146
125
|
}
|
|
147
|
-
|
|
148
126
|
if (tracksData) {
|
|
149
127
|
configData.tracks = tracksData;
|
|
150
128
|
} else if (!configData.tracks) {
|
|
151
129
|
configData.tracks = [];
|
|
152
130
|
}
|
|
153
|
-
|
|
154
131
|
trackList.forEach(function (track) {
|
|
155
132
|
var _track = (0, _slicedToArray2.default)(track, 2),
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
133
|
+
type = _track[0],
|
|
134
|
+
_track$ = (0, _slicedToArray2.default)(_track[1], 1),
|
|
135
|
+
file = _track$[0];
|
|
160
136
|
if (type === 'bam') {
|
|
161
137
|
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
162
138
|
type: 'AlignmentsTrack',
|
|
@@ -173,7 +149,6 @@ function readData(opts) {
|
|
|
173
149
|
}
|
|
174
150
|
}]);
|
|
175
151
|
}
|
|
176
|
-
|
|
177
152
|
if (type === 'cram') {
|
|
178
153
|
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
179
154
|
type: 'AlignmentsTrack',
|
|
@@ -188,7 +163,6 @@ function readData(opts) {
|
|
|
188
163
|
}
|
|
189
164
|
}]);
|
|
190
165
|
}
|
|
191
|
-
|
|
192
166
|
if (type === 'bigwig') {
|
|
193
167
|
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
194
168
|
type: 'QuantitativeTrack',
|
|
@@ -201,7 +175,6 @@ function readData(opts) {
|
|
|
201
175
|
}
|
|
202
176
|
}]);
|
|
203
177
|
}
|
|
204
|
-
|
|
205
178
|
if (type === 'vcfgz') {
|
|
206
179
|
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
207
180
|
type: 'VariantTrack',
|
|
@@ -217,7 +190,6 @@ function readData(opts) {
|
|
|
217
190
|
}
|
|
218
191
|
}]);
|
|
219
192
|
}
|
|
220
|
-
|
|
221
193
|
if (type === 'gffgz') {
|
|
222
194
|
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
223
195
|
type: 'FeatureTrack',
|
|
@@ -233,7 +205,6 @@ function readData(opts) {
|
|
|
233
205
|
}
|
|
234
206
|
}]);
|
|
235
207
|
}
|
|
236
|
-
|
|
237
208
|
if (type === 'hic') {
|
|
238
209
|
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
239
210
|
type: 'HicTrack',
|
|
@@ -246,7 +217,6 @@ function readData(opts) {
|
|
|
246
217
|
}
|
|
247
218
|
}]);
|
|
248
219
|
}
|
|
249
|
-
|
|
250
220
|
if (type === 'bigbed') {
|
|
251
221
|
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
252
222
|
type: 'FeatureTrack',
|
|
@@ -259,7 +229,6 @@ function readData(opts) {
|
|
|
259
229
|
}
|
|
260
230
|
}]);
|
|
261
231
|
}
|
|
262
|
-
|
|
263
232
|
if (type === 'bedgz') {
|
|
264
233
|
configData.tracks = [].concat((0, _toConsumableArray2.default)(configData.tracks), [{
|
|
265
234
|
type: 'FeatureTrack',
|
|
@@ -276,81 +245,83 @@ function readData(opts) {
|
|
|
276
245
|
}]);
|
|
277
246
|
}
|
|
278
247
|
});
|
|
279
|
-
|
|
280
248
|
if (!defaultSession) {
|
|
281
249
|
// don't use defaultSession from config.json file, can result in assembly
|
|
282
250
|
// name confusion
|
|
283
251
|
delete configData.defaultSession;
|
|
284
|
-
}
|
|
285
|
-
|
|
252
|
+
}
|
|
286
253
|
|
|
254
|
+
// only allow an external manually specified session
|
|
287
255
|
if (sessionData) {
|
|
288
256
|
configData.defaultSession = sessionData;
|
|
289
257
|
}
|
|
290
|
-
|
|
291
258
|
return configData;
|
|
292
259
|
}
|
|
293
260
|
|
|
261
|
+
// without this, the styles can become messed up especially in lgv header
|
|
262
|
+
// xref https://github.com/garronej/tss-react/issues/25
|
|
263
|
+
var muiCache = (0, _cache.default)({
|
|
264
|
+
key: 'mui',
|
|
265
|
+
prepend: true
|
|
266
|
+
});
|
|
267
|
+
exports.muiCache = muiCache;
|
|
294
268
|
function renderRegion() {
|
|
295
269
|
return _renderRegion.apply(this, arguments);
|
|
296
270
|
}
|
|
297
|
-
|
|
298
271
|
function _renderRegion() {
|
|
299
272
|
_renderRegion = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
300
273
|
var opts,
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
274
|
+
model,
|
|
275
|
+
loc,
|
|
276
|
+
_opts$width,
|
|
277
|
+
width,
|
|
278
|
+
_opts$trackList2,
|
|
279
|
+
trackList,
|
|
280
|
+
sessionParam,
|
|
281
|
+
defaultSession,
|
|
282
|
+
session,
|
|
283
|
+
view,
|
|
284
|
+
assemblyManager,
|
|
285
|
+
_assemblyManager$asse,
|
|
286
|
+
assembly,
|
|
287
|
+
process,
|
|
288
|
+
_args = arguments;
|
|
317
289
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
318
290
|
while (1) {
|
|
319
291
|
switch (_context.prev = _context.next) {
|
|
320
292
|
case 0:
|
|
321
293
|
process = function _process(trackEntry) {
|
|
322
294
|
var extra = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
|
|
323
|
-
|
|
324
295
|
var _trackEntry = (0, _slicedToArray2.default)(trackEntry, 2),
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
296
|
+
_trackEntry$ = (0, _toArray2.default)(_trackEntry[1]),
|
|
297
|
+
track = _trackEntry$[0],
|
|
298
|
+
opts = _trackEntry$.slice(1);
|
|
329
299
|
var currentTrack = view.showTrack(extra(track));
|
|
330
300
|
var display = currentTrack.displays[0];
|
|
331
301
|
opts.forEach(function (opt) {
|
|
332
302
|
// apply height to any track
|
|
333
303
|
if (opt.startsWith('height:')) {
|
|
334
304
|
var _opt$split = opt.split(':'),
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
305
|
+
_opt$split2 = (0, _slicedToArray2.default)(_opt$split, 2),
|
|
306
|
+
height = _opt$split2[1];
|
|
338
307
|
display.setHeight(+height);
|
|
339
|
-
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// apply sort to pileup
|
|
340
311
|
else if (opt.startsWith('sort:')) {
|
|
341
312
|
var _opt$split3 = opt.split(':'),
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
313
|
+
_opt$split4 = (0, _slicedToArray2.default)(_opt$split3, 3),
|
|
314
|
+
type = _opt$split4[1],
|
|
315
|
+
tag = _opt$split4[2];
|
|
346
316
|
display.PileupDisplay.setSortedBy(type, tag);
|
|
347
|
-
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// apply color scheme to pileup
|
|
348
320
|
else if (opt.startsWith('color:')) {
|
|
349
321
|
var _opt$split5 = opt.split(':'),
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
322
|
+
_opt$split6 = (0, _slicedToArray2.default)(_opt$split5, 3),
|
|
323
|
+
_type = _opt$split6[1],
|
|
324
|
+
_tag = _opt$split6[2];
|
|
354
325
|
if (display.PileupDisplay) {
|
|
355
326
|
display.PileupDisplay.setColorScheme({
|
|
356
327
|
type: _type,
|
|
@@ -359,69 +330,74 @@ function _renderRegion() {
|
|
|
359
330
|
} else {
|
|
360
331
|
display.setColor(_type);
|
|
361
332
|
}
|
|
362
|
-
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// force track to render even if maxbpperpx limit hit...
|
|
363
336
|
else if (opt.startsWith('force:')) {
|
|
364
337
|
var _opt$split7 = opt.split(':'),
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
338
|
+
_opt$split8 = (0, _slicedToArray2.default)(_opt$split7, 2),
|
|
339
|
+
force = _opt$split8[1];
|
|
368
340
|
if (force) {
|
|
369
341
|
display.setUserFeatureScreenDensity(Number.MAX_VALUE);
|
|
370
342
|
}
|
|
371
|
-
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// apply wiggle autoscale
|
|
372
346
|
else if (opt.startsWith('autoscale:')) {
|
|
373
347
|
var _opt$split9 = opt.split(':'),
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
348
|
+
_opt$split10 = (0, _slicedToArray2.default)(_opt$split9, 2),
|
|
349
|
+
autoscale = _opt$split10[1];
|
|
377
350
|
display.setAutoscale(autoscale);
|
|
378
|
-
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// apply min and max score to wiggle
|
|
379
354
|
else if (opt.startsWith('minmax:')) {
|
|
380
355
|
var _opt$split11 = opt.split(':'),
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
356
|
+
_opt$split12 = (0, _slicedToArray2.default)(_opt$split11, 3),
|
|
357
|
+
min = _opt$split12[1],
|
|
358
|
+
max = _opt$split12[2];
|
|
385
359
|
display.setMinScore(+min);
|
|
386
360
|
display.setMaxScore(+max);
|
|
387
|
-
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// apply linear or log scale to wiggle
|
|
388
364
|
else if (opt.startsWith('scaletype:')) {
|
|
389
365
|
var _opt$split13 = opt.split(':'),
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
366
|
+
_opt$split14 = (0, _slicedToArray2.default)(_opt$split13, 2),
|
|
367
|
+
scaletype = _opt$split14[1];
|
|
393
368
|
display.setScaleType(scaletype);
|
|
394
|
-
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// draw crosshatches on wiggle
|
|
395
372
|
else if (opt.startsWith('crosshatch:')) {
|
|
396
373
|
var _opt$split15 = opt.split(':'),
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
374
|
+
_opt$split16 = (0, _slicedToArray2.default)(_opt$split15, 2),
|
|
375
|
+
val = _opt$split16[1];
|
|
400
376
|
display.setCrossHatches((0, _util.booleanize)(val));
|
|
401
|
-
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// turn off fill on bigwig with fill:false
|
|
402
380
|
else if (opt.startsWith('fill:')) {
|
|
403
381
|
var _opt$split17 = opt.split(':'),
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
382
|
+
_opt$split18 = (0, _slicedToArray2.default)(_opt$split17, 2),
|
|
383
|
+
_val = _opt$split18[1];
|
|
407
384
|
display.setFill((0, _util.booleanize)(_val));
|
|
408
|
-
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
// set resolution:superfine to use finer bigwig bin size
|
|
409
388
|
else if (opt.startsWith('resolution:')) {
|
|
410
389
|
var _opt$split19 = opt.split(':'),
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
390
|
+
_opt$split20 = (0, _slicedToArray2.default)(_opt$split19, 2),
|
|
391
|
+
_val2 = _opt$split20[1];
|
|
414
392
|
if (_val2 === 'fine') {
|
|
415
393
|
_val2 = 10;
|
|
416
394
|
} else if (_val2 === 'superfine') {
|
|
417
395
|
_val2 = 100;
|
|
418
396
|
}
|
|
419
|
-
|
|
420
397
|
display.setResolution(_val2);
|
|
421
398
|
}
|
|
422
399
|
});
|
|
423
400
|
};
|
|
424
|
-
|
|
425
401
|
opts = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
426
402
|
model = (0, _reactLinearGenomeView.createViewState)(readData(opts));
|
|
427
403
|
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;
|
|
@@ -429,41 +405,45 @@ function _renderRegion() {
|
|
|
429
405
|
view = session.view;
|
|
430
406
|
assemblyManager = model.assemblyManager;
|
|
431
407
|
view.setWidth(width);
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
}
|
|
453
|
-
} else if (!sessionParam && !defaultSession) {
|
|
408
|
+
if (!loc) {
|
|
409
|
+
_context.next = 18;
|
|
410
|
+
break;
|
|
411
|
+
}
|
|
412
|
+
_assemblyManager$asse = (0, _slicedToArray2.default)(assemblyManager.assemblies, 1), assembly = _assemblyManager$asse[0];
|
|
413
|
+
if (!(loc === 'all')) {
|
|
414
|
+
_context.next = 14;
|
|
415
|
+
break;
|
|
416
|
+
}
|
|
417
|
+
view.showAllRegionsInAssembly(assembly.name);
|
|
418
|
+
_context.next = 16;
|
|
419
|
+
break;
|
|
420
|
+
case 14:
|
|
421
|
+
_context.next = 16;
|
|
422
|
+
return view.navToLocString(loc, assembly.name);
|
|
423
|
+
case 16:
|
|
424
|
+
_context.next = 19;
|
|
425
|
+
break;
|
|
426
|
+
case 18:
|
|
427
|
+
if (!sessionParam && !defaultSession) {
|
|
454
428
|
console.warn('No loc specified');
|
|
455
429
|
}
|
|
456
|
-
|
|
430
|
+
case 19:
|
|
457
431
|
trackList.forEach(function (track) {
|
|
458
432
|
return process(track, function (extra) {
|
|
459
433
|
return _path.default.basename(extra);
|
|
460
434
|
});
|
|
461
435
|
});
|
|
462
|
-
return _context.abrupt("return", (0, _pluginLinearGenomeView.renderToSvg)(view, _objectSpread({
|
|
436
|
+
return _context.abrupt("return", (0, _pluginLinearGenomeView.renderToSvg)(view, _objectSpread(_objectSpread({
|
|
463
437
|
rasterizeLayers: !opts.noRasterize
|
|
464
|
-
}, opts)
|
|
465
|
-
|
|
466
|
-
|
|
438
|
+
}, opts), {}, {
|
|
439
|
+
Wrapper: function Wrapper(_ref) {
|
|
440
|
+
var children = _ref.children;
|
|
441
|
+
return /*#__PURE__*/_react.default.createElement(_react2.CacheProvider, {
|
|
442
|
+
value: muiCache
|
|
443
|
+
}, children);
|
|
444
|
+
}
|
|
445
|
+
})));
|
|
446
|
+
case 21:
|
|
467
447
|
case "end":
|
|
468
448
|
return _context.stop();
|
|
469
449
|
}
|
package/dist/util.js
CHANGED
|
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.booleanize = void 0;
|
|
7
|
-
|
|
8
7
|
// nice helper function from https://stackoverflow.com/questions/263965/
|
|
9
8
|
var booleanize = function booleanize(string) {
|
|
10
9
|
return string === 'false' ? false : !!string;
|
|
11
10
|
};
|
|
12
|
-
|
|
13
11
|
exports.booleanize = booleanize;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/img",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"author": "JBrowse Team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -18,18 +18,14 @@
|
|
|
18
18
|
"test": "jest",
|
|
19
19
|
"prebuild": "rm -rf dist",
|
|
20
20
|
"build": "babel --root-mode upward src -d dist",
|
|
21
|
-
"preversion": "npm run build"
|
|
22
|
-
"snap": "npm run build && node dist/index.js --config data/config.json --defaultSession --out out.svg",
|
|
23
|
-
"snappng": "npm run build && node dist/index.js --config data/config.json --defaultSession --out out.png",
|
|
24
|
-
"snappdf": "npm run build && node dist/index.js --config data/config.json --defaultSession --out out.pdf",
|
|
25
|
-
"snapjpg": "npm run build && node dist/index.js --config data/config.json --defaultSession --out out.jpg",
|
|
26
|
-
"tiny": "npm run build && node dist/index.js --fasta data/volvox/volvox.fa --bam data/volvox/volvox-sorted.bam --loc ctgA:1-5000 --out tiny.svg",
|
|
27
|
-
"tinypng": "npm run build && node dist/index.js --fasta data/volvox/volvox.fa --bam data/volvox/volvox-sorted.bam --loc ctgA:1-5000 --out out.png"
|
|
21
|
+
"preversion": "npm run build"
|
|
28
22
|
},
|
|
29
23
|
"dependencies": {
|
|
30
24
|
"@babel/runtime": "^7.17.9",
|
|
31
|
-
"@
|
|
32
|
-
"@
|
|
25
|
+
"@emotion/cache": "^11.7.1",
|
|
26
|
+
"@emotion/react": "^11.9.0",
|
|
27
|
+
"@jbrowse/plugin-linear-genome-view": "^2.2.0",
|
|
28
|
+
"@jbrowse/react-linear-genome-view": "^2.2.0",
|
|
33
29
|
"abortcontroller-polyfill": "^1.7.3",
|
|
34
30
|
"canvas": "^2.9.1",
|
|
35
31
|
"jsdom": "^19.0.0",
|
|
@@ -43,5 +39,5 @@
|
|
|
43
39
|
"publishConfig": {
|
|
44
40
|
"access": "public"
|
|
45
41
|
},
|
|
46
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "cf31db8d833117f8822510340664fb3f045975cb"
|
|
47
43
|
}
|