@jbrowse/plugin-variants 2.3.3 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChordVariantDisplay/index.js +1 -0
- package/dist/ChordVariantDisplay/index.js.map +1 -1
- package/dist/ChordVariantDisplay/models/stateModelFactory.d.ts +4 -0
- package/dist/LinearVariantDisplay/model.d.ts +4 -2
- package/dist/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -3
- package/dist/StructuralVariantChordRenderer/ReactComponent.js +3 -5
- package/dist/StructuralVariantChordRenderer/ReactComponent.js.map +1 -1
- package/dist/VariantFeatureWidget/BreakendOptionDialog.js.map +1 -1
- package/dist/VariantFeatureWidget/VariantSampleGrid.d.ts +1 -1
- package/dist/VariantFeatureWidget/VariantSampleGrid.js +37 -26
- package/dist/VariantFeatureWidget/VariantSampleGrid.js.map +1 -1
- package/dist/VcfTabixAdapter/VcfTabixAdapter.js.map +1 -1
- package/esm/ChordVariantDisplay/index.js +1 -0
- package/esm/ChordVariantDisplay/index.js.map +1 -1
- package/esm/ChordVariantDisplay/models/stateModelFactory.d.ts +4 -0
- package/esm/LinearVariantDisplay/model.d.ts +4 -2
- package/esm/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -3
- package/esm/StructuralVariantChordRenderer/ReactComponent.js +3 -5
- package/esm/StructuralVariantChordRenderer/ReactComponent.js.map +1 -1
- package/esm/VariantFeatureWidget/BreakendOptionDialog.js.map +1 -1
- package/esm/VariantFeatureWidget/VariantSampleGrid.d.ts +1 -1
- package/esm/VariantFeatureWidget/VariantSampleGrid.js +37 -26
- package/esm/VariantFeatureWidget/VariantSampleGrid.js.map +1 -1
- package/esm/VcfTabixAdapter/VcfTabixAdapter.js.map +1 -1
- package/package.json +2 -2
- package/src/ChordVariantDisplay/index.ts +2 -0
- package/src/StructuralVariantChordRenderer/ReactComponent.tsx +14 -15
- package/src/VariantFeatureWidget/BreakendOptionDialog.tsx +1 -1
- package/src/VariantFeatureWidget/VariantSampleGrid.tsx +93 -67
- package/src/VariantFeatureWidget/__snapshots__/VariantFeatureWidget.test.tsx.snap +20 -20
- package/src/VcfTabixAdapter/VcfTabixAdapter.ts +2 -2
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const plugin_circular_view_1 = require("@jbrowse/plugin-circular-view");
|
|
7
7
|
const DisplayType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/DisplayType"));
|
|
8
|
+
// locals
|
|
8
9
|
const configSchema_1 = __importDefault(require("./models/configSchema"));
|
|
9
10
|
const stateModelFactory_1 = __importDefault(require("./models/stateModelFactory"));
|
|
10
11
|
exports.default = (pluginManager) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ChordVariantDisplay/index.ts"],"names":[],"mappings":";;;;;AACA,wEAAyE;AACzE,kGAAyE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ChordVariantDisplay/index.ts"],"names":[],"mappings":";;;;;AACA,wEAAyE;AACzE,kGAAyE;AAEzE,SAAS;AACT,yEAAiD;AACjD,mFAAoD;AAEpD,kBAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE;QAChC,MAAM,YAAY,GAAG,IAAA,sBAAa,EAAC,aAAa,CAAC,CAAA;QACjD,MAAM,UAAU,GAAG,IAAA,2BAAW,EAAC,YAAY,CAAC,CAAA;QAC5C,OAAO,IAAI,qBAAW,CAAC;YACrB,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,uBAAuB;YACpC,YAAY;YACZ,UAAU;YACV,SAAS,EAAE,cAAc;YACzB,QAAQ,EAAE,cAAc;YACxB,cAAc,EAAE,gDAAyB;SAC1C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -101,6 +101,10 @@ declare const stateModelFactory: (configSchema: AnyConfigurationSchemaType) => i
|
|
|
101
101
|
setRefNameMap(refNameMap: Record<string, string>): void;
|
|
102
102
|
} & {
|
|
103
103
|
afterAttach(): void;
|
|
104
|
+
} & {
|
|
105
|
+
renderSvg(opts: import("@jbrowse/plugin-circular-view/src/CircularView/models/CircularView").ExportSvgOptions & {
|
|
106
|
+
theme: import("@mui/material").ThemeOptions;
|
|
107
|
+
}): Promise<JSX.Element>;
|
|
104
108
|
} & {
|
|
105
109
|
/**
|
|
106
110
|
* #getter
|
|
@@ -11,7 +11,7 @@ export default function stateModelFactory(configSchema: LinearVariantDisplayConf
|
|
|
11
11
|
type: import("mobx-state-tree").ISimpleType<string>;
|
|
12
12
|
rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
13
13
|
} & {
|
|
14
|
-
|
|
14
|
+
heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
15
15
|
blockState: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
|
|
16
16
|
key: import("mobx-state-tree").ISimpleType<string>;
|
|
17
17
|
region: import("mobx-state-tree").IModelType<{
|
|
@@ -137,6 +137,7 @@ export default function stateModelFactory(configSchema: LinearVariantDisplayConf
|
|
|
137
137
|
estimatedRegionStatsP: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats> | undefined;
|
|
138
138
|
estimatedRegionStats: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined;
|
|
139
139
|
} & {
|
|
140
|
+
readonly height: any;
|
|
140
141
|
readonly blockType: "dynamicBlocks" | "staticBlocks";
|
|
141
142
|
readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
|
|
142
143
|
} & {
|
|
@@ -166,7 +167,7 @@ export default function stateModelFactory(configSchema: LinearVariantDisplayConf
|
|
|
166
167
|
setRegionStatsP(p?: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats> | undefined): void;
|
|
167
168
|
setRegionStats(estimatedRegionStats?: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined): void;
|
|
168
169
|
clearRegionStats(): void;
|
|
169
|
-
setHeight(displayHeight: number):
|
|
170
|
+
setHeight(displayHeight: number): any;
|
|
170
171
|
resizeHeight(distance: number): number;
|
|
171
172
|
setScrollTop(scrollTop: number): void;
|
|
172
173
|
updateStatsLimit(stats: import("@jbrowse/core/data_adapters/BaseAdapter").Stats): void;
|
|
@@ -199,6 +200,7 @@ export default function stateModelFactory(configSchema: LinearVariantDisplayConf
|
|
|
199
200
|
} & {
|
|
200
201
|
renderSvg(opts: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").ExportSvgOptions & {
|
|
201
202
|
overrideHeight: number;
|
|
203
|
+
theme: import("@mui/material").ThemeOptions;
|
|
202
204
|
}): Promise<JSX.Element>;
|
|
203
205
|
} & {
|
|
204
206
|
readonly rendererTypeName: any;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Feature } from '@jbrowse/core/util';
|
|
3
3
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
4
|
import { Block, AnyRegion } from './Chord';
|
|
5
|
-
declare
|
|
5
|
+
declare const _default: ({ features, config, displayModel, blockDefinitions, radius, bezierRadius, displayModel: { selectedFeatureId }, onChordClick, }: {
|
|
6
6
|
features: Map<string, Feature>;
|
|
7
7
|
radius: number;
|
|
8
8
|
config: AnyConfigurationModel;
|
|
@@ -13,6 +13,5 @@ declare function StructuralVariantChords(props: {
|
|
|
13
13
|
blockDefinitions: Block[];
|
|
14
14
|
bezierRadius: number;
|
|
15
15
|
onChordClick: (feature: Feature, reg: AnyRegion, endBlock: AnyRegion, evt: unknown) => void;
|
|
16
|
-
})
|
|
17
|
-
declare const _default: typeof StructuralVariantChords;
|
|
16
|
+
}) => JSX.Element;
|
|
18
17
|
export default _default;
|
|
@@ -30,8 +30,7 @@ const react_1 = __importStar(require("react"));
|
|
|
30
30
|
const mobx_react_1 = require("mobx-react");
|
|
31
31
|
// locals
|
|
32
32
|
const Chord_1 = __importDefault(require("./Chord"));
|
|
33
|
-
function StructuralVariantChords(
|
|
34
|
-
const { features, config, displayModel, blockDefinitions, radius, bezierRadius, displayModel: { selectedFeatureId }, onChordClick, } = props;
|
|
33
|
+
exports.default = (0, mobx_react_1.observer)(function StructuralVariantChords({ features, config, displayModel, blockDefinitions, radius, bezierRadius, displayModel: { selectedFeatureId }, onChordClick, }) {
|
|
35
34
|
// make a map of refName -> blockDefinition
|
|
36
35
|
const blocksForRefsMemo = (0, react_1.useMemo)(() => {
|
|
37
36
|
const blocksForRefs = {};
|
|
@@ -47,7 +46,7 @@ function StructuralVariantChords(props) {
|
|
|
47
46
|
const selected = String(selectedFeatureId) === String(id);
|
|
48
47
|
chords.push(react_1.default.createElement(Chord_1.default, { key: id, feature: feature, config: config, radius: radius, bezierRadius: bezierRadius, blocksForRefs: blocksForRefsMemo, selected: selected, onClick: onChordClick }));
|
|
49
48
|
}
|
|
50
|
-
const trackStyleId = `chords-${displayModel.id}`;
|
|
49
|
+
const trackStyleId = `chords-${typeof jest !== 'undefined' ? 'test' : displayModel.id}`;
|
|
51
50
|
return (react_1.default.createElement("g", { id: trackStyleId, "data-testid": "structuralVariantChordRenderer" },
|
|
52
51
|
react_1.default.createElement("style", {
|
|
53
52
|
// eslint-disable-next-line react/no-danger
|
|
@@ -60,6 +59,5 @@ function StructuralVariantChords(props) {
|
|
|
60
59
|
`,
|
|
61
60
|
} }),
|
|
62
61
|
chords));
|
|
63
|
-
}
|
|
64
|
-
exports.default = (0, mobx_react_1.observer)(StructuralVariantChords);
|
|
62
|
+
});
|
|
65
63
|
//# sourceMappingURL=ReactComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactComponent.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/ReactComponent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAsC;AACtC,2CAAqC;AAIrC,SAAS;AACT,oDAAiD;AAEjD,SAAS,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"ReactComponent.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/ReactComponent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAsC;AACtC,2CAAqC;AAIrC,SAAS;AACT,oDAAiD;AAEjD,kBAAe,IAAA,qBAAQ,EAAC,SAAS,uBAAuB,CAAC,EACvD,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,YAAY,EAAE,EAAE,iBAAiB,EAAE,EACnC,YAAY,GAcb;IACC,2CAA2C;IAC3C,MAAM,iBAAiB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACrC,MAAM,aAAa,GAAG,EAA8B,CAAA;QACpD,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,CAAC;YAAA,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CACpE,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CACxC,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,aAAa,CAAA;IACtB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACtB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE;QACvC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAA;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA;QACzD,MAAM,CAAC,IAAI,CACT,8BAAC,eAAK,IACJ,GAAG,EAAE,EAAE,EACP,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,GACrB,CACH,CAAA;KACF;IACD,MAAM,YAAY,GAAG,UACnB,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EACtD,EAAE,CAAA;IACF,OAAO,CACL,qCAAG,EAAE,EAAE,YAAY,iBAAc,gCAAgC;QAC/D;YACE,2CAA2C;YAC3C,uBAAuB,EAAE;gBACvB,MAAM,EAAE;aACL,YAAY;;;;CAIxB;aACQ,GACD;QACD,MAAM,CACL,CACL,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreakendOptionDialog.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/BreakendOptionDialog.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,+CAAuC;AACvC,2CAAqC;AACrC,4CAMsB;AACtB,uCAA0C;AAC1C,qDAA6C;AAC7C,UAAU;AACV,yCAAyC;AACzC,6CAAwD;AAExD,MAAM,SAAS,GAAG,IAAA,gBAAU,GAAE,CAAC;IAC7B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO;KACjB;CACF,CAAC,CAAA;AAEF,SAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,GAMT;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAA;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAA;IAEtD,OAAO,CACL,8BAAC,WAAM,IAAC,IAAI,QAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAC,+BAA+B;QACtE,8BAAC,wBAAa;YACZ,8BAAC,2BAAgB,IACf,SAAS,EAAE,OAAO,CAAC,KAAK,EACxB,OAAO,EACL,8BAAC,mBAAQ,IACP,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAC1C,EAEJ,KAAK,EAAC,+BAA+B,GACrC;YAEF,8BAAC,2BAAgB,IACf,SAAS,EAAE,OAAO,CAAC,KAAK,EACxB,OAAO,EACL,8BAAC,mBAAQ,IACP,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAC5C,EAEJ,KAAK,EAAC,qDAAqD,GAC3D,CACY;QAChB,8BAAC,wBAAa;YACZ,8BAAC,iBAAM,IACL,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;oBACtB,MAAM,OAAO,GAAG,IAAA,iBAAU,EAAC,KAAK,CAAC,CAAA;oBACjC,IAAI;wBACF,MAAM,YAAY,GAAG,QAAQ,CAAC,2BAA2B,CACvD,OAAO,EACP,IAAI,CACL,CAAA;wBACD,SAAS,QAAQ,CAAC,GAAU;4BAC1B,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gCAC1B,GAAG,CAAC;gCACJ,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;6BACpC,CAAC,CAAC,CAAA;wBACL,CAAC;wBACD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;wBACtD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;wBACtD,YAAY,CAAC,WAAW,GAAG,OAAO,CAAA;wBAClC,MAAM,UAAU,GAAG,IAAA,6BAAW,EAAC,IAAI,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"BreakendOptionDialog.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/BreakendOptionDialog.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,+CAAuC;AACvC,2CAAqC;AACrC,4CAMsB;AACtB,uCAA0C;AAC1C,qDAA6C;AAC7C,UAAU;AACV,yCAAyC;AACzC,6CAAwD;AAExD,MAAM,SAAS,GAAG,IAAA,gBAAU,GAAE,CAAC;IAC7B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO;KACjB;CACF,CAAC,CAAA;AAEF,SAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,GAMT;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAA;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAA;IAEtD,OAAO,CACL,8BAAC,WAAM,IAAC,IAAI,QAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAC,+BAA+B;QACtE,8BAAC,wBAAa;YACZ,8BAAC,2BAAgB,IACf,SAAS,EAAE,OAAO,CAAC,KAAK,EACxB,OAAO,EACL,8BAAC,mBAAQ,IACP,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAC1C,EAEJ,KAAK,EAAC,+BAA+B,GACrC;YAEF,8BAAC,2BAAgB,IACf,SAAS,EAAE,OAAO,CAAC,KAAK,EACxB,OAAO,EACL,8BAAC,mBAAQ,IACP,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAC5C,EAEJ,KAAK,EAAC,qDAAqD,GAC3D,CACY;QAChB,8BAAC,wBAAa;YACZ,8BAAC,iBAAM,IACL,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;oBACtB,MAAM,OAAO,GAAG,IAAA,iBAAU,EAAC,KAAK,CAAC,CAAA;oBACjC,IAAI;wBACF,MAAM,YAAY,GAAG,QAAQ,CAAC,2BAA2B,CACvD,OAAO,EACP,IAAI,CACL,CAAA;wBACD,SAAS,QAAQ,CAAC,GAAU;4BAC1B,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gCAC1B,GAAG,CAAC;gCACJ,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;6BACpC,CAAC,CAAC,CAAA;wBACL,CAAC;wBACD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;wBACtD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;wBACtD,YAAY,CAAC,WAAW,GAAG,OAAO,CAAA;wBAClC,MAAM,UAAU,GAAG,IAAA,6BAAW,EAAC,IAAI,CAAC,MAAM,CAAc,CAAA;wBACxD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;wBACnD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CACrC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CACzD,CAAA;wBAED,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;qBACrD;oBAAC,OAAO,CAAC,EAAE;wBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;wBAChB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;qBACvB;oBACD,WAAW,EAAE,CAAA;gBACf,CAAC,EACD,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,SAAS,eAGF;YACT,8BAAC,iBAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAC5B,KAAK,EAAC,WAAW,EACjB,OAAO,EAAC,WAAW,aAGZ,CACK,CACT,CACV,CAAA;AACH,CAAC;AACD,kBAAe,IAAA,qBAAQ,EAAC,oBAAoB,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { SimpleFeatureSerialized } from '@jbrowse/core/util
|
|
2
|
+
import { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
3
3
|
export default function VariantSamples(props: {
|
|
4
4
|
feature: SimpleFeatureSerialized;
|
|
5
5
|
descriptions: any;
|
|
@@ -23,27 +23,27 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
27
26
|
const react_1 = __importStar(require("react"));
|
|
28
27
|
const material_1 = require("@mui/material");
|
|
29
28
|
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
30
29
|
const BaseFeatureDetail_1 = require("@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail");
|
|
30
|
+
const util_1 = require("@jbrowse/core/util");
|
|
31
|
+
const ResizeBar_1 = __importStar(require("@jbrowse/core/ui/ResizeBar"));
|
|
32
|
+
function SampleFilters({ columns, filter, setFilter, }) {
|
|
33
|
+
const [showFilters, setShowFilters] = (0, react_1.useState)(false);
|
|
34
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
35
|
+
react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: showFilters, onChange: () => setShowFilters(f => !f) }), label: "Show sample filters" }),
|
|
36
|
+
showFilters ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
37
|
+
react_1.default.createElement(material_1.Typography, null, "These filters can use a plain text search or regex style query, e.g. in the genotype field, entering 1 will query for all genotypes that include the first alternate allele e.g. 0|1 or 1|1, entering [1-9]\\d* will find any non-zero allele e.g. 0|2 or 2/33"),
|
|
38
|
+
columns.map(({ field }) => (react_1.default.createElement(material_1.TextField, { key: `filter-${field}`, placeholder: `Filter ${field}`, value: filter[field] || '', onChange: event => setFilter({ ...filter, [field]: event.target.value }) }))))) : null));
|
|
39
|
+
}
|
|
31
40
|
function VariantSamples(props) {
|
|
32
|
-
|
|
41
|
+
var _a;
|
|
42
|
+
const { feature, descriptions = {} } = props;
|
|
43
|
+
const { ref, scrollLeft } = (0, ResizeBar_1.useResizeBar)();
|
|
33
44
|
const [filter, setFilter] = (0, react_1.useState)({});
|
|
34
|
-
const
|
|
35
|
-
const { samples = {} } = feature;
|
|
45
|
+
const samples = (feature.samples || {});
|
|
36
46
|
const preFilteredRows = Object.entries(samples);
|
|
37
|
-
if (!preFilteredRows.length) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
const infoFields = ['sample', ...Object.keys(preFilteredRows[0][1])].map(field => {
|
|
41
|
-
var _a, _b;
|
|
42
|
-
return ({
|
|
43
|
-
field,
|
|
44
|
-
description: (_b = (_a = descriptions.FORMAT) === null || _a === void 0 ? void 0 : _a[field]) === null || _b === void 0 ? void 0 : _b.Description,
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
47
|
let error;
|
|
48
48
|
let rows = [];
|
|
49
49
|
const filters = Object.keys(filter);
|
|
@@ -52,11 +52,13 @@ function VariantSamples(props) {
|
|
|
52
52
|
// sortable by the data-grid
|
|
53
53
|
try {
|
|
54
54
|
rows = preFilteredRows
|
|
55
|
-
.map(row =>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
.map(row => {
|
|
56
|
+
return {
|
|
57
|
+
...Object.fromEntries(Object.entries(row[1]).map(e => [e[0], `${e[1]}`])),
|
|
58
|
+
sample: row[0],
|
|
59
|
+
id: row[0],
|
|
60
|
+
};
|
|
61
|
+
})
|
|
60
62
|
.filter(row => filters.length
|
|
61
63
|
? filters.every(key => {
|
|
62
64
|
const val = row[key];
|
|
@@ -68,16 +70,25 @@ function VariantSamples(props) {
|
|
|
68
70
|
catch (e) {
|
|
69
71
|
error = e;
|
|
70
72
|
}
|
|
73
|
+
const keys = ['sample', ...Object.keys(((_a = preFilteredRows[0]) === null || _a === void 0 ? void 0 : _a[1]) || {})];
|
|
74
|
+
const [widths, setWidths] = (0, react_1.useState)(keys.map(e => (0, util_1.measureGridWidth)(rows.map(r => r[e]))));
|
|
75
|
+
const columns = keys.map((field, index) => {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
return ({
|
|
78
|
+
field,
|
|
79
|
+
description: (_b = (_a = descriptions.FORMAT) === null || _a === void 0 ? void 0 : _a[field]) === null || _b === void 0 ? void 0 : _b.Description,
|
|
80
|
+
width: widths[index],
|
|
81
|
+
});
|
|
82
|
+
});
|
|
71
83
|
// disableSelectionOnClick helps avoid
|
|
72
84
|
// https://github.com/mui-org/material-ui-x/issues/1197
|
|
73
|
-
return (react_1.default.createElement(BaseFeatureDetail_1.BaseCard, { ...props, title: "Samples" },
|
|
85
|
+
return !preFilteredRows.length ? null : (react_1.default.createElement(BaseFeatureDetail_1.BaseCard, { ...props, title: "Samples" },
|
|
74
86
|
error ? react_1.default.createElement(material_1.Typography, { color: "error" }, `${error}`) : null,
|
|
75
|
-
react_1.default.createElement(
|
|
76
|
-
|
|
77
|
-
react_1.default.createElement(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
react_1.default.createElement(x_data_grid_1.DataGrid, { rows: rows, columns: infoFields, disableSelectionOnClick: true, rowHeight: 25, disableColumnMenu: true }))));
|
|
87
|
+
react_1.default.createElement(SampleFilters, { setFilter: setFilter, columns: columns, filter: filter }),
|
|
88
|
+
react_1.default.createElement("div", { ref: ref },
|
|
89
|
+
react_1.default.createElement(ResizeBar_1.default, { widths: widths, setWidths: setWidths, scrollLeft: scrollLeft }),
|
|
90
|
+
react_1.default.createElement("div", { ref: ref, style: { height: 600, width: '100%', overflow: 'auto' } },
|
|
91
|
+
react_1.default.createElement(x_data_grid_1.DataGrid, { rows: rows, columns: columns, disableSelectionOnClick: true, rowHeight: 25, headerHeight: 35, disableColumnMenu: true })))));
|
|
81
92
|
}
|
|
82
93
|
exports.default = VariantSamples;
|
|
83
94
|
//# sourceMappingURL=VariantSampleGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAuC;AAEvC,4CAKsB;AAEtB,kDAA2C;AAC3C,yFAA4E;AAC5E,6CAA8E;AAC9E,wEAAoE;AAWpE,SAAS,aAAa,CAAC,EACrB,OAAO,EACP,MAAM,EACN,SAAS,GAKV;IACC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACrD,OAAO,CACL;QACE,8BAAC,2BAAgB,IACf,OAAO,EACL,8BAAC,mBAAQ,IACP,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GACvC,EAEJ,KAAK,EAAC,qBAAqB,GAC3B;QACD,WAAW,CAAC,CAAC,CAAC,CACb;YACE,8BAAC,qBAAU,yQAKE;YACZ,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAC1B,8BAAC,oBAAS,IACR,GAAG,EAAE,UAAU,KAAK,EAAE,EACtB,WAAW,EAAE,UAAU,KAAK,EAAE,EAC9B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAC1B,QAAQ,EAAE,KAAK,CAAC,EAAE,CAChB,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAEvD,CACH,CAAC,CACD,CACJ,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CAAA;AACH,CAAC;AAED,SAAwB,cAAc,CAAC,KAItC;;IACC,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,KAAK,CAAA;IAC5C,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAA,wBAAY,GAAE,CAAA;IAC1C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAU,EAAE,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAA+B,CAAA;IACrE,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE/C,IAAI,KAAK,CAAA;IACT,IAAI,IAAI,GAAG,EAAa,CAAA;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEnC,qCAAqC;IACrC,wEAAwE;IACxE,4BAA4B;IAC5B,IAAI;QACF,IAAI,GAAG,eAAe;aACnB,GAAG,CAAC,GAAG,CAAC,EAAE;YACT,OAAO;gBACL,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACnD;gBACD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBACd,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;aACF,CAAA;QACZ,CAAC,CAAC;aACD,MAAM,CAAC,GAAG,CAAC,EAAE,CACZ,OAAO,CAAC,MAAM;YACZ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAClB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;gBACpB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC9B,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACnE,CAAC,CAAC;YACJ,CAAC,CAAC,IAAI,CACT,CAAA;KACJ;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAA;KACV;IAED,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA,MAAA,eAAe,CAAC,CAAC,CAAC,0CAAG,CAAC,CAAC,KAAI,EAAE,CAAC,CAAC,CAAA;IAEtE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,uBAAgB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrD,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;;QAAC,OAAA,CAAC;YAC1C,KAAK;YACL,WAAW,EAAE,MAAA,MAAA,YAAY,CAAC,MAAM,0CAAG,KAAK,CAAC,0CAAE,WAAW;YACtD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACrB,CAAC,CAAA;KAAA,CAAC,CAAA;IAEH,sCAAsC;IACtC,uDAAuD;IACvD,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtC,8BAAC,4BAAQ,OAAK,KAAK,EAAE,KAAK,EAAC,SAAS;QACjC,KAAK,CAAC,CAAC,CAAC,8BAAC,qBAAU,IAAC,KAAK,EAAC,OAAO,IAAE,GAAG,KAAK,EAAE,CAAc,CAAC,CAAC,CAAC,IAAI;QACnE,8BAAC,aAAa,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI;QACzE,uCAAK,GAAG,EAAE,GAAG;YACX,8BAAC,mBAAS,IACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,GACtB;YACF,uCAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACpE,8BAAC,sBAAQ,IACP,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,uBAAuB,QACvB,SAAS,EAAE,EAAE,EACb,YAAY,EAAE,EAAE,EAChB,iBAAiB,SACjB,CACE,CACF,CACG,CACZ,CAAA;AACH,CAAC;AA9ED,iCA8EC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VcfTabixAdapter.js","sourceRoot":"","sources":["../../src/VcfTabixAdapter/VcfTabixAdapter.ts"],"names":[],"mappings":";;;;;AAAA,yEAGgD;AAEhD,8CAAoD;AACpD,kDAA0D;AAE1D,uCAA8C;AAC9C,oDAAiC;AAEjC,QAAQ;AACR,+DAAsC;AAEtC,eAAqB,SAAQ,oCAAsB;IAMzC,KAAK,CAAC,YAAY;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;QAEtD,MAAM,UAAU,GAAG,IAAA,iBAAY,EAAC,
|
|
1
|
+
{"version":3,"file":"VcfTabixAdapter.js","sourceRoot":"","sources":["../../src/VcfTabixAdapter/VcfTabixAdapter.ts"],"names":[],"mappings":";;;;;AAAA,yEAGgD;AAEhD,8CAAoD;AACpD,kDAA0D;AAE1D,uCAA8C;AAC9C,oDAAiC;AAEjC,QAAQ;AACR,+DAAsC;AAEtC,eAAqB,SAAQ,oCAAsB;IAMzC,KAAK,CAAC,YAAY;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;QAEtD,MAAM,UAAU,GAAG,IAAA,iBAAY,EAAC,aAAa,EAAE,EAAE,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,SAAS,KAAK,KAAK,CAAA;QACjC,MAAM,GAAG,GAAG,IAAI,wBAAgB,CAAC;YAC/B,UAAU;YACV,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,IAAA,iBAAY,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7D,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,iBAAY,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9D,cAAc,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE;YAC5B,cAAc,EAAE,UAAU;SAC3B,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,CAAA;QACpC,OAAO;YACL,GAAG;YACH,MAAM,EAAE,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC;SAClC,CAAA;IACH,CAAC;IAES,KAAK,CAAC,SAAS;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC9C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;gBAC3B,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;SACH;QACD,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAoB,EAAE;QAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACtC,OAAO,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACtC,OAAO,GAAG,CAAC,SAAS,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACzC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAA;IAC7B,CAAC;IAEM,WAAW,CAAC,KAAuB,EAAE,OAAoB,EAAE;QAChE,OAAO,IAAA,uBAAgB,EAAU,KAAK,EAAC,QAAQ,EAAC,EAAE;YAChD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;YACrC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;YAC9C,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;gBACtC,YAAY,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;oBACjC,QAAQ,CAAC,IAAI,CACX,IAAI,oBAAU,CAAC;wBACb,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC/B,MAAM;wBACN,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,QAAQ,UAAU,EAAE;qBACnC,CAAC,CACH,CAAA;gBACH,CAAC;gBACD,GAAG,IAAI;aACR,CAAC,CAAA;YACF,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACrB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,CAAC;IAEM,aAAa,EAAC,gBAAgB,IAAS,CAAC;CAChD;AA3ED,4BA2EC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseChordDisplayComponent } from '@jbrowse/plugin-circular-view';
|
|
2
2
|
import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType';
|
|
3
|
+
// locals
|
|
3
4
|
import configSchemaF from './models/configSchema';
|
|
4
5
|
import stateModelF from './models/stateModelFactory';
|
|
5
6
|
export default (pluginManager) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ChordVariantDisplay/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,WAAW,MAAM,iDAAiD,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ChordVariantDisplay/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,WAAW,MAAM,iDAAiD,CAAA;AAEzE,SAAS;AACT,OAAO,aAAa,MAAM,uBAAuB,CAAA;AACjD,OAAO,WAAW,MAAM,4BAA4B,CAAA;AAEpD,eAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE;QAChC,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;QAC5C,OAAO,IAAI,WAAW,CAAC;YACrB,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,uBAAuB;YACpC,YAAY;YACZ,UAAU;YACV,SAAS,EAAE,cAAc;YACzB,QAAQ,EAAE,cAAc;YACxB,cAAc,EAAE,yBAAyB;SAC1C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -101,6 +101,10 @@ declare const stateModelFactory: (configSchema: AnyConfigurationSchemaType) => i
|
|
|
101
101
|
setRefNameMap(refNameMap: Record<string, string>): void;
|
|
102
102
|
} & {
|
|
103
103
|
afterAttach(): void;
|
|
104
|
+
} & {
|
|
105
|
+
renderSvg(opts: import("@jbrowse/plugin-circular-view/src/CircularView/models/CircularView").ExportSvgOptions & {
|
|
106
|
+
theme: import("@mui/material").ThemeOptions;
|
|
107
|
+
}): Promise<JSX.Element>;
|
|
104
108
|
} & {
|
|
105
109
|
/**
|
|
106
110
|
* #getter
|
|
@@ -11,7 +11,7 @@ export default function stateModelFactory(configSchema: LinearVariantDisplayConf
|
|
|
11
11
|
type: import("mobx-state-tree").ISimpleType<string>;
|
|
12
12
|
rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
13
13
|
} & {
|
|
14
|
-
|
|
14
|
+
heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
15
15
|
blockState: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
|
|
16
16
|
key: import("mobx-state-tree").ISimpleType<string>;
|
|
17
17
|
region: import("mobx-state-tree").IModelType<{
|
|
@@ -137,6 +137,7 @@ export default function stateModelFactory(configSchema: LinearVariantDisplayConf
|
|
|
137
137
|
estimatedRegionStatsP: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats> | undefined;
|
|
138
138
|
estimatedRegionStats: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined;
|
|
139
139
|
} & {
|
|
140
|
+
readonly height: any;
|
|
140
141
|
readonly blockType: "dynamicBlocks" | "staticBlocks";
|
|
141
142
|
readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
|
|
142
143
|
} & {
|
|
@@ -166,7 +167,7 @@ export default function stateModelFactory(configSchema: LinearVariantDisplayConf
|
|
|
166
167
|
setRegionStatsP(p?: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats> | undefined): void;
|
|
167
168
|
setRegionStats(estimatedRegionStats?: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined): void;
|
|
168
169
|
clearRegionStats(): void;
|
|
169
|
-
setHeight(displayHeight: number):
|
|
170
|
+
setHeight(displayHeight: number): any;
|
|
170
171
|
resizeHeight(distance: number): number;
|
|
171
172
|
setScrollTop(scrollTop: number): void;
|
|
172
173
|
updateStatsLimit(stats: import("@jbrowse/core/data_adapters/BaseAdapter").Stats): void;
|
|
@@ -199,6 +200,7 @@ export default function stateModelFactory(configSchema: LinearVariantDisplayConf
|
|
|
199
200
|
} & {
|
|
200
201
|
renderSvg(opts: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").ExportSvgOptions & {
|
|
201
202
|
overrideHeight: number;
|
|
203
|
+
theme: import("@mui/material").ThemeOptions;
|
|
202
204
|
}): Promise<JSX.Element>;
|
|
203
205
|
} & {
|
|
204
206
|
readonly rendererTypeName: any;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Feature } from '@jbrowse/core/util';
|
|
3
3
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
4
|
import { Block, AnyRegion } from './Chord';
|
|
5
|
-
declare
|
|
5
|
+
declare const _default: ({ features, config, displayModel, blockDefinitions, radius, bezierRadius, displayModel: { selectedFeatureId }, onChordClick, }: {
|
|
6
6
|
features: Map<string, Feature>;
|
|
7
7
|
radius: number;
|
|
8
8
|
config: AnyConfigurationModel;
|
|
@@ -13,6 +13,5 @@ declare function StructuralVariantChords(props: {
|
|
|
13
13
|
blockDefinitions: Block[];
|
|
14
14
|
bezierRadius: number;
|
|
15
15
|
onChordClick: (feature: Feature, reg: AnyRegion, endBlock: AnyRegion, evt: unknown) => void;
|
|
16
|
-
})
|
|
17
|
-
declare const _default: typeof StructuralVariantChords;
|
|
16
|
+
}) => JSX.Element;
|
|
18
17
|
export default _default;
|
|
@@ -2,8 +2,7 @@ import React, { useMemo } from 'react';
|
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
3
|
// locals
|
|
4
4
|
import Chord from './Chord';
|
|
5
|
-
function StructuralVariantChords(
|
|
6
|
-
const { features, config, displayModel, blockDefinitions, radius, bezierRadius, displayModel: { selectedFeatureId }, onChordClick, } = props;
|
|
5
|
+
export default observer(function StructuralVariantChords({ features, config, displayModel, blockDefinitions, radius, bezierRadius, displayModel: { selectedFeatureId }, onChordClick, }) {
|
|
7
6
|
// make a map of refName -> blockDefinition
|
|
8
7
|
const blocksForRefsMemo = useMemo(() => {
|
|
9
8
|
const blocksForRefs = {};
|
|
@@ -19,7 +18,7 @@ function StructuralVariantChords(props) {
|
|
|
19
18
|
const selected = String(selectedFeatureId) === String(id);
|
|
20
19
|
chords.push(React.createElement(Chord, { key: id, feature: feature, config: config, radius: radius, bezierRadius: bezierRadius, blocksForRefs: blocksForRefsMemo, selected: selected, onClick: onChordClick }));
|
|
21
20
|
}
|
|
22
|
-
const trackStyleId = `chords-${displayModel.id}`;
|
|
21
|
+
const trackStyleId = `chords-${typeof jest !== 'undefined' ? 'test' : displayModel.id}`;
|
|
23
22
|
return (React.createElement("g", { id: trackStyleId, "data-testid": "structuralVariantChordRenderer" },
|
|
24
23
|
React.createElement("style", {
|
|
25
24
|
// eslint-disable-next-line react/no-danger
|
|
@@ -32,6 +31,5 @@ function StructuralVariantChords(props) {
|
|
|
32
31
|
`,
|
|
33
32
|
} }),
|
|
34
33
|
chords));
|
|
35
|
-
}
|
|
36
|
-
export default observer(StructuralVariantChords);
|
|
34
|
+
});
|
|
37
35
|
//# sourceMappingURL=ReactComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactComponent.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/ReactComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,SAAS;AACT,OAAO,KAA2B,MAAM,SAAS,CAAA;AAEjD,SAAS,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"ReactComponent.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/ReactComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,SAAS;AACT,OAAO,KAA2B,MAAM,SAAS,CAAA;AAEjD,eAAe,QAAQ,CAAC,SAAS,uBAAuB,CAAC,EACvD,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,YAAY,EAAE,EAAE,iBAAiB,EAAE,EACnC,YAAY,GAcb;IACC,2CAA2C;IAC3C,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,MAAM,aAAa,GAAG,EAA8B,CAAA;QACpD,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,CAAC;YAAA,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CACpE,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CACxC,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,aAAa,CAAA;IACtB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACtB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE;QACvC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAA;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA;QACzD,MAAM,CAAC,IAAI,CACT,oBAAC,KAAK,IACJ,GAAG,EAAE,EAAE,EACP,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,GACrB,CACH,CAAA;KACF;IACD,MAAM,YAAY,GAAG,UACnB,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EACtD,EAAE,CAAA;IACF,OAAO,CACL,2BAAG,EAAE,EAAE,YAAY,iBAAc,gCAAgC;QAC/D;YACE,2CAA2C;YAC3C,uBAAuB,EAAE;gBACvB,MAAM,EAAE;aACL,YAAY;;;;CAIxB;aACQ,GACD;QACD,MAAM,CACL,CACL,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreakendOptionDialog.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/BreakendOptionDialog.tsx"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EACL,MAAM,EACN,QAAQ,EACR,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,UAAU;AACV,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAW,MAAM,oBAAoB,CAAA;AAExD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO;KACjB;CACF,CAAC,CAAA;AAEF,SAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,GAMT;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEtD,OAAO,CACL,oBAAC,MAAM,IAAC,IAAI,QAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAC,+BAA+B;QACtE,oBAAC,aAAa;YACZ,oBAAC,gBAAgB,IACf,SAAS,EAAE,OAAO,CAAC,KAAK,EACxB,OAAO,EACL,oBAAC,QAAQ,IACP,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAC1C,EAEJ,KAAK,EAAC,+BAA+B,GACrC;YAEF,oBAAC,gBAAgB,IACf,SAAS,EAAE,OAAO,CAAC,KAAK,EACxB,OAAO,EACL,oBAAC,QAAQ,IACP,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAC5C,EAEJ,KAAK,EAAC,qDAAqD,GAC3D,CACY;QAChB,oBAAC,aAAa;YACZ,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;oBACtB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;oBACjC,IAAI;wBACF,MAAM,YAAY,GAAG,QAAQ,CAAC,2BAA2B,CACvD,OAAO,EACP,IAAI,CACL,CAAA;wBACD,SAAS,QAAQ,CAAC,GAAU;4BAC1B,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gCAC1B,GAAG,CAAC;gCACJ,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;6BACpC,CAAC,CAAC,CAAA;wBACL,CAAC;wBACD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;wBACtD,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;wBACtD,YAAY,CAAC,WAAW,GAAG,OAAO,CAAA;wBAClC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"BreakendOptionDialog.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/BreakendOptionDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { SimpleFeatureSerialized } from '@jbrowse/core/util
|
|
2
|
+
import { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
3
3
|
export default function VariantSamples(props: {
|
|
4
4
|
feature: SimpleFeatureSerialized;
|
|
5
5
|
descriptions: any;
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
import React, { useState } from 'react';
|
|
3
2
|
import { FormControlLabel, Checkbox, TextField, Typography, } from '@mui/material';
|
|
4
3
|
import { DataGrid } from '@mui/x-data-grid';
|
|
5
4
|
import { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';
|
|
5
|
+
import { measureGridWidth } from '@jbrowse/core/util';
|
|
6
|
+
import ResizeBar, { useResizeBar } from '@jbrowse/core/ui/ResizeBar';
|
|
7
|
+
function SampleFilters({ columns, filter, setFilter, }) {
|
|
8
|
+
const [showFilters, setShowFilters] = useState(false);
|
|
9
|
+
return (React.createElement(React.Fragment, null,
|
|
10
|
+
React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: showFilters, onChange: () => setShowFilters(f => !f) }), label: "Show sample filters" }),
|
|
11
|
+
showFilters ? (React.createElement(React.Fragment, null,
|
|
12
|
+
React.createElement(Typography, null, "These filters can use a plain text search or regex style query, e.g. in the genotype field, entering 1 will query for all genotypes that include the first alternate allele e.g. 0|1 or 1|1, entering [1-9]\\d* will find any non-zero allele e.g. 0|2 or 2/33"),
|
|
13
|
+
columns.map(({ field }) => (React.createElement(TextField, { key: `filter-${field}`, placeholder: `Filter ${field}`, value: filter[field] || '', onChange: event => setFilter({ ...filter, [field]: event.target.value }) }))))) : null));
|
|
14
|
+
}
|
|
6
15
|
export default function VariantSamples(props) {
|
|
7
|
-
|
|
16
|
+
var _a;
|
|
17
|
+
const { feature, descriptions = {} } = props;
|
|
18
|
+
const { ref, scrollLeft } = useResizeBar();
|
|
8
19
|
const [filter, setFilter] = useState({});
|
|
9
|
-
const
|
|
10
|
-
const { samples = {} } = feature;
|
|
20
|
+
const samples = (feature.samples || {});
|
|
11
21
|
const preFilteredRows = Object.entries(samples);
|
|
12
|
-
if (!preFilteredRows.length) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
const infoFields = ['sample', ...Object.keys(preFilteredRows[0][1])].map(field => {
|
|
16
|
-
var _a, _b;
|
|
17
|
-
return ({
|
|
18
|
-
field,
|
|
19
|
-
description: (_b = (_a = descriptions.FORMAT) === null || _a === void 0 ? void 0 : _a[field]) === null || _b === void 0 ? void 0 : _b.Description,
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
22
|
let error;
|
|
23
23
|
let rows = [];
|
|
24
24
|
const filters = Object.keys(filter);
|
|
@@ -27,11 +27,13 @@ export default function VariantSamples(props) {
|
|
|
27
27
|
// sortable by the data-grid
|
|
28
28
|
try {
|
|
29
29
|
rows = preFilteredRows
|
|
30
|
-
.map(row =>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
.map(row => {
|
|
31
|
+
return {
|
|
32
|
+
...Object.fromEntries(Object.entries(row[1]).map(e => [e[0], `${e[1]}`])),
|
|
33
|
+
sample: row[0],
|
|
34
|
+
id: row[0],
|
|
35
|
+
};
|
|
36
|
+
})
|
|
35
37
|
.filter(row => filters.length
|
|
36
38
|
? filters.every(key => {
|
|
37
39
|
const val = row[key];
|
|
@@ -43,15 +45,24 @@ export default function VariantSamples(props) {
|
|
|
43
45
|
catch (e) {
|
|
44
46
|
error = e;
|
|
45
47
|
}
|
|
48
|
+
const keys = ['sample', ...Object.keys(((_a = preFilteredRows[0]) === null || _a === void 0 ? void 0 : _a[1]) || {})];
|
|
49
|
+
const [widths, setWidths] = useState(keys.map(e => measureGridWidth(rows.map(r => r[e]))));
|
|
50
|
+
const columns = keys.map((field, index) => {
|
|
51
|
+
var _a, _b;
|
|
52
|
+
return ({
|
|
53
|
+
field,
|
|
54
|
+
description: (_b = (_a = descriptions.FORMAT) === null || _a === void 0 ? void 0 : _a[field]) === null || _b === void 0 ? void 0 : _b.Description,
|
|
55
|
+
width: widths[index],
|
|
56
|
+
});
|
|
57
|
+
});
|
|
46
58
|
// disableSelectionOnClick helps avoid
|
|
47
59
|
// https://github.com/mui-org/material-ui-x/issues/1197
|
|
48
|
-
return (React.createElement(BaseCard, { ...props, title: "Samples" },
|
|
60
|
+
return !preFilteredRows.length ? null : (React.createElement(BaseCard, { ...props, title: "Samples" },
|
|
49
61
|
error ? React.createElement(Typography, { color: "error" }, `${error}`) : null,
|
|
50
|
-
React.createElement(
|
|
51
|
-
|
|
52
|
-
React.createElement(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
React.createElement(DataGrid, { rows: rows, columns: infoFields, disableSelectionOnClick: true, rowHeight: 25, disableColumnMenu: true }))));
|
|
62
|
+
React.createElement(SampleFilters, { setFilter: setFilter, columns: columns, filter: filter }),
|
|
63
|
+
React.createElement("div", { ref: ref },
|
|
64
|
+
React.createElement(ResizeBar, { widths: widths, setWidths: setWidths, scrollLeft: scrollLeft }),
|
|
65
|
+
React.createElement("div", { ref: ref, style: { height: 600, width: '100%', overflow: 'auto' } },
|
|
66
|
+
React.createElement(DataGrid, { rows: rows, columns: columns, disableSelectionOnClick: true, rowHeight: 25, headerHeight: 35, disableColumnMenu: true })))));
|
|
56
67
|
}
|
|
57
68
|
//# sourceMappingURL=VariantSampleGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VcfTabixAdapter.js","sourceRoot":"","sources":["../../src/VcfTabixAdapter/VcfTabixAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAEvB,MAAM,yCAAyC,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,QAAQ;AACR,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,OAAO,MAAO,SAAQ,sBAAsB;IAMzC,KAAK,CAAC,YAAY;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;QAEtD,MAAM,UAAU,GAAG,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"VcfTabixAdapter.js","sourceRoot":"","sources":["../../src/VcfTabixAdapter/VcfTabixAdapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-variants",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "JBrowse 2 variant adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"distModule": "esm/index.js",
|
|
65
65
|
"srcModule": "src/index.ts",
|
|
66
66
|
"module": "esm/index.js",
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "78707a2bc3ba8489f26a590ef83f62ede945d048"
|
|
68
68
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import PluginManager from '@jbrowse/core/PluginManager'
|
|
2
2
|
import { BaseChordDisplayComponent } from '@jbrowse/plugin-circular-view'
|
|
3
3
|
import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'
|
|
4
|
+
|
|
5
|
+
// locals
|
|
4
6
|
import configSchemaF from './models/configSchema'
|
|
5
7
|
import stateModelF from './models/stateModelFactory'
|
|
6
8
|
|
|
@@ -6,7 +6,16 @@ import { AnyConfigurationModel } from '@jbrowse/core/configuration'
|
|
|
6
6
|
// locals
|
|
7
7
|
import Chord, { Block, AnyRegion } from './Chord'
|
|
8
8
|
|
|
9
|
-
function StructuralVariantChords(
|
|
9
|
+
export default observer(function StructuralVariantChords({
|
|
10
|
+
features,
|
|
11
|
+
config,
|
|
12
|
+
displayModel,
|
|
13
|
+
blockDefinitions,
|
|
14
|
+
radius,
|
|
15
|
+
bezierRadius,
|
|
16
|
+
displayModel: { selectedFeatureId },
|
|
17
|
+
onChordClick,
|
|
18
|
+
}: {
|
|
10
19
|
features: Map<string, Feature>
|
|
11
20
|
radius: number
|
|
12
21
|
config: AnyConfigurationModel
|
|
@@ -20,16 +29,6 @@ function StructuralVariantChords(props: {
|
|
|
20
29
|
evt: unknown,
|
|
21
30
|
) => void
|
|
22
31
|
}) {
|
|
23
|
-
const {
|
|
24
|
-
features,
|
|
25
|
-
config,
|
|
26
|
-
displayModel,
|
|
27
|
-
blockDefinitions,
|
|
28
|
-
radius,
|
|
29
|
-
bezierRadius,
|
|
30
|
-
displayModel: { selectedFeatureId },
|
|
31
|
-
onChordClick,
|
|
32
|
-
} = props
|
|
33
32
|
// make a map of refName -> blockDefinition
|
|
34
33
|
const blocksForRefsMemo = useMemo(() => {
|
|
35
34
|
const blocksForRefs = {} as { [key: string]: Block }
|
|
@@ -57,7 +56,9 @@ function StructuralVariantChords(props: {
|
|
|
57
56
|
/>,
|
|
58
57
|
)
|
|
59
58
|
}
|
|
60
|
-
const trackStyleId = `chords-${
|
|
59
|
+
const trackStyleId = `chords-${
|
|
60
|
+
typeof jest !== 'undefined' ? 'test' : displayModel.id
|
|
61
|
+
}`
|
|
61
62
|
return (
|
|
62
63
|
<g id={trackStyleId} data-testid="structuralVariantChordRenderer">
|
|
63
64
|
<style
|
|
@@ -74,6 +75,4 @@ function StructuralVariantChords(props: {
|
|
|
74
75
|
{chords}
|
|
75
76
|
</g>
|
|
76
77
|
)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export default observer(StructuralVariantChords)
|
|
78
|
+
})
|
|
@@ -79,7 +79,7 @@ function BreakendOptionDialog({
|
|
|
79
79
|
viewSnapshot.views[0].offsetPx -= view.width / 2 + 100
|
|
80
80
|
viewSnapshot.views[1].offsetPx -= view.width / 2 + 100
|
|
81
81
|
viewSnapshot.featureData = feature
|
|
82
|
-
const viewTracks = getSnapshot(view.tracks) as
|
|
82
|
+
const viewTracks = getSnapshot(view.tracks) as unknown[]
|
|
83
83
|
viewSnapshot.views[0].tracks = remapIds(viewTracks)
|
|
84
84
|
viewSnapshot.views[1].tracks = remapIds(
|
|
85
85
|
mirrorTracks ? viewTracks.slice().reverse() : viewTracks,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
import React, { useState } from 'react'
|
|
3
2
|
|
|
4
3
|
import {
|
|
@@ -10,7 +9,8 @@ import {
|
|
|
10
9
|
|
|
11
10
|
import { DataGrid } from '@mui/x-data-grid'
|
|
12
11
|
import { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'
|
|
13
|
-
import { SimpleFeatureSerialized } from '@jbrowse/core/util
|
|
12
|
+
import { measureGridWidth, SimpleFeatureSerialized } from '@jbrowse/core/util'
|
|
13
|
+
import ResizeBar, { useResizeBar } from '@jbrowse/core/ui/ResizeBar'
|
|
14
14
|
|
|
15
15
|
interface Entry {
|
|
16
16
|
sample: string
|
|
@@ -18,66 +18,21 @@ interface Entry {
|
|
|
18
18
|
[key: string]: string
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
type InfoFields = Record<string, unknown>
|
|
22
|
+
type Filters = Record<string, string>
|
|
23
|
+
|
|
24
|
+
function SampleFilters({
|
|
25
|
+
columns,
|
|
26
|
+
filter,
|
|
27
|
+
setFilter,
|
|
28
|
+
}: {
|
|
29
|
+
columns: { field: string }[]
|
|
30
|
+
filter: Filters
|
|
31
|
+
setFilter: (arg: Filters) => void
|
|
24
32
|
}) {
|
|
25
|
-
const { feature, descriptions } = props
|
|
26
|
-
const [filter, setFilter] = useState<Record<string, string>>({})
|
|
27
33
|
const [showFilters, setShowFilters] = useState(false)
|
|
28
|
-
const { samples = {} } = feature as Record<
|
|
29
|
-
string,
|
|
30
|
-
Record<string, Record<string, unknown>>
|
|
31
|
-
>
|
|
32
|
-
const preFilteredRows = Object.entries(samples)
|
|
33
|
-
if (!preFilteredRows.length) {
|
|
34
|
-
return null
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const infoFields = ['sample', ...Object.keys(preFilteredRows[0][1])].map(
|
|
38
|
-
field => ({
|
|
39
|
-
field,
|
|
40
|
-
description: descriptions.FORMAT?.[field]?.Description,
|
|
41
|
-
}),
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
let error
|
|
45
|
-
let rows = [] as Entry[]
|
|
46
|
-
const filters = Object.keys(filter)
|
|
47
|
-
|
|
48
|
-
// catch some error thrown from regex
|
|
49
|
-
// note: maps all values into a string, if this is not done rows are not
|
|
50
|
-
// sortable by the data-grid
|
|
51
|
-
try {
|
|
52
|
-
rows = preFilteredRows
|
|
53
|
-
.map(
|
|
54
|
-
row =>
|
|
55
|
-
({
|
|
56
|
-
...Object.fromEntries(
|
|
57
|
-
Object.entries(row[1]).map(entry => [entry[0], String(entry[1])]),
|
|
58
|
-
),
|
|
59
|
-
sample: row[0],
|
|
60
|
-
id: row[0],
|
|
61
|
-
} as Entry),
|
|
62
|
-
)
|
|
63
|
-
.filter(row =>
|
|
64
|
-
filters.length
|
|
65
|
-
? filters.every(key => {
|
|
66
|
-
const val = row[key]
|
|
67
|
-
const currFilter = filter[key]
|
|
68
|
-
return currFilter ? val.match(new RegExp(currFilter, 'i')) : true
|
|
69
|
-
})
|
|
70
|
-
: true,
|
|
71
|
-
)
|
|
72
|
-
} catch (e) {
|
|
73
|
-
error = e
|
|
74
|
-
}
|
|
75
|
-
// disableSelectionOnClick helps avoid
|
|
76
|
-
// https://github.com/mui-org/material-ui-x/issues/1197
|
|
77
34
|
return (
|
|
78
|
-
|
|
79
|
-
{error ? <Typography color="error">{`${error}`}</Typography> : null}
|
|
80
|
-
|
|
35
|
+
<>
|
|
81
36
|
<FormControlLabel
|
|
82
37
|
control={
|
|
83
38
|
<Checkbox
|
|
@@ -95,7 +50,7 @@ export default function VariantSamples(props: {
|
|
|
95
50
|
include the first alternate allele e.g. 0|1 or 1|1, entering
|
|
96
51
|
[1-9]\d* will find any non-zero allele e.g. 0|2 or 2/33
|
|
97
52
|
</Typography>
|
|
98
|
-
{
|
|
53
|
+
{columns.map(({ field }) => (
|
|
99
54
|
<TextField
|
|
100
55
|
key={`filter-${field}`}
|
|
101
56
|
placeholder={`Filter ${field}`}
|
|
@@ -107,14 +62,85 @@ export default function VariantSamples(props: {
|
|
|
107
62
|
))}
|
|
108
63
|
</>
|
|
109
64
|
) : null}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
65
|
+
</>
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export default function VariantSamples(props: {
|
|
70
|
+
feature: SimpleFeatureSerialized
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
descriptions: any
|
|
73
|
+
}) {
|
|
74
|
+
const { feature, descriptions = {} } = props
|
|
75
|
+
const { ref, scrollLeft } = useResizeBar()
|
|
76
|
+
const [filter, setFilter] = useState<Filters>({})
|
|
77
|
+
const samples = (feature.samples || {}) as Record<string, InfoFields>
|
|
78
|
+
const preFilteredRows = Object.entries(samples)
|
|
79
|
+
|
|
80
|
+
let error
|
|
81
|
+
let rows = [] as Entry[]
|
|
82
|
+
const filters = Object.keys(filter)
|
|
83
|
+
|
|
84
|
+
// catch some error thrown from regex
|
|
85
|
+
// note: maps all values into a string, if this is not done rows are not
|
|
86
|
+
// sortable by the data-grid
|
|
87
|
+
try {
|
|
88
|
+
rows = preFilteredRows
|
|
89
|
+
.map(row => {
|
|
90
|
+
return {
|
|
91
|
+
...Object.fromEntries(
|
|
92
|
+
Object.entries(row[1]).map(e => [e[0], `${e[1]}`]),
|
|
93
|
+
),
|
|
94
|
+
sample: row[0],
|
|
95
|
+
id: row[0],
|
|
96
|
+
} as Entry
|
|
97
|
+
})
|
|
98
|
+
.filter(row =>
|
|
99
|
+
filters.length
|
|
100
|
+
? filters.every(key => {
|
|
101
|
+
const val = row[key]
|
|
102
|
+
const currFilter = filter[key]
|
|
103
|
+
return currFilter ? val.match(new RegExp(currFilter, 'i')) : true
|
|
104
|
+
})
|
|
105
|
+
: true,
|
|
106
|
+
)
|
|
107
|
+
} catch (e) {
|
|
108
|
+
error = e
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const keys = ['sample', ...Object.keys(preFilteredRows[0]?.[1] || {})]
|
|
112
|
+
|
|
113
|
+
const [widths, setWidths] = useState(
|
|
114
|
+
keys.map(e => measureGridWidth(rows.map(r => r[e]))),
|
|
115
|
+
)
|
|
116
|
+
const columns = keys.map((field, index) => ({
|
|
117
|
+
field,
|
|
118
|
+
description: descriptions.FORMAT?.[field]?.Description,
|
|
119
|
+
width: widths[index],
|
|
120
|
+
}))
|
|
121
|
+
|
|
122
|
+
// disableSelectionOnClick helps avoid
|
|
123
|
+
// https://github.com/mui-org/material-ui-x/issues/1197
|
|
124
|
+
return !preFilteredRows.length ? null : (
|
|
125
|
+
<BaseCard {...props} title="Samples">
|
|
126
|
+
{error ? <Typography color="error">{`${error}`}</Typography> : null}
|
|
127
|
+
<SampleFilters setFilter={setFilter} columns={columns} filter={filter} />
|
|
128
|
+
<div ref={ref}>
|
|
129
|
+
<ResizeBar
|
|
130
|
+
widths={widths}
|
|
131
|
+
setWidths={setWidths}
|
|
132
|
+
scrollLeft={scrollLeft}
|
|
117
133
|
/>
|
|
134
|
+
<div ref={ref} style={{ height: 600, width: '100%', overflow: 'auto' }}>
|
|
135
|
+
<DataGrid
|
|
136
|
+
rows={rows}
|
|
137
|
+
columns={columns}
|
|
138
|
+
disableSelectionOnClick
|
|
139
|
+
rowHeight={25}
|
|
140
|
+
headerHeight={35}
|
|
141
|
+
disableColumnMenu
|
|
142
|
+
/>
|
|
143
|
+
</div>
|
|
118
144
|
</div>
|
|
119
145
|
</BaseCard>
|
|
120
146
|
)
|
|
@@ -29,7 +29,7 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
29
29
|
>
|
|
30
30
|
<svg
|
|
31
31
|
aria-hidden="true"
|
|
32
|
-
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-
|
|
32
|
+
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-ymsoo8-MuiSvgIcon-root-expandIcon"
|
|
33
33
|
data-testid="ExpandMoreIcon"
|
|
34
34
|
focusable="false"
|
|
35
35
|
viewBox="0 0 24 24"
|
|
@@ -66,7 +66,7 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
66
66
|
class="css-1m8nxnb-field"
|
|
67
67
|
>
|
|
68
68
|
<div
|
|
69
|
-
class="css-
|
|
69
|
+
class="css-1q83rf3-fieldName"
|
|
70
70
|
>
|
|
71
71
|
Position
|
|
72
72
|
</div>
|
|
@@ -80,32 +80,32 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
80
80
|
class="css-1m8nxnb-field"
|
|
81
81
|
>
|
|
82
82
|
<div
|
|
83
|
-
class="css-
|
|
83
|
+
class="css-1q83rf3-fieldName"
|
|
84
84
|
>
|
|
85
85
|
Name
|
|
86
86
|
</div>
|
|
87
87
|
<div
|
|
88
88
|
class="css-1omt041-fieldValue"
|
|
89
89
|
>
|
|
90
|
-
<
|
|
90
|
+
<span>
|
|
91
91
|
rs123
|
|
92
|
-
</
|
|
92
|
+
</span>
|
|
93
93
|
</div>
|
|
94
94
|
</div>
|
|
95
95
|
<div
|
|
96
96
|
class="css-1m8nxnb-field"
|
|
97
97
|
>
|
|
98
98
|
<div
|
|
99
|
-
class="css-
|
|
99
|
+
class="css-1q83rf3-fieldName"
|
|
100
100
|
>
|
|
101
101
|
Length
|
|
102
102
|
</div>
|
|
103
103
|
<div
|
|
104
104
|
class="css-1omt041-fieldValue"
|
|
105
105
|
>
|
|
106
|
-
<
|
|
106
|
+
<span>
|
|
107
107
|
1
|
|
108
|
-
</
|
|
108
|
+
</span>
|
|
109
109
|
</div>
|
|
110
110
|
</div>
|
|
111
111
|
<hr
|
|
@@ -121,7 +121,7 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
121
121
|
>
|
|
122
122
|
<div
|
|
123
123
|
aria-label="reference base(s): Each base must be one of A,C,G,T,N (case insensitive)."
|
|
124
|
-
class="css-
|
|
124
|
+
class="css-18vnxxj-fieldDescription-fieldName"
|
|
125
125
|
data-mui-internal-clone-element="true"
|
|
126
126
|
>
|
|
127
127
|
REF
|
|
@@ -129,9 +129,9 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
129
129
|
<div
|
|
130
130
|
class="css-1omt041-fieldValue"
|
|
131
131
|
>
|
|
132
|
-
<
|
|
132
|
+
<span>
|
|
133
133
|
A
|
|
134
|
-
</
|
|
134
|
+
</span>
|
|
135
135
|
</div>
|
|
136
136
|
</div>
|
|
137
137
|
<div
|
|
@@ -139,7 +139,7 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
139
139
|
>
|
|
140
140
|
<div
|
|
141
141
|
aria-label="alternate base(s): Comma-separated list of alternate non-reference alleles"
|
|
142
|
-
class="css-
|
|
142
|
+
class="css-18vnxxj-fieldDescription-fieldName"
|
|
143
143
|
data-mui-internal-clone-element="true"
|
|
144
144
|
>
|
|
145
145
|
ALT
|
|
@@ -147,9 +147,9 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
147
147
|
<div
|
|
148
148
|
class="css-1omt041-fieldValue"
|
|
149
149
|
>
|
|
150
|
-
<
|
|
150
|
+
<span>
|
|
151
151
|
<TRA>
|
|
152
|
-
</
|
|
152
|
+
</span>
|
|
153
153
|
</div>
|
|
154
154
|
</div>
|
|
155
155
|
<div
|
|
@@ -157,7 +157,7 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
157
157
|
>
|
|
158
158
|
<div
|
|
159
159
|
aria-label="quality: Phred-scaled quality score for the assertion made in ALT"
|
|
160
|
-
class="css-
|
|
160
|
+
class="css-18vnxxj-fieldDescription-fieldName"
|
|
161
161
|
data-mui-internal-clone-element="true"
|
|
162
162
|
>
|
|
163
163
|
QUAL
|
|
@@ -165,16 +165,16 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
165
165
|
<div
|
|
166
166
|
class="css-1omt041-fieldValue"
|
|
167
167
|
>
|
|
168
|
-
<
|
|
168
|
+
<span>
|
|
169
169
|
10.4
|
|
170
|
-
</
|
|
170
|
+
</span>
|
|
171
171
|
</div>
|
|
172
172
|
</div>
|
|
173
173
|
<div
|
|
174
174
|
class="css-1m8nxnb-field"
|
|
175
175
|
>
|
|
176
176
|
<div
|
|
177
|
-
class="css-
|
|
177
|
+
class="css-1q83rf3-fieldName"
|
|
178
178
|
style="width: 62px;"
|
|
179
179
|
>
|
|
180
180
|
INFO.MQ
|
|
@@ -182,9 +182,9 @@ exports[`renders with just the required model elements 1`] = `
|
|
|
182
182
|
<div
|
|
183
183
|
class="css-1omt041-fieldValue"
|
|
184
184
|
>
|
|
185
|
-
<
|
|
185
|
+
<span>
|
|
186
186
|
5
|
|
187
|
-
</
|
|
187
|
+
</span>
|
|
188
188
|
</div>
|
|
189
189
|
</div>
|
|
190
190
|
<div
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
BaseFeatureDataAdapter,
|
|
3
3
|
BaseOptions,
|
|
4
4
|
} from '@jbrowse/core/data_adapters/BaseAdapter'
|
|
5
|
-
import {
|
|
5
|
+
import { NoAssemblyRegion } from '@jbrowse/core/util/types'
|
|
6
6
|
import { openLocation } from '@jbrowse/core/util/io'
|
|
7
7
|
import { ObservableCreate } from '@jbrowse/core/util/rxjs'
|
|
8
8
|
import { Feature } from '@jbrowse/core/util'
|
|
@@ -24,7 +24,7 @@ export default class extends BaseFeatureDataAdapter {
|
|
|
24
24
|
const location = this.getConf(['index', 'location'])
|
|
25
25
|
const indexType = this.getConf(['index', 'indexType'])
|
|
26
26
|
|
|
27
|
-
const filehandle = openLocation(vcfGzLocation
|
|
27
|
+
const filehandle = openLocation(vcfGzLocation, pm)
|
|
28
28
|
const isCSI = indexType === 'CSI'
|
|
29
29
|
const vcf = new TabixIndexedFile({
|
|
30
30
|
filehandle,
|