@jbrowse/img 1.5.8 → 1.6.5

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 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"));
@@ -85,46 +89,72 @@ _yargs.default.command('jb2export', 'Creates a jbrowse 2 image snapshot').option
85
89
  type: 'boolean'
86
90
  }).help().alias('help', 'h').alias('width', 'w').argv; // prints to stderr the time it takes to execute cb
87
91
 
88
- async function time(cb) {
89
- const start = +Date.now();
90
- const ret = await cb();
91
- console.log(`Finished rendering: ${(+Date.now() - start) / 1000}s`);
92
- return ret;
92
+ function time(_x) {
93
+ return _time.apply(this, arguments);
94
+ }
95
+
96
+ function _time() {
97
+ _time = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(cb) {
98
+ var start, ret;
99
+ return _regenerator.default.wrap(function _callee$(_context) {
100
+ while (1) {
101
+ switch (_context.prev = _context.next) {
102
+ case 0:
103
+ start = +Date.now();
104
+ _context.next = 3;
105
+ return cb();
106
+
107
+ case 3:
108
+ ret = _context.sent;
109
+ console.log("Finished rendering: ".concat((+Date.now() - start) / 1000, "s"));
110
+ return _context.abrupt("return", ret);
111
+
112
+ case 6:
113
+ case "end":
114
+ return _context.stop();
115
+ }
116
+ }
117
+ }, _callee);
118
+ }));
119
+ return _time.apply(this, arguments);
93
120
  }
94
121
 
95
- const args = (0, _parseArgv.standardizeArgv)((0, _parseArgv.parseArgv)(process.argv.slice(2)), ['bam', 'cram', 'vcfgz', 'hic', 'bigwig', 'bigbed', 'bedgz', 'gffgz', 'configtracks']);
96
- time(() => (0, _renderRegion.renderRegion)(args).then(result => {
97
- const outfile = args.out || 'out.svg';
98
-
99
- if (outfile.endsWith('.png')) {
100
- const tmpobj = _tmp.default.fileSync({
101
- mode: 0o644,
102
- prefix: 'prefix-',
103
- postfix: '.svg'
104
- });
105
-
106
- _fs.default.writeFileSync(tmpobj.name, result);
107
-
108
- const ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, tmpobj.name, '-o', outfile]);
109
- console.log(`rsvg-convert stderr: ${ls.stderr.toString()}`);
110
- console.log(`rsvg-convert stdout: ${ls.stdout.toString()}`);
111
-
112
- _fs.default.unlinkSync(tmpobj.name);
113
- } else if (outfile.endsWith('.pdf')) {
114
- const tmpobj = _tmp.default.fileSync({
115
- mode: 0o644,
116
- prefix: 'prefix-',
117
- postfix: '.svg'
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()}`);
125
-
126
- _fs.default.unlinkSync(tmpobj.name);
127
- } else {
128
- _fs.default.writeFileSync(outfile, result);
129
- }
130
- }, console.error));
122
+ var args = (0, _parseArgv.standardizeArgv)((0, _parseArgv.parseArgv)(process.argv.slice(2)), ['bam', 'cram', 'vcfgz', 'hic', 'bigwig', 'bigbed', 'bedgz', 'gffgz', 'configtracks']);
123
+ time(function () {
124
+ return (0, _renderRegion.renderRegion)(args).then(function (result) {
125
+ var outfile = args.out || 'out.svg';
126
+
127
+ if (outfile.endsWith('.png')) {
128
+ var tmpobj = _tmp.default.fileSync({
129
+ mode: 420,
130
+ prefix: 'prefix-',
131
+ postfix: '.svg'
132
+ });
133
+
134
+ _fs.default.writeFileSync(tmpobj.name, result);
135
+
136
+ var ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, tmpobj.name, '-o', outfile]);
137
+ console.log("rsvg-convert stderr: ".concat(ls.stderr.toString()));
138
+ console.log("rsvg-convert stdout: ".concat(ls.stdout.toString()));
139
+
140
+ _fs.default.unlinkSync(tmpobj.name);
141
+ } else if (outfile.endsWith('.pdf')) {
142
+ var _tmpobj = _tmp.default.fileSync({
143
+ mode: 420,
144
+ prefix: 'prefix-',
145
+ postfix: '.svg'
146
+ });
147
+
148
+ _fs.default.writeFileSync(_tmpobj.name, result);
149
+
150
+ var _ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, _tmpobj.name, '-f', 'pdf', '-o', outfile]);
151
+
152
+ console.log("rsvg-convert stderr: ".concat(_ls.stderr.toString()));
153
+ console.log("rsvg-convert stdout: ".concat(_ls.stdout.toString()));
154
+
155
+ _fs.default.unlinkSync(_tmpobj.name);
156
+ } else {
157
+ _fs.default.writeFileSync(outfile, result);
158
+ }
159
+ }, console.error);
160
+ });
@@ -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
- let hash = 0;
11
- let chr;
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 (let i = 0; i < str.length; i++) {
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
- const timeout = 20000; // commented out for using remote files currently
27
-
28
- xtest('renders a region with --session and --config args', async () => {
29
- const result = await (0, _renderRegion.renderRegion)({
30
- session: require.resolve('../test/clingen_session.json'),
31
- config: require.resolve('../data/config.json')
32
- });
33
-
34
- _fs.default.writeFileSync('svg_from_config_and_session_param.svg', result);
35
-
36
- expect(hashCode(result)).toMatchSnapshot();
37
- }, timeout); // commented out for using remote files currently
38
-
39
- xtest('renders a region with --session, --tracks, and --assembly args', async () => {
40
- const result = await (0, _renderRegion.renderRegion)({
41
- session: require.resolve('../test/clingen_session.json'),
42
- tracks: require.resolve('../data/tracks.json'),
43
- assembly: require.resolve('../data/assembly.json')
44
- });
45
-
46
- _fs.default.writeFileSync('svg_from_separate_session_and_tracks.svg', result);
47
-
48
- expect(hashCode(result)).toMatchSnapshot();
49
- }, timeout);
50
- test('renders volvox with variety of args', async () => {
51
- console.error = jest.fn();
52
- const result = await (0, _renderRegion.renderRegion)({
53
- fasta: require.resolve('../data/volvox/volvox.fa'),
54
- 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')]]],
55
- loc: 'ctgA:1000-2000'
56
- }); // can't do a snapshot test here, slightly inconsistent results(?)
57
-
58
- _fs.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam.svg'), result);
59
-
60
- expect(result).toBeTruthy();
61
- }, timeout); // commented out for using remote files currently
62
-
63
- xtest('configtracks arg with urls', async () => {
64
- const result = await (0, _renderRegion.renderRegion)({
65
- config: 'data/config.json',
66
- trackList: [['configtracks', ['ncbi_refseq_109_hg38']]],
67
- assembly: 'GRCh38',
68
- loc: 'chr1:50,000-60,000'
69
- }); // can't do a snapshot test here, slightly inconsistent results(?)
70
-
71
- _fs.default.writeFileSync('svg_configtracks_simple.svg', result);
72
-
73
- expect(result).toBeTruthy();
74
- }, timeout * 3);
75
- test('configtracks arg with local files', async () => {
76
- const result = await (0, _renderRegion.renderRegion)({
77
- config: require.resolve('../data/volvox/config.json'),
78
- trackList: [['configtracks', ['volvox_sv']]],
79
- assembly: 'volvox',
80
- loc: 'ctgA:1-50,000'
81
- }); // can't do a snapshot test here, slightly inconsistent results(?)
82
-
83
- _fs.default.writeFileSync(require.resolve('../test/svg_configtracks_local.svg'), result);
84
-
85
- expect(result).toBeTruthy();
86
- }, timeout * 3);
87
- xtest('renders --hic', async () => {
88
- const result = await (0, _renderRegion.renderRegion)({
89
- fasta: 'https://jbrowse.org/genomes/hg19/fasta/hg19.fa.gz',
90
- trackList: [['hic', ['https://s3.amazonaws.com/igv.broadinstitute.org/data/hic/intra_nofrag_30.hic']]],
91
- loc: '1:2,000,000-10,000,000'
92
- });
93
-
94
- _fs.default.writeFileSync(require.resolve('../test/svg_from_human_hic.svg'), result);
95
-
96
- expect(result).toBeTruthy();
97
- }, 20000);
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
- const map = [];
10
+ var map = [];
11
11
 
12
12
  while (argv.length) {
13
- const val = argv[0].slice(2);
13
+ var val = argv[0].slice(2);
14
14
  argv = argv.slice(1);
15
- const next = argv.findIndex(arg => arg.startsWith('-'));
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
- const result = {
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
- const args = '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam --defaultSession --out out.svg --noRasterize';
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
  });
@@ -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
- let res;
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(`Failed to parse ${file} as JSON, use --fasta if you mean to pass a FASTA file`);
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 (typeof config === 'object') {
45
- for (const key of Object.keys(config)) {
46
- if (typeof config[key] === 'object') {
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
- const {
59
- assembly: asm,
60
- config,
61
- session,
62
- fasta,
63
- aliases,
64
- defaultSession,
65
- trackList = [],
66
- tracks
67
- } = opts;
68
- const assemblyData = asm && _fs.default.existsSync(asm) ? read(asm) : undefined;
69
- const tracksData = tracks ? read(tracks) : undefined;
70
- const configData = config ? read(config) : {};
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(entry => entry.name === asm) : configData.assemblies[0];
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
- const bgzip = fasta.endsWith('gz');
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
- const [type, [file]] = track;
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 = [...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 = [...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 = [...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 = [...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 = [...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 = [...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 = [...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 = [...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
- async function renderRegion(opts = {}) {
271
- const model = (0, _reactLinearGenomeView.createViewState)(readData(opts));
272
- const {
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
- if (Boolean(force)) {
342
- display.setUserBpPerPxLimit(Number.MAX_VALUE);
343
- }
344
- } // apply wiggle autoscale
345
- else if (opt.startsWith('autoscale:')) {
346
- const [, autoscale] = opt.split(':');
347
- display.setAutoscale(autoscale);
348
- } // apply min and max score to wiggle
349
- else if (opt.startsWith('minmax:')) {
350
- const [, min, max] = opt.split(':');
351
- display.setMinScore(+min);
352
- display.setMaxScore(+max);
353
- } // apply linear or log scale to wiggle
354
- else if (opt.startsWith('scaletype:')) {
355
- const [, scaletype] = opt.split(':');
356
- display.setScaleType(scaletype);
357
- } // draw crosshatches on wiggle
358
- else if (opt.startsWith('crosshatch:')) {
359
- const [, val] = opt.split(':');
360
- display.setCrossHatches((0, _util.booleanize)(val));
361
- } // turn off fill on bigwig with fill:false
362
- else if (opt.startsWith('fill:')) {
363
- const [, val] = opt.split(':');
364
- display.setFill((0, _util.booleanize)(val));
365
- } // set resolution:superfine to use finer bigwig bin size
366
- else if (opt.startsWith('resolution:')) {
367
- let [, val] = opt.split(':');
368
-
369
- if (val === 'fine') {
370
- val = 10;
371
- } else if (val === 'superfine') {
372
- val = 100;
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
- const booleanize = string => string === 'false' ? false : !!string;
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,10 @@
1
1
  {
2
2
  "name": "@jbrowse/img",
3
- "version": "1.5.8",
3
+ "version": "1.6.5",
4
4
  "main": "index.js",
5
5
  "author": "JBrowse Team",
6
6
  "license": "Apache-2.0",
7
+ "engines": ">=16",
7
8
  "bin": {
8
9
  "jb2export": "./dist/bin.js"
9
10
  },
@@ -14,7 +15,7 @@
14
15
  "pretest": "cd ../jbrowse-react-linear-genome-view; yarn build; cd ../jb2export",
15
16
  "test": "jest",
16
17
  "prebuild": "rm -rf dist",
17
- "build": "babel src -d dist",
18
+ "build": "babel --root-mode upward src -d dist",
18
19
  "preversion": "npm run build",
19
20
  "snap": "npm run build && node dist/index.js --config data/config.json --defaultSession --out out.svg",
20
21
  "snappng": "npm run build && node dist/index.js --config data/config.json --defaultSession --out out.png",
@@ -25,8 +26,8 @@
25
26
  "postversion": "git push --follow-tags"
26
27
  },
27
28
  "dependencies": {
28
- "@jbrowse/plugin-linear-genome-view": "^1.5.8",
29
- "@jbrowse/react-linear-genome-view": "^1.5.8",
29
+ "@jbrowse/plugin-linear-genome-view": "^1.6.5",
30
+ "@jbrowse/react-linear-genome-view": "^1.6.5",
30
31
  "mobx": "^5.10.1",
31
32
  "react": "^17.0.1",
32
33
  "react-dom": "^17.0.1",
@@ -36,5 +37,5 @@
36
37
  "publishConfig": {
37
38
  "access": "public"
38
39
  },
39
- "gitHead": "f16afc382629a4a830f9040410a9ff1a3a328918"
40
+ "gitHead": "ab41f017840ffef09f5d60b008281cedaa5abe26"
40
41
  }