@jbrowse/plugin-hic 3.6.5 → 4.0.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.
Files changed (70) hide show
  1. package/esm/HicAdapter/HicAdapter.d.ts +9 -0
  2. package/esm/HicAdapter/HicAdapter.js +33 -2
  3. package/esm/HicAdapter/HicFilehandle.js +1 -0
  4. package/esm/HicAdapter/configSchema.d.ts +2 -2
  5. package/esm/HicAdapter/index.js +2 -2
  6. package/esm/HicRenderer/HicRenderer.d.ts +7 -36
  7. package/esm/HicRenderer/HicRenderer.js +19 -26
  8. package/esm/HicRenderer/components/HicColorLegend.d.ts +6 -0
  9. package/esm/HicRenderer/components/HicColorLegend.js +52 -0
  10. package/esm/HicRenderer/components/HicRendering.d.ts +1 -8
  11. package/esm/HicRenderer/components/HicRendering.js +3 -8
  12. package/esm/HicRenderer/configSchema.d.ts +2 -2
  13. package/esm/HicRenderer/index.js +4 -4
  14. package/esm/HicRenderer/makeImageData.d.ts +9 -2
  15. package/esm/HicRenderer/makeImageData.js +83 -58
  16. package/esm/HicRenderer/types.d.ts +7 -0
  17. package/esm/HicRenderer/types.js +1 -0
  18. package/esm/HicTrack/configSchema.d.ts +16 -11
  19. package/esm/HicTrack/index.js +1 -1
  20. package/esm/LinearHicDisplay/afterAttach.d.ts +2 -0
  21. package/esm/LinearHicDisplay/afterAttach.js +111 -0
  22. package/esm/LinearHicDisplay/components/BaseDisplayComponent.d.ts +2 -0
  23. package/esm/LinearHicDisplay/components/BaseDisplayComponent.js +1 -0
  24. package/esm/LinearHicDisplay/components/HicSVGColorLegend.d.ts +7 -0
  25. package/esm/LinearHicDisplay/components/HicSVGColorLegend.js +60 -0
  26. package/esm/LinearHicDisplay/components/ReactComponent.d.ts +5 -0
  27. package/esm/LinearHicDisplay/components/ReactComponent.js +83 -0
  28. package/esm/LinearHicDisplay/configSchema.d.ts +9 -4
  29. package/esm/LinearHicDisplay/configSchema.js +5 -0
  30. package/esm/LinearHicDisplay/index.js +4 -4
  31. package/esm/LinearHicDisplay/model.d.ts +180 -220
  32. package/esm/LinearHicDisplay/model.js +71 -34
  33. package/esm/LinearHicDisplay/renderSvg.d.ts +3 -0
  34. package/esm/LinearHicDisplay/renderSvg.js +32 -0
  35. package/esm/index.js +6 -9
  36. package/package.json +27 -32
  37. package/dist/GuessAdapter/index.d.ts +0 -2
  38. package/dist/GuessAdapter/index.js +0 -23
  39. package/dist/HicAdapter/HicAdapter.d.ts +0 -27
  40. package/dist/HicAdapter/HicAdapter.js +0 -63
  41. package/dist/HicAdapter/HicFilehandle.d.ts +0 -10
  42. package/dist/HicAdapter/HicFilehandle.js +0 -16
  43. package/dist/HicAdapter/configSchema.d.ts +0 -15
  44. package/dist/HicAdapter/configSchema.js +0 -32
  45. package/dist/HicAdapter/index.d.ts +0 -2
  46. package/dist/HicAdapter/index.js +0 -49
  47. package/dist/HicRenderer/HicRenderer.d.ts +0 -54
  48. package/dist/HicRenderer/HicRenderer.js +0 -87
  49. package/dist/HicRenderer/components/HicRendering.d.ts +0 -9
  50. package/dist/HicRenderer/components/HicRendering.js +0 -11
  51. package/dist/HicRenderer/configSchema.d.ts +0 -19
  52. package/dist/HicRenderer/configSchema.js +0 -23
  53. package/dist/HicRenderer/index.d.ts +0 -2
  54. package/dist/HicRenderer/index.js +0 -17
  55. package/dist/HicRenderer/makeImageData.d.ts +0 -11
  56. package/dist/HicRenderer/makeImageData.js +0 -81
  57. package/dist/HicRenderer/viridis.d.ts +0 -2
  58. package/dist/HicRenderer/viridis.js +0 -18
  59. package/dist/HicTrack/configSchema.d.ts +0 -80
  60. package/dist/HicTrack/configSchema.js +0 -9
  61. package/dist/HicTrack/index.d.ts +0 -2
  62. package/dist/HicTrack/index.js +0 -20
  63. package/dist/LinearHicDisplay/configSchema.d.ts +0 -35
  64. package/dist/LinearHicDisplay/configSchema.js +0 -14
  65. package/dist/LinearHicDisplay/index.d.ts +0 -2
  66. package/dist/LinearHicDisplay/index.js +0 -24
  67. package/dist/LinearHicDisplay/model.d.ts +0 -344
  68. package/dist/LinearHicDisplay/model.js +0 -205
  69. package/dist/index.d.ts +0 -7
  70. package/dist/index.js +0 -33
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getContainingView, getRpcSessionId, getSession, } from '@jbrowse/core/util';
3
+ import { ReactRendering, renderingToSvg, } from '@jbrowse/core/util/offscreenCanvasUtils';
4
+ import HicSVGColorLegend from "./components/HicSVGColorLegend.js";
5
+ export async function renderSvg(self, opts) {
6
+ const view = getContainingView(self);
7
+ const session = getSession(self);
8
+ const { rpcManager } = session;
9
+ const height = opts.overrideHeight ?? self.height;
10
+ const { useLogScale, colorScheme, showLegend, adapterConfig } = self;
11
+ const { bpPerPx, dynamicBlocks } = view;
12
+ const regions = dynamicBlocks.contentBlocks;
13
+ if (!regions.length) {
14
+ return null;
15
+ }
16
+ const renderProps = self.renderProps();
17
+ const rpcSessionId = getRpcSessionId(self);
18
+ const rendering = (await rpcManager.call(rpcSessionId, 'CoreRender', {
19
+ sessionId: rpcSessionId,
20
+ rendererType: 'HicRenderer',
21
+ regions: [...regions],
22
+ adapterConfig,
23
+ bpPerPx,
24
+ ...renderProps,
25
+ exportSVG: opts,
26
+ }));
27
+ const finalRendering = await renderingToSvg(rendering, view.staticBlocks.totalWidthPx, height);
28
+ const visibleWidth = view.width;
29
+ const clipId = `clip-${self.id}-svg`;
30
+ const maxScore = rendering.maxScore ?? self.maxScore;
31
+ return (_jsxs(_Fragment, { children: [_jsx("defs", { children: _jsx("clipPath", { id: clipId, children: _jsx("rect", { x: 0, y: 0, width: visibleWidth, height: height }) }) }), _jsx("g", { clipPath: `url(#${clipId})`, children: _jsx("g", { transform: `translate(${Math.max(0, -view.offsetPx)} 0)`, children: _jsx(ReactRendering, { rendering: finalRendering }) }) }), showLegend && maxScore > 0 ? (_jsx(HicSVGColorLegend, { maxScore: maxScore, colorScheme: colorScheme, useLogScale: useLogScale, width: visibleWidth, legendAreaWidth: opts.legendWidth })) : null] }));
32
+ }
package/esm/index.js CHANGED
@@ -1,15 +1,12 @@
1
1
  import Plugin from '@jbrowse/core/Plugin';
2
2
  import { colord } from '@jbrowse/core/util/colord';
3
- import GuessAdapterF from './GuessAdapter';
4
- import HicAdapterF from './HicAdapter';
5
- import HicRendererF from './HicRenderer';
6
- import HicTrackF from './HicTrack';
7
- import LinearHicDisplayF from './LinearHicDisplay';
3
+ import GuessAdapterF from "./GuessAdapter/index.js";
4
+ import HicAdapterF from "./HicAdapter/index.js";
5
+ import HicRendererF from "./HicRenderer/index.js";
6
+ import HicTrackF from "./HicTrack/index.js";
7
+ import LinearHicDisplayF from "./LinearHicDisplay/index.js";
8
8
  export default class HicPlugin extends Plugin {
9
- constructor() {
10
- super(...arguments);
11
- this.name = 'HicPlugin';
12
- }
9
+ name = 'HicPlugin';
13
10
  install(pluginManager) {
14
11
  HicAdapterF(pluginManager);
15
12
  HicRendererF(pluginManager);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-hic",
3
- "version": "3.6.5",
3
+ "version": "4.0.0",
4
4
  "description": "JBrowse 2 hic adapters, tracks, etc.",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -15,45 +15,40 @@
15
15
  "directory": "plugins/hic"
16
16
  },
17
17
  "author": "JBrowse Team",
18
- "distMain": "dist/index.js",
19
- "srcMain": "src/index.ts",
20
- "main": "dist/index.js",
18
+ "main": "esm/index.js",
21
19
  "files": [
22
- "dist",
23
20
  "esm"
24
21
  ],
25
- "scripts": {
26
- "build": "npm-run-all build:*",
27
- "test": "cd ../..; jest --passWithNoTests plugins/hic",
28
- "prepublishOnly": "yarn test",
29
- "prepack": "yarn build && yarn useDist",
30
- "postpack": "yarn useSrc",
31
- "useDist": "node ../../scripts/useDist.js",
32
- "useSrc": "node ../../scripts/useSrc.js",
33
- "prebuild": "npm run clean",
34
- "build:esm": "tsc --build tsconfig.build.esm.json",
35
- "build:commonjs": "tsc --build tsconfig.build.commonjs.json",
36
- "clean": "rimraf dist esm *.tsbuildinfo"
37
- },
38
22
  "dependencies": {
39
- "@jbrowse/core": "^3.6.5",
40
- "@jbrowse/plugin-linear-genome-view": "^3.6.5",
41
- "@mui/material": "^7.0.0",
42
- "@mui/x-charts-vendor": "^8.0.0",
43
- "hic-straw": "^2.0.3",
44
- "mobx": "^6.0.0",
45
- "mobx-react": "^9.0.0",
46
- "mobx-state-tree": "^5.0.0",
47
- "rxjs": "^7.0.0"
23
+ "@jbrowse/mobx-state-tree": "^5.5.0",
24
+ "generic-filehandle2": "^2.0.18",
25
+ "@mui/x-charts-vendor": "^8.23.0",
26
+ "hic-straw": "^2.1.4",
27
+ "mobx": "^6.15.0",
28
+ "mobx-react": "^9.2.1",
29
+ "rxjs": "^7.8.2",
30
+ "@jbrowse/core": "^4.0.0",
31
+ "@jbrowse/plugin-linear-genome-view": "^4.0.0"
48
32
  },
49
33
  "peerDependencies": {
50
34
  "react": ">=18.0.0"
51
35
  },
52
- "distModule": "esm/index.js",
53
- "srcModule": "src/index.ts",
54
- "module": "esm/index.js",
55
36
  "publishConfig": {
56
37
  "access": "public"
57
38
  },
58
- "gitHead": "354d0a87b757b4d84f824b47507662f6f3a1693f"
59
- }
39
+ "sideEffects": false,
40
+ "scripts": {
41
+ "build": "pnpm run /^build:/",
42
+ "test": "cd ../..; jest --passWithNoTests plugins/hic",
43
+ "prebuild": "pnpm clean",
44
+ "build:esm": "tsc -p tsconfig.build.esm.json",
45
+ "clean": "rimraf esm *.tsbuildinfo"
46
+ },
47
+ "types": "esm/index.d.ts",
48
+ "exports": {
49
+ ".": {
50
+ "types": "./esm/index.d.ts",
51
+ "import": "./esm/index.js"
52
+ }
53
+ }
54
+ }
@@ -1,2 +0,0 @@
1
- import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function GuessAdapterF(pluginManager: PluginManager): void;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = GuessAdapterF;
4
- const tracks_1 = require("@jbrowse/core/util/tracks");
5
- function GuessAdapterF(pluginManager) {
6
- pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
7
- return (file, index, adapterHint) => {
8
- const fileName = (0, tracks_1.getFileName)(file);
9
- return (/\.hic$/i.test(fileName) && !adapterHint) ||
10
- adapterHint === 'HicAdapter'
11
- ? {
12
- type: 'HicAdapter',
13
- hicLocation: file,
14
- }
15
- : adapterGuesser(file, index, adapterHint);
16
- };
17
- });
18
- pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
19
- return (adapterName) => adapterName === 'HicAdapter'
20
- ? 'HicTrack'
21
- : trackTypeGuesser(adapterName);
22
- });
23
- }
@@ -1,27 +0,0 @@
1
- import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
2
- import type PluginManager from '@jbrowse/core/PluginManager';
3
- import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
4
- import type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
5
- import type { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
6
- import type { Region } from '@jbrowse/core/util/types';
7
- interface HicOptions extends BaseOptions {
8
- resolution?: number;
9
- bpPerPx?: number;
10
- normalization?: string;
11
- }
12
- export default class HicAdapter extends BaseFeatureDataAdapter {
13
- private hic;
14
- constructor(config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
15
- private setup;
16
- getHeader(opts?: BaseOptions): Promise<{
17
- norms: any;
18
- resolutions: number[];
19
- }>;
20
- getRefNames(opts?: BaseOptions): Promise<string[]>;
21
- getResolution(res: number, opts?: BaseOptions): Promise<number>;
22
- getFeatures(region: Region, opts?: HicOptions): any;
23
- getMultiRegionFeatureDensityStats(_regions: Region[]): Promise<{
24
- featureDensity: number;
25
- }>;
26
- }
27
- export {};
@@ -1,63 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
7
- const util_1 = require("@jbrowse/core/util");
8
- const rxjs_1 = require("@jbrowse/core/util/rxjs");
9
- const hic_straw_1 = __importDefault(require("hic-straw"));
10
- const HicFilehandle_1 = require("./HicFilehandle");
11
- class HicAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
12
- constructor(config, getSubAdapter, pluginManager) {
13
- super(config, getSubAdapter, pluginManager);
14
- this.hic = new hic_straw_1.default({
15
- file: (0, HicFilehandle_1.openHicFilehandle)(this.getConf('hicLocation'), this.pluginManager),
16
- });
17
- }
18
- async setup(opts) {
19
- const { statusCallback = () => { } } = opts || {};
20
- return (0, util_1.updateStatus)('Downloading .hic header', statusCallback, () => this.hic.getMetaData());
21
- }
22
- async getHeader(opts) {
23
- const { chromosomes, ...rest } = await this.setup(opts);
24
- const norms = await this.hic.getNormalizationOptions();
25
- return { ...rest, norms };
26
- }
27
- async getRefNames(opts) {
28
- const metadata = await this.setup(opts);
29
- return metadata.chromosomes.map(chr => chr.name);
30
- }
31
- async getResolution(res, opts) {
32
- const { resolutions } = await this.setup(opts);
33
- const resolutionMultiplier = this.getConf('resolutionMultiplier');
34
- let chosenResolution = resolutions.at(-1);
35
- for (let i = resolutions.length - 1; i >= 0; i -= 1) {
36
- const r = resolutions[i];
37
- if (r <= 2 * res * resolutionMultiplier) {
38
- chosenResolution = r;
39
- }
40
- }
41
- return chosenResolution;
42
- }
43
- getFeatures(region, opts = {}) {
44
- return (0, rxjs_1.ObservableCreate)(async (observer) => {
45
- const { refName: chr, start, end } = region;
46
- const { resolution, normalization = 'KR', bpPerPx = 1, statusCallback = () => { }, } = opts;
47
- const res = await this.getResolution(bpPerPx / (resolution || 1000), opts);
48
- await (0, util_1.updateStatus)('Downloading .hic data', statusCallback, async () => {
49
- const records = await this.hic.getContactRecords(normalization, { start, chr, end }, { start, chr, end }, 'BP', res);
50
- for (const record of records) {
51
- observer.next(record);
52
- }
53
- });
54
- observer.complete();
55
- }, opts.stopToken);
56
- }
57
- async getMultiRegionFeatureDensityStats(_regions) {
58
- return {
59
- featureDensity: 0,
60
- };
61
- }
62
- }
63
- exports.default = HicAdapter;
@@ -1,10 +0,0 @@
1
- import type PluginManager from '@jbrowse/core/PluginManager';
2
- import type { FileLocation } from '@jbrowse/core/util';
3
- import type { GenericFilehandle } from 'generic-filehandle2';
4
- declare class HicFilehandle {
5
- private filehandle;
6
- constructor(filehandle: GenericFilehandle);
7
- read(position: number, length: number): Promise<ArrayBuffer>;
8
- }
9
- export declare function openHicFilehandle(location: FileLocation, pluginManager?: PluginManager): HicFilehandle;
10
- export {};
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openHicFilehandle = openHicFilehandle;
4
- const io_1 = require("@jbrowse/core/util/io");
5
- class HicFilehandle {
6
- constructor(filehandle) {
7
- this.filehandle = filehandle;
8
- }
9
- async read(position, length) {
10
- const buffer = await this.filehandle.read(length, position);
11
- return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
12
- }
13
- }
14
- function openHicFilehandle(location, pluginManager) {
15
- return new HicFilehandle((0, io_1.openLocation)(location, pluginManager));
16
- }
@@ -1,15 +0,0 @@
1
- declare const HicAdapter: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2
- hicLocation: {
3
- type: string;
4
- defaultValue: {
5
- uri: string;
6
- locationType: string;
7
- };
8
- };
9
- resolutionMultiplier: {
10
- type: string;
11
- defaultValue: number;
12
- description: string;
13
- };
14
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
15
- export default HicAdapter;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const configuration_1 = require("@jbrowse/core/configuration");
4
- function x() { }
5
- const HicAdapter = (0, configuration_1.ConfigurationSchema)('HicAdapter', {
6
- hicLocation: {
7
- type: 'fileLocation',
8
- defaultValue: {
9
- uri: '/path/to/my.hic',
10
- locationType: 'UriLocation',
11
- },
12
- },
13
- resolutionMultiplier: {
14
- type: 'number',
15
- defaultValue: 1,
16
- description: 'Initial resolution multiplier',
17
- },
18
- }, {
19
- explicitlyTyped: true,
20
- preProcessSnapshot: snap => {
21
- return snap.uri
22
- ? {
23
- ...snap,
24
- hicLocation: {
25
- uri: snap.uri,
26
- baseUri: snap.baseUri,
27
- },
28
- }
29
- : snap;
30
- },
31
- });
32
- exports.default = HicAdapter;
@@ -1,2 +0,0 @@
1
- import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function HicAdapterF(pluginManager: PluginManager): void;
@@ -1,49 +0,0 @@
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = HicAdapterF;
40
- const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
41
- const configSchema_1 = __importDefault(require("./configSchema"));
42
- function HicAdapterF(pluginManager) {
43
- pluginManager.addAdapterType(() => new pluggableElementTypes_1.AdapterType({
44
- name: 'HicAdapter',
45
- displayName: 'Hi-C adapter',
46
- configSchema: configSchema_1.default,
47
- getAdapterClass: () => Promise.resolve().then(() => __importStar(require('./HicAdapter'))).then(r => r.default),
48
- }));
49
- }
@@ -1,54 +0,0 @@
1
- import ServerSideRendererType from '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType';
2
- import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
- import type { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
4
- import type { RenderArgs as ServerSideRenderArgs, RenderArgsDeserialized as ServerSideRenderArgsDeserialized, ResultsDeserialized as ServerSideResultsDeserialized, ResultsSerialized as ServerSideResultsSerialized } from '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType';
5
- import type { Region } from '@jbrowse/core/util/types';
6
- interface HicFeature {
7
- bin1: number;
8
- bin2: number;
9
- counts: number;
10
- }
11
- interface HicDataAdapter extends BaseFeatureDataAdapter {
12
- getResolution: (bp: number) => Promise<number>;
13
- }
14
- export interface RenderArgs extends ServerSideRenderArgs {
15
- regions: Region[];
16
- }
17
- export interface RenderArgsDeserialized extends ServerSideRenderArgsDeserialized {
18
- regions: Region[];
19
- dataAdapter: HicDataAdapter;
20
- bpPerPx: number;
21
- highResolutionScaling: number;
22
- resolution: number;
23
- adapterConfig: AnyConfigurationModel;
24
- displayHeight?: number;
25
- }
26
- export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
27
- features: HicFeature[];
28
- statusCallback?: (arg: string) => void;
29
- }
30
- export type ResultsSerialized = ServerSideResultsSerialized;
31
- export type ResultsDeserialized = ServerSideResultsDeserialized;
32
- export default class HicRenderer extends ServerSideRendererType {
33
- supportsSVG: boolean;
34
- render(renderProps: RenderArgsDeserialized): Promise<{
35
- height: number;
36
- width: number;
37
- canvasRecordedData: Record<string, unknown>;
38
- reactElement?: React.ReactElement;
39
- html?: string;
40
- } | {
41
- height: number;
42
- width: number;
43
- imageData: any;
44
- reactElement?: React.ReactElement;
45
- html?: string;
46
- } | {
47
- height: number;
48
- width: number;
49
- reactElement: React.ReactElement;
50
- html?: string;
51
- }>;
52
- getFeatures(args: RenderArgsDeserialized): Promise<any>;
53
- }
54
- export type { RenderArgsSerialized, RenderResults, } from '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType';
@@ -1,87 +0,0 @@
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const dataAdapterCache_1 = require("@jbrowse/core/data_adapters/dataAdapterCache");
40
- const ServerSideRendererType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType"));
41
- const offscreenCanvasUtils_1 = require("@jbrowse/core/util/offscreenCanvasUtils");
42
- const rxjs_1 = require("rxjs");
43
- const operators_1 = require("rxjs/operators");
44
- class HicRenderer extends ServerSideRendererType_1.default {
45
- constructor() {
46
- super(...arguments);
47
- this.supportsSVG = true;
48
- }
49
- async render(renderProps) {
50
- const { displayHeight, regions, bpPerPx } = renderProps;
51
- const region = regions[0];
52
- const width = (region.end - region.start) / bpPerPx;
53
- const hyp = width / 2;
54
- const height = displayHeight !== null && displayHeight !== void 0 ? displayHeight : hyp;
55
- const features = await this.getFeatures(renderProps);
56
- const { makeImageData } = await Promise.resolve().then(() => __importStar(require('./makeImageData')));
57
- const res = await (0, offscreenCanvasUtils_1.renderToAbstractCanvas)(width, height, renderProps, ctx => makeImageData(ctx, {
58
- ...renderProps,
59
- yScalar: height / Math.max(height, hyp),
60
- features,
61
- pluginManager: this.pluginManager,
62
- }));
63
- const results = await super.render({
64
- ...renderProps,
65
- ...res,
66
- features,
67
- region: renderProps.regions[0],
68
- height,
69
- width,
70
- });
71
- return {
72
- ...results,
73
- ...res,
74
- height,
75
- width,
76
- };
77
- }
78
- async getFeatures(args) {
79
- const { regions, sessionId, adapterConfig } = args;
80
- const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(this.pluginManager, sessionId, adapterConfig);
81
- const features = await (0, rxjs_1.firstValueFrom)(dataAdapter
82
- .getFeatures(regions[0], args)
83
- .pipe((0, operators_1.toArray)()));
84
- return features;
85
- }
86
- }
87
- exports.default = HicRenderer;
@@ -1,9 +0,0 @@
1
- import type { Region } from '@jbrowse/core/util/types';
2
- declare const HicRendering: (props: {
3
- blockKey: string;
4
- width: number;
5
- height: number;
6
- regions: Region[];
7
- bpPerPx: number;
8
- }) => import("react/jsx-runtime").JSX.Element;
9
- export default HicRendering;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const ui_1 = require("@jbrowse/core/ui");
5
- const mobx_react_1 = require("mobx-react");
6
- const HicRendering = (0, mobx_react_1.observer)(function HicRendering(props) {
7
- const { width, height } = props;
8
- const canvasWidth = Math.ceil(width);
9
- return ((0, jsx_runtime_1.jsx)("div", { style: { position: 'relative', width: canvasWidth, height }, children: (0, jsx_runtime_1.jsx)(ui_1.PrerenderedCanvas, { ...props, style: { position: 'absolute', left: 0, top: 0 } }) }));
10
- });
11
- exports.default = HicRendering;
@@ -1,19 +0,0 @@
1
- declare const HicRenderer: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2
- baseColor: {
3
- type: string;
4
- description: string;
5
- defaultValue: string;
6
- };
7
- color: {
8
- type: string;
9
- description: string;
10
- defaultValue: string;
11
- contextVariable: string[];
12
- };
13
- maxHeight: {
14
- type: string;
15
- description: string;
16
- defaultValue: number;
17
- };
18
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
19
- export default HicRenderer;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const configuration_1 = require("@jbrowse/core/configuration");
4
- function x() { }
5
- const HicRenderer = (0, configuration_1.ConfigurationSchema)('HicRenderer', {
6
- baseColor: {
7
- type: 'color',
8
- description: 'base color to be used in the hic alignment',
9
- defaultValue: '#f00',
10
- },
11
- color: {
12
- type: 'color',
13
- description: 'the color of each feature in a hic alignment',
14
- defaultValue: 'jexl:interpolate(count,scale)',
15
- contextVariable: ['count', 'maxScore', 'baseColor', 'scale'],
16
- },
17
- maxHeight: {
18
- type: 'integer',
19
- description: 'the maximum height to be used in a hic rendering',
20
- defaultValue: 600,
21
- },
22
- }, { explicitlyTyped: true });
23
- exports.default = HicRenderer;
@@ -1,2 +0,0 @@
1
- import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function HicRendererF(pluginManager: PluginManager): void;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = HicRendererF;
7
- const HicRenderer_1 = __importDefault(require("./HicRenderer"));
8
- const HicRendering_1 = __importDefault(require("./components/HicRendering"));
9
- const configSchema_1 = __importDefault(require("./configSchema"));
10
- function HicRendererF(pluginManager) {
11
- pluginManager.addRendererType(() => new HicRenderer_1.default({
12
- name: 'HicRenderer',
13
- ReactComponent: HicRendering_1.default,
14
- configSchema: configSchema_1.default,
15
- pluginManager,
16
- }));
17
- }
@@ -1,11 +0,0 @@
1
- import type { RenderArgsDeserializedWithFeatures } from './HicRenderer';
2
- import type PluginManager from '@jbrowse/core/PluginManager';
3
- import type { RenderArgs as ServerSideRenderArgs } from '@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType';
4
- import type { Region } from '@jbrowse/core/util/types';
5
- export interface RenderArgs extends ServerSideRenderArgs {
6
- regions: Region[];
7
- }
8
- export declare function makeImageData(ctx: CanvasRenderingContext2D, props: RenderArgsDeserializedWithFeatures & {
9
- yScalar: number;
10
- pluginManager: PluginManager;
11
- }): Promise<undefined>;