@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 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
- import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only';
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
- // @ts-expect-error
40
- global.nodeImage = canvas_1.Image;
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')) {
@@ -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, [file]] = track;
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;
@@ -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
- import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only';
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
- // @ts-expect-error
12
- global.nodeImage = Image;
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')) {
@@ -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, [file]] = track;
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;
@@ -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.1",
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.1",
32
- "@jbrowse/react-linear-genome-view": "^2.10.1",
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": "^23.0.0",
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": "442b5f87efddfdf4ccf520b4d9dd01ddd370cb07"
44
+ "gitHead": "c8fc800cd17decd72b2e971c7a6add3b95214e72"
47
45
  }