@jbrowse/plugin-alignments 3.6.5 → 3.7.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/AlignmentsFeatureDetail/stateModelFactory.d.ts +4 -4
- package/dist/CramAdapter/CramAdapter.js +1 -1
- package/dist/CramAdapter/CramSlightlyLazyFeature.js +8 -7
- package/dist/CramAdapter/{util.js → readFeaturesToCIGAR.js} +4 -5
- package/dist/CramAdapter/readFeaturesToMismatches.d.ts +5 -0
- package/dist/CramAdapter/readFeaturesToMismatches.js +106 -0
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +6 -2
- package/dist/LinearPileupDisplay/SharedLinearPileupDisplayMixin.d.ts +17 -2
- package/dist/LinearPileupDisplay/SharedLinearPileupDisplayMixin.js +2 -2
- package/dist/LinearPileupDisplay/components/GroupByDialog.js +4 -4
- package/dist/LinearPileupDisplay/components/SetModificationThresholdDialog.d.ts +10 -0
- package/dist/LinearPileupDisplay/components/SetModificationThresholdDialog.js +39 -0
- package/dist/LinearPileupDisplay/doAfterAttach.d.ts +1 -0
- package/dist/LinearPileupDisplay/doAfterAttach.js +3 -2
- package/dist/LinearPileupDisplay/model.d.ts +20 -2
- package/dist/LinearPileupDisplay/model.js +39 -4
- package/dist/LinearReadArcsDisplay/index.js +1 -1
- package/dist/LinearReadArcsDisplay/model.d.ts +23 -30
- package/dist/LinearReadArcsDisplay/model.js +5 -86
- package/dist/LinearReadCloudDisplay/components/ReactComponent.js +84 -2
- package/dist/LinearReadCloudDisplay/components/SetFeatureHeightDialog.d.ts +10 -0
- package/dist/LinearReadCloudDisplay/components/SetFeatureHeightDialog.js +26 -0
- package/dist/LinearReadCloudDisplay/configSchema.d.ts +7 -0
- package/dist/LinearReadCloudDisplay/configSchema.js +5 -0
- package/dist/LinearReadCloudDisplay/drawFeatsAbstract.js +13 -0
- package/dist/LinearReadCloudDisplay/drawFeatsCloud.js +24 -0
- package/dist/LinearReadCloudDisplay/drawFeatsCommon.d.ts +23 -0
- package/dist/LinearReadCloudDisplay/drawFeatsCommon.js +198 -0
- package/dist/LinearReadCloudDisplay/drawFeatsStack.d.ts +2 -0
- package/dist/LinearReadCloudDisplay/drawFeatsStack.js +36 -0
- package/dist/LinearReadCloudDisplay/index.js +1 -1
- package/dist/LinearReadCloudDisplay/model.d.ts +51 -31
- package/dist/LinearReadCloudDisplay/model.js +93 -78
- package/dist/LinearSNPCoverageDisplay/components/TooltipContents.d.ts +3 -0
- package/dist/LinearSNPCoverageDisplay/components/TooltipContents.js +148 -19
- package/dist/LinearSNPCoverageDisplay/model.js +14 -3
- package/dist/MismatchParser/cigarToMismatches.js +1 -0
- package/dist/ModificationParser/detectSimplexModifications.d.ts +4 -0
- package/dist/ModificationParser/detectSimplexModifications.js +20 -0
- package/dist/ModificationParser/getModPositions.d.ts +1 -1
- package/dist/ModificationParser/getModPositions.js +13 -16
- package/dist/PileupRPC/methods/GetVisibleModifications.d.ts +4 -1
- package/dist/PileupRPC/methods/GetVisibleModifications.js +16 -3
- package/dist/PileupRenderer/PileupRenderer.d.ts +6 -1
- package/dist/PileupRenderer/PileupRenderer.js +11 -14
- package/dist/PileupRenderer/components/PileupRendering.d.ts +8 -15
- package/dist/PileupRenderer/components/PileupRendering.js +18 -2
- package/dist/PileupRenderer/makeImageData.d.ts +5 -2
- package/dist/PileupRenderer/makeImageData.js +37 -6
- package/dist/PileupRenderer/{getAlignmentShapeColor.js → renderers/getAlignmentShapeColor.js} +2 -2
- package/{esm/PileupRenderer → dist/PileupRenderer/renderers}/renderAlignment.d.ts +6 -3
- package/dist/PileupRenderer/{renderAlignment.js → renderers/renderAlignment.js} +12 -3
- package/{esm/PileupRenderer → dist/PileupRenderer/renderers}/renderAlignmentShape.d.ts +2 -2
- package/dist/PileupRenderer/{renderAlignmentShape.js → renderers/renderAlignmentShape.js} +1 -1
- package/dist/PileupRenderer/{renderMethylation.d.ts → renderers/renderMethylation.d.ts} +2 -2
- package/dist/PileupRenderer/{renderMethylation.js → renderers/renderMethylation.js} +2 -2
- package/dist/PileupRenderer/{renderMismatches.d.ts → renderers/renderMismatches.d.ts} +6 -3
- package/dist/PileupRenderer/{renderMismatches.js → renderers/renderMismatches.js} +29 -5
- package/dist/PileupRenderer/{renderModifications.d.ts → renderers/renderModifications.d.ts} +6 -3
- package/dist/PileupRenderer/renderers/renderModifications.js +84 -0
- package/dist/PileupRenderer/{renderPerBaseLettering.d.ts → renderers/renderPerBaseLettering.d.ts} +1 -1
- package/dist/PileupRenderer/{renderPerBaseLettering.js → renderers/renderPerBaseLettering.js} +1 -1
- package/{esm/PileupRenderer → dist/PileupRenderer/renderers}/renderPerBaseQuality.d.ts +1 -1
- package/dist/PileupRenderer/{renderPerBaseQuality.js → renderers/renderPerBaseQuality.js} +1 -1
- package/dist/PileupRenderer/{renderSoftClipping.d.ts → renderers/renderSoftClipping.d.ts} +2 -2
- package/dist/PileupRenderer/{renderSoftClipping.js → renderers/renderSoftClipping.js} +2 -2
- package/dist/PileupRenderer/types.d.ts +6 -0
- package/dist/SNPCoverageAdapter/generateCoverageBins.js +5 -4
- package/dist/SNPCoverageAdapter/processModifications.js +14 -4
- package/dist/SNPCoverageRenderer/makeImage.js +44 -33
- package/dist/SNPCoverageRenderer/types.d.ts +1 -0
- package/dist/shared/LinearReadDisplayBaseMixin.d.ts +24 -0
- package/dist/shared/LinearReadDisplayBaseMixin.js +50 -0
- package/dist/shared/LinearReadDisplayWithLayoutMixin.d.ts +11 -0
- package/dist/shared/LinearReadDisplayWithLayoutMixin.js +24 -0
- package/dist/shared/LinearReadDisplayWithPairFiltersMixin.d.ts +11 -0
- package/dist/shared/LinearReadDisplayWithPairFiltersMixin.js +27 -0
- package/dist/shared/afterAttach.js +3 -2
- package/dist/shared/chainToSimpleFeature.d.ts +3 -0
- package/dist/shared/chainToSimpleFeature.js +43 -0
- package/dist/shared/chevron.d.ts +1 -0
- package/dist/shared/chevron.js +27 -0
- package/dist/shared/color.d.ts +43 -6
- package/dist/shared/color.js +101 -22
- package/dist/shared/components/BaseDisplayComponent.d.ts +12 -3
- package/dist/shared/components/BaseDisplayComponent.js +2 -2
- package/dist/shared/components/SetFeatureHeightDialog.d.ts +10 -0
- package/dist/shared/components/SetFeatureHeightDialog.js +26 -0
- package/dist/shared/components/SetMaxHeightDialog.d.ts +8 -0
- package/dist/shared/components/SetMaxHeightDialog.js +28 -0
- package/dist/shared/drawLongReadChains.d.ts +24 -0
- package/dist/shared/drawLongReadChains.js +104 -0
- package/dist/shared/drawPairChains.d.ts +24 -0
- package/dist/shared/drawPairChains.js +94 -0
- package/dist/shared/flatbushType.d.ts +12 -0
- package/dist/shared/flatbushType.js +2 -0
- package/dist/shared/getUniqueModifications.d.ts +4 -1
- package/dist/shared/menuItems.d.ts +23 -0
- package/dist/shared/menuItems.js +89 -0
- package/dist/shared/modificationData.d.ts +6 -0
- package/dist/shared/modificationData.js +22 -0
- package/dist/shared/primaryStrand.d.ts +3 -0
- package/dist/shared/primaryStrand.js +24 -0
- package/dist/shared/types.d.ts +2 -0
- package/dist/shared/util.d.ts +2 -0
- package/dist/shared/util.js +6 -1
- package/dist/util.d.ts +1 -6
- package/dist/util.js +4 -15
- package/esm/AlignmentsFeatureDetail/stateModelFactory.d.ts +4 -4
- package/esm/CramAdapter/CramAdapter.js +1 -1
- package/esm/CramAdapter/CramSlightlyLazyFeature.js +2 -1
- package/esm/CramAdapter/{util.js → readFeaturesToCIGAR.js} +4 -5
- package/esm/CramAdapter/readFeaturesToMismatches.d.ts +5 -0
- package/esm/CramAdapter/readFeaturesToMismatches.js +103 -0
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +6 -2
- package/esm/LinearPileupDisplay/SharedLinearPileupDisplayMixin.d.ts +17 -2
- package/esm/LinearPileupDisplay/SharedLinearPileupDisplayMixin.js +2 -2
- package/esm/LinearPileupDisplay/components/GroupByDialog.js +4 -4
- package/esm/LinearPileupDisplay/components/SetModificationThresholdDialog.d.ts +10 -0
- package/esm/LinearPileupDisplay/components/SetModificationThresholdDialog.js +37 -0
- package/esm/LinearPileupDisplay/doAfterAttach.d.ts +1 -0
- package/esm/LinearPileupDisplay/doAfterAttach.js +3 -2
- package/esm/LinearPileupDisplay/model.d.ts +20 -2
- package/esm/LinearPileupDisplay/model.js +39 -4
- package/esm/LinearReadArcsDisplay/index.js +1 -1
- package/esm/LinearReadArcsDisplay/model.d.ts +23 -30
- package/esm/LinearReadArcsDisplay/model.js +5 -83
- package/esm/LinearReadCloudDisplay/components/ReactComponent.js +86 -4
- package/esm/LinearReadCloudDisplay/components/SetFeatureHeightDialog.d.ts +10 -0
- package/esm/LinearReadCloudDisplay/components/SetFeatureHeightDialog.js +24 -0
- package/esm/LinearReadCloudDisplay/configSchema.d.ts +7 -0
- package/esm/LinearReadCloudDisplay/configSchema.js +5 -0
- package/esm/LinearReadCloudDisplay/drawFeatsAbstract.d.ts +2 -0
- package/esm/LinearReadCloudDisplay/drawFeatsAbstract.js +10 -0
- package/esm/LinearReadCloudDisplay/drawFeatsCloud.d.ts +2 -0
- package/esm/LinearReadCloudDisplay/drawFeatsCloud.js +21 -0
- package/esm/LinearReadCloudDisplay/drawFeatsCommon.d.ts +23 -0
- package/esm/LinearReadCloudDisplay/drawFeatsCommon.js +187 -0
- package/esm/LinearReadCloudDisplay/drawFeatsStack.d.ts +2 -0
- package/esm/LinearReadCloudDisplay/drawFeatsStack.js +30 -0
- package/esm/LinearReadCloudDisplay/index.js +1 -1
- package/esm/LinearReadCloudDisplay/model.d.ts +51 -31
- package/esm/LinearReadCloudDisplay/model.js +94 -76
- package/esm/LinearSNPCoverageDisplay/components/TooltipContents.d.ts +3 -0
- package/esm/LinearSNPCoverageDisplay/components/TooltipContents.js +149 -20
- package/esm/LinearSNPCoverageDisplay/model.js +14 -3
- package/esm/MismatchParser/cigarToMismatches.js +1 -0
- package/esm/ModificationParser/detectSimplexModifications.d.ts +4 -0
- package/esm/ModificationParser/detectSimplexModifications.js +17 -0
- package/esm/ModificationParser/getModPositions.d.ts +1 -1
- package/esm/ModificationParser/getModPositions.js +13 -16
- package/esm/PileupRPC/methods/GetVisibleModifications.d.ts +4 -1
- package/esm/PileupRPC/methods/GetVisibleModifications.js +16 -3
- package/esm/PileupRenderer/PileupRenderer.d.ts +6 -1
- package/esm/PileupRenderer/PileupRenderer.js +11 -14
- package/esm/PileupRenderer/components/PileupRendering.d.ts +8 -15
- package/esm/PileupRenderer/components/PileupRendering.js +16 -3
- package/esm/PileupRenderer/makeImageData.d.ts +5 -2
- package/esm/PileupRenderer/makeImageData.js +34 -6
- package/esm/PileupRenderer/{getAlignmentShapeColor.js → renderers/getAlignmentShapeColor.js} +2 -2
- package/{dist/PileupRenderer → esm/PileupRenderer/renderers}/renderAlignment.d.ts +6 -3
- package/esm/PileupRenderer/{renderAlignment.js → renderers/renderAlignment.js} +12 -3
- package/{dist/PileupRenderer → esm/PileupRenderer/renderers}/renderAlignmentShape.d.ts +2 -2
- package/esm/PileupRenderer/{renderAlignmentShape.js → renderers/renderAlignmentShape.js} +1 -1
- package/esm/PileupRenderer/{renderMethylation.d.ts → renderers/renderMethylation.d.ts} +2 -2
- package/esm/PileupRenderer/{renderMethylation.js → renderers/renderMethylation.js} +2 -2
- package/esm/PileupRenderer/{renderMismatches.d.ts → renderers/renderMismatches.d.ts} +6 -3
- package/esm/PileupRenderer/{renderMismatches.js → renderers/renderMismatches.js} +29 -5
- package/esm/PileupRenderer/{renderModifications.d.ts → renderers/renderModifications.d.ts} +6 -3
- package/esm/PileupRenderer/renderers/renderModifications.js +81 -0
- package/esm/PileupRenderer/{renderPerBaseLettering.d.ts → renderers/renderPerBaseLettering.d.ts} +1 -1
- package/esm/PileupRenderer/{renderPerBaseLettering.js → renderers/renderPerBaseLettering.js} +1 -1
- package/{dist/PileupRenderer → esm/PileupRenderer/renderers}/renderPerBaseQuality.d.ts +1 -1
- package/esm/PileupRenderer/{renderPerBaseQuality.js → renderers/renderPerBaseQuality.js} +1 -1
- package/esm/PileupRenderer/{renderSoftClipping.d.ts → renderers/renderSoftClipping.d.ts} +2 -2
- package/esm/PileupRenderer/{renderSoftClipping.js → renderers/renderSoftClipping.js} +2 -2
- package/esm/PileupRenderer/types.d.ts +6 -0
- package/esm/SNPCoverageAdapter/generateCoverageBins.js +5 -4
- package/esm/SNPCoverageAdapter/processModifications.js +14 -4
- package/esm/SNPCoverageRenderer/makeImage.js +44 -33
- package/esm/SNPCoverageRenderer/types.d.ts +1 -0
- package/esm/shared/LinearReadDisplayBaseMixin.d.ts +24 -0
- package/esm/shared/LinearReadDisplayBaseMixin.js +47 -0
- package/esm/shared/LinearReadDisplayWithLayoutMixin.d.ts +11 -0
- package/esm/shared/LinearReadDisplayWithLayoutMixin.js +21 -0
- package/esm/shared/LinearReadDisplayWithPairFiltersMixin.d.ts +11 -0
- package/esm/shared/LinearReadDisplayWithPairFiltersMixin.js +24 -0
- package/esm/shared/afterAttach.js +3 -2
- package/esm/shared/chainToSimpleFeature.d.ts +3 -0
- package/esm/shared/chainToSimpleFeature.js +40 -0
- package/esm/shared/chevron.d.ts +1 -0
- package/esm/shared/chevron.js +24 -0
- package/esm/shared/color.d.ts +43 -6
- package/esm/shared/color.js +96 -20
- package/esm/shared/components/BaseDisplayComponent.d.ts +12 -3
- package/esm/shared/components/BaseDisplayComponent.js +2 -2
- package/esm/shared/components/SetFeatureHeightDialog.d.ts +10 -0
- package/esm/shared/components/SetFeatureHeightDialog.js +24 -0
- package/esm/shared/components/SetMaxHeightDialog.d.ts +8 -0
- package/esm/shared/components/SetMaxHeightDialog.js +26 -0
- package/esm/shared/drawLongReadChains.d.ts +24 -0
- package/esm/shared/drawLongReadChains.js +101 -0
- package/esm/shared/drawPairChains.d.ts +24 -0
- package/esm/shared/drawPairChains.js +91 -0
- package/esm/shared/flatbushType.d.ts +12 -0
- package/esm/shared/flatbushType.js +1 -0
- package/esm/shared/getUniqueModifications.d.ts +4 -1
- package/esm/shared/menuItems.d.ts +23 -0
- package/esm/shared/menuItems.js +49 -0
- package/esm/shared/modificationData.d.ts +6 -0
- package/esm/shared/modificationData.js +18 -0
- package/esm/shared/primaryStrand.d.ts +3 -0
- package/esm/shared/primaryStrand.js +20 -0
- package/esm/shared/types.d.ts +2 -0
- package/esm/shared/util.d.ts +2 -0
- package/esm/shared/util.js +4 -0
- package/esm/util.d.ts +1 -6
- package/esm/util.js +2 -14
- package/package.json +6 -6
- package/dist/LinearReadCloudDisplay/drawFeats.js +0 -27
- package/dist/LinearReadCloudDisplay/drawLongReadChains.d.ts +0 -11
- package/dist/LinearReadCloudDisplay/drawLongReadChains.js +0 -64
- package/dist/LinearReadCloudDisplay/drawPairChains.d.ts +0 -17
- package/dist/LinearReadCloudDisplay/drawPairChains.js +0 -94
- package/dist/PileupRenderer/renderModifications.js +0 -44
- package/esm/LinearReadCloudDisplay/drawFeats.js +0 -24
- package/esm/LinearReadCloudDisplay/drawLongReadChains.d.ts +0 -11
- package/esm/LinearReadCloudDisplay/drawLongReadChains.js +0 -61
- package/esm/LinearReadCloudDisplay/drawPairChains.d.ts +0 -17
- package/esm/LinearReadCloudDisplay/drawPairChains.js +0 -90
- package/esm/PileupRenderer/renderModifications.js +0 -41
- /package/dist/CramAdapter/{util.d.ts → readFeaturesToCIGAR.d.ts} +0 -0
- /package/dist/LinearReadCloudDisplay/{drawFeats.d.ts → drawFeatsAbstract.d.ts} +0 -0
- /package/{esm/LinearReadCloudDisplay/drawFeats.d.ts → dist/LinearReadCloudDisplay/drawFeatsCloud.d.ts} +0 -0
- /package/dist/PileupRenderer/{getAlignmentShapeColor.d.ts → renderers/getAlignmentShapeColor.d.ts} +0 -0
- /package/dist/{LinearReadCloudDisplay/util.d.ts → shared/canvasUtils.d.ts} +0 -0
- /package/dist/{LinearReadCloudDisplay/util.js → shared/canvasUtils.js} +0 -0
- /package/esm/CramAdapter/{util.d.ts → readFeaturesToCIGAR.d.ts} +0 -0
- /package/esm/PileupRenderer/{getAlignmentShapeColor.d.ts → renderers/getAlignmentShapeColor.d.ts} +0 -0
- /package/esm/{LinearReadCloudDisplay/util.d.ts → shared/canvasUtils.d.ts} +0 -0
- /package/esm/{LinearReadCloudDisplay/util.js → shared/canvasUtils.js} +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export function readFeaturesToMismatches(readFeatures = [], start, qual) {
|
|
2
|
+
const mismatches = new Array(readFeatures.length);
|
|
3
|
+
let j = 0;
|
|
4
|
+
let refPos = 0;
|
|
5
|
+
let sublen = 0;
|
|
6
|
+
let lastPos = start;
|
|
7
|
+
let insertedBases = '';
|
|
8
|
+
for (const ret of readFeatures) {
|
|
9
|
+
const { refPos: p, code, pos, data, sub, ref } = ret;
|
|
10
|
+
sublen = refPos - lastPos;
|
|
11
|
+
lastPos = refPos;
|
|
12
|
+
if (sublen && insertedBases.length > 0) {
|
|
13
|
+
mismatches[j++] = {
|
|
14
|
+
start: refPos,
|
|
15
|
+
type: 'insertion',
|
|
16
|
+
base: `${insertedBases.length}`,
|
|
17
|
+
insertedBases,
|
|
18
|
+
length: 0,
|
|
19
|
+
};
|
|
20
|
+
insertedBases = '';
|
|
21
|
+
}
|
|
22
|
+
refPos = p - 1 - start;
|
|
23
|
+
if (code === 'X') {
|
|
24
|
+
mismatches[j++] = {
|
|
25
|
+
start: refPos,
|
|
26
|
+
length: 1,
|
|
27
|
+
base: sub,
|
|
28
|
+
qual: qual === null || qual === void 0 ? void 0 : qual[pos - 1],
|
|
29
|
+
altbase: ref === null || ref === void 0 ? void 0 : ref.toUpperCase(),
|
|
30
|
+
type: 'mismatch',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
else if (code === 'I') {
|
|
34
|
+
mismatches[j++] = {
|
|
35
|
+
start: refPos,
|
|
36
|
+
type: 'insertion',
|
|
37
|
+
base: `${data.length}`,
|
|
38
|
+
insertedBases: data,
|
|
39
|
+
length: 0,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
else if (code === 'N') {
|
|
43
|
+
mismatches[j++] = {
|
|
44
|
+
type: 'skip',
|
|
45
|
+
length: data,
|
|
46
|
+
start: refPos,
|
|
47
|
+
base: 'N',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
else if (code === 'S') {
|
|
51
|
+
const len = data.length;
|
|
52
|
+
mismatches[j++] = {
|
|
53
|
+
start: refPos,
|
|
54
|
+
type: 'softclip',
|
|
55
|
+
base: `S${len}`,
|
|
56
|
+
cliplen: len,
|
|
57
|
+
length: 1,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
else if (code === 'P') {
|
|
61
|
+
}
|
|
62
|
+
else if (code === 'H') {
|
|
63
|
+
const len = data;
|
|
64
|
+
mismatches[j++] = {
|
|
65
|
+
start: refPos,
|
|
66
|
+
type: 'hardclip',
|
|
67
|
+
base: `H${len}`,
|
|
68
|
+
cliplen: len,
|
|
69
|
+
length: 1,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
else if (code === 'D') {
|
|
73
|
+
mismatches[j++] = {
|
|
74
|
+
type: 'deletion',
|
|
75
|
+
length: data,
|
|
76
|
+
start: refPos,
|
|
77
|
+
base: '*',
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
else if (code === 'b') {
|
|
81
|
+
}
|
|
82
|
+
else if (code === 'q') {
|
|
83
|
+
}
|
|
84
|
+
else if (code === 'B') {
|
|
85
|
+
}
|
|
86
|
+
else if (code === 'i') {
|
|
87
|
+
insertedBases += data;
|
|
88
|
+
}
|
|
89
|
+
else if (code === 'Q') {
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (sublen && insertedBases.length > 0) {
|
|
93
|
+
mismatches[j++] = {
|
|
94
|
+
start: refPos,
|
|
95
|
+
type: 'insertion',
|
|
96
|
+
base: `${insertedBases.length}`,
|
|
97
|
+
insertedBases,
|
|
98
|
+
length: 0,
|
|
99
|
+
};
|
|
100
|
+
insertedBases = '';
|
|
101
|
+
}
|
|
102
|
+
return mismatches.slice(0, j);
|
|
103
|
+
}
|
|
@@ -3,13 +3,17 @@ import { getConf } from '@jbrowse/core/configuration';
|
|
|
3
3
|
import { ResizeHandle } from '@jbrowse/core/ui';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
5
|
import { makeStyles } from 'tss-react/mui';
|
|
6
|
-
const useStyles = makeStyles()({
|
|
6
|
+
const useStyles = makeStyles()(theme => ({
|
|
7
7
|
resizeHandle: {
|
|
8
8
|
height: 5,
|
|
9
9
|
position: 'absolute',
|
|
10
10
|
zIndex: 2,
|
|
11
|
+
background: 'transparent',
|
|
12
|
+
'&:hover': {
|
|
13
|
+
background: theme.palette.divider,
|
|
14
|
+
},
|
|
11
15
|
},
|
|
12
|
-
});
|
|
16
|
+
}));
|
|
13
17
|
const AlignmentsDisplay = observer(function AlignmentsDisplay({ model, }) {
|
|
14
18
|
var _a;
|
|
15
19
|
const { PileupDisplay, SNPCoverageDisplay } = model;
|
|
@@ -181,6 +181,7 @@ export declare function SharedLinearPileupDisplayMixin(configSchema: AnyConfigur
|
|
|
181
181
|
regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
|
|
182
182
|
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react/jsx-runtime").JSX.Element | null;
|
|
183
183
|
} & {
|
|
184
|
+
mouseoverExtraInformation: string | undefined;
|
|
184
185
|
featureIdUnderMouse: undefined | string;
|
|
185
186
|
contextMenuFeature: undefined | Feature;
|
|
186
187
|
} & {
|
|
@@ -195,9 +196,22 @@ export declare function SharedLinearPileupDisplayMixin(configSchema: AnyConfigur
|
|
|
195
196
|
} & {
|
|
196
197
|
readonly features: import("@jbrowse/core/util/compositeMap").default<string, Feature>;
|
|
197
198
|
readonly featureUnderMouse: Feature | undefined;
|
|
199
|
+
readonly layoutFeatures: import("@jbrowse/core/util/compositeMap").default<string, [number, number, number, number] | [number, number, number, number, {
|
|
200
|
+
label?: string;
|
|
201
|
+
description?: string;
|
|
202
|
+
refName: string;
|
|
203
|
+
}]>;
|
|
198
204
|
getFeatureOverlapping(blockKey: string, x: number, y: number): string | undefined;
|
|
199
|
-
getFeatureByID(blockKey: string, id: string): [number, number, number, number] |
|
|
200
|
-
|
|
205
|
+
getFeatureByID(blockKey: string, id: string): ([number, number, number, number] | [number, number, number, number, {
|
|
206
|
+
label?: string;
|
|
207
|
+
description?: string;
|
|
208
|
+
refName: string;
|
|
209
|
+
}]) | undefined;
|
|
210
|
+
searchFeatureByID(id: string): ([number, number, number, number] | [number, number, number, number, {
|
|
211
|
+
label?: string;
|
|
212
|
+
description?: string;
|
|
213
|
+
refName: string;
|
|
214
|
+
}]) | undefined;
|
|
201
215
|
} & {
|
|
202
216
|
addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
|
|
203
217
|
deleteBlock(key: string): void;
|
|
@@ -206,6 +220,7 @@ export declare function SharedLinearPileupDisplayMixin(configSchema: AnyConfigur
|
|
|
206
220
|
clearFeatureSelection(): void;
|
|
207
221
|
setFeatureIdUnderMouse(feature?: string): void;
|
|
208
222
|
setContextMenuFeature(feature?: Feature): void;
|
|
223
|
+
setMouseoverExtraInformation(extra?: string): void;
|
|
209
224
|
} & {
|
|
210
225
|
reload(): Promise<void>;
|
|
211
226
|
} & {
|
|
@@ -15,8 +15,8 @@ import LinearPileupDisplayBlurb from './components/LinearPileupDisplayBlurb';
|
|
|
15
15
|
import { getUniqueTags } from '../shared/getUniqueTags';
|
|
16
16
|
const FilterByTagDialog = lazy(() => import('../shared/components/FilterByTagDialog'));
|
|
17
17
|
const ColorByTagDialog = lazy(() => import('./components/ColorByTagDialog'));
|
|
18
|
-
const SetFeatureHeightDialog = lazy(() => import('
|
|
19
|
-
const SetMaxHeightDialog = lazy(() => import('
|
|
18
|
+
const SetFeatureHeightDialog = lazy(() => import('../shared/components/SetFeatureHeightDialog'));
|
|
19
|
+
const SetMaxHeightDialog = lazy(() => import('../shared/components/SetMaxHeightDialog'));
|
|
20
20
|
const rendererTypes = new Map([
|
|
21
21
|
['pileup', 'PileupRenderer'],
|
|
22
22
|
['svg', 'SvgFeatureRenderer'],
|
|
@@ -51,7 +51,7 @@ const GroupByTagDialog = observer(function (props) {
|
|
|
51
51
|
maxLength: 2,
|
|
52
52
|
'data-testid': 'group-tag-name-input',
|
|
53
53
|
},
|
|
54
|
-
} }), error ? (_jsx(ErrorMessage, { error: error })) : loading ? (_jsx(LoadingEllipses, {
|
|
54
|
+
} }), error ? (_jsx(ErrorMessage, { error: error })) : loading ? (_jsx(LoadingEllipses, { message: "Loading unique tags" })) : tagSet ? (_jsxs("div", { children: [_jsxs("div", { children: ["Found unique ", tag, " values:"] }), _jsx("div", { children: tagSet.join(', ') })] })) : null] })) : null] }), _jsxs(DialogActions, { children: [_jsx(Button, { variant: "contained", color: "primary", type: "submit", disabled: !tagSet, autoFocus: true, onClick: () => {
|
|
55
55
|
const track = getContainingTrack(model);
|
|
56
56
|
const trackConf = structuredClone(getSnapshot(track.configuration));
|
|
57
57
|
const session = getSession(model);
|
|
@@ -60,7 +60,7 @@ const GroupByTagDialog = observer(function (props) {
|
|
|
60
60
|
if (tagSet) {
|
|
61
61
|
const ret = [...tagSet, undefined];
|
|
62
62
|
for (const tagValue of ret) {
|
|
63
|
-
const t1 = `${trackConf.trackId}-${tag}:${tagValue}-${
|
|
63
|
+
const t1 = `${trackConf.trackId}-${tag}:${tagValue}-${Date.now()}-sessionTrack`;
|
|
64
64
|
session.addTrackConf({
|
|
65
65
|
...trackConf,
|
|
66
66
|
trackId: t1,
|
|
@@ -88,8 +88,8 @@ const GroupByTagDialog = observer(function (props) {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
else if (type === 'strand') {
|
|
91
|
-
const t1 = `${trackConf.trackId}-${tag}:(-)-${
|
|
92
|
-
const t2 = `${trackConf.trackId}-${tag}:(+)-${
|
|
91
|
+
const t1 = `${trackConf.trackId}-${tag}:(-)-${Date.now()}-sessionTrack`;
|
|
92
|
+
const t2 = `${trackConf.trackId}-${tag}:(+)-${Date.now()}-sessionTrack`;
|
|
93
93
|
session.addTrackConf({
|
|
94
94
|
...trackConf,
|
|
95
95
|
trackId: t1,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ColorBy } from '../../shared/types';
|
|
2
|
+
declare const SetModificationThresholdDialog: (props: {
|
|
3
|
+
model: {
|
|
4
|
+
modificationThreshold: number;
|
|
5
|
+
colorBy?: ColorBy;
|
|
6
|
+
setColorScheme: (colorBy: ColorBy) => void;
|
|
7
|
+
};
|
|
8
|
+
handleClose: () => void;
|
|
9
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default SetModificationThresholdDialog;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Dialog } from '@jbrowse/core/ui';
|
|
4
|
+
import { Button, DialogActions, DialogContent, TextField, Typography, } from '@mui/material';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
const SetModificationThresholdDialog = observer(function (props) {
|
|
7
|
+
const { model, handleClose } = props;
|
|
8
|
+
const [threshold, setThreshold] = useState(String(model.modificationThreshold));
|
|
9
|
+
const numThreshold = Number.parseFloat(threshold);
|
|
10
|
+
const validThreshold = !Number.isNaN(numThreshold) && numThreshold >= 0 && numThreshold <= 100;
|
|
11
|
+
return (_jsx(Dialog, { open: true, onClose: handleClose, title: "Adjust modification threshold", children: _jsxs(DialogContent, { children: [_jsx(Typography, { children: "Set the minimum probability threshold for displaying modifications" }), _jsx(Typography, { color: "textSecondary", children: "Only modifications with probability above this threshold will be displayed (0-100%)" }), _jsx(TextField, { value: threshold, onChange: event => {
|
|
12
|
+
setThreshold(event.target.value);
|
|
13
|
+
}, placeholder: "Enter threshold (e.g., 10)", error: threshold !== '' && !validThreshold, helperText: threshold !== '' && !validThreshold
|
|
14
|
+
? 'Must be a number between 0 and 100'
|
|
15
|
+
: '', autoComplete: "off", type: "number", slotProps: {
|
|
16
|
+
htmlInput: {
|
|
17
|
+
min: 0,
|
|
18
|
+
max: 100,
|
|
19
|
+
step: 1,
|
|
20
|
+
},
|
|
21
|
+
} }), _jsxs(DialogActions, { children: [_jsx(Button, { variant: "contained", color: "primary", type: "submit", autoFocus: true, disabled: !validThreshold, onClick: () => {
|
|
22
|
+
const currentColorBy = model.colorBy || {
|
|
23
|
+
type: 'modifications',
|
|
24
|
+
};
|
|
25
|
+
model.setColorScheme({
|
|
26
|
+
...currentColorBy,
|
|
27
|
+
modifications: {
|
|
28
|
+
...currentColorBy.modifications,
|
|
29
|
+
threshold: numThreshold,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
handleClose();
|
|
33
|
+
}, children: "Submit" }), _jsx(Button, { variant: "contained", color: "secondary", onClick: () => {
|
|
34
|
+
handleClose();
|
|
35
|
+
}, children: "Cancel" })] })] }) }));
|
|
36
|
+
});
|
|
37
|
+
export default SetModificationThresholdDialog;
|
|
@@ -14,6 +14,7 @@ export declare function doAfterAttach(model: {
|
|
|
14
14
|
setCurrSortBpPerPx: (arg: number) => void;
|
|
15
15
|
setError: (arg: unknown) => void;
|
|
16
16
|
updateVisibleModifications: (arg: ModificationType[]) => void;
|
|
17
|
+
setSimplexModifications: (arg: string[]) => void;
|
|
17
18
|
setModificationsReady: (arg: boolean) => void;
|
|
18
19
|
setSortReady: (arg: boolean) => void;
|
|
19
20
|
setMessage: (arg: string) => void;
|
|
@@ -55,13 +55,14 @@ export function doAfterAttach(model) {
|
|
|
55
55
|
}
|
|
56
56
|
const { adapterConfig } = model;
|
|
57
57
|
const { staticBlocks } = getContainingView(model);
|
|
58
|
-
const
|
|
58
|
+
const { modifications, simplexModifications } = await getUniqueModifications({
|
|
59
59
|
model,
|
|
60
60
|
adapterConfig,
|
|
61
61
|
blocks: staticBlocks,
|
|
62
62
|
});
|
|
63
63
|
if (isAlive(model)) {
|
|
64
|
-
model.updateVisibleModifications(
|
|
64
|
+
model.updateVisibleModifications(modifications);
|
|
65
|
+
model.setSimplexModifications(simplexModifications);
|
|
65
66
|
model.setModificationsReady(true);
|
|
66
67
|
}
|
|
67
68
|
}, { delay: 1000 });
|
|
@@ -186,6 +186,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
186
186
|
regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
|
|
187
187
|
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react/jsx-runtime").JSX.Element | null;
|
|
188
188
|
} & {
|
|
189
|
+
mouseoverExtraInformation: string | undefined;
|
|
189
190
|
featureIdUnderMouse: undefined | string;
|
|
190
191
|
contextMenuFeature: undefined | import("@jbrowse/core/util").Feature;
|
|
191
192
|
} & {
|
|
@@ -200,9 +201,22 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
200
201
|
} & {
|
|
201
202
|
readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
|
|
202
203
|
readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
|
|
204
|
+
readonly layoutFeatures: import("@jbrowse/core/util/compositeMap").default<string, [number, number, number, number] | [number, number, number, number, {
|
|
205
|
+
label?: string;
|
|
206
|
+
description?: string;
|
|
207
|
+
refName: string;
|
|
208
|
+
}]>;
|
|
203
209
|
getFeatureOverlapping(blockKey: string, x: number, y: number): string | undefined;
|
|
204
|
-
getFeatureByID(blockKey: string, id: string): [number, number, number, number] |
|
|
205
|
-
|
|
210
|
+
getFeatureByID(blockKey: string, id: string): ([number, number, number, number] | [number, number, number, number, {
|
|
211
|
+
label?: string;
|
|
212
|
+
description?: string;
|
|
213
|
+
refName: string;
|
|
214
|
+
}]) | undefined;
|
|
215
|
+
searchFeatureByID(id: string): ([number, number, number, number] | [number, number, number, number, {
|
|
216
|
+
label?: string;
|
|
217
|
+
description?: string;
|
|
218
|
+
refName: string;
|
|
219
|
+
}]) | undefined;
|
|
206
220
|
} & {
|
|
207
221
|
addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
|
|
208
222
|
deleteBlock(key: string): void;
|
|
@@ -211,6 +225,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
211
225
|
clearFeatureSelection(): void;
|
|
212
226
|
setFeatureIdUnderMouse(feature?: string): void;
|
|
213
227
|
setContextMenuFeature(feature?: import("@jbrowse/core/util").Feature): void;
|
|
228
|
+
setMouseoverExtraInformation(extra?: string): void;
|
|
214
229
|
} & {
|
|
215
230
|
reload(): Promise<void>;
|
|
216
231
|
} & {
|
|
@@ -306,10 +321,12 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
306
321
|
sortReady: boolean;
|
|
307
322
|
currSortBpPerPx: number;
|
|
308
323
|
visibleModifications: import("mobx").ObservableMap<string, ModificationTypeWithColor>;
|
|
324
|
+
simplexModifications: Set<string>;
|
|
309
325
|
modificationsReady: boolean;
|
|
310
326
|
} & {
|
|
311
327
|
setCurrSortBpPerPx(n: number): void;
|
|
312
328
|
updateVisibleModifications(uniqueModifications: ModificationType[]): void;
|
|
329
|
+
setSimplexModifications(simplex: string[]): void;
|
|
313
330
|
setModificationsReady(flag: boolean): void;
|
|
314
331
|
setSortReady(flag: boolean): void;
|
|
315
332
|
clearSelected(): void;
|
|
@@ -321,6 +338,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
321
338
|
reload(): void;
|
|
322
339
|
} & {
|
|
323
340
|
readonly visibleModificationTypes: string[];
|
|
341
|
+
readonly modificationThreshold: any;
|
|
324
342
|
readonly rendererConfig: {
|
|
325
343
|
[x: string]: any;
|
|
326
344
|
} & import("mobx-state-tree/dist/internal").NonEmptyObject & {
|
|
@@ -8,9 +8,11 @@ import WorkspacesIcon from '@mui/icons-material/Workspaces';
|
|
|
8
8
|
import { observable } from 'mobx';
|
|
9
9
|
import { types } from 'mobx-state-tree';
|
|
10
10
|
import { SharedLinearPileupDisplayMixin } from './SharedLinearPileupDisplayMixin';
|
|
11
|
-
import {
|
|
11
|
+
import { modificationData } from '../shared/modificationData';
|
|
12
|
+
import { getColorForModification } from '../util';
|
|
12
13
|
const SortByTagDialog = lazy(() => import('./components/SortByTagDialog'));
|
|
13
14
|
const GroupByDialog = lazy(() => import('./components/GroupByDialog'));
|
|
15
|
+
const SetModificationThresholdDialog = lazy(() => import('./components/SetModificationThresholdDialog'));
|
|
14
16
|
function stateModelFactory(configSchema) {
|
|
15
17
|
return types
|
|
16
18
|
.compose('LinearPileupDisplay', SharedLinearPileupDisplayMixin(configSchema), types.model({
|
|
@@ -24,6 +26,7 @@ function stateModelFactory(configSchema) {
|
|
|
24
26
|
sortReady: false,
|
|
25
27
|
currSortBpPerPx: 0,
|
|
26
28
|
visibleModifications: observable.map({}),
|
|
29
|
+
simplexModifications: new Set(),
|
|
27
30
|
modificationsReady: false,
|
|
28
31
|
}))
|
|
29
32
|
.actions(self => ({
|
|
@@ -40,6 +43,11 @@ function stateModelFactory(configSchema) {
|
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
45
|
},
|
|
46
|
+
setSimplexModifications(simplex) {
|
|
47
|
+
for (const entry of simplex) {
|
|
48
|
+
self.simplexModifications.add(entry);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
43
51
|
setModificationsReady(flag) {
|
|
44
52
|
self.modificationsReady = flag;
|
|
45
53
|
},
|
|
@@ -92,6 +100,10 @@ function stateModelFactory(configSchema) {
|
|
|
92
100
|
get visibleModificationTypes() {
|
|
93
101
|
return [...self.visibleModifications.keys()];
|
|
94
102
|
},
|
|
103
|
+
get modificationThreshold() {
|
|
104
|
+
var _a, _b, _c;
|
|
105
|
+
return (_c = (_b = (_a = self.colorBy) === null || _a === void 0 ? void 0 : _a.modifications) === null || _b === void 0 ? void 0 : _b.threshold) !== null && _c !== void 0 ? _c : 10;
|
|
106
|
+
},
|
|
95
107
|
get rendererConfig() {
|
|
96
108
|
const { featureHeight, noSpacing, trackMaxHeight, mismatchAlpha, rendererTypeName, hideSmallIndels, } = self;
|
|
97
109
|
const configBlob = getConf(self, ['renderers', rendererTypeName]) || {};
|
|
@@ -125,13 +137,14 @@ function stateModelFactory(configSchema) {
|
|
|
125
137
|
const { trackMenuItems: superTrackMenuItems, renderPropsPre: superRenderPropsPre, renderProps: superRenderProps, colorSchemeSubMenuItems: superColorSchemeSubMenuItems, } = self;
|
|
126
138
|
return {
|
|
127
139
|
renderPropsPre() {
|
|
128
|
-
const { sortedBy, showSoftClipping, visibleModifications } = self;
|
|
140
|
+
const { sortedBy, showSoftClipping, visibleModifications, simplexModifications, } = self;
|
|
129
141
|
const superProps = superRenderPropsPre();
|
|
130
142
|
return {
|
|
131
143
|
...superProps,
|
|
132
144
|
showSoftClip: showSoftClipping,
|
|
133
145
|
sortedBy,
|
|
134
146
|
visibleModifications: Object.fromEntries(visibleModifications.toJSON()),
|
|
147
|
+
simplexModifications: [...simplexModifications],
|
|
135
148
|
};
|
|
136
149
|
},
|
|
137
150
|
renderProps() {
|
|
@@ -194,22 +207,26 @@ function stateModelFactory(configSchema) {
|
|
|
194
207
|
subMenu: self.modificationsReady
|
|
195
208
|
? [
|
|
196
209
|
{
|
|
197
|
-
label:
|
|
210
|
+
label: `All modifications (>= ${self.modificationThreshold}% prob)`,
|
|
198
211
|
onClick: () => {
|
|
199
212
|
self.setColorScheme({
|
|
200
213
|
type: 'modifications',
|
|
214
|
+
modifications: {
|
|
215
|
+
threshold: self.modificationThreshold,
|
|
216
|
+
},
|
|
201
217
|
});
|
|
202
218
|
},
|
|
203
219
|
},
|
|
204
220
|
...self.visibleModificationTypes.map(key => {
|
|
205
221
|
var _a;
|
|
206
222
|
return ({
|
|
207
|
-
label: `Show only ${((_a = modificationData[key]) === null || _a === void 0 ? void 0 : _a.name) || key}`,
|
|
223
|
+
label: `Show only ${((_a = modificationData[key]) === null || _a === void 0 ? void 0 : _a.name) || key} (>= ${self.modificationThreshold}% prob)`,
|
|
208
224
|
onClick: () => {
|
|
209
225
|
self.setColorScheme({
|
|
210
226
|
type: 'modifications',
|
|
211
227
|
modifications: {
|
|
212
228
|
isolatedModification: key,
|
|
229
|
+
threshold: self.modificationThreshold,
|
|
213
230
|
},
|
|
214
231
|
});
|
|
215
232
|
},
|
|
@@ -223,6 +240,7 @@ function stateModelFactory(configSchema) {
|
|
|
223
240
|
type: 'modifications',
|
|
224
241
|
modifications: {
|
|
225
242
|
twoColor: true,
|
|
243
|
+
threshold: self.modificationThreshold,
|
|
226
244
|
},
|
|
227
245
|
});
|
|
228
246
|
},
|
|
@@ -237,6 +255,7 @@ function stateModelFactory(configSchema) {
|
|
|
237
255
|
modifications: {
|
|
238
256
|
isolatedModification: key,
|
|
239
257
|
twoColor: true,
|
|
258
|
+
threshold: self.modificationThreshold,
|
|
240
259
|
},
|
|
241
260
|
});
|
|
242
261
|
},
|
|
@@ -248,9 +267,25 @@ function stateModelFactory(configSchema) {
|
|
|
248
267
|
onClick: () => {
|
|
249
268
|
self.setColorScheme({
|
|
250
269
|
type: 'methylation',
|
|
270
|
+
modifications: {
|
|
271
|
+
threshold: self.modificationThreshold,
|
|
272
|
+
},
|
|
251
273
|
});
|
|
252
274
|
},
|
|
253
275
|
},
|
|
276
|
+
{ type: 'divider' },
|
|
277
|
+
{
|
|
278
|
+
label: `Adjust threshold (${self.modificationThreshold}%)`,
|
|
279
|
+
onClick: () => {
|
|
280
|
+
getSession(self).queueDialog(handleClose => [
|
|
281
|
+
SetModificationThresholdDialog,
|
|
282
|
+
{
|
|
283
|
+
model: self,
|
|
284
|
+
handleClose,
|
|
285
|
+
},
|
|
286
|
+
]);
|
|
287
|
+
},
|
|
288
|
+
},
|
|
254
289
|
]
|
|
255
290
|
: [
|
|
256
291
|
{
|
|
@@ -7,7 +7,7 @@ export default function register(pluginManager) {
|
|
|
7
7
|
const configSchema = configSchemaF(pluginManager);
|
|
8
8
|
return new DisplayType({
|
|
9
9
|
name: 'LinearReadArcsDisplay',
|
|
10
|
-
displayName: '
|
|
10
|
+
displayName: 'Read arc display',
|
|
11
11
|
configSchema,
|
|
12
12
|
stateModel: stateModelF(configSchema),
|
|
13
13
|
trackType: 'AlignmentsTrack',
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { ChainData } from '../shared/fetchChains';
|
|
3
|
-
import type { ColorBy, FilterBy } from '../shared/types';
|
|
4
2
|
import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
|
|
5
3
|
import type { Instance } from 'mobx-state-tree';
|
|
6
4
|
declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): import("mobx-state-tree").IModelType<{
|
|
@@ -12,13 +10,14 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
12
10
|
} & {
|
|
13
11
|
userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
14
12
|
userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
13
|
+
} & {
|
|
14
|
+
filterBySetting: import("mobx-state-tree").IType<import("../shared/types").FilterBy | undefined, import("../shared/types").FilterBy | undefined, import("../shared/types").FilterBy | undefined>;
|
|
15
|
+
colorBySetting: import("mobx-state-tree").IType<import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined>;
|
|
15
16
|
} & {
|
|
16
17
|
type: import("mobx-state-tree").ISimpleType<"LinearReadArcsDisplay">;
|
|
17
18
|
configuration: AnyConfigurationSchemaType;
|
|
18
19
|
lineWidth: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
19
20
|
jitter: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
20
|
-
colorBySetting: import("mobx-state-tree").IType<ColorBy | undefined, ColorBy | undefined, ColorBy | undefined>;
|
|
21
|
-
filterBySetting: import("mobx-state-tree").IType<FilterBy | undefined, FilterBy | undefined, FilterBy | undefined>;
|
|
22
21
|
drawInter: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
23
22
|
drawLongRange: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
24
23
|
}, {
|
|
@@ -115,43 +114,51 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
115
114
|
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react/jsx-runtime").JSX.Element | null;
|
|
116
115
|
} & {
|
|
117
116
|
loading: boolean;
|
|
118
|
-
chainData: ChainData | undefined;
|
|
117
|
+
chainData: import("../shared/fetchChains").ChainData | undefined;
|
|
119
118
|
lastDrawnOffsetPx: number | undefined;
|
|
120
119
|
lastDrawnBpPerPx: number;
|
|
121
120
|
ref: HTMLCanvasElement | null;
|
|
122
|
-
} & {
|
|
123
|
-
readonly colorBy: any;
|
|
124
|
-
readonly filterBy: any;
|
|
125
121
|
} & {
|
|
126
122
|
setLastDrawnOffsetPx(n: number): void;
|
|
127
123
|
setLastDrawnBpPerPx(n: number): void;
|
|
128
124
|
setLoading(f: boolean): void;
|
|
129
|
-
reload(): void;
|
|
130
125
|
setRef(ref: HTMLCanvasElement | null): void;
|
|
131
126
|
setColorScheme(colorBy: {
|
|
132
127
|
type: string;
|
|
133
128
|
}): void;
|
|
134
|
-
setChainData(args: ChainData): void;
|
|
129
|
+
setChainData(args: import("../shared/fetchChains").ChainData): void;
|
|
130
|
+
setFilterBy(filter: import("../shared/types").FilterBy): void;
|
|
131
|
+
} & {
|
|
132
|
+
readonly drawn: boolean;
|
|
133
|
+
} & {
|
|
134
|
+
readonly colorBy: any;
|
|
135
|
+
readonly filterBy: any;
|
|
136
|
+
} & {
|
|
137
|
+
reload(): void;
|
|
135
138
|
setDrawInter(f: boolean): void;
|
|
136
139
|
setDrawLongRange(f: boolean): void;
|
|
137
|
-
setFilterBy(filter: FilterBy): void;
|
|
138
140
|
setLineWidth(n: number): void;
|
|
139
141
|
setJitter(n: number): void;
|
|
140
142
|
} & {
|
|
141
|
-
readonly drawn: boolean;
|
|
142
143
|
readonly lineWidthSetting: any;
|
|
143
144
|
readonly jitterVal: number;
|
|
144
145
|
} & {
|
|
145
146
|
renderProps(): any;
|
|
146
147
|
trackMenuItems(): (import("@jbrowse/core/ui").MenuDivider | import("@jbrowse/core/ui").MenuSubHeader | import("@jbrowse/core/ui").NormalMenuItem | import("@jbrowse/core/ui").CheckboxMenuItem | import("@jbrowse/core/ui").RadioMenuItem | import("@jbrowse/core/ui").SubMenuItem | {
|
|
148
|
+
label: string;
|
|
149
|
+
icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
|
|
150
|
+
muiName: string;
|
|
151
|
+
};
|
|
152
|
+
subMenu: {
|
|
153
|
+
label: string;
|
|
154
|
+
onClick: () => void;
|
|
155
|
+
}[];
|
|
156
|
+
} | {
|
|
147
157
|
label: string;
|
|
148
158
|
icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
|
|
149
159
|
muiName: string;
|
|
150
160
|
};
|
|
151
161
|
onClick: () => void;
|
|
152
|
-
subMenu?: undefined;
|
|
153
|
-
type?: undefined;
|
|
154
|
-
checked?: undefined;
|
|
155
162
|
} | {
|
|
156
163
|
label: string;
|
|
157
164
|
subMenu: {
|
|
@@ -160,29 +167,15 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
160
167
|
label: string;
|
|
161
168
|
onClick: () => void;
|
|
162
169
|
}[];
|
|
163
|
-
icon?: undefined;
|
|
164
|
-
onClick?: undefined;
|
|
165
170
|
type?: undefined;
|
|
166
171
|
checked?: undefined;
|
|
172
|
+
onClick?: undefined;
|
|
167
173
|
} | {
|
|
168
174
|
label: string;
|
|
169
175
|
type: string;
|
|
170
176
|
checked: boolean;
|
|
171
177
|
onClick: () => void;
|
|
172
|
-
icon?: undefined;
|
|
173
178
|
subMenu?: undefined;
|
|
174
|
-
} | {
|
|
175
|
-
label: string;
|
|
176
|
-
icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
|
|
177
|
-
muiName: string;
|
|
178
|
-
};
|
|
179
|
-
subMenu: {
|
|
180
|
-
label: string;
|
|
181
|
-
onClick: () => void;
|
|
182
|
-
}[];
|
|
183
|
-
onClick?: undefined;
|
|
184
|
-
type?: undefined;
|
|
185
|
-
checked?: undefined;
|
|
186
179
|
})[];
|
|
187
180
|
} & {
|
|
188
181
|
renderSvg(opts: {
|