@jbrowse/img 2.10.1 → 2.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -60
- package/dist/renderRegion.js +22 -1
- package/dist/setupEnv.d.ts +1 -0
- package/dist/setupEnv.js +66 -0
- package/esm/index.d.ts +1 -1
- package/esm/index.js +2 -37
- package/esm/renderRegion.js +22 -1
- package/esm/setupEnv.d.ts +1 -0
- package/esm/setupEnv.js +40 -0
- package/package.json +5 -7
package/README.md
CHANGED
|
@@ -26,9 +26,6 @@ your path
|
|
|
26
26
|
npm install -g @jbrowse/img
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
If you are using npm version 7+ (released 2021) you may also need to add
|
|
30
|
-
`--legacy-peer-deps`
|
|
31
|
-
|
|
32
29
|
If you are a developer and want to modify the code, see
|
|
33
30
|
[developer guide](DEVELOPER.md) for details
|
|
34
31
|
|
|
@@ -117,6 +114,14 @@ zoomed too far out. Add force:true to make it render
|
|
|
117
114
|
jb2export --bam file.bam force:true --loc 1:1,100,000-1,200,000 --fasta hg19.fa
|
|
118
115
|
```
|
|
119
116
|
|
|
117
|
+
### Render only the SNPCoverage track of an alignments track
|
|
118
|
+
|
|
119
|
+
Renders only the snpcov subtrack at height 600 for file.bam
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
jb2export --bam file.bam snpcov height:600
|
|
123
|
+
```
|
|
124
|
+
|
|
120
125
|
### Render the sequence track
|
|
121
126
|
|
|
122
127
|
If you are using the fasta argument, the refseq will be named "refseq" and can
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
package/dist/index.js
CHANGED
|
@@ -1,74 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
6
|
const fs_1 = __importDefault(require("fs"));
|
|
30
7
|
const yargs_1 = __importDefault(require("yargs"));
|
|
31
|
-
require("abortcontroller-polyfill/dist/abortcontroller-polyfill-only");
|
|
32
|
-
const node_fetch_1 = __importStar(require("node-fetch"));
|
|
33
|
-
const jsdom_1 = require("jsdom");
|
|
34
|
-
const canvas_1 = require("canvas");
|
|
35
8
|
// locals
|
|
36
9
|
const parseArgv_1 = require("./parseArgv");
|
|
37
10
|
const renderRegion_1 = require("./renderRegion");
|
|
38
11
|
const util_1 = require("./util");
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// @ts-expect-error
|
|
42
|
-
global.nodeCreateCanvas = canvas_1.createCanvas;
|
|
43
|
-
const { document } = new jsdom_1.JSDOM(`...`).window;
|
|
44
|
-
global.document = document;
|
|
45
|
-
// force use of node-fetch polyfill, even if node 18+ fetch is available.
|
|
46
|
-
// native node 18+ fetch currently gives errors related to unidici and
|
|
47
|
-
// Uint8Array:
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
// % node --version
|
|
51
|
-
// v18.12.1
|
|
52
|
-
//
|
|
53
|
-
// % jb2export --fasta https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa --bam https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam --loc ctgA:1-1000 --out out4.svg
|
|
54
|
-
// [
|
|
55
|
-
// '(node:1387934) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time\n' +
|
|
56
|
-
// '(Use `node --trace-warnings ...` to show where the warning was created)'
|
|
57
|
-
// ]
|
|
58
|
-
// [
|
|
59
|
-
// RangeError: offset is out of bounds
|
|
60
|
-
// at Uint8Array.set (<anonymous>)
|
|
61
|
-
// at Response.arrayBuffer (node:internal/deps/undici/undici:6117:23)
|
|
62
|
-
// at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
|
|
63
|
-
// ]
|
|
64
|
-
// @ts-expect-error
|
|
65
|
-
global.fetch = node_fetch_1.default;
|
|
66
|
-
// @ts-expect-error
|
|
67
|
-
global.Headers = node_fetch_1.Headers;
|
|
68
|
-
// @ts-expect-error
|
|
69
|
-
global.Response = node_fetch_1.Response;
|
|
70
|
-
// @ts-expect-error
|
|
71
|
-
global.Request = node_fetch_1.Request;
|
|
12
|
+
const setupEnv_1 = __importDefault(require("./setupEnv"));
|
|
13
|
+
(0, setupEnv_1.default)();
|
|
72
14
|
const err = console.error;
|
|
73
15
|
console.error = (...p) => {
|
|
74
16
|
if (!`${p[0]}`.match('useLayoutEffect')) {
|
package/dist/renderRegion.js
CHANGED
|
@@ -119,7 +119,8 @@ function readData({ assembly: asm, config, session, fasta, aliases, cytobands, d
|
|
|
119
119
|
configData.tracks = [];
|
|
120
120
|
}
|
|
121
121
|
trackList.forEach(track => {
|
|
122
|
-
const [type,
|
|
122
|
+
const [type, opts] = track;
|
|
123
|
+
const [file] = opts;
|
|
123
124
|
if (type === 'bam') {
|
|
124
125
|
configData.tracks = [
|
|
125
126
|
...configData.tracks,
|
|
@@ -134,6 +135,16 @@ function readData({ assembly: asm, config, session, fasta, aliases, cytobands, d
|
|
|
134
135
|
index: { location: makeLocation(file + '.bai') },
|
|
135
136
|
sequenceAdapter: configData.assembly.sequence.adapter,
|
|
136
137
|
},
|
|
138
|
+
...(opts.includes('snpcov')
|
|
139
|
+
? {
|
|
140
|
+
displays: [
|
|
141
|
+
{
|
|
142
|
+
type: 'LinearSNPCoverageDisplay',
|
|
143
|
+
displayId: path_1.default.basename(file) + '-' + Math.random(),
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
}
|
|
147
|
+
: {}),
|
|
137
148
|
},
|
|
138
149
|
];
|
|
139
150
|
}
|
|
@@ -151,6 +162,16 @@ function readData({ assembly: asm, config, session, fasta, aliases, cytobands, d
|
|
|
151
162
|
craiLocation: makeLocation(file + '.crai'),
|
|
152
163
|
sequenceAdapter: configData.assembly.sequence.adapter,
|
|
153
164
|
},
|
|
165
|
+
...(opts.includes('snpcov')
|
|
166
|
+
? {
|
|
167
|
+
displays: [
|
|
168
|
+
{
|
|
169
|
+
type: 'LinearSNPCoverageDisplay',
|
|
170
|
+
displayId: path_1.default.basename(file) + '-' + Math.random(),
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
}
|
|
174
|
+
: {}),
|
|
154
175
|
},
|
|
155
176
|
];
|
|
156
177
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function setupEnv(): void;
|
package/dist/setupEnv.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const node_fetch_1 = __importStar(require("node-fetch"));
|
|
27
|
+
const jsdom_1 = require("jsdom");
|
|
28
|
+
const canvas_1 = require("canvas");
|
|
29
|
+
function setupEnv() {
|
|
30
|
+
// @ts-expect-error
|
|
31
|
+
global.nodeImage = canvas_1.Image;
|
|
32
|
+
// @ts-expect-error
|
|
33
|
+
global.nodeCreateCanvas = canvas_1.createCanvas;
|
|
34
|
+
const window = new jsdom_1.JSDOM(`...`).window;
|
|
35
|
+
global.document = window.document;
|
|
36
|
+
// @ts-expect-error
|
|
37
|
+
global.window = window;
|
|
38
|
+
// force use of node-fetch polyfill, even if node 18+ fetch is available.
|
|
39
|
+
// native node 18+ fetch currently gives errors related to unidici and
|
|
40
|
+
// Uint8Array:
|
|
41
|
+
//
|
|
42
|
+
//
|
|
43
|
+
// % node --version
|
|
44
|
+
// v18.12.1
|
|
45
|
+
//
|
|
46
|
+
// % jb2export --fasta https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa --bam https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam --loc ctgA:1-1000 --out out4.svg
|
|
47
|
+
// [
|
|
48
|
+
// '(node:1387934) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time\n' +
|
|
49
|
+
// '(Use `node --trace-warnings ...` to show where the warning was created)'
|
|
50
|
+
// ]
|
|
51
|
+
// [
|
|
52
|
+
// RangeError: offset is out of bounds
|
|
53
|
+
// at Uint8Array.set (<anonymous>)
|
|
54
|
+
// at Response.arrayBuffer (node:internal/deps/undici/undici:6117:23)
|
|
55
|
+
// at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
|
|
56
|
+
// ]
|
|
57
|
+
// @ts-expect-error
|
|
58
|
+
global.fetch = node_fetch_1.default;
|
|
59
|
+
// @ts-expect-error
|
|
60
|
+
global.Headers = node_fetch_1.Headers;
|
|
61
|
+
// @ts-expect-error
|
|
62
|
+
global.Response = node_fetch_1.Response;
|
|
63
|
+
// @ts-expect-error
|
|
64
|
+
global.Request = node_fetch_1.Request;
|
|
65
|
+
}
|
|
66
|
+
exports.default = setupEnv;
|
package/esm/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
package/esm/index.js
CHANGED
|
@@ -1,46 +1,11 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import yargs from 'yargs';
|
|
3
|
-
import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only';
|
|
4
|
-
import fetch, { Headers, Response, Request } from 'node-fetch';
|
|
5
|
-
import { JSDOM } from 'jsdom';
|
|
6
|
-
import { Image, createCanvas } from 'canvas';
|
|
7
3
|
// locals
|
|
8
4
|
import { standardizeArgv, parseArgv } from './parseArgv';
|
|
9
5
|
import { renderRegion } from './renderRegion';
|
|
10
6
|
import { convert } from './util';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// @ts-expect-error
|
|
14
|
-
global.nodeCreateCanvas = createCanvas;
|
|
15
|
-
const { document } = new JSDOM(`...`).window;
|
|
16
|
-
global.document = document;
|
|
17
|
-
// force use of node-fetch polyfill, even if node 18+ fetch is available.
|
|
18
|
-
// native node 18+ fetch currently gives errors related to unidici and
|
|
19
|
-
// Uint8Array:
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
// % node --version
|
|
23
|
-
// v18.12.1
|
|
24
|
-
//
|
|
25
|
-
// % jb2export --fasta https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa --bam https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam --loc ctgA:1-1000 --out out4.svg
|
|
26
|
-
// [
|
|
27
|
-
// '(node:1387934) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time\n' +
|
|
28
|
-
// '(Use `node --trace-warnings ...` to show where the warning was created)'
|
|
29
|
-
// ]
|
|
30
|
-
// [
|
|
31
|
-
// RangeError: offset is out of bounds
|
|
32
|
-
// at Uint8Array.set (<anonymous>)
|
|
33
|
-
// at Response.arrayBuffer (node:internal/deps/undici/undici:6117:23)
|
|
34
|
-
// at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
|
|
35
|
-
// ]
|
|
36
|
-
// @ts-expect-error
|
|
37
|
-
global.fetch = fetch;
|
|
38
|
-
// @ts-expect-error
|
|
39
|
-
global.Headers = Headers;
|
|
40
|
-
// @ts-expect-error
|
|
41
|
-
global.Response = Response;
|
|
42
|
-
// @ts-expect-error
|
|
43
|
-
global.Request = Request;
|
|
7
|
+
import setupEnv from './setupEnv';
|
|
8
|
+
setupEnv();
|
|
44
9
|
const err = console.error;
|
|
45
10
|
console.error = (...p) => {
|
|
46
11
|
if (!`${p[0]}`.match('useLayoutEffect')) {
|
package/esm/renderRegion.js
CHANGED
|
@@ -113,7 +113,8 @@ export function readData({ assembly: asm, config, session, fasta, aliases, cytob
|
|
|
113
113
|
configData.tracks = [];
|
|
114
114
|
}
|
|
115
115
|
trackList.forEach(track => {
|
|
116
|
-
const [type,
|
|
116
|
+
const [type, opts] = track;
|
|
117
|
+
const [file] = opts;
|
|
117
118
|
if (type === 'bam') {
|
|
118
119
|
configData.tracks = [
|
|
119
120
|
...configData.tracks,
|
|
@@ -128,6 +129,16 @@ export function readData({ assembly: asm, config, session, fasta, aliases, cytob
|
|
|
128
129
|
index: { location: makeLocation(file + '.bai') },
|
|
129
130
|
sequenceAdapter: configData.assembly.sequence.adapter,
|
|
130
131
|
},
|
|
132
|
+
...(opts.includes('snpcov')
|
|
133
|
+
? {
|
|
134
|
+
displays: [
|
|
135
|
+
{
|
|
136
|
+
type: 'LinearSNPCoverageDisplay',
|
|
137
|
+
displayId: path.basename(file) + '-' + Math.random(),
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
}
|
|
141
|
+
: {}),
|
|
131
142
|
},
|
|
132
143
|
];
|
|
133
144
|
}
|
|
@@ -145,6 +156,16 @@ export function readData({ assembly: asm, config, session, fasta, aliases, cytob
|
|
|
145
156
|
craiLocation: makeLocation(file + '.crai'),
|
|
146
157
|
sequenceAdapter: configData.assembly.sequence.adapter,
|
|
147
158
|
},
|
|
159
|
+
...(opts.includes('snpcov')
|
|
160
|
+
? {
|
|
161
|
+
displays: [
|
|
162
|
+
{
|
|
163
|
+
type: 'LinearSNPCoverageDisplay',
|
|
164
|
+
displayId: path.basename(file) + '-' + Math.random(),
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
}
|
|
168
|
+
: {}),
|
|
148
169
|
},
|
|
149
170
|
];
|
|
150
171
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function setupEnv(): void;
|
package/esm/setupEnv.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import fetch, { Headers, Response, Request } from 'node-fetch';
|
|
2
|
+
import { JSDOM } from 'jsdom';
|
|
3
|
+
import { Image, createCanvas } from 'canvas';
|
|
4
|
+
export default function setupEnv() {
|
|
5
|
+
// @ts-expect-error
|
|
6
|
+
global.nodeImage = Image;
|
|
7
|
+
// @ts-expect-error
|
|
8
|
+
global.nodeCreateCanvas = createCanvas;
|
|
9
|
+
const window = new JSDOM(`...`).window;
|
|
10
|
+
global.document = window.document;
|
|
11
|
+
// @ts-expect-error
|
|
12
|
+
global.window = window;
|
|
13
|
+
// force use of node-fetch polyfill, even if node 18+ fetch is available.
|
|
14
|
+
// native node 18+ fetch currently gives errors related to unidici and
|
|
15
|
+
// Uint8Array:
|
|
16
|
+
//
|
|
17
|
+
//
|
|
18
|
+
// % node --version
|
|
19
|
+
// v18.12.1
|
|
20
|
+
//
|
|
21
|
+
// % jb2export --fasta https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa --bam https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam --loc ctgA:1-1000 --out out4.svg
|
|
22
|
+
// [
|
|
23
|
+
// '(node:1387934) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time\n' +
|
|
24
|
+
// '(Use `node --trace-warnings ...` to show where the warning was created)'
|
|
25
|
+
// ]
|
|
26
|
+
// [
|
|
27
|
+
// RangeError: offset is out of bounds
|
|
28
|
+
// at Uint8Array.set (<anonymous>)
|
|
29
|
+
// at Response.arrayBuffer (node:internal/deps/undici/undici:6117:23)
|
|
30
|
+
// at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
|
|
31
|
+
// ]
|
|
32
|
+
// @ts-expect-error
|
|
33
|
+
global.fetch = fetch;
|
|
34
|
+
// @ts-expect-error
|
|
35
|
+
global.Headers = Headers;
|
|
36
|
+
// @ts-expect-error
|
|
37
|
+
global.Response = Response;
|
|
38
|
+
// @ts-expect-error
|
|
39
|
+
global.Request = Request;
|
|
40
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/img",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "esm/index.js",
|
|
6
6
|
"author": "JBrowse Team",
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
"esm"
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
|
-
"test": "cd ../../; jest --env node --testMatch '**/*testmod.js' products/jbrowse-img",
|
|
20
19
|
"clean": "rm -rf dist esm *.tsbuildinfo",
|
|
21
20
|
"prebuild": "yarn clean",
|
|
22
21
|
"build": "npm-run-all build:*",
|
|
@@ -28,11 +27,10 @@
|
|
|
28
27
|
"@babel/runtime": "^7.17.9",
|
|
29
28
|
"@emotion/cache": "^11.7.1",
|
|
30
29
|
"@emotion/react": "^11.9.0",
|
|
31
|
-
"@jbrowse/plugin-linear-genome-view": "^2.10.
|
|
32
|
-
"@jbrowse/react-linear-genome-view": "^2.10.
|
|
33
|
-
"abortcontroller-polyfill": "^1.7.3",
|
|
30
|
+
"@jbrowse/plugin-linear-genome-view": "^2.10.3",
|
|
31
|
+
"@jbrowse/react-linear-genome-view": "^2.10.3",
|
|
34
32
|
"canvas": "^2.9.1",
|
|
35
|
-
"jsdom": "^
|
|
33
|
+
"jsdom": "^24.0.0",
|
|
36
34
|
"mobx": "^6.6.0",
|
|
37
35
|
"node-fetch": "^2.6.7",
|
|
38
36
|
"react": "^18.0.0",
|
|
@@ -43,5 +41,5 @@
|
|
|
43
41
|
"publishConfig": {
|
|
44
42
|
"access": "public"
|
|
45
43
|
},
|
|
46
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "c8fc800cd17decd72b2e971c7a6add3b95214e72"
|
|
47
45
|
}
|