@jbrowse/plugin-alignments 1.7.8 → 1.7.11
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 +13 -3
- package/dist/AlignmentsFeatureDetail/index.d.ts +28 -3
- package/dist/AlignmentsFeatureDetail/index.js +6 -17
- package/dist/BamAdapter/MismatchParser.js +4 -2
- package/dist/LinearPileupDisplay/model.d.ts +7 -4
- package/dist/LinearPileupDisplay/model.js +131 -50
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +35 -14
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +3 -3
- package/dist/PileupRenderer/PileupRenderer.d.ts +66 -9
- package/dist/PileupRenderer/PileupRenderer.js +199 -124
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +2 -0
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +3 -0
- package/dist/SNPCoverageRenderer/configSchema.d.ts +1 -1
- package/package.json +2 -2
- package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +14 -3
- package/src/AlignmentsFeatureDetail/index.ts +7 -17
- package/src/BamAdapter/MismatchParser.ts +4 -2
- package/src/LinearPileupDisplay/model.ts +75 -23
- package/src/LinearSNPCoverageDisplay/components/Tooltip.tsx +44 -30
- package/src/PileupRenderer/PileupRenderer.tsx +366 -180
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +5 -0
|
@@ -76,15 +76,24 @@ function Formatter(_ref) {
|
|
|
76
76
|
show = _useState2[0],
|
|
77
77
|
setShow = _useState2[1];
|
|
78
78
|
|
|
79
|
+
var _useState3 = (0, _react.useState)(false),
|
|
80
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
81
|
+
copied = _useState4[0],
|
|
82
|
+
setCopied = _useState4[1];
|
|
83
|
+
|
|
79
84
|
var display = String(value);
|
|
80
85
|
|
|
81
86
|
if (display.length > 100) {
|
|
82
87
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("button", {
|
|
83
88
|
type: "button",
|
|
84
89
|
onClick: function onClick() {
|
|
85
|
-
|
|
90
|
+
(0, _copyToClipboard.default)(display);
|
|
91
|
+
setCopied(true);
|
|
92
|
+
setTimeout(function () {
|
|
93
|
+
setCopied(false);
|
|
94
|
+
}, 700);
|
|
86
95
|
}
|
|
87
|
-
},
|
|
96
|
+
}, copied ? 'Copied to clipboard' : 'Copy'), /*#__PURE__*/_react.default.createElement("button", {
|
|
88
97
|
type: "button",
|
|
89
98
|
onClick: function onClick() {
|
|
90
99
|
return setShow(function (val) {
|
|
@@ -142,7 +151,8 @@ function SupplementaryAlignments(props) {
|
|
|
142
151
|
return /*#__PURE__*/_react.default.createElement("li", {
|
|
143
152
|
key: "".concat(locString, "-").concat(index)
|
|
144
153
|
}, /*#__PURE__*/_react.default.createElement(_core.Link, {
|
|
145
|
-
onClick: function onClick() {
|
|
154
|
+
onClick: function onClick(event) {
|
|
155
|
+
event.preventDefault();
|
|
146
156
|
var view = model.view;
|
|
147
157
|
|
|
148
158
|
try {
|
|
@@ -2,12 +2,37 @@ import PluginManager from '@jbrowse/core/PluginManager';
|
|
|
2
2
|
declare const configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
3
3
|
export declare function stateModelFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
|
|
4
4
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
5
|
-
type: import("mobx-state-tree").ISimpleType<"
|
|
5
|
+
type: import("mobx-state-tree").ISimpleType<"BaseFeatureWidget">;
|
|
6
6
|
featureData: import("mobx-state-tree").IType<any, any, any>;
|
|
7
|
+
formattedFields: import("mobx-state-tree").IType<any, any, any>;
|
|
8
|
+
unformattedFeatureData: import("mobx-state-tree").IType<any, any, any>;
|
|
7
9
|
view: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
|
|
10
|
+
track: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
|
|
11
|
+
} & {
|
|
12
|
+
type: import("mobx-state-tree").ISimpleType<"AlignmentsFeatureWidget">;
|
|
8
13
|
}, {
|
|
9
|
-
setFeatureData(
|
|
14
|
+
setFeatureData(featureData: Record<string, unknown>): void;
|
|
10
15
|
clearFeatureData(): void;
|
|
11
|
-
|
|
16
|
+
setFormattedData(feat: Record<string, unknown>): void;
|
|
17
|
+
} & {
|
|
18
|
+
afterCreate(): void;
|
|
19
|
+
}, {
|
|
20
|
+
type: "BaseFeatureWidget";
|
|
21
|
+
} & Partial<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
|
|
22
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
23
|
+
type: import("mobx-state-tree").ISimpleType<"BaseFeatureWidget">;
|
|
24
|
+
featureData: import("mobx-state-tree").IType<any, any, any>;
|
|
25
|
+
formattedFields: import("mobx-state-tree").IType<any, any, any>;
|
|
26
|
+
unformattedFeatureData: import("mobx-state-tree").IType<any, any, any>;
|
|
27
|
+
view: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
|
|
28
|
+
track: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
|
|
29
|
+
}>> & import("mobx-state-tree")._NotCustomized, {
|
|
30
|
+
id: string;
|
|
31
|
+
type: "BaseFeatureWidget";
|
|
32
|
+
formattedFields: any;
|
|
33
|
+
view: import("mobx-state-tree").ReferenceIdentifier | undefined;
|
|
34
|
+
track: import("mobx-state-tree").ReferenceIdentifier | undefined;
|
|
35
|
+
finalizedFeatureData: any;
|
|
36
|
+
} & import("mobx-state-tree")._NotCustomized>;
|
|
12
37
|
export default function register(pluginManager: PluginManager): void;
|
|
13
38
|
export { configSchema };
|
|
@@ -15,12 +15,12 @@ var _react = require("react");
|
|
|
15
15
|
|
|
16
16
|
var _configuration = require("@jbrowse/core/configuration");
|
|
17
17
|
|
|
18
|
-
var _mst = require("@jbrowse/core/util/types/mst");
|
|
19
|
-
|
|
20
18
|
var _mobxStateTree = require("mobx-state-tree");
|
|
21
19
|
|
|
22
20
|
var _WidgetType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/WidgetType"));
|
|
23
21
|
|
|
22
|
+
var _BaseFeatureWidget = require("@jbrowse/core/BaseFeatureWidget");
|
|
23
|
+
|
|
24
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
25
|
|
|
26
26
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -29,21 +29,10 @@ var configSchema = (0, _configuration.ConfigurationSchema)('AlignmentsFeatureWid
|
|
|
29
29
|
exports.configSchema = configSchema;
|
|
30
30
|
|
|
31
31
|
function stateModelFactory(pluginManager) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
type: _mobxStateTree.types.literal('AlignmentsFeatureWidget')
|
|
35
|
-
|
|
36
|
-
view: _mobxStateTree.types.safeReference(pluginManager.pluggableMstType('view', 'stateModel'))
|
|
37
|
-
}).actions(function (self) {
|
|
38
|
-
return {
|
|
39
|
-
setFeatureData: function setFeatureData(data) {
|
|
40
|
-
self.featureData = data;
|
|
41
|
-
},
|
|
42
|
-
clearFeatureData: function clearFeatureData() {
|
|
43
|
-
self.featureData = undefined;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
});
|
|
32
|
+
var baseModel = (0, _BaseFeatureWidget.stateModelFactory)(pluginManager);
|
|
33
|
+
return _mobxStateTree.types.compose(baseModel, _mobxStateTree.types.model('AlignmentsFeatureWidget', {
|
|
34
|
+
type: _mobxStateTree.types.literal('AlignmentsFeatureWidget')
|
|
35
|
+
}));
|
|
47
36
|
}
|
|
48
37
|
|
|
49
38
|
function register(pluginManager) {
|
|
@@ -24,6 +24,7 @@ var _util = require("@jbrowse/core/util");
|
|
|
24
24
|
var _marked = /*#__PURE__*/_regenerator.default.mark(getNextRefPos);
|
|
25
25
|
|
|
26
26
|
var mdRegex = new RegExp(/(\d+|\^[a-z]+|[a-z])/gi);
|
|
27
|
+
var modificationRegex = new RegExp(/([A-Z])([-+])([^,.?]+)([.?])?/);
|
|
27
28
|
|
|
28
29
|
function parseCigar(cigar) {
|
|
29
30
|
return (cigar || '').split(/([MIDNSHPX=])/);
|
|
@@ -50,6 +51,7 @@ function cigarToMismatches(ops, seq, ref, qual) {
|
|
|
50
51
|
start: roffset + j,
|
|
51
52
|
type: 'mismatch',
|
|
52
53
|
base: seq[soffset + j],
|
|
54
|
+
altbase: ref[roffset + j],
|
|
53
55
|
length: 1
|
|
54
56
|
});
|
|
55
57
|
}
|
|
@@ -351,7 +353,7 @@ function getModificationPositions(mm, fseq, fstrand) {
|
|
|
351
353
|
skips = _mod$split2.slice(1); // regexes based on parse_mm.pl from hts-specs
|
|
352
354
|
|
|
353
355
|
|
|
354
|
-
var matches = basemod.match(
|
|
356
|
+
var matches = basemod.match(modificationRegex);
|
|
355
357
|
|
|
356
358
|
if (!matches) {
|
|
357
359
|
throw new Error('bad format for MM tag');
|
|
@@ -426,7 +428,7 @@ function getModificationTypes(mm) {
|
|
|
426
428
|
_mod$split4 = (0, _slicedToArray2.default)(_mod$split3, 1),
|
|
427
429
|
basemod = _mod$split4[0];
|
|
428
430
|
|
|
429
|
-
var matches = basemod.match(
|
|
431
|
+
var matches = basemod.match(modificationRegex);
|
|
430
432
|
|
|
431
433
|
if (!matches) {
|
|
432
434
|
throw new Error('bad format for MM tag');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { Instance } from 'mobx-state-tree';
|
|
3
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
2
4
|
import { Feature } from '@jbrowse/core/util';
|
|
3
5
|
import { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons';
|
|
4
|
-
import { Instance } from 'mobx-state-tree';
|
|
5
|
-
import { AnyConfigurationModel } from '@jbrowse/core/configuration/configurationSchema';
|
|
6
6
|
import { LinearPileupDisplayConfigModel } from './configSchema';
|
|
7
7
|
declare const stateModelFactory: (configSchema: LinearPileupDisplayConfigModel) => import("mobx-state-tree").IModelType<{
|
|
8
8
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
@@ -149,7 +149,7 @@ declare const stateModelFactory: (configSchema: LinearPileupDisplayConfigModel)
|
|
|
149
149
|
estimatedRegionStatsP: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats> | undefined;
|
|
150
150
|
estimatedRegionStats: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined;
|
|
151
151
|
} & {
|
|
152
|
-
readonly blockType: "
|
|
152
|
+
readonly blockType: "dynamicBlocks" | "staticBlocks";
|
|
153
153
|
readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
|
|
154
154
|
} & {
|
|
155
155
|
readonly renderDelay: number;
|
|
@@ -213,6 +213,7 @@ declare const stateModelFactory: (configSchema: LinearPileupDisplayConfigModel)
|
|
|
213
213
|
} & {
|
|
214
214
|
colorTagMap: import("mobx").ObservableMap<string, string>;
|
|
215
215
|
modificationTagMap: import("mobx").ObservableMap<string, string>;
|
|
216
|
+
featureUnderMouseVolatile: Feature | undefined;
|
|
216
217
|
ready: boolean;
|
|
217
218
|
} & {
|
|
218
219
|
setReady(flag: boolean): void;
|
|
@@ -225,6 +226,7 @@ declare const stateModelFactory: (configSchema: LinearPileupDisplayConfigModel)
|
|
|
225
226
|
}): void;
|
|
226
227
|
updateModificationColorMap(uniqueModifications: string[]): void;
|
|
227
228
|
updateColorTagMap(uniqueTag: string[]): void;
|
|
229
|
+
setFeatureUnderMouse(feat?: Feature): void;
|
|
228
230
|
} & {
|
|
229
231
|
afterAttach(): void;
|
|
230
232
|
selectFeature(feature: Feature): void;
|
|
@@ -233,7 +235,7 @@ declare const stateModelFactory: (configSchema: LinearPileupDisplayConfigModel)
|
|
|
233
235
|
toggleSoftClipping(): void;
|
|
234
236
|
toggleMismatchAlpha(): void;
|
|
235
237
|
setConfig(configuration: AnyConfigurationModel): void;
|
|
236
|
-
setSortedBy(type: string, tag?: string
|
|
238
|
+
setSortedBy(type: string, tag?: string): void;
|
|
237
239
|
setFilterBy(filter: {
|
|
238
240
|
flagInclude: number;
|
|
239
241
|
flagExclude: number;
|
|
@@ -250,6 +252,7 @@ declare const stateModelFactory: (configSchema: LinearPileupDisplayConfigModel)
|
|
|
250
252
|
readonly rendererConfig: any;
|
|
251
253
|
readonly featureHeightSetting: any;
|
|
252
254
|
readonly mismatchAlphaSetting: any;
|
|
255
|
+
readonly featureUnderMouse: Feature | undefined;
|
|
253
256
|
} & {
|
|
254
257
|
readonly rendererTypeName: string;
|
|
255
258
|
contextMenuItems(): {
|
|
@@ -21,21 +21,23 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
21
21
|
|
|
22
22
|
var _react = require("react");
|
|
23
23
|
|
|
24
|
+
var _mobx = require("mobx");
|
|
25
|
+
|
|
26
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
27
|
+
|
|
28
|
+
var _copyToClipboard = _interopRequireDefault(require("copy-to-clipboard"));
|
|
29
|
+
|
|
24
30
|
var _configuration = require("@jbrowse/core/configuration");
|
|
25
31
|
|
|
26
32
|
var _tracks = require("@jbrowse/core/util/tracks");
|
|
27
33
|
|
|
28
34
|
var _util = require("@jbrowse/core/util");
|
|
29
35
|
|
|
30
|
-
var _Visibility = _interopRequireDefault(require("@material-ui/icons/Visibility"));
|
|
31
|
-
|
|
32
|
-
var _Icons = require("@jbrowse/core/ui/Icons");
|
|
33
|
-
|
|
34
36
|
var _pluginLinearGenomeView = require("@jbrowse/plugin-linear-genome-view");
|
|
35
37
|
|
|
36
|
-
var
|
|
38
|
+
var _Visibility = _interopRequireDefault(require("@material-ui/icons/Visibility"));
|
|
37
39
|
|
|
38
|
-
var
|
|
40
|
+
var _Icons = require("@jbrowse/core/ui/Icons");
|
|
39
41
|
|
|
40
42
|
var _MenuOpen = _interopRequireDefault(require("@material-ui/icons/MenuOpen"));
|
|
41
43
|
|
|
@@ -45,8 +47,6 @@ var _Palette = _interopRequireDefault(require("@material-ui/icons/Palette"));
|
|
|
45
47
|
|
|
46
48
|
var _ClearAll = _interopRequireDefault(require("@material-ui/icons/ClearAll"));
|
|
47
49
|
|
|
48
|
-
var _mobx = require("mobx");
|
|
49
|
-
|
|
50
50
|
var _LinearPileupDisplayBlurb = _interopRequireDefault(require("./components/LinearPileupDisplayBlurb"));
|
|
51
51
|
|
|
52
52
|
var _shared = require("../shared");
|
|
@@ -61,6 +61,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
61
61
|
|
|
62
62
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
63
63
|
|
|
64
|
+
// async
|
|
64
65
|
var ColorByTagDlg = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
65
66
|
return Promise.resolve().then(function () {
|
|
66
67
|
return _interopRequireWildcard(require('./components/ColorByTag'));
|
|
@@ -129,6 +130,7 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
129
130
|
return {
|
|
130
131
|
colorTagMap: _mobx.observable.map({}),
|
|
131
132
|
modificationTagMap: _mobx.observable.map({}),
|
|
133
|
+
featureUnderMouseVolatile: undefined,
|
|
132
134
|
ready: false
|
|
133
135
|
};
|
|
134
136
|
}).actions(function (self) {
|
|
@@ -162,7 +164,9 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
162
164
|
});
|
|
163
165
|
},
|
|
164
166
|
updateColorTagMap: function updateColorTagMap(uniqueTag) {
|
|
165
|
-
// pale color scheme
|
|
167
|
+
// pale color scheme
|
|
168
|
+
// https://cran.r-project.org/web/packages/khroma/vignettes/tol.html
|
|
169
|
+
// e.g. "tol_light"
|
|
166
170
|
var colorPalette = ['#BBCCEE', 'pink', '#CCDDAA', '#EEEEBB', '#FFCCCC', 'lightblue', 'lightgreen', 'tan', '#CCEEFF', 'lightsalmon'];
|
|
167
171
|
uniqueTag.forEach(function (value) {
|
|
168
172
|
if (!self.colorTagMap.has(value)) {
|
|
@@ -171,6 +175,9 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
171
175
|
self.colorTagMap.set(value, newColor);
|
|
172
176
|
}
|
|
173
177
|
});
|
|
178
|
+
},
|
|
179
|
+
setFeatureUnderMouse: function setFeatureUnderMouse(feat) {
|
|
180
|
+
self.featureUnderMouseVolatile = feat;
|
|
174
181
|
}
|
|
175
182
|
};
|
|
176
183
|
}).actions(function (self) {
|
|
@@ -269,7 +276,75 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
269
276
|
}, _callee, null, [[0, 28]]);
|
|
270
277
|
})), {
|
|
271
278
|
delay: 1000
|
|
272
|
-
}));
|
|
279
|
+
})); // autorun synchronizes featureUnderMouse with featureIdUnderMouse
|
|
280
|
+
|
|
281
|
+
(0, _mobxStateTree.addDisposer)(self, (0, _mobx.autorun)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
282
|
+
var session, _self$featureUnderMou, featureId, sessionId, view, _ref3, feature;
|
|
283
|
+
|
|
284
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
285
|
+
while (1) {
|
|
286
|
+
switch (_context2.prev = _context2.next) {
|
|
287
|
+
case 0:
|
|
288
|
+
session = (0, _util.getSession)(self);
|
|
289
|
+
_context2.prev = 1;
|
|
290
|
+
featureId = self.featureIdUnderMouse;
|
|
291
|
+
|
|
292
|
+
if (!(((_self$featureUnderMou = self.featureUnderMouse) === null || _self$featureUnderMou === void 0 ? void 0 : _self$featureUnderMou.id()) !== featureId)) {
|
|
293
|
+
_context2.next = 15;
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
if (featureId) {
|
|
298
|
+
_context2.next = 8;
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
self.setFeatureUnderMouse(undefined);
|
|
303
|
+
_context2.next = 15;
|
|
304
|
+
break;
|
|
305
|
+
|
|
306
|
+
case 8:
|
|
307
|
+
sessionId = (0, _tracks.getRpcSessionId)(self);
|
|
308
|
+
view = (0, _util.getContainingView)(self);
|
|
309
|
+
_context2.next = 12;
|
|
310
|
+
return session.rpcManager.call(sessionId, 'CoreGetFeatureDetails', {
|
|
311
|
+
featureId: featureId,
|
|
312
|
+
sessionId: sessionId,
|
|
313
|
+
layoutId: view.id,
|
|
314
|
+
rendererType: 'PileupRenderer'
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
case 12:
|
|
318
|
+
_ref3 = _context2.sent;
|
|
319
|
+
feature = _ref3.feature;
|
|
320
|
+
|
|
321
|
+
// check featureIdUnderMouse is still the same as the
|
|
322
|
+
// feature.id that was returned e.g. that the user hasn't
|
|
323
|
+
// moused over to a new position during the async operation
|
|
324
|
+
// above
|
|
325
|
+
// @ts-ignore
|
|
326
|
+
if (self.featureIdUnderMouse === feature.uniqueId) {
|
|
327
|
+
// @ts-ignore
|
|
328
|
+
self.setFeatureUnderMouse(new _util.SimpleFeature(feature));
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
case 15:
|
|
332
|
+
_context2.next = 21;
|
|
333
|
+
break;
|
|
334
|
+
|
|
335
|
+
case 17:
|
|
336
|
+
_context2.prev = 17;
|
|
337
|
+
_context2.t0 = _context2["catch"](1);
|
|
338
|
+
console.error(_context2.t0);
|
|
339
|
+
session.notify("".concat(_context2.t0), 'error');
|
|
340
|
+
|
|
341
|
+
case 21:
|
|
342
|
+
case "end":
|
|
343
|
+
return _context2.stop();
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}, _callee2, null, [[1, 17]]);
|
|
347
|
+
}))));
|
|
273
348
|
},
|
|
274
349
|
selectFeature: function selectFeature(feature) {
|
|
275
350
|
var session = (0, _util.getSession)(self);
|
|
@@ -307,8 +382,8 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
307
382
|
self.configuration = configuration;
|
|
308
383
|
},
|
|
309
384
|
setSortedBy: function setSortedBy(type, tag) {
|
|
310
|
-
var
|
|
311
|
-
centerLineInfo =
|
|
385
|
+
var _ref4 = (0, _util.getContainingView)(self),
|
|
386
|
+
centerLineInfo = _ref4.centerLineInfo;
|
|
312
387
|
|
|
313
388
|
if (!centerLineInfo) {
|
|
314
389
|
return;
|
|
@@ -369,6 +444,10 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
369
444
|
|
|
370
445
|
get mismatchAlphaSetting() {
|
|
371
446
|
return self.mismatchAlpha !== undefined ? self.mismatchAlpha : (0, _configuration.readConfObject)(this.rendererConfig, 'mismatchAlpha');
|
|
447
|
+
},
|
|
448
|
+
|
|
449
|
+
get featureUnderMouse() {
|
|
450
|
+
return self.featureUnderMouseVolatile;
|
|
372
451
|
}
|
|
373
452
|
|
|
374
453
|
};
|
|
@@ -422,10 +501,12 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
422
501
|
sortedBy = self.sortedBy,
|
|
423
502
|
colorBy = self.colorBy,
|
|
424
503
|
filterBy = self.filterBy,
|
|
425
|
-
rpcDriverName = self.rpcDriverName
|
|
504
|
+
rpcDriverName = self.rpcDriverName,
|
|
505
|
+
currBpPerPx = self.currBpPerPx,
|
|
506
|
+
ready = self.ready;
|
|
426
507
|
var superProps = superRenderProps();
|
|
427
508
|
return _objectSpread(_objectSpread({}, superProps), {}, {
|
|
428
|
-
notReady: superProps.notReady || !
|
|
509
|
+
notReady: superProps.notReady || !ready || sortedBy && currBpPerPx !== view.bpPerPx,
|
|
429
510
|
rpcDriverName: rpcDriverName,
|
|
430
511
|
displayModel: self,
|
|
431
512
|
sortedBy: sortedBy,
|
|
@@ -436,30 +517,30 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
436
517
|
showSoftClip: self.showSoftClipping,
|
|
437
518
|
config: self.rendererConfig,
|
|
438
519
|
onFeatureClick: function onFeatureClick(_, featureId) {
|
|
439
|
-
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
440
|
-
var session, rpcManager, f, sessionId,
|
|
520
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
521
|
+
var session, rpcManager, f, sessionId, _ref5, feature;
|
|
441
522
|
|
|
442
|
-
return _regenerator.default.wrap(function
|
|
523
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
443
524
|
while (1) {
|
|
444
|
-
switch (
|
|
525
|
+
switch (_context3.prev = _context3.next) {
|
|
445
526
|
case 0:
|
|
446
527
|
session = (0, _util.getSession)(self);
|
|
447
528
|
rpcManager = session.rpcManager;
|
|
448
|
-
|
|
529
|
+
_context3.prev = 2;
|
|
449
530
|
f = featureId || self.featureIdUnderMouse;
|
|
450
531
|
|
|
451
532
|
if (f) {
|
|
452
|
-
|
|
533
|
+
_context3.next = 8;
|
|
453
534
|
break;
|
|
454
535
|
}
|
|
455
536
|
|
|
456
537
|
self.clearFeatureSelection();
|
|
457
|
-
|
|
538
|
+
_context3.next = 14;
|
|
458
539
|
break;
|
|
459
540
|
|
|
460
541
|
case 8:
|
|
461
542
|
sessionId = (0, _tracks.getRpcSessionId)(self);
|
|
462
|
-
|
|
543
|
+
_context3.next = 11;
|
|
463
544
|
return rpcManager.call(sessionId, 'CoreGetFeatureDetails', {
|
|
464
545
|
featureId: f,
|
|
465
546
|
sessionId: sessionId,
|
|
@@ -468,8 +549,8 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
468
549
|
});
|
|
469
550
|
|
|
470
551
|
case 11:
|
|
471
|
-
|
|
472
|
-
feature =
|
|
552
|
+
_ref5 = _context3.sent;
|
|
553
|
+
feature = _ref5.feature;
|
|
473
554
|
|
|
474
555
|
if (feature) {
|
|
475
556
|
// @ts-ignore
|
|
@@ -477,21 +558,21 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
477
558
|
}
|
|
478
559
|
|
|
479
560
|
case 14:
|
|
480
|
-
|
|
561
|
+
_context3.next = 20;
|
|
481
562
|
break;
|
|
482
563
|
|
|
483
564
|
case 16:
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
console.error(
|
|
487
|
-
session.notify("".concat(
|
|
565
|
+
_context3.prev = 16;
|
|
566
|
+
_context3.t0 = _context3["catch"](2);
|
|
567
|
+
console.error(_context3.t0);
|
|
568
|
+
session.notify("".concat(_context3.t0));
|
|
488
569
|
|
|
489
570
|
case 20:
|
|
490
571
|
case "end":
|
|
491
|
-
return
|
|
572
|
+
return _context3.stop();
|
|
492
573
|
}
|
|
493
574
|
}
|
|
494
|
-
},
|
|
575
|
+
}, _callee3, null, [[2, 16]]);
|
|
495
576
|
}))();
|
|
496
577
|
},
|
|
497
578
|
onClick: function onClick() {
|
|
@@ -499,30 +580,30 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
499
580
|
},
|
|
500
581
|
// similar to click but opens a menu with further options
|
|
501
582
|
onFeatureContextMenu: function onFeatureContextMenu(_, featureId) {
|
|
502
|
-
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
503
|
-
var session, rpcManager, f, sessionId,
|
|
583
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
584
|
+
var session, rpcManager, f, sessionId, _ref6, feature;
|
|
504
585
|
|
|
505
|
-
return _regenerator.default.wrap(function
|
|
586
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
506
587
|
while (1) {
|
|
507
|
-
switch (
|
|
588
|
+
switch (_context4.prev = _context4.next) {
|
|
508
589
|
case 0:
|
|
509
590
|
session = (0, _util.getSession)(self);
|
|
510
591
|
rpcManager = session.rpcManager;
|
|
511
|
-
|
|
592
|
+
_context4.prev = 2;
|
|
512
593
|
f = featureId || self.featureIdUnderMouse;
|
|
513
594
|
|
|
514
595
|
if (f) {
|
|
515
|
-
|
|
596
|
+
_context4.next = 8;
|
|
516
597
|
break;
|
|
517
598
|
}
|
|
518
599
|
|
|
519
600
|
self.clearFeatureSelection();
|
|
520
|
-
|
|
601
|
+
_context4.next = 14;
|
|
521
602
|
break;
|
|
522
603
|
|
|
523
604
|
case 8:
|
|
524
605
|
sessionId = (0, _tracks.getRpcSessionId)(self);
|
|
525
|
-
|
|
606
|
+
_context4.next = 11;
|
|
526
607
|
return rpcManager.call(sessionId, 'CoreGetFeatureDetails', {
|
|
527
608
|
featureId: f,
|
|
528
609
|
sessionId: sessionId,
|
|
@@ -531,8 +612,8 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
531
612
|
});
|
|
532
613
|
|
|
533
614
|
case 11:
|
|
534
|
-
|
|
535
|
-
feature =
|
|
615
|
+
_ref6 = _context4.sent;
|
|
616
|
+
feature = _ref6.feature;
|
|
536
617
|
|
|
537
618
|
if (feature) {
|
|
538
619
|
// @ts-ignore
|
|
@@ -540,21 +621,21 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
540
621
|
}
|
|
541
622
|
|
|
542
623
|
case 14:
|
|
543
|
-
|
|
624
|
+
_context4.next = 20;
|
|
544
625
|
break;
|
|
545
626
|
|
|
546
627
|
case 16:
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
console.error(
|
|
550
|
-
session.notify("".concat(
|
|
628
|
+
_context4.prev = 16;
|
|
629
|
+
_context4.t0 = _context4["catch"](2);
|
|
630
|
+
console.error(_context4.t0);
|
|
631
|
+
session.notify("".concat(_context4.t0));
|
|
551
632
|
|
|
552
633
|
case 20:
|
|
553
634
|
case "end":
|
|
554
|
-
return
|
|
635
|
+
return _context4.stop();
|
|
555
636
|
}
|
|
556
637
|
}
|
|
557
|
-
},
|
|
638
|
+
}, _callee4, null, [[2, 16]]);
|
|
558
639
|
}))();
|
|
559
640
|
}
|
|
560
641
|
});
|
|
@@ -587,10 +668,10 @@ var stateModelFactory = function stateModelFactory(configSchema) {
|
|
|
587
668
|
})), [{
|
|
588
669
|
label: 'Sort by tag...',
|
|
589
670
|
onClick: function onClick() {
|
|
590
|
-
(0, _util.getSession)(self).queueDialog(function (
|
|
671
|
+
(0, _util.getSession)(self).queueDialog(function (handleClose) {
|
|
591
672
|
return [SortByTagDlg, {
|
|
592
673
|
model: self,
|
|
593
|
-
handleClose:
|
|
674
|
+
handleClose: handleClose
|
|
594
675
|
}];
|
|
595
676
|
});
|
|
596
677
|
}
|
|
@@ -11,42 +11,63 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
13
|
|
|
14
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
15
|
+
|
|
14
16
|
var _react = _interopRequireDefault(require("react"));
|
|
15
17
|
|
|
16
18
|
var _mobxReact = require("mobx-react");
|
|
17
19
|
|
|
18
20
|
var _pluginWiggle = require("@jbrowse/plugin-wiggle");
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
var _excluded = ["refbase", "all", "total", "ref", "-1", "1", "0"];
|
|
23
|
+
|
|
21
24
|
var en = function en(n) {
|
|
22
25
|
return n.toLocaleString('en-US');
|
|
23
26
|
};
|
|
24
27
|
|
|
25
|
-
var
|
|
28
|
+
var toP = function toP() {
|
|
29
|
+
var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
30
|
+
return +(+s).toFixed(1);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
var pct = function pct(n, total) {
|
|
34
|
+
return "".concat(toP(n / (total || 1) * 100), "%");
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
var TooltipContents = /*#__PURE__*/_react.default.forwardRef(function (_ref, reactRef) {
|
|
26
38
|
var feature = _ref.feature;
|
|
27
39
|
var start = feature.get('start');
|
|
28
40
|
var end = feature.get('end');
|
|
29
41
|
var name = feature.get('refName');
|
|
30
|
-
|
|
42
|
+
|
|
43
|
+
var _ref2 = feature.get('snpinfo'),
|
|
44
|
+
refbase = _ref2.refbase,
|
|
45
|
+
all = _ref2.all,
|
|
46
|
+
total = _ref2.total,
|
|
47
|
+
ref = _ref2.ref,
|
|
48
|
+
rn1 = _ref2['-1'],
|
|
49
|
+
r1 = _ref2['1'],
|
|
50
|
+
r0 = _ref2['0'],
|
|
51
|
+
info = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
|
|
52
|
+
|
|
31
53
|
var loc = [name, start === end ? en(start) : "".concat(en(start), "..").concat(en(end))].filter(function (f) {
|
|
32
54
|
return !!f;
|
|
33
55
|
}).join(':');
|
|
34
|
-
var total = info === null || info === void 0 ? void 0 : info.total;
|
|
35
56
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
36
|
-
ref:
|
|
37
|
-
}, /*#__PURE__*/_react.default.createElement("table", null, /*#__PURE__*/_react.default.createElement("caption", null, loc), /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("th", null, "Base"), /*#__PURE__*/_react.default.createElement("th", null, "Count"), /*#__PURE__*/_react.default.createElement("th", null, "% of Total"), /*#__PURE__*/_react.default.createElement("th", null, "Strands"), /*#__PURE__*/_react.default.createElement("th", null, "Source"))), /*#__PURE__*/_react.default.createElement("tbody", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", null, "Total"), /*#__PURE__*/_react.default.createElement("td", null,
|
|
38
|
-
var
|
|
39
|
-
key =
|
|
40
|
-
entry =
|
|
57
|
+
ref: reactRef
|
|
58
|
+
}, /*#__PURE__*/_react.default.createElement("table", null, /*#__PURE__*/_react.default.createElement("caption", null, loc), /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("th", null, "Base"), /*#__PURE__*/_react.default.createElement("th", null, "Count"), /*#__PURE__*/_react.default.createElement("th", null, "% of Total"), /*#__PURE__*/_react.default.createElement("th", null, "Strands"), /*#__PURE__*/_react.default.createElement("th", null, "Source"))), /*#__PURE__*/_react.default.createElement("tbody", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", null, "Total"), /*#__PURE__*/_react.default.createElement("td", null, all)), /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", null, "REF ", refbase ? "(".concat(refbase.toUpperCase(), ")") : ''), /*#__PURE__*/_react.default.createElement("td", null, ref), /*#__PURE__*/_react.default.createElement("td", null, pct(ref, all)), /*#__PURE__*/_react.default.createElement("td", null, rn1 ? "".concat(rn1, "(-)") : '', r1 ? "".concat(r1, "(+)") : ''), /*#__PURE__*/_react.default.createElement("td", null)), Object.entries(info).map(function (_ref3) {
|
|
59
|
+
var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
|
|
60
|
+
key = _ref4[0],
|
|
61
|
+
entry = _ref4[1];
|
|
41
62
|
|
|
42
|
-
return Object.entries(entry).map(function (
|
|
43
|
-
var
|
|
44
|
-
base =
|
|
45
|
-
score =
|
|
63
|
+
return Object.entries(entry).map(function (_ref5) {
|
|
64
|
+
var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
|
|
65
|
+
base = _ref6[0],
|
|
66
|
+
score = _ref6[1];
|
|
46
67
|
|
|
47
68
|
return /*#__PURE__*/_react.default.createElement("tr", {
|
|
48
69
|
key: base
|
|
49
|
-
}, /*#__PURE__*/_react.default.createElement("td", null, base.toUpperCase()), /*#__PURE__*/_react.default.createElement("td", null, score.total), /*#__PURE__*/_react.default.createElement("td", null, base === 'total' || base === 'skip' ? '---' :
|
|
70
|
+
}, /*#__PURE__*/_react.default.createElement("td", null, base.toUpperCase()), /*#__PURE__*/_react.default.createElement("td", null, score.total), /*#__PURE__*/_react.default.createElement("td", null, base === 'total' || base === 'skip' ? '---' : pct(score.total, all)), /*#__PURE__*/_react.default.createElement("td", null, score['-1'] ? "".concat(score['-1'], "(-)") : '', score['1'] ? "".concat(score['1'], "(+)") : ''), /*#__PURE__*/_react.default.createElement("td", null, key));
|
|
50
71
|
});
|
|
51
72
|
}))));
|
|
52
73
|
});
|