@jbrowse/plugin-variants 2.1.2 → 2.1.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/dist/StructuralVariantChordRenderer/ReactComponent.d.ts +1 -1
- package/dist/VariantFeatureWidget/VariantFeatureWidget.js +1 -1
- package/dist/VariantFeatureWidget/VariantFeatureWidget.js.map +1 -1
- package/dist/VariantFeatureWidget/VariantSampleGrid.d.ts +5 -1
- package/dist/VariantFeatureWidget/VariantSampleGrid.js +17 -17
- package/dist/VariantFeatureWidget/VariantSampleGrid.js.map +1 -1
- package/esm/StructuralVariantChordRenderer/ReactComponent.d.ts +1 -1
- package/esm/VariantFeatureWidget/VariantFeatureWidget.js +1 -1
- package/esm/VariantFeatureWidget/VariantFeatureWidget.js.map +1 -1
- package/esm/VariantFeatureWidget/VariantSampleGrid.d.ts +5 -1
- package/esm/VariantFeatureWidget/VariantSampleGrid.js +17 -17
- package/esm/VariantFeatureWidget/VariantSampleGrid.js.map +1 -1
- package/package.json +2 -2
- package/src/VariantFeatureWidget/VariantFeatureWidget.tsx +5 -1
- package/src/VariantFeatureWidget/VariantSampleGrid.tsx +46 -30
|
@@ -8,7 +8,7 @@ declare namespace _default {
|
|
|
8
8
|
const radius: PropTypes.Validator<number>;
|
|
9
9
|
const bezierRadius: PropTypes.Validator<number>;
|
|
10
10
|
const selectedFeatureId: PropTypes.Requireable<string>;
|
|
11
|
-
const onChordClick: PropTypes.Requireable<string | ((...args: any[]) => any)
|
|
11
|
+
const onChordClick: PropTypes.Requireable<NonNullable<string | ((...args: any[]) => any) | null | undefined>>;
|
|
12
12
|
}
|
|
13
13
|
namespace defaultProps {
|
|
14
14
|
const displayModel_1: undefined;
|
|
@@ -37,7 +37,7 @@ function VariantFeatureDetails(props) {
|
|
|
37
37
|
react_1.default.createElement(material_1.Divider, null),
|
|
38
38
|
feat.type === 'breakend' ? (react_1.default.createElement(BreakendPanel_1.default, { feature: feat, locStrings: feat.ALT.map((alt) => { var _a; return ((_a = (0, vcf_1.parseBreakend)(alt)) === null || _a === void 0 ? void 0 : _a.MatePosition) || ''; }), model: model })) : null,
|
|
39
39
|
feat.type === 'translocation' ? (react_1.default.createElement(BreakendPanel_1.default, { feature: feat, model: model, locStrings: [`${feat.INFO.CHR2[0]}:${feat.INFO.END}`] })) : null,
|
|
40
|
-
react_1.default.createElement(VariantSampleGrid_1.default, { feature: feat, ...props })));
|
|
40
|
+
react_1.default.createElement(VariantSampleGrid_1.default, { feature: feat, ...props, descriptions: descriptions })));
|
|
41
41
|
}
|
|
42
42
|
exports.default = (0, mobx_react_1.observer)(VariantFeatureDetails);
|
|
43
43
|
//# sourceMappingURL=VariantFeatureWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantFeatureWidget.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantFeatureWidget.tsx"],"names":[],"mappings":";;;;;AAAA,uDAAuD;AACvD,kDAAyB;AACzB,2CAAqC;AACrC,4CAA8C;AAC9C,yFAAkF;AAClF,mCAAyC;AAEzC,SAAS;AACT,4EAAmD;AACnD,wEAA+C;AAC/C,wEAA+C;AAC/C,oEAA2C;AAE3C,SAAS,qBAAqB,CAAC,KAAU;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;IACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IACjC,MAAM,iBAAiB,GAAG;QACxB,KAAK,EAAE,qDAAqD;QAC5D,GAAG,EAAE,uEAAuE;QAC5E,EAAE,EAAE,6EAA6E;QACjF,GAAG,EAAE,2EAA2E;QAChF,GAAG,EAAE,4EAA4E;QACjF,IAAI,EAAE,mEAAmE;QACzE,MAAM,EACJ,kIAAkI;KACrI,CAAA;IAED,OAAO,CACL,8BAAC,gBAAK,mBAAa,qBAAqB;QACtC,8BAAC,kCAAc,IACb,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,YAAY,EAAE,KACnD,KAAK,GACT;QACF,8BAAC,kBAAO,OAAG;QACX,8BAAC,yBAAe,IAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI;QAC9D,8BAAC,kBAAO,OAAG;QACX,8BAAC,yBAAe,IAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI;QAC9D,8BAAC,kBAAO,OAAG;QACV,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAC1B,8BAAC,uBAAa,IACZ,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CACtB,CAAC,GAAW,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAA,mBAAa,EAAC,GAAG,CAAC,0CAAE,YAAY,KAAI,EAAE,CAAA,EAAA,CACxD,EACD,KAAK,EAAE,KAAK,GACZ,CACH,CAAC,CAAC,CAAC,IAAI;QACP,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAC/B,8BAAC,uBAAa,IACZ,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GACrD,CACH,CAAC,CAAC,CAAC,IAAI;QACR,8BAAC,2BAAiB,
|
|
1
|
+
{"version":3,"file":"VariantFeatureWidget.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantFeatureWidget.tsx"],"names":[],"mappings":";;;;;AAAA,uDAAuD;AACvD,kDAAyB;AACzB,2CAAqC;AACrC,4CAA8C;AAC9C,yFAAkF;AAClF,mCAAyC;AAEzC,SAAS;AACT,4EAAmD;AACnD,wEAA+C;AAC/C,wEAA+C;AAC/C,oEAA2C;AAE3C,SAAS,qBAAqB,CAAC,KAAU;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;IACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IACjC,MAAM,iBAAiB,GAAG;QACxB,KAAK,EAAE,qDAAqD;QAC5D,GAAG,EAAE,uEAAuE;QAC5E,EAAE,EAAE,6EAA6E;QACjF,GAAG,EAAE,2EAA2E;QAChF,GAAG,EAAE,4EAA4E;QACjF,IAAI,EAAE,mEAAmE;QACzE,MAAM,EACJ,kIAAkI;KACrI,CAAA;IAED,OAAO,CACL,8BAAC,gBAAK,mBAAa,qBAAqB;QACtC,8BAAC,kCAAc,IACb,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,YAAY,EAAE,KACnD,KAAK,GACT;QACF,8BAAC,kBAAO,OAAG;QACX,8BAAC,yBAAe,IAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI;QAC9D,8BAAC,kBAAO,OAAG;QACX,8BAAC,yBAAe,IAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI;QAC9D,8BAAC,kBAAO,OAAG;QACV,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAC1B,8BAAC,uBAAa,IACZ,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CACtB,CAAC,GAAW,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAA,mBAAa,EAAC,GAAG,CAAC,0CAAE,YAAY,KAAI,EAAE,CAAA,EAAA,CACxD,EACD,KAAK,EAAE,KAAK,GACZ,CACH,CAAC,CAAC,CAAC,IAAI;QACP,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAC/B,8BAAC,uBAAa,IACZ,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GACrD,CACH,CAAC,CAAC,CAAC,IAAI;QACR,8BAAC,2BAAiB,IAChB,OAAO,EAAE,IAAI,KACT,KAAK,EACT,YAAY,EAAE,YAAY,GAC1B,CACI,CACT,CAAA;AACH,CAAC;AAED,kBAAe,IAAA,qBAAQ,EAAC,qBAAqB,CAAC,CAAA"}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
2
|
+
import { SimpleFeatureSerialized } from '@jbrowse/core/util/simpleFeature';
|
|
3
|
+
export default function VariantSamples(props: {
|
|
4
|
+
feature: SimpleFeatureSerialized;
|
|
5
|
+
descriptions: any;
|
|
6
|
+
}): JSX.Element | null;
|
|
@@ -29,17 +29,21 @@ const material_1 = require("@mui/material");
|
|
|
29
29
|
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
30
30
|
const BaseFeatureDetail_1 = require("@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail");
|
|
31
31
|
function VariantSamples(props) {
|
|
32
|
+
const { feature, descriptions } = props;
|
|
32
33
|
const [filter, setFilter] = (0, react_1.useState)({});
|
|
33
34
|
const [showFilters, setShowFilters] = (0, react_1.useState)(false);
|
|
34
|
-
const { feature } = props;
|
|
35
35
|
const { samples = {} } = feature;
|
|
36
36
|
const preFilteredRows = Object.entries(samples);
|
|
37
37
|
if (!preFilteredRows.length) {
|
|
38
38
|
return null;
|
|
39
39
|
}
|
|
40
|
-
const infoFields = ['sample', ...Object.keys(preFilteredRows[0][1])].map(field =>
|
|
41
|
-
|
|
42
|
-
|
|
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
|
+
});
|
|
43
47
|
let error;
|
|
44
48
|
let rows = [];
|
|
45
49
|
const filters = Object.keys(filter);
|
|
@@ -48,20 +52,18 @@ function VariantSamples(props) {
|
|
|
48
52
|
// sortable by the data-grid
|
|
49
53
|
try {
|
|
50
54
|
rows = preFilteredRows
|
|
51
|
-
.map(
|
|
55
|
+
.map(row => ({
|
|
52
56
|
...Object.fromEntries(Object.entries(row[1]).map(entry => [entry[0], String(entry[1])])),
|
|
53
57
|
sample: row[0],
|
|
54
58
|
id: row[0],
|
|
55
59
|
}))
|
|
56
|
-
.filter(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
: true;
|
|
64
|
-
});
|
|
60
|
+
.filter(row => filters.length
|
|
61
|
+
? filters.every(key => {
|
|
62
|
+
const val = row[key];
|
|
63
|
+
const currFilter = filter[key];
|
|
64
|
+
return currFilter ? val.match(new RegExp(currFilter, 'i')) : true;
|
|
65
|
+
})
|
|
66
|
+
: true);
|
|
65
67
|
}
|
|
66
68
|
catch (e) {
|
|
67
69
|
error = e;
|
|
@@ -73,9 +75,7 @@ function VariantSamples(props) {
|
|
|
73
75
|
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" }),
|
|
74
76
|
showFilters ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
75
77
|
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"),
|
|
76
|
-
infoFields.map(({ field }) => {
|
|
77
|
-
return (react_1.default.createElement(material_1.TextField, { key: `filter-${field}`, placeholder: `Filter ${field}`, value: filter[field] || '', onChange: event => setFilter({ ...filter, [field]: event.target.value }) }));
|
|
78
|
-
}))) : null,
|
|
78
|
+
infoFields.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,
|
|
79
79
|
react_1.default.createElement("div", { style: { height: 600, width: '100%', overflow: 'auto' } },
|
|
80
80
|
react_1.default.createElement(x_data_grid_1.DataGrid, { rows: rows, columns: infoFields, disableSelectionOnClick: true, rowHeight: 25, disableColumnMenu: true }))));
|
|
81
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,+CAAuC;AAEvC,4CAKsB;AAEtB,kDAA2C;AAC3C,yFAA4E;
|
|
1
|
+
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ declare namespace _default {
|
|
|
8
8
|
const radius: PropTypes.Validator<number>;
|
|
9
9
|
const bezierRadius: PropTypes.Validator<number>;
|
|
10
10
|
const selectedFeatureId: PropTypes.Requireable<string>;
|
|
11
|
-
const onChordClick: PropTypes.Requireable<string | ((...args: any[]) => any)
|
|
11
|
+
const onChordClick: PropTypes.Requireable<NonNullable<string | ((...args: any[]) => any) | null | undefined>>;
|
|
12
12
|
}
|
|
13
13
|
namespace defaultProps {
|
|
14
14
|
const displayModel_1: undefined;
|
|
@@ -32,7 +32,7 @@ function VariantFeatureDetails(props) {
|
|
|
32
32
|
React.createElement(Divider, null),
|
|
33
33
|
feat.type === 'breakend' ? (React.createElement(BreakendPanel, { feature: feat, locStrings: feat.ALT.map((alt) => { var _a; return ((_a = parseBreakend(alt)) === null || _a === void 0 ? void 0 : _a.MatePosition) || ''; }), model: model })) : null,
|
|
34
34
|
feat.type === 'translocation' ? (React.createElement(BreakendPanel, { feature: feat, model: model, locStrings: [`${feat.INFO.CHR2[0]}:${feat.INFO.END}`] })) : null,
|
|
35
|
-
React.createElement(VariantSampleGrid, { feature: feat, ...props })));
|
|
35
|
+
React.createElement(VariantSampleGrid, { feature: feat, ...props, descriptions: descriptions })));
|
|
36
36
|
}
|
|
37
37
|
export default observer(VariantFeatureDetails);
|
|
38
38
|
//# sourceMappingURL=VariantFeatureWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantFeatureWidget.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantFeatureWidget.tsx"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,SAAS;AACT,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C,SAAS,qBAAqB,CAAC,KAAU;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;IACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IACjC,MAAM,iBAAiB,GAAG;QACxB,KAAK,EAAE,qDAAqD;QAC5D,GAAG,EAAE,uEAAuE;QAC5E,EAAE,EAAE,6EAA6E;QACjF,GAAG,EAAE,2EAA2E;QAChF,GAAG,EAAE,4EAA4E;QACjF,IAAI,EAAE,mEAAmE;QACzE,MAAM,EACJ,kIAAkI;KACrI,CAAA;IAED,OAAO,CACL,oBAAC,KAAK,mBAAa,qBAAqB;QACtC,oBAAC,cAAc,IACb,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,YAAY,EAAE,KACnD,KAAK,GACT;QACF,oBAAC,OAAO,OAAG;QACX,oBAAC,eAAe,IAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI;QAC9D,oBAAC,OAAO,OAAG;QACX,oBAAC,eAAe,IAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI;QAC9D,oBAAC,OAAO,OAAG;QACV,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAC1B,oBAAC,aAAa,IACZ,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CACtB,CAAC,GAAW,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,aAAa,CAAC,GAAG,CAAC,0CAAE,YAAY,KAAI,EAAE,CAAA,EAAA,CACxD,EACD,KAAK,EAAE,KAAK,GACZ,CACH,CAAC,CAAC,CAAC,IAAI;QACP,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAC/B,oBAAC,aAAa,IACZ,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GACrD,CACH,CAAC,CAAC,CAAC,IAAI;QACR,oBAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"VariantFeatureWidget.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantFeatureWidget.tsx"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,SAAS;AACT,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C,SAAS,qBAAqB,CAAC,KAAU;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;IACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IACjC,MAAM,iBAAiB,GAAG;QACxB,KAAK,EAAE,qDAAqD;QAC5D,GAAG,EAAE,uEAAuE;QAC5E,EAAE,EAAE,6EAA6E;QACjF,GAAG,EAAE,2EAA2E;QAChF,GAAG,EAAE,4EAA4E;QACjF,IAAI,EAAE,mEAAmE;QACzE,MAAM,EACJ,kIAAkI;KACrI,CAAA;IAED,OAAO,CACL,oBAAC,KAAK,mBAAa,qBAAqB;QACtC,oBAAC,cAAc,IACb,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,YAAY,EAAE,KACnD,KAAK,GACT;QACF,oBAAC,OAAO,OAAG;QACX,oBAAC,eAAe,IAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI;QAC9D,oBAAC,OAAO,OAAG;QACX,oBAAC,eAAe,IAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI;QAC9D,oBAAC,OAAO,OAAG;QACV,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAC1B,oBAAC,aAAa,IACZ,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CACtB,CAAC,GAAW,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,aAAa,CAAC,GAAG,CAAC,0CAAE,YAAY,KAAI,EAAE,CAAA,EAAA,CACxD,EACD,KAAK,EAAE,KAAK,GACZ,CACH,CAAC,CAAC,CAAC,IAAI;QACP,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAC/B,oBAAC,aAAa,IACZ,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GACrD,CACH,CAAC,CAAC,CAAC,IAAI;QACR,oBAAC,iBAAiB,IAChB,OAAO,EAAE,IAAI,KACT,KAAK,EACT,YAAY,EAAE,YAAY,GAC1B,CACI,CACT,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,qBAAqB,CAAC,CAAA"}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
2
|
+
import { SimpleFeatureSerialized } from '@jbrowse/core/util/simpleFeature';
|
|
3
|
+
export default function VariantSamples(props: {
|
|
4
|
+
feature: SimpleFeatureSerialized;
|
|
5
|
+
descriptions: any;
|
|
6
|
+
}): JSX.Element | null;
|
|
@@ -4,17 +4,21 @@ import { FormControlLabel, Checkbox, TextField, Typography, } from '@mui/materia
|
|
|
4
4
|
import { DataGrid } from '@mui/x-data-grid';
|
|
5
5
|
import { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';
|
|
6
6
|
export default function VariantSamples(props) {
|
|
7
|
+
const { feature, descriptions } = props;
|
|
7
8
|
const [filter, setFilter] = useState({});
|
|
8
9
|
const [showFilters, setShowFilters] = useState(false);
|
|
9
|
-
const { feature } = props;
|
|
10
10
|
const { samples = {} } = feature;
|
|
11
11
|
const preFilteredRows = Object.entries(samples);
|
|
12
12
|
if (!preFilteredRows.length) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
const infoFields = ['sample', ...Object.keys(preFilteredRows[0][1])].map(field =>
|
|
16
|
-
|
|
17
|
-
|
|
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
|
+
});
|
|
18
22
|
let error;
|
|
19
23
|
let rows = [];
|
|
20
24
|
const filters = Object.keys(filter);
|
|
@@ -23,20 +27,18 @@ export default function VariantSamples(props) {
|
|
|
23
27
|
// sortable by the data-grid
|
|
24
28
|
try {
|
|
25
29
|
rows = preFilteredRows
|
|
26
|
-
.map(
|
|
30
|
+
.map(row => ({
|
|
27
31
|
...Object.fromEntries(Object.entries(row[1]).map(entry => [entry[0], String(entry[1])])),
|
|
28
32
|
sample: row[0],
|
|
29
33
|
id: row[0],
|
|
30
34
|
}))
|
|
31
|
-
.filter(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
: true;
|
|
39
|
-
});
|
|
35
|
+
.filter(row => filters.length
|
|
36
|
+
? filters.every(key => {
|
|
37
|
+
const val = row[key];
|
|
38
|
+
const currFilter = filter[key];
|
|
39
|
+
return currFilter ? val.match(new RegExp(currFilter, 'i')) : true;
|
|
40
|
+
})
|
|
41
|
+
: true);
|
|
40
42
|
}
|
|
41
43
|
catch (e) {
|
|
42
44
|
error = e;
|
|
@@ -48,9 +50,7 @@ export default function VariantSamples(props) {
|
|
|
48
50
|
React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: showFilters, onChange: () => setShowFilters(f => !f) }), label: "Show sample filters" }),
|
|
49
51
|
showFilters ? (React.createElement(React.Fragment, null,
|
|
50
52
|
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"),
|
|
51
|
-
infoFields.map(({ field }) => {
|
|
52
|
-
return (React.createElement(TextField, { key: `filter-${field}`, placeholder: `Filter ${field}`, value: filter[field] || '', onChange: event => setFilter({ ...filter, [field]: event.target.value }) }));
|
|
53
|
-
}))) : null,
|
|
53
|
+
infoFields.map(({ field }) => (React.createElement(TextField, { key: `filter-${field}`, placeholder: `Filter ${field}`, value: filter[field] || '', onChange: event => setFilter({ ...filter, [field]: event.target.value }) }))))) : null,
|
|
54
54
|
React.createElement("div", { style: { height: 600, width: '100%', overflow: 'auto' } },
|
|
55
55
|
React.createElement(DataGrid, { rows: rows, columns: infoFields, disableSelectionOnClick: true, rowHeight: 25, disableColumnMenu: true }))));
|
|
56
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,mDAAmD,CAAA;
|
|
1
|
+
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"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.1.
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"description": "JBrowse 2 variant adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"distModule": "esm/index.js",
|
|
66
66
|
"srcModule": "src/index.ts",
|
|
67
67
|
"module": "esm/index.js",
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "ebd548ceb52adb36cf6ab437082b5b5feac1338e"
|
|
69
69
|
}
|
|
@@ -55,7 +55,11 @@ function VariantFeatureDetails(props: any) {
|
|
|
55
55
|
locStrings={[`${feat.INFO.CHR2[0]}:${feat.INFO.END}`]}
|
|
56
56
|
/>
|
|
57
57
|
) : null}
|
|
58
|
-
<VariantSampleGrid
|
|
58
|
+
<VariantSampleGrid
|
|
59
|
+
feature={feat}
|
|
60
|
+
{...props}
|
|
61
|
+
descriptions={descriptions}
|
|
62
|
+
/>
|
|
59
63
|
</Paper>
|
|
60
64
|
)
|
|
61
65
|
}
|
|
@@ -10,24 +10,39 @@ import {
|
|
|
10
10
|
|
|
11
11
|
import { DataGrid } from '@mui/x-data-grid'
|
|
12
12
|
import { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'
|
|
13
|
+
import { SimpleFeatureSerialized } from '@jbrowse/core/util/simpleFeature'
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
interface Entry {
|
|
16
|
+
sample: string
|
|
17
|
+
id: string
|
|
18
|
+
[key: string]: string
|
|
19
|
+
}
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
export default function VariantSamples(props: {
|
|
22
|
+
feature: SimpleFeatureSerialized
|
|
23
|
+
descriptions: any
|
|
24
|
+
}) {
|
|
25
|
+
const { feature, descriptions } = props
|
|
26
|
+
const [filter, setFilter] = useState<Record<string, string>>({})
|
|
27
|
+
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)
|
|
21
33
|
if (!preFilteredRows.length) {
|
|
22
34
|
return null
|
|
23
35
|
}
|
|
36
|
+
|
|
24
37
|
const infoFields = ['sample', ...Object.keys(preFilteredRows[0][1])].map(
|
|
25
38
|
field => ({
|
|
26
39
|
field,
|
|
40
|
+
description: descriptions.FORMAT?.[field]?.Description,
|
|
27
41
|
}),
|
|
28
42
|
)
|
|
43
|
+
|
|
29
44
|
let error
|
|
30
|
-
let rows = []
|
|
45
|
+
let rows = [] as Entry[]
|
|
31
46
|
const filters = Object.keys(filter)
|
|
32
47
|
|
|
33
48
|
// catch some error thrown from regex
|
|
@@ -35,22 +50,25 @@ export default function VariantSamples(props: any) {
|
|
|
35
50
|
// sortable by the data-grid
|
|
36
51
|
try {
|
|
37
52
|
rows = preFilteredRows
|
|
38
|
-
.map(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
|
47
65
|
? filters.every(key => {
|
|
48
66
|
const val = row[key]
|
|
49
67
|
const currFilter = filter[key]
|
|
50
68
|
return currFilter ? val.match(new RegExp(currFilter, 'i')) : true
|
|
51
69
|
})
|
|
52
|
-
: true
|
|
53
|
-
|
|
70
|
+
: true,
|
|
71
|
+
)
|
|
54
72
|
} catch (e) {
|
|
55
73
|
error = e
|
|
56
74
|
}
|
|
@@ -77,18 +95,16 @@ export default function VariantSamples(props: any) {
|
|
|
77
95
|
include the first alternate allele e.g. 0|1 or 1|1, entering
|
|
78
96
|
[1-9]\d* will find any non-zero allele e.g. 0|2 or 2/33
|
|
79
97
|
</Typography>
|
|
80
|
-
{infoFields.map(({ field }) =>
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
)
|
|
91
|
-
})}
|
|
98
|
+
{infoFields.map(({ field }) => (
|
|
99
|
+
<TextField
|
|
100
|
+
key={`filter-${field}`}
|
|
101
|
+
placeholder={`Filter ${field}`}
|
|
102
|
+
value={filter[field] || ''}
|
|
103
|
+
onChange={event =>
|
|
104
|
+
setFilter({ ...filter, [field]: event.target.value })
|
|
105
|
+
}
|
|
106
|
+
/>
|
|
107
|
+
))}
|
|
92
108
|
</>
|
|
93
109
|
) : null}
|
|
94
110
|
<div style={{ height: 600, width: '100%', overflow: 'auto' }}>
|