@jbrowse/plugin-variants 2.18.0 → 3.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.
- package/dist/ChordVariantDisplay/models/stateModelFactory.d.ts +1 -1
- package/dist/LinearVariantDisplay/model.d.ts +5 -5
- package/dist/MultiLinearVariantDisplay/components/Crosshair.d.ts +7 -0
- package/dist/MultiLinearVariantDisplay/components/Crosshair.js +35 -0
- package/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.d.ts +1 -2
- package/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +5 -49
- package/dist/MultiLinearVariantDisplay/index.js +18 -8
- package/dist/MultiLinearVariantDisplay/model.d.ts +113 -40
- package/dist/MultiLinearVariantDisplay/model.js +24 -176
- package/dist/MultiLinearVariantDisplay/renderSvg.d.ts +1 -2
- package/dist/MultiLinearVariantDisplay/renderSvg.js +2 -5
- package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +7 -0
- package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.js +28 -0
- package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.d.ts +1 -2
- package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +13 -16
- package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.d.ts +1 -2
- package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +6 -56
- package/dist/MultiLinearVariantMatrixDisplay/model.d.ts +109 -27
- package/dist/MultiLinearVariantMatrixDisplay/model.js +31 -136
- package/dist/MultiLinearVariantMatrixDisplay/renderSvg.d.ts +1 -2
- package/dist/MultiLinearVariantMatrixDisplay/renderSvg.js +3 -7
- package/dist/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.d.ts +4 -32
- package/dist/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.js +44 -63
- package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +3 -2
- package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +31 -5
- package/dist/MultiLinearVariantMatrixRenderer/index.js +2 -2
- package/dist/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +10 -0
- package/dist/MultiLinearVariantMatrixRenderer/makeImageData.js +100 -0
- package/dist/MultiLinearVariantMatrixRenderer/types.d.ts +15 -0
- package/dist/MultiLinearVariantMatrixRenderer/types.js +2 -0
- package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +4 -21
- package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.js +38 -25
- package/dist/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +7 -3
- package/dist/MultiLinearVariantRenderer/MultiVariantRendering.js +36 -27
- package/dist/MultiLinearVariantRenderer/configSchema.d.ts +1 -33
- package/dist/MultiLinearVariantRenderer/configSchema.js +0 -5
- package/dist/MultiLinearVariantRenderer/makeImageData.d.ts +4 -0
- package/dist/MultiLinearVariantRenderer/makeImageData.js +67 -0
- package/dist/MultiLinearVariantRenderer/types.d.ts +19 -0
- package/dist/MultiLinearVariantRenderer/types.js +2 -0
- package/dist/MultiVariantBaseRenderer.d.ts +4 -4
- package/dist/StructuralVariantChordRenderer/Chord.d.ts +2 -19
- package/dist/StructuralVariantChordRenderer/Chord.js +3 -25
- package/dist/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -3
- package/dist/StructuralVariantChordRenderer/ReactComponent.js +7 -29
- package/dist/StructuralVariantChordRenderer/types.d.ts +17 -0
- package/dist/StructuralVariantChordRenderer/types.js +2 -0
- package/dist/Tooltip.d.ts +2 -2
- package/dist/Tooltip.js +6 -32
- package/dist/VariantFeatureWidget/Checkbox2.d.ts +1 -2
- package/dist/VariantFeatureWidget/Checkbox2.js +2 -5
- package/dist/VariantFeatureWidget/LaunchBreakendPanel.d.ts +2 -3
- package/dist/VariantFeatureWidget/LaunchBreakendPanel.js +66 -69
- package/dist/VariantFeatureWidget/LaunchBreakendWidgetArea.d.ts +4 -0
- package/dist/VariantFeatureWidget/LaunchBreakendWidgetArea.js +60 -0
- package/dist/VariantFeatureWidget/VariantConsequenceDataGrid.d.ts +5 -0
- package/dist/VariantFeatureWidget/VariantConsequenceDataGrid.js +15 -0
- package/dist/VariantFeatureWidget/VariantConsequenceDataGridWrapper.d.ts +5 -0
- package/dist/VariantFeatureWidget/VariantConsequenceDataGridWrapper.js +20 -0
- package/dist/VariantFeatureWidget/VariantConsequencePanel.d.ts +5 -0
- package/dist/VariantFeatureWidget/VariantConsequencePanel.js +15 -0
- package/dist/VariantFeatureWidget/VariantFeatureWidget.d.ts +1 -2
- package/dist/VariantFeatureWidget/VariantFeatureWidget.js +47 -36
- package/dist/VariantFeatureWidget/VariantSampleFilters.d.ts +9 -0
- package/dist/VariantFeatureWidget/VariantSampleFilters.js +10 -0
- package/dist/VariantFeatureWidget/VariantSampleGrid.d.ts +9 -7
- package/dist/VariantFeatureWidget/VariantSampleGrid.js +14 -44
- package/dist/VariantFeatureWidget/index.js +17 -7
- package/dist/VariantFeatureWidget/types.d.ts +16 -0
- package/dist/VariantFeatureWidget/types.js +2 -0
- package/dist/VariantRPC/MultiVariantGetGenotypeMatrix.js +10 -27
- package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +12 -7
- package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.js +27 -37
- package/dist/VcfAdapter/VcfAdapter.d.ts +7 -0
- package/dist/VcfAdapter/VcfAdapter.js +29 -3
- package/dist/VcfAdapter/configSchema.d.ts +8 -0
- package/dist/VcfAdapter/configSchema.js +12 -1
- package/dist/VcfAdapter/index.js +17 -7
- package/dist/VcfFeature/index.js +2 -1
- package/dist/VcfFeature/util.js +3 -4
- package/dist/VcfTabixAdapter/VcfTabixAdapter.js +38 -12
- package/dist/VcfTabixAdapter/configSchema.d.ts +8 -0
- package/dist/VcfTabixAdapter/configSchema.js +8 -0
- package/dist/VcfTabixAdapter/index.js +17 -7
- package/dist/extensionPoints.js +21 -33
- package/dist/getMultiVariantFeaturesAutorun.d.ts +4 -7
- package/dist/getMultiVariantFeaturesAutorun.js +16 -15
- package/dist/getMultiVariantSourcesAutorun.d.ts +1 -6
- package/dist/shared/BulkEditPanel.d.ts +4 -5
- package/dist/shared/BulkEditPanel.js +69 -88
- package/dist/shared/ClusterDialog.d.ts +4 -5
- package/dist/shared/ClusterDialog.js +45 -86
- package/dist/shared/ColorLegend.d.ts +2 -3
- package/dist/shared/ColorLegend.js +8 -10
- package/dist/shared/HelpfulTips.d.ts +1 -0
- package/dist/shared/HelpfulTips.js +7 -0
- package/dist/shared/LegendBar.d.ts +3 -3
- package/dist/shared/LegendBar.js +6 -12
- package/dist/shared/MAFFilterDialog.d.ts +2 -3
- package/dist/shared/MAFFilterDialog.js +14 -42
- package/dist/shared/MultiVariantBaseModel.d.ts +341 -0
- package/dist/shared/MultiVariantBaseModel.js +316 -0
- package/dist/shared/MultiVariantTooltip.d.ts +6 -0
- package/dist/shared/MultiVariantTooltip.js +23 -0
- package/dist/shared/RectBg.d.ts +2 -3
- package/dist/shared/RectBg.js +3 -7
- package/dist/shared/RowPalettizer.d.ts +2 -3
- package/dist/shared/RowPalettizer.js +30 -28
- package/dist/shared/SetColorDialog.d.ts +2 -3
- package/dist/shared/SetColorDialog.js +26 -65
- package/dist/shared/SetMinMaxDialog.d.ts +1 -2
- package/dist/shared/SetMinMaxDialog.js +11 -41
- package/dist/shared/SetRowHeightDialog.d.ts +8 -0
- package/dist/shared/SetRowHeightDialog.js +18 -0
- package/dist/shared/SharedVariantMixin.d.ts +7 -7
- package/dist/shared/SourcesDataGrid.d.ts +6 -0
- package/dist/shared/SourcesDataGrid.js +68 -0
- package/dist/shared/SourcesGrid.d.ts +2 -3
- package/dist/shared/SourcesGrid.js +5 -134
- package/dist/shared/SourcesGridHeader.d.ts +7 -0
- package/dist/shared/SourcesGridHeader.js +41 -0
- package/dist/shared/multiVariantColor.d.ts +3 -0
- package/dist/shared/multiVariantColor.js +50 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.js +2 -0
- package/dist/util.d.ts +6 -9
- package/dist/util.js +47 -14
- package/esm/ChordVariantDisplay/models/stateModelFactory.d.ts +1 -1
- package/esm/LinearVariantDisplay/model.d.ts +5 -5
- package/esm/MultiLinearVariantDisplay/components/Crosshair.d.ts +7 -0
- package/esm/MultiLinearVariantDisplay/components/Crosshair.js +30 -0
- package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.d.ts +1 -2
- package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +5 -26
- package/esm/MultiLinearVariantDisplay/index.js +1 -1
- package/esm/MultiLinearVariantDisplay/model.d.ts +113 -40
- package/esm/MultiLinearVariantDisplay/model.js +7 -169
- package/esm/MultiLinearVariantDisplay/renderSvg.d.ts +1 -2
- package/esm/MultiLinearVariantDisplay/renderSvg.js +2 -5
- package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +7 -0
- package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.js +23 -0
- package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.d.ts +1 -2
- package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +13 -13
- package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.d.ts +1 -2
- package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +6 -33
- package/esm/MultiLinearVariantMatrixDisplay/model.d.ts +109 -27
- package/esm/MultiLinearVariantMatrixDisplay/model.js +14 -129
- package/esm/MultiLinearVariantMatrixDisplay/renderSvg.d.ts +1 -2
- package/esm/MultiLinearVariantMatrixDisplay/renderSvg.js +3 -7
- package/esm/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.d.ts +4 -32
- package/esm/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.js +11 -63
- package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +3 -2
- package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +31 -2
- package/esm/MultiLinearVariantMatrixRenderer/index.js +1 -1
- package/esm/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +10 -0
- package/esm/MultiLinearVariantMatrixRenderer/makeImageData.js +97 -0
- package/esm/MultiLinearVariantMatrixRenderer/types.d.ts +15 -0
- package/esm/MultiLinearVariantMatrixRenderer/types.js +1 -0
- package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +4 -21
- package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.js +6 -26
- package/esm/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +7 -3
- package/esm/MultiLinearVariantRenderer/MultiVariantRendering.js +34 -5
- package/esm/MultiLinearVariantRenderer/configSchema.d.ts +1 -33
- package/esm/MultiLinearVariantRenderer/configSchema.js +0 -2
- package/esm/MultiLinearVariantRenderer/makeImageData.d.ts +4 -0
- package/esm/MultiLinearVariantRenderer/makeImageData.js +61 -0
- package/esm/MultiLinearVariantRenderer/types.d.ts +19 -0
- package/esm/MultiLinearVariantRenderer/types.js +1 -0
- package/esm/MultiVariantBaseRenderer.d.ts +4 -4
- package/esm/StructuralVariantChordRenderer/Chord.d.ts +2 -19
- package/esm/StructuralVariantChordRenderer/Chord.js +3 -2
- package/esm/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -3
- package/esm/StructuralVariantChordRenderer/ReactComponent.js +7 -6
- package/esm/StructuralVariantChordRenderer/types.d.ts +17 -0
- package/esm/StructuralVariantChordRenderer/types.js +1 -0
- package/esm/Tooltip.d.ts +2 -2
- package/esm/Tooltip.js +6 -9
- package/esm/VariantFeatureWidget/Checkbox2.d.ts +1 -2
- package/esm/VariantFeatureWidget/Checkbox2.js +2 -2
- package/esm/VariantFeatureWidget/LaunchBreakendPanel.d.ts +2 -3
- package/esm/VariantFeatureWidget/LaunchBreakendPanel.js +48 -61
- package/esm/VariantFeatureWidget/LaunchBreakendWidgetArea.d.ts +4 -0
- package/esm/VariantFeatureWidget/LaunchBreakendWidgetArea.js +24 -0
- package/esm/VariantFeatureWidget/VariantConsequenceDataGrid.d.ts +5 -0
- package/esm/VariantFeatureWidget/VariantConsequenceDataGrid.js +9 -0
- package/esm/VariantFeatureWidget/VariantConsequenceDataGridWrapper.d.ts +5 -0
- package/esm/VariantFeatureWidget/VariantConsequenceDataGridWrapper.js +17 -0
- package/esm/VariantFeatureWidget/VariantConsequencePanel.d.ts +5 -0
- package/esm/VariantFeatureWidget/VariantConsequencePanel.js +9 -0
- package/esm/VariantFeatureWidget/VariantFeatureWidget.d.ts +1 -2
- package/esm/VariantFeatureWidget/VariantFeatureWidget.js +30 -29
- package/esm/VariantFeatureWidget/VariantSampleFilters.d.ts +9 -0
- package/esm/VariantFeatureWidget/VariantSampleFilters.js +7 -0
- package/esm/VariantFeatureWidget/VariantSampleGrid.d.ts +9 -7
- package/esm/VariantFeatureWidget/VariantSampleGrid.js +15 -22
- package/esm/VariantFeatureWidget/types.d.ts +16 -0
- package/esm/VariantFeatureWidget/types.js +1 -0
- package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.js +10 -27
- package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +12 -7
- package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.js +27 -37
- package/esm/VcfAdapter/VcfAdapter.d.ts +7 -0
- package/esm/VcfAdapter/VcfAdapter.js +31 -5
- package/esm/VcfAdapter/configSchema.d.ts +8 -0
- package/esm/VcfAdapter/configSchema.js +12 -1
- package/esm/VcfFeature/index.js +2 -1
- package/esm/VcfFeature/util.js +3 -4
- package/esm/VcfTabixAdapter/VcfTabixAdapter.js +38 -12
- package/esm/VcfTabixAdapter/configSchema.d.ts +8 -0
- package/esm/VcfTabixAdapter/configSchema.js +8 -0
- package/esm/extensionPoints.js +21 -33
- package/esm/getMultiVariantFeaturesAutorun.d.ts +4 -7
- package/esm/getMultiVariantFeaturesAutorun.js +16 -15
- package/esm/getMultiVariantSourcesAutorun.d.ts +1 -6
- package/esm/shared/BulkEditPanel.d.ts +4 -5
- package/esm/shared/BulkEditPanel.js +70 -66
- package/esm/shared/ClusterDialog.d.ts +4 -5
- package/esm/shared/ClusterDialog.js +44 -62
- package/esm/shared/ColorLegend.d.ts +2 -3
- package/esm/shared/ColorLegend.js +8 -10
- package/esm/shared/HelpfulTips.d.ts +1 -0
- package/esm/shared/HelpfulTips.js +4 -0
- package/esm/shared/LegendBar.d.ts +3 -3
- package/esm/shared/LegendBar.js +7 -13
- package/esm/shared/MAFFilterDialog.d.ts +2 -3
- package/esm/shared/MAFFilterDialog.js +14 -19
- package/esm/shared/MultiVariantBaseModel.d.ts +341 -0
- package/esm/shared/MultiVariantBaseModel.js +277 -0
- package/esm/shared/MultiVariantTooltip.d.ts +6 -0
- package/esm/shared/MultiVariantTooltip.js +17 -0
- package/esm/shared/RectBg.d.ts +2 -3
- package/esm/shared/RectBg.js +3 -4
- package/esm/shared/RowPalettizer.d.ts +2 -3
- package/esm/shared/RowPalettizer.js +30 -25
- package/esm/shared/SetColorDialog.d.ts +2 -3
- package/esm/shared/SetColorDialog.js +26 -42
- package/esm/shared/SetMinMaxDialog.d.ts +1 -2
- package/esm/shared/SetMinMaxDialog.js +11 -18
- package/esm/shared/SetRowHeightDialog.d.ts +8 -0
- package/esm/shared/SetRowHeightDialog.js +15 -0
- package/esm/shared/SharedVariantMixin.d.ts +7 -7
- package/esm/shared/SourcesDataGrid.d.ts +6 -0
- package/esm/shared/SourcesDataGrid.js +62 -0
- package/esm/shared/SourcesGrid.d.ts +2 -3
- package/esm/shared/SourcesGrid.js +5 -111
- package/esm/shared/SourcesGridHeader.d.ts +7 -0
- package/esm/shared/SourcesGridHeader.js +35 -0
- package/esm/shared/multiVariantColor.d.ts +3 -0
- package/esm/shared/multiVariantColor.js +45 -0
- package/esm/types.d.ts +14 -0
- package/esm/types.js +1 -0
- package/esm/util.d.ts +6 -9
- package/esm/util.js +43 -13
- package/package.json +6 -7
- package/dist/VariantFeatureWidget/AnnotGrid.d.ts +0 -6
- package/dist/VariantFeatureWidget/AnnotGrid.js +0 -39
- package/dist/VariantFeatureWidget/VariantAnnotationTable.d.ts +0 -6
- package/dist/VariantFeatureWidget/VariantAnnotationTable.js +0 -16
- package/dist/configSchema.d.ts +0 -34
- package/dist/configSchema.js +0 -44
- package/dist/shared/DraggableDialog.d.ts +0 -6
- package/dist/shared/DraggableDialog.js +0 -62
- package/dist/shared/Tooltip.d.ts +0 -18
- package/dist/shared/Tooltip.js +0 -38
- package/esm/VariantFeatureWidget/AnnotGrid.d.ts +0 -6
- package/esm/VariantFeatureWidget/AnnotGrid.js +0 -13
- package/esm/VariantFeatureWidget/VariantAnnotationTable.d.ts +0 -6
- package/esm/VariantFeatureWidget/VariantAnnotationTable.js +0 -10
- package/esm/configSchema.d.ts +0 -34
- package/esm/configSchema.js +0 -42
- package/esm/shared/DraggableDialog.d.ts +0 -6
- package/esm/shared/DraggableDialog.js +0 -34
- package/esm/shared/Tooltip.d.ts +0 -18
- package/esm/shared/Tooltip.js +0 -33
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const react_1 = require("react");
|
|
7
5
|
const ui_1 = require("@jbrowse/core/ui");
|
|
8
6
|
const mobx_react_1 = require("mobx-react");
|
|
9
7
|
const LinearVariantMatrixRendering = (0, mobx_react_1.observer)(function (props) {
|
|
10
|
-
|
|
8
|
+
const { arr, width, height, displayModel } = props;
|
|
9
|
+
const ref = (0, react_1.useRef)(null);
|
|
10
|
+
function getFeatureUnderMouse(eventClientX, eventClientY) {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
let offsetX = 0;
|
|
13
|
+
let offsetY = 0;
|
|
14
|
+
if (ref.current) {
|
|
15
|
+
const r = ref.current.getBoundingClientRect();
|
|
16
|
+
offsetX = eventClientX - r.left;
|
|
17
|
+
offsetY = eventClientY - r.top;
|
|
18
|
+
}
|
|
19
|
+
const dimY = arr.length;
|
|
20
|
+
const dimX = ((_a = arr[0]) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
|
21
|
+
return (_b = arr[Math.floor((offsetX / width) * dimY)]) === null || _b === void 0 ? void 0 : _b[Math.floor((offsetY / height) * dimX)];
|
|
22
|
+
}
|
|
23
|
+
return ((0, jsx_runtime_1.jsx)("div", { ref: ref, onMouseMove: e => {
|
|
24
|
+
var _a;
|
|
25
|
+
return (_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, getFeatureUnderMouse(e.clientX, e.clientY));
|
|
26
|
+
}, onMouseLeave: () => {
|
|
27
|
+
var _a;
|
|
28
|
+
(_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, undefined);
|
|
29
|
+
}, onMouseOut: () => {
|
|
30
|
+
var _a;
|
|
31
|
+
(_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, undefined);
|
|
32
|
+
}, style: {
|
|
33
|
+
overflow: 'visible',
|
|
34
|
+
position: 'relative',
|
|
35
|
+
height,
|
|
36
|
+
}, children: (0, jsx_runtime_1.jsx)(ui_1.PrerenderedCanvas, { ...props }) }));
|
|
11
37
|
});
|
|
12
38
|
exports.default = LinearVariantMatrixRendering;
|
|
@@ -4,15 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.default = LinearVariantMatrixRendererF;
|
|
7
|
-
const ui_1 = require("@jbrowse/core/ui");
|
|
8
7
|
const LinearVariantMatrixRenderer_1 = __importDefault(require("./LinearVariantMatrixRenderer"));
|
|
8
|
+
const LinearVariantMatrixRendering_1 = __importDefault(require("./components/LinearVariantMatrixRendering"));
|
|
9
9
|
const configSchema_1 = __importDefault(require("./configSchema"));
|
|
10
10
|
function LinearVariantMatrixRendererF(pluginManager) {
|
|
11
11
|
pluginManager.addRendererType(() => {
|
|
12
12
|
return new LinearVariantMatrixRenderer_1.default({
|
|
13
13
|
name: 'LinearVariantMatrixRenderer',
|
|
14
14
|
displayName: 'Linear variant matrix renderer',
|
|
15
|
-
ReactComponent:
|
|
15
|
+
ReactComponent: LinearVariantMatrixRendering_1.default,
|
|
16
16
|
configSchema: configSchema_1.default,
|
|
17
17
|
pluginManager,
|
|
18
18
|
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RenderArgsDeserializedWithFeaturesAndLayout } from './types';
|
|
2
|
+
export declare function makeImageData({ ctx, canvasWidth, canvasHeight, renderArgs, }: {
|
|
3
|
+
ctx: CanvasRenderingContext2D;
|
|
4
|
+
canvasWidth: number;
|
|
5
|
+
canvasHeight: number;
|
|
6
|
+
renderArgs: RenderArgsDeserializedWithFeaturesAndLayout;
|
|
7
|
+
}): {
|
|
8
|
+
mafs: import("@jbrowse/core/util").Feature[];
|
|
9
|
+
arr: string[][];
|
|
10
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeImageData = makeImageData;
|
|
4
|
+
const multiVariantColor_1 = require("../shared/multiVariantColor");
|
|
5
|
+
const util_1 = require("../util");
|
|
6
|
+
const fudgeFactor = 0.6;
|
|
7
|
+
const f2 = fudgeFactor / 2;
|
|
8
|
+
function drawColorAlleleCount(alleles, ctx, x, y, w, h) {
|
|
9
|
+
ctx.fillStyle = (0, multiVariantColor_1.getColorAlleleCount)(alleles);
|
|
10
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
11
|
+
}
|
|
12
|
+
function drawPhased(alleles, ctx, x, y, w, h, HP, PS) {
|
|
13
|
+
ctx.fillStyle =
|
|
14
|
+
PS !== undefined
|
|
15
|
+
? (0, multiVariantColor_1.getColorPhasedWithPhaseSet)(alleles, HP, PS)
|
|
16
|
+
: (0, multiVariantColor_1.getColorPhased)(alleles, HP);
|
|
17
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
18
|
+
}
|
|
19
|
+
function makeImageData({ ctx, canvasWidth, canvasHeight, renderArgs, }) {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
const { renderingMode: renderingMode, minorAlleleFrequencyFilter, sources, features, } = renderArgs;
|
|
22
|
+
const { statusCallback = () => { } } = renderArgs;
|
|
23
|
+
statusCallback('Drawing variant matrix');
|
|
24
|
+
const h = canvasHeight / sources.length;
|
|
25
|
+
const mafs = (0, util_1.getFeaturesThatPassMinorAlleleFrequencyFilter)(features.values(), minorAlleleFrequencyFilter);
|
|
26
|
+
const arr = [];
|
|
27
|
+
const m = mafs.length;
|
|
28
|
+
const w = canvasWidth / m;
|
|
29
|
+
for (let i = 0; i < m; i++) {
|
|
30
|
+
const arr2 = [];
|
|
31
|
+
const f = mafs[i];
|
|
32
|
+
const hasPhaseSet = f.get('format').includes('PS');
|
|
33
|
+
if (hasPhaseSet) {
|
|
34
|
+
const samp = f.get('samples');
|
|
35
|
+
const x = (i / mafs.length) * canvasWidth;
|
|
36
|
+
const sln = sources.length;
|
|
37
|
+
for (let j = 0; j < sln; j++) {
|
|
38
|
+
const y = (j / sln) * canvasHeight;
|
|
39
|
+
const { name, HP } = sources[j];
|
|
40
|
+
const s = samp[name];
|
|
41
|
+
if (s) {
|
|
42
|
+
const genotype = (_a = s.GT) === null || _a === void 0 ? void 0 : _a[0];
|
|
43
|
+
if (genotype) {
|
|
44
|
+
arr2.push(genotype);
|
|
45
|
+
const isPhased = genotype.includes('|');
|
|
46
|
+
if (renderingMode === 'phased') {
|
|
47
|
+
if (isPhased) {
|
|
48
|
+
const PS = (_b = s.PS) === null || _b === void 0 ? void 0 : _b[0];
|
|
49
|
+
const alleles = genotype.split('|');
|
|
50
|
+
drawPhased(alleles, ctx, x, y, w, h, HP, PS);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
ctx.fillStyle = 'black';
|
|
54
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const alleles = genotype.split(/[/|]/);
|
|
59
|
+
drawColorAlleleCount(alleles, ctx, x, y, w, h);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const samp = f.get('genotypes');
|
|
67
|
+
const x = (i / mafs.length) * canvasWidth;
|
|
68
|
+
const sln = sources.length;
|
|
69
|
+
const arr2 = [];
|
|
70
|
+
for (let j = 0; j < sln; j++) {
|
|
71
|
+
const y = (j / sln) * canvasHeight;
|
|
72
|
+
const { name, HP } = sources[j];
|
|
73
|
+
const genotype = samp[name];
|
|
74
|
+
if (genotype) {
|
|
75
|
+
arr2.push(genotype);
|
|
76
|
+
const isPhased = genotype.includes('|');
|
|
77
|
+
if (renderingMode === 'phased') {
|
|
78
|
+
if (isPhased) {
|
|
79
|
+
const alleles = genotype.split('|');
|
|
80
|
+
drawPhased(alleles, ctx, x, y, w, h, HP);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
ctx.fillStyle = 'black';
|
|
84
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const alleles = genotype.split(/[/|]/);
|
|
89
|
+
drawColorAlleleCount(alleles, ctx, x, y, w, h);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
arr.push(arr2);
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
mafs,
|
|
98
|
+
arr,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Source } from '../types';
|
|
2
|
+
import type { RenderArgsDeserialized as BoxRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType';
|
|
3
|
+
import type { Feature } from '@jbrowse/core/util';
|
|
4
|
+
export interface RenderArgsDeserialized extends BoxRenderArgsDeserialized {
|
|
5
|
+
sources: Source[];
|
|
6
|
+
minorAlleleFrequencyFilter: number;
|
|
7
|
+
highResolutionScaling: number;
|
|
8
|
+
height: number;
|
|
9
|
+
renderingMode: string;
|
|
10
|
+
}
|
|
11
|
+
export interface RenderArgsDeserializedWithFeaturesAndLayout extends RenderArgsDeserialized {
|
|
12
|
+
sources: Source[];
|
|
13
|
+
features: Map<string, Feature>;
|
|
14
|
+
renderingMode: string;
|
|
15
|
+
}
|
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
2
|
-
import type {
|
|
3
|
-
import type { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
2
|
+
import type { MultiRenderArgsDeserialized } from './types';
|
|
4
3
|
import type { Feature } from '@jbrowse/core/util';
|
|
5
|
-
import type { ThemeOptions } from '@mui/material';
|
|
6
|
-
export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
|
|
7
|
-
bpPerPx: number;
|
|
8
|
-
height: number;
|
|
9
|
-
highResolutionScaling: number;
|
|
10
|
-
themeOptions: ThemeOptions;
|
|
11
|
-
}
|
|
12
|
-
export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
|
|
13
|
-
features: Map<string, Feature>;
|
|
14
|
-
}
|
|
15
|
-
export interface MultiRenderArgsDeserialized extends RenderArgsDeserializedWithFeatures {
|
|
16
|
-
sources: Source[];
|
|
17
|
-
rowHeight: number;
|
|
18
|
-
scrollTop: number;
|
|
19
|
-
}
|
|
20
4
|
export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
21
5
|
supportsSVG: boolean;
|
|
22
6
|
render(renderProps: MultiRenderArgsDeserialized): Promise<{
|
|
@@ -25,14 +9,14 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
|
25
9
|
width: number;
|
|
26
10
|
containsNoTransferables: boolean;
|
|
27
11
|
canvasRecordedData: any;
|
|
28
|
-
reactElement?:
|
|
12
|
+
reactElement?: React.ReactElement;
|
|
29
13
|
html?: string;
|
|
30
14
|
} | {
|
|
31
15
|
features: Map<string, Feature>;
|
|
32
16
|
height: number;
|
|
33
17
|
width: number;
|
|
34
18
|
containsNoTransferables: boolean;
|
|
35
|
-
reactElement:
|
|
19
|
+
reactElement: import("react/jsx-runtime").JSX.Element;
|
|
36
20
|
html?: string;
|
|
37
21
|
} | {
|
|
38
22
|
features: Map<string, Feature>;
|
|
@@ -40,9 +24,8 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
|
40
24
|
width: number;
|
|
41
25
|
containsNoTransferables: boolean;
|
|
42
26
|
imageData: any;
|
|
43
|
-
reactElement?:
|
|
27
|
+
reactElement?: React.ReactElement;
|
|
44
28
|
html?: string;
|
|
45
29
|
}>;
|
|
46
|
-
draw(ctx: CanvasRenderingContext2D, props: MultiRenderArgsDeserialized): Promise<void>;
|
|
47
30
|
}
|
|
48
31
|
export type { RenderArgsSerialized, RenderResults, ResultsDeserialized, ResultsSerialized, } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
@@ -1,11 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
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
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
const FeatureRendererType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType"));
|
|
7
40
|
const util_1 = require("@jbrowse/core/util");
|
|
8
|
-
const util_2 = require("../util");
|
|
9
41
|
class MultiVariantBaseRenderer extends FeatureRendererType_1.default {
|
|
10
42
|
constructor() {
|
|
11
43
|
super(...arguments);
|
|
@@ -16,13 +48,11 @@ class MultiVariantBaseRenderer extends FeatureRendererType_1.default {
|
|
|
16
48
|
const { height, regions, bpPerPx } = renderProps;
|
|
17
49
|
const region = regions[0];
|
|
18
50
|
const width = (region.end - region.start) / bpPerPx;
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return undefined;
|
|
25
|
-
});
|
|
51
|
+
const { makeImageData } = await Promise.resolve().then(() => __importStar(require('./makeImageData')));
|
|
52
|
+
const rest = await (0, util_1.renderToAbstractCanvas)(width, height, renderProps, ctx => makeImageData(ctx, {
|
|
53
|
+
...renderProps,
|
|
54
|
+
features,
|
|
55
|
+
}));
|
|
26
56
|
const results = await super.render({
|
|
27
57
|
...renderProps,
|
|
28
58
|
...rest,
|
|
@@ -39,22 +69,5 @@ class MultiVariantBaseRenderer extends FeatureRendererType_1.default {
|
|
|
39
69
|
containsNoTransferables: true,
|
|
40
70
|
};
|
|
41
71
|
}
|
|
42
|
-
async draw(ctx, props) {
|
|
43
|
-
const { scrollTop, sources, rowHeight, features, regions, bpPerPx } = props;
|
|
44
|
-
const region = regions[0];
|
|
45
|
-
for (const feature of features.values()) {
|
|
46
|
-
if (feature.get('end') - feature.get('start') <= 10) {
|
|
47
|
-
const [leftPx, rightPx] = (0, util_1.featureSpanPx)(feature, region, bpPerPx);
|
|
48
|
-
const w = Math.max(Math.round(rightPx - leftPx), 2);
|
|
49
|
-
const genotypes = feature.get('genotypes');
|
|
50
|
-
let t = -scrollTop;
|
|
51
|
-
for (const { name } of sources) {
|
|
52
|
-
ctx.fillStyle = (0, util_2.getCol)(genotypes[name]);
|
|
53
|
-
ctx.fillRect(Math.floor(leftPx), t, w, Math.max(t + rowHeight, 1));
|
|
54
|
-
t += rowHeight;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
72
|
}
|
|
60
73
|
exports.default = MultiVariantBaseRenderer;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Source } from '../
|
|
1
|
+
import RBush from 'rbush';
|
|
2
|
+
import type { Source } from '../types';
|
|
3
3
|
import type { Feature } from '@jbrowse/core/util';
|
|
4
4
|
import type { Region } from '@jbrowse/core/util/types';
|
|
5
5
|
declare const MultiVariantRendering: (props: {
|
|
@@ -11,8 +11,12 @@ declare const MultiVariantRendering: (props: {
|
|
|
11
11
|
sources: Source[];
|
|
12
12
|
scrollTop: number;
|
|
13
13
|
totalHeight: number;
|
|
14
|
+
rbush: RBush<{
|
|
15
|
+
genotype: string;
|
|
16
|
+
}>;
|
|
17
|
+
displayModel: any;
|
|
14
18
|
onMouseLeave?: (event: React.MouseEvent) => void;
|
|
15
19
|
onMouseMove?: (event: React.MouseEvent, arg?: Feature) => void;
|
|
16
20
|
onFeatureClick?: (event: React.MouseEvent, arg?: Feature) => void;
|
|
17
|
-
}) =>
|
|
21
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
18
22
|
export default MultiVariantRendering;
|
|
@@ -1,43 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
4
|
};
|
|
25
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
27
8
|
const ui_1 = require("@jbrowse/core/ui");
|
|
28
9
|
const mobx_react_1 = require("mobx-react");
|
|
10
|
+
const rbush_1 = __importDefault(require("rbush"));
|
|
29
11
|
const MultiVariantRendering = (0, mobx_react_1.observer)(function (props) {
|
|
30
12
|
const { totalHeight, scrollTop } = props;
|
|
13
|
+
const { rbush, displayModel } = props;
|
|
31
14
|
const ref = (0, react_1.useRef)(null);
|
|
32
|
-
|
|
15
|
+
const rbush2 = (0, react_1.useMemo)(() => new rbush_1.default().fromJSON(rbush), [rbush]);
|
|
16
|
+
function getFeatureUnderMouse(eventClientX, eventClientY) {
|
|
17
|
+
var _a;
|
|
18
|
+
let offsetX = 0;
|
|
19
|
+
let offsetY = 0;
|
|
20
|
+
if (ref.current) {
|
|
21
|
+
const r = ref.current.getBoundingClientRect();
|
|
22
|
+
offsetX = eventClientX - r.left;
|
|
23
|
+
offsetY = eventClientY - r.top;
|
|
24
|
+
}
|
|
25
|
+
const ret = rbush2.search({
|
|
26
|
+
minX: offsetX,
|
|
27
|
+
maxX: offsetX + 3,
|
|
28
|
+
minY: offsetY,
|
|
29
|
+
maxY: offsetY + 3,
|
|
30
|
+
});
|
|
31
|
+
return (_a = ret[0]) === null || _a === void 0 ? void 0 : _a.genotype;
|
|
32
|
+
}
|
|
33
|
+
return ((0, jsx_runtime_1.jsx)("div", { ref: ref, onMouseMove: e => {
|
|
34
|
+
var _a;
|
|
35
|
+
return (_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, getFeatureUnderMouse(e.clientX, e.clientY));
|
|
36
|
+
}, onMouseLeave: () => {
|
|
37
|
+
var _a;
|
|
38
|
+
(_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, undefined);
|
|
39
|
+
}, onMouseOut: () => {
|
|
40
|
+
var _a;
|
|
41
|
+
(_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, undefined);
|
|
42
|
+
}, style: {
|
|
33
43
|
overflow: 'visible',
|
|
34
44
|
position: 'relative',
|
|
35
45
|
height: totalHeight,
|
|
36
|
-
}
|
|
37
|
-
react_1.default.createElement(ui_1.PrerenderedCanvas, { ...props, style: {
|
|
46
|
+
}, children: (0, jsx_runtime_1.jsx)(ui_1.PrerenderedCanvas, { ...props, style: {
|
|
38
47
|
position: 'absolute',
|
|
39
48
|
left: 0,
|
|
40
49
|
top: scrollTop,
|
|
41
|
-
} })));
|
|
50
|
+
} }) }));
|
|
42
51
|
});
|
|
43
52
|
exports.default = MultiVariantRendering;
|
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<
|
|
2
|
-
color: {
|
|
3
|
-
type: string;
|
|
4
|
-
description: string;
|
|
5
|
-
defaultValue: string;
|
|
6
|
-
};
|
|
7
|
-
posColor: {
|
|
8
|
-
type: string;
|
|
9
|
-
description: string;
|
|
10
|
-
defaultValue: string;
|
|
11
|
-
};
|
|
12
|
-
negColor: {
|
|
13
|
-
type: string;
|
|
14
|
-
description: string;
|
|
15
|
-
defaultValue: string;
|
|
16
|
-
};
|
|
17
|
-
clipColor: {
|
|
18
|
-
type: string;
|
|
19
|
-
description: string;
|
|
20
|
-
defaultValue: string;
|
|
21
|
-
};
|
|
22
|
-
bicolorPivot: {
|
|
23
|
-
type: string;
|
|
24
|
-
model: import("mobx-state-tree").ISimpleType<string>;
|
|
25
|
-
description: string;
|
|
26
|
-
defaultValue: string;
|
|
27
|
-
};
|
|
28
|
-
bicolorPivotValue: {
|
|
29
|
-
type: string;
|
|
30
|
-
defaultValue: number;
|
|
31
|
-
description: string;
|
|
32
|
-
};
|
|
33
|
-
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>, undefined>>;
|
|
1
|
+
declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
34
2
|
export default configSchema;
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
const configuration_1 = require("@jbrowse/core/configuration");
|
|
7
|
-
const configSchema_1 = __importDefault(require("../configSchema"));
|
|
8
4
|
function x() { }
|
|
9
5
|
const configSchema = (0, configuration_1.ConfigurationSchema)('MultiVariantRenderer', {}, {
|
|
10
|
-
baseConfiguration: configSchema_1.default,
|
|
11
6
|
explicitlyTyped: true,
|
|
12
7
|
});
|
|
13
8
|
exports.default = configSchema;
|
|
@@ -0,0 +1,67 @@
|
|
|
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.makeImageData = makeImageData;
|
|
7
|
+
const util_1 = require("@jbrowse/core/util");
|
|
8
|
+
const rbush_1 = __importDefault(require("rbush"));
|
|
9
|
+
const multiVariantColor_1 = require("../shared/multiVariantColor");
|
|
10
|
+
const util_2 = require("../util");
|
|
11
|
+
const fudgeFactor = 0.6;
|
|
12
|
+
const f2 = fudgeFactor / 2;
|
|
13
|
+
function drawColorAlleleCount(alleles, ctx, x, y, w, h) {
|
|
14
|
+
ctx.fillStyle = (0, multiVariantColor_1.getColorAlleleCount)(alleles);
|
|
15
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
16
|
+
}
|
|
17
|
+
function drawPhased(alleles, ctx, x, y, w, h, HP) {
|
|
18
|
+
ctx.fillStyle = (0, multiVariantColor_1.getColorPhased)(alleles, HP);
|
|
19
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
20
|
+
}
|
|
21
|
+
async function makeImageData(ctx, props) {
|
|
22
|
+
const { scrollTop, minorAlleleFrequencyFilter, sources, rowHeight, features, regions, bpPerPx, renderingMode, } = props;
|
|
23
|
+
const region = regions[0];
|
|
24
|
+
const mafs = (0, util_2.getFeaturesThatPassMinorAlleleFrequencyFilter)(features.values(), minorAlleleFrequencyFilter);
|
|
25
|
+
const rbush = new rbush_1.default();
|
|
26
|
+
for (const feature of mafs) {
|
|
27
|
+
const [leftPx, rightPx] = (0, util_1.featureSpanPx)(feature, region, bpPerPx);
|
|
28
|
+
const w = Math.max(Math.round(rightPx - leftPx), 2);
|
|
29
|
+
const samp = feature.get('genotypes');
|
|
30
|
+
let y = -scrollTop;
|
|
31
|
+
const s = sources.length;
|
|
32
|
+
for (let j = 0; j < s; j++) {
|
|
33
|
+
const { name, HP } = sources[j];
|
|
34
|
+
const genotype = samp[name];
|
|
35
|
+
const x = Math.floor(leftPx);
|
|
36
|
+
const h = Math.max(rowHeight, 1);
|
|
37
|
+
if (genotype) {
|
|
38
|
+
rbush.insert({
|
|
39
|
+
minX: x - f2,
|
|
40
|
+
maxX: x + w + f2,
|
|
41
|
+
minY: y - f2,
|
|
42
|
+
maxY: y + h + f2,
|
|
43
|
+
genotype,
|
|
44
|
+
});
|
|
45
|
+
const isPhased = genotype.includes('|');
|
|
46
|
+
if (renderingMode === 'phased') {
|
|
47
|
+
if (isPhased) {
|
|
48
|
+
const alleles = genotype.split('|');
|
|
49
|
+
drawPhased(alleles, ctx, x, y, w, h, HP);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
ctx.fillStyle = 'black';
|
|
53
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const alleles = genotype.split(/[/|]/);
|
|
58
|
+
drawColorAlleleCount(alleles, ctx, x, y, w, h);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
y += rowHeight;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
rbush: rbush.toJSON(),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Source } from '../types';
|
|
2
|
+
import type { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
3
|
+
import type { Feature } from '@jbrowse/core/util';
|
|
4
|
+
import type { ThemeOptions } from '@mui/material';
|
|
5
|
+
export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
|
|
6
|
+
bpPerPx: number;
|
|
7
|
+
height: number;
|
|
8
|
+
highResolutionScaling: number;
|
|
9
|
+
themeOptions: ThemeOptions;
|
|
10
|
+
}
|
|
11
|
+
export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
|
|
12
|
+
features: Map<string, Feature>;
|
|
13
|
+
}
|
|
14
|
+
export interface MultiRenderArgsDeserialized extends RenderArgsDeserializedWithFeatures {
|
|
15
|
+
sources: Source[];
|
|
16
|
+
rowHeight: number;
|
|
17
|
+
scrollTop: number;
|
|
18
|
+
minorAlleleFrequencyFilter: number;
|
|
19
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
2
|
-
import type { Source } from './
|
|
2
|
+
import type { Source } from './types';
|
|
3
3
|
import type { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
4
4
|
import type { Feature } from '@jbrowse/core/util';
|
|
5
5
|
import type { ThemeOptions } from '@mui/material';
|
|
@@ -23,14 +23,14 @@ export default abstract class MultiVariantBaseRenderer extends FeatureRendererTy
|
|
|
23
23
|
width: number;
|
|
24
24
|
containsNoTransferables: boolean;
|
|
25
25
|
canvasRecordedData: any;
|
|
26
|
-
reactElement?:
|
|
26
|
+
reactElement?: React.ReactElement;
|
|
27
27
|
html?: string;
|
|
28
28
|
} | {
|
|
29
29
|
features: Map<string, Feature>;
|
|
30
30
|
height: number;
|
|
31
31
|
width: number;
|
|
32
32
|
containsNoTransferables: boolean;
|
|
33
|
-
reactElement:
|
|
33
|
+
reactElement: import("react/jsx-runtime").JSX.Element;
|
|
34
34
|
html?: string;
|
|
35
35
|
} | {
|
|
36
36
|
features: Map<string, Feature>;
|
|
@@ -38,7 +38,7 @@ export default abstract class MultiVariantBaseRenderer extends FeatureRendererTy
|
|
|
38
38
|
width: number;
|
|
39
39
|
containsNoTransferables: boolean;
|
|
40
40
|
imageData: any;
|
|
41
|
-
reactElement?:
|
|
41
|
+
reactElement?: React.ReactElement;
|
|
42
42
|
html?: string;
|
|
43
43
|
}>;
|
|
44
44
|
abstract draw<T extends RenderArgsDeserializedWithFeatures>(ctx: CanvasRenderingContext2D, props: T): Promise<Record<string, unknown> | undefined>;
|
|
@@ -1,23 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { AnyRegion, Block } from './types';
|
|
2
2
|
import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
3
|
import type { Feature } from '@jbrowse/core/util';
|
|
4
|
-
export interface Region {
|
|
5
|
-
end: number;
|
|
6
|
-
start: number;
|
|
7
|
-
refName: string;
|
|
8
|
-
elided?: false;
|
|
9
|
-
}
|
|
10
|
-
export interface ElidedRegion {
|
|
11
|
-
elided: true;
|
|
12
|
-
regions: Region[];
|
|
13
|
-
}
|
|
14
|
-
export type AnyRegion = Region | ElidedRegion;
|
|
15
|
-
export interface Block {
|
|
16
|
-
flipped: boolean;
|
|
17
|
-
bpPerRadian: number;
|
|
18
|
-
startRadians: number;
|
|
19
|
-
region: AnyRegion;
|
|
20
|
-
}
|
|
21
4
|
declare const Chord: ({ feature, blocksForRefs, radius, config, bezierRadius, selected, onClick, }: {
|
|
22
5
|
feature: Feature;
|
|
23
6
|
blocksForRefs: Record<string, Block>;
|
|
@@ -26,5 +9,5 @@ declare const Chord: ({ feature, blocksForRefs, radius, config, bezierRadius, se
|
|
|
26
9
|
bezierRadius: number;
|
|
27
10
|
selected: boolean;
|
|
28
11
|
onClick: (feat: Feature, reg: AnyRegion, end: AnyRegion, evt: unknown) => void;
|
|
29
|
-
}) =>
|
|
12
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
30
13
|
export default Chord;
|