@jbrowse/plugin-alignments 2.1.7 → 2.2.1
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/AlignmentsFeatureDetail.js +12 -13
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
- package/dist/AlignmentsTrack/index.d.ts +1 -1
- package/dist/AlignmentsTrack/index.js +16 -6
- package/dist/AlignmentsTrack/index.js.map +1 -1
- package/dist/BamAdapter/BamAdapter.d.ts +7 -3
- package/dist/BamAdapter/BamAdapter.js +36 -31
- package/dist/BamAdapter/BamAdapter.js.map +1 -1
- package/dist/BamAdapter/BamSlightlyLazyFeature.js +1 -0
- package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
- package/dist/BamAdapter/MismatchParser.d.ts +2 -2
- package/dist/BamAdapter/MismatchParser.js +4 -7
- package/dist/BamAdapter/MismatchParser.js.map +1 -1
- package/dist/BamAdapter/configSchema.d.ts +2 -2
- package/dist/BamAdapter/configSchema.js +27 -2
- package/dist/BamAdapter/configSchema.js.map +1 -1
- package/dist/BamAdapter/index.js +7 -5
- package/dist/BamAdapter/index.js.map +1 -1
- package/dist/CramAdapter/CramAdapter.d.ts +13 -7
- package/dist/CramAdapter/CramAdapter.js +56 -61
- package/dist/CramAdapter/CramAdapter.js.map +1 -1
- package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +15 -23
- package/dist/CramAdapter/CramSlightlyLazyFeature.js +10 -217
- package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
- package/dist/CramAdapter/CramTestAdapters.d.ts +1 -1
- package/dist/CramAdapter/CramTestAdapters.js +1 -1
- package/dist/CramAdapter/CramTestAdapters.js.map +1 -1
- package/dist/CramAdapter/configSchema.d.ts +2 -3
- package/dist/CramAdapter/configSchema.js +44 -22
- package/dist/CramAdapter/configSchema.js.map +1 -1
- package/dist/CramAdapter/index.js +7 -5
- package/dist/CramAdapter/index.js.map +1 -1
- package/dist/CramAdapter/util.d.ts +18 -0
- package/dist/CramAdapter/util.js +241 -0
- package/dist/CramAdapter/util.js.map +1 -0
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +5 -2
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +15 -20
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -1
- package/dist/HtsgetBamAdapter/configSchema.d.ts +2 -2
- package/dist/HtsgetBamAdapter/configSchema.js +20 -3
- package/dist/HtsgetBamAdapter/configSchema.js.map +1 -1
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +1 -1
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
- package/dist/LinearAlignmentsDisplay/models/configSchema.d.ts +2 -2
- package/dist/LinearAlignmentsDisplay/models/configSchema.js +23 -6
- package/dist/LinearAlignmentsDisplay/models/configSchema.js.map +1 -1
- package/dist/LinearAlignmentsDisplay/models/model.d.ts +77 -10
- package/dist/LinearAlignmentsDisplay/models/model.js +102 -9
- package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -1
- package/dist/LinearPileupDisplay/configSchema.d.ts +4 -4
- package/dist/LinearPileupDisplay/configSchema.js +22 -5
- package/dist/LinearPileupDisplay/configSchema.js.map +1 -1
- package/dist/LinearPileupDisplay/index.d.ts +3 -0
- package/dist/LinearPileupDisplay/index.js +3 -0
- package/dist/LinearPileupDisplay/index.js.map +1 -1
- package/dist/LinearPileupDisplay/model.d.ts +100 -6
- package/dist/LinearPileupDisplay/model.js +611 -503
- package/dist/LinearPileupDisplay/model.js.map +1 -1
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
- package/dist/LinearSNPCoverageDisplay/models/configSchema.js +33 -4
- package/dist/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -1
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +87 -4
- package/dist/LinearSNPCoverageDisplay/models/model.js +240 -159
- package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -1
- package/dist/PileupRPC/rpcMethods.d.ts +1 -1
- package/dist/PileupRPC/rpcMethods.js +12 -7
- package/dist/PileupRPC/rpcMethods.js.map +1 -1
- package/dist/PileupRenderer/PileupLayoutSession.d.ts +1 -1
- package/dist/PileupRenderer/PileupRenderer.d.ts +1 -1
- package/dist/PileupRenderer/PileupRenderer.js +37 -34
- package/dist/PileupRenderer/PileupRenderer.js.map +1 -1
- package/dist/PileupRenderer/configSchema.d.ts +2 -2
- package/dist/PileupRenderer/configSchema.js +37 -2
- package/dist/PileupRenderer/configSchema.js.map +1 -1
- package/dist/PileupRenderer/index.js +8 -6
- package/dist/PileupRenderer/index.js.map +1 -1
- package/dist/SNPCoverageAdapter/configSchema.d.ts +2 -3
- package/dist/SNPCoverageAdapter/configSchema.js +15 -4
- package/dist/SNPCoverageAdapter/configSchema.js.map +1 -1
- package/dist/SNPCoverageAdapter/index.d.ts +1 -2
- package/dist/SNPCoverageAdapter/index.js +17 -14
- package/dist/SNPCoverageAdapter/index.js.map +1 -1
- package/dist/SNPCoverageRenderer/configSchema.d.ts +2 -2
- package/dist/SNPCoverageRenderer/configSchema.js +21 -1
- package/dist/SNPCoverageRenderer/configSchema.js.map +1 -1
- package/dist/SNPCoverageRenderer/index.d.ts +0 -1
- package/dist/SNPCoverageRenderer/index.js +1 -4
- package/dist/SNPCoverageRenderer/index.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +12 -13
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
- package/esm/AlignmentsTrack/index.d.ts +1 -1
- package/esm/AlignmentsTrack/index.js +16 -6
- package/esm/AlignmentsTrack/index.js.map +1 -1
- package/esm/BamAdapter/BamAdapter.d.ts +7 -3
- package/esm/BamAdapter/BamAdapter.js +36 -31
- package/esm/BamAdapter/BamAdapter.js.map +1 -1
- package/esm/BamAdapter/BamSlightlyLazyFeature.js +1 -0
- package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
- package/esm/BamAdapter/MismatchParser.d.ts +2 -2
- package/esm/BamAdapter/MismatchParser.js +4 -7
- package/esm/BamAdapter/MismatchParser.js.map +1 -1
- package/esm/BamAdapter/configSchema.d.ts +2 -2
- package/esm/BamAdapter/configSchema.js +27 -2
- package/esm/BamAdapter/configSchema.js.map +1 -1
- package/esm/BamAdapter/index.js +7 -5
- package/esm/BamAdapter/index.js.map +1 -1
- package/esm/CramAdapter/CramAdapter.d.ts +13 -7
- package/esm/CramAdapter/CramAdapter.js +56 -61
- package/esm/CramAdapter/CramAdapter.js.map +1 -1
- package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +15 -23
- package/esm/CramAdapter/CramSlightlyLazyFeature.js +10 -217
- package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
- package/esm/CramAdapter/CramTestAdapters.d.ts +1 -1
- package/esm/CramAdapter/CramTestAdapters.js +1 -1
- package/esm/CramAdapter/CramTestAdapters.js.map +1 -1
- package/esm/CramAdapter/configSchema.d.ts +2 -3
- package/esm/CramAdapter/configSchema.js +44 -22
- package/esm/CramAdapter/configSchema.js.map +1 -1
- package/esm/CramAdapter/index.js +8 -6
- package/esm/CramAdapter/index.js.map +1 -1
- package/esm/CramAdapter/util.d.ts +18 -0
- package/esm/CramAdapter/util.js +236 -0
- package/esm/CramAdapter/util.js.map +1 -0
- package/esm/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +5 -2
- package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js +15 -20
- package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -1
- package/esm/HtsgetBamAdapter/configSchema.d.ts +2 -2
- package/esm/HtsgetBamAdapter/configSchema.js +20 -3
- package/esm/HtsgetBamAdapter/configSchema.js.map +1 -1
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +1 -1
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
- package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +2 -2
- package/esm/LinearAlignmentsDisplay/models/configSchema.js +23 -6
- package/esm/LinearAlignmentsDisplay/models/configSchema.js.map +1 -1
- package/esm/LinearAlignmentsDisplay/models/model.d.ts +77 -10
- package/esm/LinearAlignmentsDisplay/models/model.js +102 -9
- package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -1
- package/esm/LinearPileupDisplay/configSchema.d.ts +4 -4
- package/esm/LinearPileupDisplay/configSchema.js +22 -5
- package/esm/LinearPileupDisplay/configSchema.js.map +1 -1
- package/esm/LinearPileupDisplay/index.d.ts +3 -0
- package/esm/LinearPileupDisplay/index.js +1 -0
- package/esm/LinearPileupDisplay/index.js.map +1 -1
- package/esm/LinearPileupDisplay/model.d.ts +100 -6
- package/esm/LinearPileupDisplay/model.js +611 -503
- package/esm/LinearPileupDisplay/model.js.map +1 -1
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
- package/esm/LinearSNPCoverageDisplay/models/configSchema.js +33 -4
- package/esm/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -1
- package/esm/LinearSNPCoverageDisplay/models/model.d.ts +87 -4
- package/esm/LinearSNPCoverageDisplay/models/model.js +240 -159
- package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -1
- package/esm/PileupRPC/rpcMethods.d.ts +1 -1
- package/esm/PileupRPC/rpcMethods.js +12 -7
- package/esm/PileupRPC/rpcMethods.js.map +1 -1
- package/esm/PileupRenderer/PileupLayoutSession.d.ts +1 -1
- package/esm/PileupRenderer/PileupRenderer.d.ts +1 -1
- package/esm/PileupRenderer/PileupRenderer.js +37 -34
- package/esm/PileupRenderer/PileupRenderer.js.map +1 -1
- package/esm/PileupRenderer/configSchema.d.ts +2 -2
- package/esm/PileupRenderer/configSchema.js +37 -2
- package/esm/PileupRenderer/configSchema.js.map +1 -1
- package/esm/PileupRenderer/index.js +8 -6
- package/esm/PileupRenderer/index.js.map +1 -1
- package/esm/SNPCoverageAdapter/configSchema.d.ts +2 -3
- package/esm/SNPCoverageAdapter/configSchema.js +15 -4
- package/esm/SNPCoverageAdapter/configSchema.js.map +1 -1
- package/esm/SNPCoverageAdapter/index.d.ts +1 -2
- package/esm/SNPCoverageAdapter/index.js +17 -15
- package/esm/SNPCoverageAdapter/index.js.map +1 -1
- package/esm/SNPCoverageRenderer/configSchema.d.ts +2 -2
- package/esm/SNPCoverageRenderer/configSchema.js +21 -1
- package/esm/SNPCoverageRenderer/configSchema.js.map +1 -1
- package/esm/SNPCoverageRenderer/index.d.ts +0 -1
- package/esm/SNPCoverageRenderer/index.js +1 -3
- package/esm/SNPCoverageRenderer/index.js.map +1 -1
- package/esm/index.d.ts +3 -2
- package/esm/index.js +2 -2
- package/esm/index.js.map +1 -1
- package/package.json +4 -3
- package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +17 -16
- package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +41 -513
- package/src/AlignmentsFeatureDetail/index.test.js +6 -4
- package/src/AlignmentsTrack/index.ts +18 -12
- package/src/BamAdapter/BamAdapter.ts +42 -41
- package/src/BamAdapter/BamSlightlyLazyFeature.ts +2 -1
- package/src/BamAdapter/MismatchParser.test.ts +21 -12
- package/src/BamAdapter/MismatchParser.ts +7 -10
- package/src/BamAdapter/__snapshots__/BamAdapter.test.ts.snap +135 -135
- package/src/BamAdapter/configSchema.ts +57 -29
- package/src/BamAdapter/index.ts +7 -8
- package/src/CombinationTest.test.ts +107 -0
- package/src/CramAdapter/CramAdapter.test.ts +1 -2
- package/src/CramAdapter/CramAdapter.ts +83 -84
- package/src/CramAdapter/CramSlightlyLazyFeature.ts +18 -218
- package/src/CramAdapter/CramTestAdapters.ts +1 -1
- package/src/CramAdapter/__snapshots__/CramAdapter.test.ts.snap +31 -31
- package/src/CramAdapter/__snapshots__/util.test.ts.snap +14 -0
- package/src/CramAdapter/configSchema.ts +54 -30
- package/src/CramAdapter/index.ts +8 -9
- package/src/CramAdapter/util.test.ts +26 -0
- package/src/CramAdapter/util.ts +251 -0
- package/src/HtsgetBamAdapter/HtsgetBamAdapter.ts +14 -21
- package/src/HtsgetBamAdapter/configSchema.ts +36 -19
- package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +3 -1
- package/src/LinearAlignmentsDisplay/models/configSchema.ts +23 -10
- package/src/LinearAlignmentsDisplay/models/model.tsx +107 -11
- package/src/LinearPileupDisplay/configSchema.ts +25 -9
- package/src/LinearPileupDisplay/index.ts +5 -0
- package/src/LinearPileupDisplay/model.ts +151 -34
- package/src/LinearSNPCoverageDisplay/models/configSchema.ts +36 -9
- package/src/LinearSNPCoverageDisplay/models/model.ts +83 -4
- package/src/PileupRPC/rpcMethods.ts +15 -20
- package/src/PileupRenderer/{PileupRenderer.tsx → PileupRenderer.ts} +53 -63
- package/src/PileupRenderer/configSchema.ts +39 -2
- package/src/PileupRenderer/index.ts +8 -9
- package/src/SNPCoverageAdapter/configSchema.ts +21 -12
- package/src/SNPCoverageAdapter/index.ts +17 -18
- package/src/SNPCoverageRenderer/configSchema.ts +23 -1
- package/src/SNPCoverageRenderer/index.ts +1 -8
- package/src/__snapshots__/index.test.ts.snap +1 -1
- package/src/index.ts +11 -4
- package/src/declare.d.ts +0 -1
|
@@ -3,28 +3,43 @@ import { linearBasicDisplayConfigSchemaFactory } from '@jbrowse/plugin-linear-ge
|
|
|
3
3
|
import { types, Instance } from 'mobx-state-tree'
|
|
4
4
|
import PluginManager from '@jbrowse/core/PluginManager'
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
/**
|
|
7
|
+
* #config LinearPileupDisplay
|
|
8
|
+
*/
|
|
9
|
+
function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
9
10
|
|
|
11
|
+
function configSchemaF(pluginManager: PluginManager) {
|
|
10
12
|
// modify config schema to take in a sub coverage display
|
|
11
13
|
return ConfigurationSchema(
|
|
12
14
|
'LinearPileupDisplay',
|
|
13
15
|
{
|
|
16
|
+
/**
|
|
17
|
+
* #slot
|
|
18
|
+
*/
|
|
14
19
|
defaultRendering: {
|
|
15
20
|
type: 'stringEnum',
|
|
16
21
|
model: types.enumeration('Rendering', ['pileup']),
|
|
17
22
|
defaultValue: 'pileup',
|
|
18
23
|
},
|
|
24
|
+
/**
|
|
25
|
+
* #slot
|
|
26
|
+
*/
|
|
19
27
|
renderers: ConfigurationSchema('RenderersConfiguration', {
|
|
20
|
-
PileupRenderer:
|
|
28
|
+
PileupRenderer:
|
|
29
|
+
pluginManager.getRendererType('PileupRenderer').configSchema,
|
|
21
30
|
}),
|
|
22
|
-
|
|
31
|
+
/**
|
|
32
|
+
* #slot
|
|
33
|
+
*/
|
|
23
34
|
maxFeatureScreenDensity: {
|
|
24
35
|
type: 'number',
|
|
25
36
|
description: 'maximum features per pixel that is displayed in the view',
|
|
26
37
|
defaultValue: 5,
|
|
27
38
|
},
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* #slot
|
|
42
|
+
*/
|
|
28
43
|
colorScheme: {
|
|
29
44
|
type: 'stringEnum',
|
|
30
45
|
model: types.enumeration('colorScheme', [
|
|
@@ -40,14 +55,15 @@ function PileupConfigFactory(pluginManager: PluginManager) {
|
|
|
40
55
|
},
|
|
41
56
|
},
|
|
42
57
|
{
|
|
58
|
+
/**
|
|
59
|
+
* #baseConfiguration
|
|
60
|
+
*/
|
|
43
61
|
baseConfiguration: linearBasicDisplayConfigSchemaFactory(pluginManager),
|
|
44
62
|
explicitlyTyped: true,
|
|
45
63
|
},
|
|
46
64
|
)
|
|
47
65
|
}
|
|
48
66
|
|
|
49
|
-
export type LinearPileupDisplayConfigModel = ReturnType<
|
|
50
|
-
typeof PileupConfigFactory
|
|
51
|
-
>
|
|
67
|
+
export type LinearPileupDisplayConfigModel = ReturnType<typeof configSchemaF>
|
|
52
68
|
export type LinearPileupDisplayConfig = Instance<LinearPileupDisplayConfigModel>
|
|
53
|
-
export default
|
|
69
|
+
export default configSchemaF
|
|
@@ -53,20 +53,51 @@ const rendererTypes = new Map([
|
|
|
53
53
|
|
|
54
54
|
type LGV = LinearGenomeViewModel
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
/**
|
|
57
|
+
* #stateModel LinearPileupDisplay
|
|
58
|
+
* extends `BaseLinearDisplay`
|
|
59
|
+
*/
|
|
60
|
+
function stateModelFactory(configSchema: LinearPileupDisplayConfigModel) {
|
|
61
|
+
return types
|
|
58
62
|
.compose(
|
|
59
63
|
'LinearPileupDisplay',
|
|
60
64
|
BaseLinearDisplay,
|
|
61
65
|
types.model({
|
|
66
|
+
/**
|
|
67
|
+
* #property
|
|
68
|
+
*/
|
|
62
69
|
type: types.literal('LinearPileupDisplay'),
|
|
70
|
+
/**
|
|
71
|
+
* #property
|
|
72
|
+
*/
|
|
63
73
|
configuration: ConfigurationReference(configSchema),
|
|
74
|
+
/**
|
|
75
|
+
* #property
|
|
76
|
+
*/
|
|
64
77
|
showSoftClipping: false,
|
|
78
|
+
/**
|
|
79
|
+
* #property
|
|
80
|
+
*/
|
|
65
81
|
featureHeight: types.maybe(types.number),
|
|
82
|
+
/**
|
|
83
|
+
* #property
|
|
84
|
+
*/
|
|
66
85
|
noSpacing: types.maybe(types.boolean),
|
|
86
|
+
/**
|
|
87
|
+
* #property
|
|
88
|
+
*/
|
|
67
89
|
fadeLikelihood: types.maybe(types.boolean),
|
|
90
|
+
/**
|
|
91
|
+
* #property
|
|
92
|
+
*/
|
|
68
93
|
trackMaxHeight: types.maybe(types.number),
|
|
94
|
+
/**
|
|
95
|
+
* #property
|
|
96
|
+
*/
|
|
69
97
|
mismatchAlpha: types.maybe(types.boolean),
|
|
98
|
+
/**
|
|
99
|
+
* #property
|
|
100
|
+
*/
|
|
70
101
|
sortedBy: types.maybe(
|
|
71
102
|
types.model({
|
|
72
103
|
type: types.string,
|
|
@@ -76,6 +107,10 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
76
107
|
assemblyName: types.string,
|
|
77
108
|
}),
|
|
78
109
|
),
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* #property
|
|
113
|
+
*/
|
|
79
114
|
colorBy: types.maybe(
|
|
80
115
|
types.model({
|
|
81
116
|
type: types.string,
|
|
@@ -83,6 +118,10 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
83
118
|
extra: types.frozen(),
|
|
84
119
|
}),
|
|
85
120
|
),
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* #property
|
|
124
|
+
*/
|
|
86
125
|
filterBy: types.optional(
|
|
87
126
|
types.model({
|
|
88
127
|
flagInclude: types.optional(types.number, 0),
|
|
@@ -100,28 +139,53 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
100
139
|
colorTagMap: observable.map<string, string>({}),
|
|
101
140
|
modificationTagMap: observable.map<string, string>({}),
|
|
102
141
|
featureUnderMouseVolatile: undefined as undefined | Feature,
|
|
142
|
+
currSortBpPerPx: 0,
|
|
103
143
|
ready: false,
|
|
104
144
|
}))
|
|
105
145
|
.actions(self => ({
|
|
146
|
+
/**
|
|
147
|
+
* #action
|
|
148
|
+
*/
|
|
106
149
|
setReady(flag: boolean) {
|
|
107
150
|
self.ready = flag
|
|
108
151
|
},
|
|
152
|
+
/**
|
|
153
|
+
* #action
|
|
154
|
+
*/
|
|
155
|
+
setCurrSortBpPerPx(n: number) {
|
|
156
|
+
self.currSortBpPerPx = n
|
|
157
|
+
},
|
|
158
|
+
/**
|
|
159
|
+
* #action
|
|
160
|
+
*/
|
|
109
161
|
setMaxHeight(n: number) {
|
|
110
162
|
self.trackMaxHeight = n
|
|
111
163
|
},
|
|
164
|
+
/**
|
|
165
|
+
* #action
|
|
166
|
+
*/
|
|
112
167
|
setFeatureHeight(n: number) {
|
|
113
168
|
self.featureHeight = n
|
|
114
169
|
},
|
|
170
|
+
/**
|
|
171
|
+
* #action
|
|
172
|
+
*/
|
|
115
173
|
setNoSpacing(flag: boolean) {
|
|
116
174
|
self.noSpacing = flag
|
|
117
175
|
},
|
|
118
176
|
|
|
177
|
+
/**
|
|
178
|
+
* #action
|
|
179
|
+
*/
|
|
119
180
|
setColorScheme(colorScheme: { type: string; tag?: string }) {
|
|
120
181
|
self.colorTagMap = observable.map({}) // clear existing mapping
|
|
121
182
|
self.colorBy = cast(colorScheme)
|
|
122
183
|
self.ready = false
|
|
123
184
|
},
|
|
124
185
|
|
|
186
|
+
/**
|
|
187
|
+
* #action
|
|
188
|
+
*/
|
|
125
189
|
updateModificationColorMap(uniqueModifications: string[]) {
|
|
126
190
|
const colorPalette = ['red', 'blue', 'green', 'orange', 'purple']
|
|
127
191
|
uniqueModifications.forEach(value => {
|
|
@@ -133,6 +197,9 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
133
197
|
})
|
|
134
198
|
},
|
|
135
199
|
|
|
200
|
+
/**
|
|
201
|
+
* #action
|
|
202
|
+
*/
|
|
136
203
|
updateColorTagMap(uniqueTag: string[]) {
|
|
137
204
|
// pale color scheme
|
|
138
205
|
// https://cran.r-project.org/web/packages/khroma/vignettes/tol.html
|
|
@@ -158,6 +225,9 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
158
225
|
}
|
|
159
226
|
})
|
|
160
227
|
},
|
|
228
|
+
/**
|
|
229
|
+
* #action
|
|
230
|
+
*/
|
|
161
231
|
setFeatureUnderMouse(feat?: Feature) {
|
|
162
232
|
self.featureUnderMouseVolatile = feat
|
|
163
233
|
},
|
|
@@ -230,7 +300,7 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
230
300
|
...self.renderProps(),
|
|
231
301
|
})
|
|
232
302
|
self.setReady(true)
|
|
233
|
-
self.
|
|
303
|
+
self.setCurrSortBpPerPx(bpPerPx)
|
|
234
304
|
} else {
|
|
235
305
|
self.setReady(true)
|
|
236
306
|
}
|
|
@@ -244,6 +314,8 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
244
314
|
)
|
|
245
315
|
|
|
246
316
|
// autorun synchronizes featureUnderMouse with featureIdUnderMouse
|
|
317
|
+
// asynchronously. this is needed due to how we do not serialize all
|
|
318
|
+
// features from the BAM/CRAM over the rpc
|
|
247
319
|
addDisposer(
|
|
248
320
|
self,
|
|
249
321
|
autorun(async () => {
|
|
@@ -285,6 +357,10 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
285
357
|
}),
|
|
286
358
|
)
|
|
287
359
|
},
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* #action
|
|
363
|
+
*/
|
|
288
364
|
selectFeature(feature: Feature) {
|
|
289
365
|
const session = getSession(self)
|
|
290
366
|
if (isSessionModelWithWidgets(session)) {
|
|
@@ -298,11 +374,17 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
298
374
|
session.setSelection(feature)
|
|
299
375
|
},
|
|
300
376
|
|
|
377
|
+
/**
|
|
378
|
+
* #action
|
|
379
|
+
*/
|
|
301
380
|
clearSelected() {
|
|
302
381
|
self.sortedBy = undefined
|
|
303
382
|
},
|
|
304
383
|
|
|
305
|
-
|
|
384
|
+
/**
|
|
385
|
+
* #action
|
|
386
|
+
* uses copy-to-clipboard and generates notification
|
|
387
|
+
*/
|
|
306
388
|
copyFeatureToClipboard(feature: Feature) {
|
|
307
389
|
const { uniqueId, ...rest } = feature.toJSON()
|
|
308
390
|
const session = getSession(self)
|
|
@@ -310,17 +392,30 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
310
392
|
session.notify('Copied to clipboard', 'success')
|
|
311
393
|
},
|
|
312
394
|
|
|
395
|
+
/**
|
|
396
|
+
* #action
|
|
397
|
+
*/
|
|
313
398
|
toggleSoftClipping() {
|
|
314
399
|
self.showSoftClipping = !self.showSoftClipping
|
|
315
400
|
},
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* #action
|
|
404
|
+
*/
|
|
316
405
|
toggleMismatchAlpha() {
|
|
317
406
|
self.mismatchAlpha = !self.mismatchAlpha
|
|
318
407
|
},
|
|
319
408
|
|
|
409
|
+
/**
|
|
410
|
+
* #action
|
|
411
|
+
*/
|
|
320
412
|
setConfig(configuration: AnyConfigurationModel) {
|
|
321
413
|
self.configuration = configuration
|
|
322
414
|
},
|
|
323
415
|
|
|
416
|
+
/**
|
|
417
|
+
* #action
|
|
418
|
+
*/
|
|
324
419
|
setSortedBy(type: string, tag?: string) {
|
|
325
420
|
const { centerLineInfo } = getContainingView(self) as LGV
|
|
326
421
|
if (!centerLineInfo) {
|
|
@@ -356,6 +451,9 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
356
451
|
const superReload = self.reload
|
|
357
452
|
|
|
358
453
|
return {
|
|
454
|
+
/**
|
|
455
|
+
* #action
|
|
456
|
+
*/
|
|
359
457
|
reload() {
|
|
360
458
|
self.clearSelected()
|
|
361
459
|
superReload()
|
|
@@ -364,12 +462,19 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
364
462
|
})
|
|
365
463
|
|
|
366
464
|
.views(self => ({
|
|
465
|
+
/**
|
|
466
|
+
* #getter
|
|
467
|
+
*/
|
|
367
468
|
get maxHeight() {
|
|
368
469
|
const conf = getConf(self, ['renderers', self.rendererTypeName]) || {}
|
|
369
470
|
return self.trackMaxHeight !== undefined
|
|
370
471
|
? self.trackMaxHeight
|
|
371
472
|
: conf.maxHeight
|
|
372
473
|
},
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* #getter
|
|
477
|
+
*/
|
|
373
478
|
get rendererConfig() {
|
|
374
479
|
const configBlob =
|
|
375
480
|
getConf(self, ['renderers', self.rendererTypeName]) || {}
|
|
@@ -384,16 +489,26 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
384
489
|
getEnv(self),
|
|
385
490
|
)
|
|
386
491
|
},
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* #getter
|
|
495
|
+
*/
|
|
387
496
|
get featureHeightSetting() {
|
|
388
497
|
return (
|
|
389
498
|
self.featureHeight || readConfObject(this.rendererConfig, 'height')
|
|
390
499
|
)
|
|
391
500
|
},
|
|
501
|
+
/**
|
|
502
|
+
* #getter
|
|
503
|
+
*/
|
|
392
504
|
get mismatchAlphaSetting() {
|
|
393
505
|
return self.mismatchAlpha !== undefined
|
|
394
506
|
? self.mismatchAlpha
|
|
395
507
|
: readConfObject(this.rendererConfig, 'mismatchAlpha')
|
|
396
508
|
},
|
|
509
|
+
/**
|
|
510
|
+
* #getter
|
|
511
|
+
*/
|
|
397
512
|
get featureUnderMouse() {
|
|
398
513
|
return self.featureUnderMouseVolatile
|
|
399
514
|
},
|
|
@@ -405,6 +520,9 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
405
520
|
} = self
|
|
406
521
|
|
|
407
522
|
return {
|
|
523
|
+
/**
|
|
524
|
+
* #getter
|
|
525
|
+
*/
|
|
408
526
|
get rendererTypeName() {
|
|
409
527
|
const viewName = getConf(self, 'defaultRendering')
|
|
410
528
|
const rendererType = rendererTypes.get(viewName)
|
|
@@ -414,6 +532,9 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
414
532
|
return rendererType
|
|
415
533
|
},
|
|
416
534
|
|
|
535
|
+
/**
|
|
536
|
+
* #method
|
|
537
|
+
*/
|
|
417
538
|
contextMenuItems() {
|
|
418
539
|
const feat = self.contextMenuFeature
|
|
419
540
|
const contextMenuItems = feat
|
|
@@ -442,10 +563,15 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
442
563
|
return contextMenuItems
|
|
443
564
|
},
|
|
444
565
|
|
|
566
|
+
/**
|
|
567
|
+
* #getter
|
|
568
|
+
*/
|
|
445
569
|
get DisplayBlurb() {
|
|
446
570
|
return LinearPileupDisplayBlurb
|
|
447
571
|
},
|
|
448
|
-
|
|
572
|
+
/**
|
|
573
|
+
* #method
|
|
574
|
+
*/
|
|
449
575
|
renderProps() {
|
|
450
576
|
const view = getContainingView(self) as LGV
|
|
451
577
|
const {
|
|
@@ -455,7 +581,7 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
455
581
|
colorBy,
|
|
456
582
|
filterBy,
|
|
457
583
|
rpcDriverName,
|
|
458
|
-
|
|
584
|
+
currSortBpPerPx,
|
|
459
585
|
ready,
|
|
460
586
|
} = self
|
|
461
587
|
|
|
@@ -466,7 +592,7 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
466
592
|
notReady:
|
|
467
593
|
superProps.notReady ||
|
|
468
594
|
!ready ||
|
|
469
|
-
(sortedBy &&
|
|
595
|
+
(sortedBy && currSortBpPerPx !== view.bpPerPx),
|
|
470
596
|
rpcDriverName,
|
|
471
597
|
displayModel: self,
|
|
472
598
|
sortedBy,
|
|
@@ -543,6 +669,9 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
543
669
|
}
|
|
544
670
|
},
|
|
545
671
|
|
|
672
|
+
/**
|
|
673
|
+
* #method
|
|
674
|
+
*/
|
|
546
675
|
trackMenuItems() {
|
|
547
676
|
return [
|
|
548
677
|
...superTrackMenuItems(),
|
|
@@ -592,39 +721,31 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
592
721
|
subMenu: [
|
|
593
722
|
{
|
|
594
723
|
label: 'Normal',
|
|
595
|
-
onClick: () => {
|
|
596
|
-
self.setColorScheme({ type: 'normal' })
|
|
597
|
-
},
|
|
724
|
+
onClick: () => self.setColorScheme({ type: 'normal' }),
|
|
598
725
|
},
|
|
599
726
|
{
|
|
600
727
|
label: 'Mapping quality',
|
|
601
|
-
onClick: () =>
|
|
602
|
-
self.setColorScheme({ type: 'mappingQuality' })
|
|
603
|
-
},
|
|
728
|
+
onClick: () =>
|
|
729
|
+
self.setColorScheme({ type: 'mappingQuality' }),
|
|
604
730
|
},
|
|
605
731
|
{
|
|
606
732
|
label: 'Strand',
|
|
607
|
-
onClick: () => {
|
|
608
|
-
self.setColorScheme({ type: 'strand' })
|
|
609
|
-
},
|
|
733
|
+
onClick: () => self.setColorScheme({ type: 'strand' }),
|
|
610
734
|
},
|
|
611
735
|
{
|
|
612
736
|
label: 'Pair orientation',
|
|
613
|
-
onClick: () =>
|
|
614
|
-
self.setColorScheme({ type: 'pairOrientation' })
|
|
615
|
-
},
|
|
737
|
+
onClick: () =>
|
|
738
|
+
self.setColorScheme({ type: 'pairOrientation' }),
|
|
616
739
|
},
|
|
617
740
|
{
|
|
618
741
|
label: 'Per-base quality',
|
|
619
|
-
onClick: () =>
|
|
620
|
-
self.setColorScheme({ type: 'perBaseQuality' })
|
|
621
|
-
},
|
|
742
|
+
onClick: () =>
|
|
743
|
+
self.setColorScheme({ type: 'perBaseQuality' }),
|
|
622
744
|
},
|
|
623
745
|
{
|
|
624
746
|
label: 'Per-base lettering',
|
|
625
|
-
onClick: () =>
|
|
626
|
-
self.setColorScheme({ type: 'perBaseLettering' })
|
|
627
|
-
},
|
|
747
|
+
onClick: () =>
|
|
748
|
+
self.setColorScheme({ type: 'perBaseLettering' }),
|
|
628
749
|
},
|
|
629
750
|
{
|
|
630
751
|
label: 'Modifications or methylation',
|
|
@@ -637,15 +758,12 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
637
758
|
},
|
|
638
759
|
{
|
|
639
760
|
label: 'Insert size',
|
|
640
|
-
onClick: () => {
|
|
641
|
-
self.setColorScheme({ type: 'insertSize' })
|
|
642
|
-
},
|
|
761
|
+
onClick: () => self.setColorScheme({ type: 'insertSize' }),
|
|
643
762
|
},
|
|
644
763
|
{
|
|
645
764
|
label: 'Stranded paired-end',
|
|
646
|
-
onClick: () =>
|
|
647
|
-
self.setColorScheme({ type: 'reverseTemplate' })
|
|
648
|
-
},
|
|
765
|
+
onClick: () =>
|
|
766
|
+
self.setColorScheme({ type: 'reverseTemplate' }),
|
|
649
767
|
},
|
|
650
768
|
{
|
|
651
769
|
label: 'Color by tag...',
|
|
@@ -690,14 +808,13 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
|
|
|
690
808
|
label: 'Fade mismatches by quality',
|
|
691
809
|
type: 'checkbox',
|
|
692
810
|
checked: self.mismatchAlphaSetting,
|
|
693
|
-
onClick: () =>
|
|
694
|
-
self.toggleMismatchAlpha()
|
|
695
|
-
},
|
|
811
|
+
onClick: () => self.toggleMismatchAlpha(),
|
|
696
812
|
},
|
|
697
813
|
]
|
|
698
814
|
},
|
|
699
815
|
}
|
|
700
816
|
})
|
|
817
|
+
}
|
|
701
818
|
|
|
702
819
|
export type LinearPileupDisplayStateModel = ReturnType<typeof stateModelFactory>
|
|
703
820
|
export type LinearPileupDisplayModel = Instance<LinearPileupDisplayStateModel>
|
|
@@ -3,14 +3,18 @@ import { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-vie
|
|
|
3
3
|
import { types } from 'mobx-state-tree'
|
|
4
4
|
import PluginManager from '@jbrowse/core/PluginManager'
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/**
|
|
7
|
+
* #config LinearSNPCoverageDisplay
|
|
8
|
+
*/
|
|
9
|
+
function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
10
10
|
|
|
11
|
+
export default function SNPCoverageConfigFactory(pluginManager: PluginManager) {
|
|
11
12
|
return ConfigurationSchema(
|
|
12
13
|
'LinearSNPCoverageDisplay',
|
|
13
14
|
{
|
|
15
|
+
/**
|
|
16
|
+
* #slot
|
|
17
|
+
*/
|
|
14
18
|
autoscale: {
|
|
15
19
|
type: 'stringEnum',
|
|
16
20
|
defaultValue: 'local',
|
|
@@ -18,38 +22,61 @@ export default function SNPCoverageConfigFactory(pluginManager: PluginManager) {
|
|
|
18
22
|
description:
|
|
19
23
|
'performs local autoscaling (no other options for SNP Coverage available)',
|
|
20
24
|
},
|
|
25
|
+
/**
|
|
26
|
+
* #slot
|
|
27
|
+
*/
|
|
21
28
|
minScore: {
|
|
22
29
|
type: 'number',
|
|
23
30
|
defaultValue: Number.MIN_VALUE,
|
|
24
31
|
description: 'minimum value for the y-scale',
|
|
25
32
|
},
|
|
33
|
+
/**
|
|
34
|
+
* #slot
|
|
35
|
+
*/
|
|
26
36
|
maxScore: {
|
|
27
37
|
type: 'number',
|
|
28
38
|
description: 'maximum value for the y-scale',
|
|
29
39
|
defaultValue: Number.MAX_VALUE,
|
|
30
40
|
},
|
|
41
|
+
/**
|
|
42
|
+
* #slot
|
|
43
|
+
*/
|
|
31
44
|
scaleType: {
|
|
32
45
|
type: 'stringEnum',
|
|
33
46
|
model: types.enumeration('Scale type', ['linear', 'log']), // todo zscale
|
|
34
47
|
description: 'The type of scale to use',
|
|
35
48
|
defaultValue: 'linear',
|
|
36
49
|
},
|
|
37
|
-
|
|
50
|
+
/**
|
|
51
|
+
* #slot
|
|
52
|
+
*/ inverted: {
|
|
38
53
|
type: 'boolean',
|
|
39
54
|
description: 'draw upside down',
|
|
40
55
|
defaultValue: false,
|
|
41
56
|
},
|
|
42
|
-
|
|
57
|
+
/**
|
|
58
|
+
* #slot
|
|
59
|
+
*/
|
|
43
60
|
multiTicks: {
|
|
44
61
|
type: 'boolean',
|
|
45
62
|
description: 'Display multiple values for the ticks',
|
|
46
63
|
defaultValue: false,
|
|
47
64
|
},
|
|
48
|
-
|
|
65
|
+
/**
|
|
66
|
+
* #slot
|
|
67
|
+
*/
|
|
49
68
|
renderers: ConfigurationSchema('RenderersConfiguration', {
|
|
50
|
-
SNPCoverageRenderer:
|
|
69
|
+
SNPCoverageRenderer: pluginManager.getRendererType(
|
|
70
|
+
'SNPCoverageRenderer',
|
|
71
|
+
).configSchema,
|
|
51
72
|
}),
|
|
52
73
|
},
|
|
53
|
-
{
|
|
74
|
+
{
|
|
75
|
+
/**
|
|
76
|
+
* #baseConfiguration
|
|
77
|
+
*/
|
|
78
|
+
baseConfiguration: baseLinearDisplayConfigSchema,
|
|
79
|
+
explicitlyTyped: true,
|
|
80
|
+
},
|
|
54
81
|
)
|
|
55
82
|
}
|