@jbrowse/plugin-alignments 1.6.9 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -6
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +216 -0
- package/dist/AlignmentsFeatureDetail/index.d.ts +13 -13
- package/dist/AlignmentsFeatureDetail/index.js +63 -0
- package/dist/AlignmentsFeatureDetail/index.test.js +60 -0
- package/dist/AlignmentsTrack/index.d.ts +2 -2
- package/dist/AlignmentsTrack/index.js +37 -0
- package/dist/BamAdapter/BamAdapter.d.ts +40 -30
- package/dist/BamAdapter/BamAdapter.js +598 -0
- package/dist/BamAdapter/BamAdapter.test.js +177 -0
- package/dist/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -33
- package/dist/BamAdapter/BamSlightlyLazyFeature.js +176 -0
- package/dist/BamAdapter/MismatchParser.d.ts +28 -28
- package/dist/BamAdapter/MismatchParser.js +384 -0
- package/dist/BamAdapter/MismatchParser.test.js +259 -0
- package/dist/BamAdapter/configSchema.d.ts +2 -2
- package/dist/BamAdapter/configSchema.js +48 -0
- package/dist/BamAdapter/index.d.ts +3 -3
- package/dist/BamAdapter/index.js +36 -0
- package/dist/CramAdapter/CramAdapter.d.ts +52 -43
- package/dist/CramAdapter/CramAdapter.js +660 -0
- package/dist/CramAdapter/CramAdapter.test.js +138 -0
- package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -49
- package/dist/CramAdapter/CramSlightlyLazyFeature.js +447 -0
- package/dist/CramAdapter/CramTestAdapters.d.ts +29 -29
- package/dist/CramAdapter/CramTestAdapters.js +234 -0
- package/dist/CramAdapter/configSchema.d.ts +3 -3
- package/dist/CramAdapter/configSchema.js +40 -0
- package/dist/CramAdapter/index.d.ts +3 -3
- package/dist/CramAdapter/index.js +36 -0
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -9
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +97 -0
- package/dist/HtsgetBamAdapter/configSchema.d.ts +2 -2
- package/dist/HtsgetBamAdapter/configSchema.js +31 -0
- package/dist/HtsgetBamAdapter/index.d.ts +3 -3
- package/dist/HtsgetBamAdapter/index.js +42 -0
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -7
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +69 -0
- package/dist/LinearAlignmentsDisplay/index.d.ts +2 -2
- package/dist/LinearAlignmentsDisplay/index.js +31 -0
- package/dist/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -4
- package/dist/LinearAlignmentsDisplay/models/configSchema.js +25 -0
- package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +83 -0
- package/dist/LinearAlignmentsDisplay/models/model.d.ts +105 -105
- package/dist/LinearAlignmentsDisplay/models/model.js +250 -0
- package/dist/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -14
- package/dist/LinearPileupDisplay/components/ColorByModifications.js +123 -0
- package/dist/LinearPileupDisplay/components/ColorByTag.d.ts +9 -9
- package/dist/LinearPileupDisplay/components/ColorByTag.js +98 -0
- package/dist/LinearPileupDisplay/components/FilterByTag.d.ts +18 -18
- package/dist/LinearPileupDisplay/components/FilterByTag.js +203 -0
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -13
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +32 -0
- package/dist/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -16
- package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +99 -0
- package/dist/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -10
- package/dist/LinearPileupDisplay/components/SetMaxHeight.js +90 -0
- package/dist/LinearPileupDisplay/components/SortByTag.d.ts +9 -9
- package/dist/LinearPileupDisplay/components/SortByTag.js +95 -0
- package/dist/LinearPileupDisplay/configSchema.d.ts +6 -6
- package/dist/LinearPileupDisplay/configSchema.js +47 -0
- package/dist/LinearPileupDisplay/configSchema.test.js +92 -0
- package/dist/LinearPileupDisplay/index.d.ts +2 -2
- package/dist/LinearPileupDisplay/index.js +30 -0
- package/dist/LinearPileupDisplay/model.d.ts +319 -321
- package/dist/LinearPileupDisplay/model.js +602 -0
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -10
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +63 -0
- package/dist/LinearSNPCoverageDisplay/index.d.ts +2 -2
- package/dist/LinearSNPCoverageDisplay/index.js +30 -0
- package/dist/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -2
- package/dist/LinearSNPCoverageDisplay/models/configSchema.js +57 -0
- package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +62 -0
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +346 -96
- package/dist/LinearSNPCoverageDisplay/models/model.js +237 -0
- package/dist/NestedFrequencyTable.d.ts +14 -14
- package/dist/NestedFrequencyTable.js +152 -0
- package/dist/PileupRPC/rpcMethods.d.ts +34 -34
- package/dist/PileupRPC/rpcMethods.js +285 -0
- package/dist/PileupRenderer/PileupLayoutSession.d.ts +29 -29
- package/dist/PileupRenderer/PileupLayoutSession.js +79 -0
- package/dist/PileupRenderer/PileupRenderer.d.ts +125 -125
- package/dist/PileupRenderer/PileupRenderer.js +1220 -0
- package/dist/PileupRenderer/components/PileupRendering.d.ts +23 -23
- package/dist/PileupRenderer/components/PileupRendering.js +270 -0
- package/dist/PileupRenderer/components/PileupRendering.test.js +36 -0
- package/dist/PileupRenderer/configSchema.d.ts +2 -2
- package/dist/PileupRenderer/configSchema.js +72 -0
- package/dist/PileupRenderer/index.d.ts +2 -2
- package/dist/PileupRenderer/index.js +25 -0
- package/dist/PileupRenderer/sortUtil.d.ts +8 -8
- package/dist/PileupRenderer/sortUtil.js +112 -0
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -71
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +606 -0
- package/dist/SNPCoverageAdapter/configSchema.d.ts +3 -3
- package/dist/SNPCoverageAdapter/configSchema.js +22 -0
- package/dist/SNPCoverageAdapter/index.d.ts +3 -3
- package/dist/SNPCoverageAdapter/index.js +45 -0
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -20
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +296 -0
- package/dist/SNPCoverageRenderer/configSchema.d.ts +2 -2
- package/dist/SNPCoverageRenderer/configSchema.js +40 -0
- package/dist/SNPCoverageRenderer/index.d.ts +3 -3
- package/dist/SNPCoverageRenderer/index.js +34 -0
- package/dist/declare.d.js +1 -0
- package/dist/index.d.ts +10 -10
- package/dist/index.js +154 -6
- package/dist/index.test.js +26 -0
- package/dist/shared.d.ts +25 -25
- package/dist/shared.js +96 -0
- package/dist/util.d.ts +19 -19
- package/dist/util.js +135 -0
- package/package.json +5 -8
- package/src/BamAdapter/BamAdapter.ts +35 -8
- package/src/CramAdapter/CramAdapter.ts +42 -15
- package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +1 -1
- package/src/LinearPileupDisplay/model.ts +2 -22
- package/src/LinearSNPCoverageDisplay/models/model.ts +6 -36
- package/src/PileupRenderer/PileupRenderer.tsx +3 -6
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +11 -17
- package/dist/AlignmentsFeatureDetail/index.test.d.ts +0 -1
- package/dist/LinearAlignmentsDisplay/models/configSchema.test.d.ts +0 -1
- package/dist/LinearPileupDisplay/configSchema.test.d.ts +0 -1
- package/dist/LinearSNPCoverageDisplay/models/configSchema.test.d.ts +0 -1
- package/dist/PileupRenderer/components/PileupRendering.test.d.ts +0 -1
- package/dist/plugin-alignments.cjs.development.js +0 -8438
- package/dist/plugin-alignments.cjs.development.js.map +0 -1
- package/dist/plugin-alignments.cjs.production.min.js +0 -2
- package/dist/plugin-alignments.cjs.production.min.js.map +0 -1
- package/dist/plugin-alignments.esm.js +0 -8430
- package/dist/plugin-alignments.esm.js.map +0 -1
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
2
|
-
import { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
3
|
-
import { ScaleOpts, WiggleBaseRenderer } from '@jbrowse/plugin-wiggle';
|
|
4
|
-
export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
|
|
5
|
-
bpPerPx: number;
|
|
6
|
-
height: number;
|
|
7
|
-
highResolutionScaling: number;
|
|
8
|
-
scaleOpts: ScaleOpts;
|
|
9
|
-
}
|
|
10
|
-
export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
|
|
11
|
-
features: Map<string, Feature>;
|
|
12
|
-
ticks: {
|
|
13
|
-
values: number[];
|
|
14
|
-
};
|
|
15
|
-
displayCrossHatches: boolean;
|
|
16
|
-
modificationTagMap?: Record<string, string>;
|
|
17
|
-
}
|
|
18
|
-
export default class SNPCoverageRenderer extends WiggleBaseRenderer {
|
|
19
|
-
draw(ctx: CanvasRenderingContext2D, props: RenderArgsDeserializedWithFeatures): void;
|
|
20
|
-
}
|
|
1
|
+
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
2
|
+
import { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
3
|
+
import { ScaleOpts, WiggleBaseRenderer } from '@jbrowse/plugin-wiggle';
|
|
4
|
+
export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
|
|
5
|
+
bpPerPx: number;
|
|
6
|
+
height: number;
|
|
7
|
+
highResolutionScaling: number;
|
|
8
|
+
scaleOpts: ScaleOpts;
|
|
9
|
+
}
|
|
10
|
+
export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
|
|
11
|
+
features: Map<string, Feature>;
|
|
12
|
+
ticks: {
|
|
13
|
+
values: number[];
|
|
14
|
+
};
|
|
15
|
+
displayCrossHatches: boolean;
|
|
16
|
+
modificationTagMap?: Record<string, string>;
|
|
17
|
+
}
|
|
18
|
+
export default class SNPCoverageRenderer extends WiggleBaseRenderer {
|
|
19
|
+
draw(ctx: CanvasRenderingContext2D, props: RenderArgsDeserializedWithFeatures): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
+
|
|
18
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
+
|
|
20
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
+
|
|
22
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
+
|
|
24
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
+
|
|
26
|
+
var _ui = require("@jbrowse/core/ui");
|
|
27
|
+
|
|
28
|
+
var _util = require("@jbrowse/core/util");
|
|
29
|
+
|
|
30
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
31
|
+
|
|
32
|
+
var _pluginWiggle = require("@jbrowse/plugin-wiggle");
|
|
33
|
+
|
|
34
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
35
|
+
|
|
36
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
37
|
+
|
|
38
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
39
|
+
|
|
40
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
41
|
+
|
|
42
|
+
var SNPCoverageRenderer = /*#__PURE__*/function (_WiggleBaseRenderer) {
|
|
43
|
+
(0, _inherits2["default"])(SNPCoverageRenderer, _WiggleBaseRenderer);
|
|
44
|
+
|
|
45
|
+
var _super = _createSuper(SNPCoverageRenderer);
|
|
46
|
+
|
|
47
|
+
function SNPCoverageRenderer() {
|
|
48
|
+
(0, _classCallCheck2["default"])(this, SNPCoverageRenderer);
|
|
49
|
+
return _super.apply(this, arguments);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
(0, _createClass2["default"])(SNPCoverageRenderer, [{
|
|
53
|
+
key: "draw",
|
|
54
|
+
value: // note: the snps are drawn on linear scale even if the data is drawn in log
|
|
55
|
+
// scape hence the two different scales being used
|
|
56
|
+
function draw(ctx, props) {
|
|
57
|
+
var features = props.features,
|
|
58
|
+
regions = props.regions,
|
|
59
|
+
bpPerPx = props.bpPerPx,
|
|
60
|
+
displayCrossHatches = props.displayCrossHatches,
|
|
61
|
+
_props$modificationTa = props.modificationTagMap,
|
|
62
|
+
modificationTagMap = _props$modificationTa === void 0 ? {} : _props$modificationTa,
|
|
63
|
+
scaleOpts = props.scaleOpts,
|
|
64
|
+
unadjustedHeight = props.height,
|
|
65
|
+
configTheme = props.theme,
|
|
66
|
+
cfg = props.config,
|
|
67
|
+
ticks = props.ticks;
|
|
68
|
+
var theme = (0, _ui.createJBrowseTheme)(configTheme);
|
|
69
|
+
|
|
70
|
+
var _regions = (0, _slicedToArray2["default"])(regions, 1),
|
|
71
|
+
region = _regions[0];
|
|
72
|
+
|
|
73
|
+
var width = (region.end - region.start) / bpPerPx; // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the
|
|
74
|
+
// wiggle display, and makes the height of the actual drawn area add
|
|
75
|
+
// "padding" to the top and bottom of the display
|
|
76
|
+
|
|
77
|
+
var offset = _pluginWiggle.YSCALEBAR_LABEL_OFFSET;
|
|
78
|
+
var height = unadjustedHeight - offset * 2;
|
|
79
|
+
var domain = scaleOpts.domain;
|
|
80
|
+
|
|
81
|
+
if (!domain) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
var opts = _objectSpread(_objectSpread({}, scaleOpts), {}, {
|
|
86
|
+
range: [0, height]
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
var viewScale = (0, _pluginWiggle.getScale)(opts); // clipping and insertion indicators, uses a smaller height/2 scale
|
|
90
|
+
|
|
91
|
+
var indicatorViewScale = (0, _pluginWiggle.getScale)(_objectSpread(_objectSpread({}, opts), {}, {
|
|
92
|
+
range: [0, height / 2],
|
|
93
|
+
scaleType: 'linear'
|
|
94
|
+
}));
|
|
95
|
+
var originY = (0, _pluginWiggle.getOrigin)(scaleOpts.scaleType);
|
|
96
|
+
var indicatorThreshold = (0, _configuration.readConfObject)(cfg, 'indicatorThreshold');
|
|
97
|
+
var drawInterbaseCounts = (0, _configuration.readConfObject)(cfg, 'drawInterbaseCounts');
|
|
98
|
+
var drawArcs = (0, _configuration.readConfObject)(cfg, 'drawArcs');
|
|
99
|
+
var drawIndicators = (0, _configuration.readConfObject)(cfg, 'drawIndicators'); // get the y coordinate that we are plotting at, this can be log scale
|
|
100
|
+
|
|
101
|
+
var toY = function toY(n) {
|
|
102
|
+
return height - (viewScale(n) || 0) + offset;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var toHeight = function toHeight(n) {
|
|
106
|
+
return toY(originY) - toY(n);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
var indicatorToY = function indicatorToY(n) {
|
|
110
|
+
return height - (indicatorViewScale(n) || 0) + offset;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
var indicatorToHeight = function indicatorToHeight(n) {
|
|
114
|
+
return indicatorToY((0, _pluginWiggle.getOrigin)('linear')) - indicatorToY(n);
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
var colorForBase = {
|
|
118
|
+
A: theme.palette.bases.A.main,
|
|
119
|
+
C: theme.palette.bases.C.main,
|
|
120
|
+
G: theme.palette.bases.G.main,
|
|
121
|
+
T: theme.palette.bases.T.main,
|
|
122
|
+
total: 'lightgrey',
|
|
123
|
+
insertion: 'purple',
|
|
124
|
+
softclip: 'blue',
|
|
125
|
+
hardclip: 'red',
|
|
126
|
+
meth: 'red',
|
|
127
|
+
unmeth: 'blue',
|
|
128
|
+
ref: 'lightgrey'
|
|
129
|
+
};
|
|
130
|
+
var feats = (0, _toConsumableArray2["default"])(features.values());
|
|
131
|
+
var coverage = feats.filter(function (f) {
|
|
132
|
+
return f.get('type') !== 'skip';
|
|
133
|
+
});
|
|
134
|
+
var skips = feats.filter(function (f) {
|
|
135
|
+
return f.get('type') === 'skip';
|
|
136
|
+
}); // Use two pass rendering, which helps in visualizing the SNPs at higher
|
|
137
|
+
// bpPerPx First pass: draw the gray background
|
|
138
|
+
|
|
139
|
+
ctx.fillStyle = colorForBase.total;
|
|
140
|
+
|
|
141
|
+
for (var i = 0; i < coverage.length; i++) {
|
|
142
|
+
var feature = coverage[i];
|
|
143
|
+
|
|
144
|
+
var _featureSpanPx = (0, _util.featureSpanPx)(feature, region, bpPerPx),
|
|
145
|
+
_featureSpanPx2 = (0, _slicedToArray2["default"])(_featureSpanPx, 2),
|
|
146
|
+
leftPx = _featureSpanPx2[0],
|
|
147
|
+
rightPx = _featureSpanPx2[1];
|
|
148
|
+
|
|
149
|
+
var w = rightPx - leftPx + 0.3;
|
|
150
|
+
var score = feature.get('score');
|
|
151
|
+
ctx.fillRect(leftPx, toY(score), w, toHeight(score));
|
|
152
|
+
} // Keep track of previous total which we will use it to draw the interbase
|
|
153
|
+
// indicator (if there is a sudden clip, there will be no read coverage but
|
|
154
|
+
// there will be "clip" coverage) at that position beyond the read. if the
|
|
155
|
+
// clip is right at a block boundary then prevTotal will not be available,
|
|
156
|
+
// so this is a best attempt to plot interbase indicator at the "cliffs"
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
var prevTotal = 0; // extraHorizontallyFlippedOffset is used to draw interbase items, which
|
|
160
|
+
// are located to the left when forward and right when reversed
|
|
161
|
+
|
|
162
|
+
var extraHorizontallyFlippedOffset = region.reversed ? 1 / bpPerPx : 0; // Second pass: draw the SNP data, and add a minimum feature width of 1px
|
|
163
|
+
// which can be wider than the actual bpPerPx This reduces overdrawing of
|
|
164
|
+
// the grey background over the SNPs
|
|
165
|
+
|
|
166
|
+
for (var _i = 0; _i < coverage.length; _i++) {
|
|
167
|
+
var _feature = coverage[_i];
|
|
168
|
+
|
|
169
|
+
var _featureSpanPx3 = (0, _util.featureSpanPx)(_feature, region, bpPerPx),
|
|
170
|
+
_featureSpanPx4 = (0, _slicedToArray2["default"])(_featureSpanPx3, 2),
|
|
171
|
+
_leftPx = _featureSpanPx4[0],
|
|
172
|
+
_rightPx = _featureSpanPx4[1];
|
|
173
|
+
|
|
174
|
+
var _score = _feature.get('score');
|
|
175
|
+
|
|
176
|
+
var snpinfo = _feature.get('snpinfo');
|
|
177
|
+
|
|
178
|
+
var _w = Math.max(_rightPx - _leftPx + 0.3, 1);
|
|
179
|
+
|
|
180
|
+
var totalScore = snpinfo.total;
|
|
181
|
+
var keys = Object.keys(snpinfo.cov).sort();
|
|
182
|
+
var curr = 0;
|
|
183
|
+
|
|
184
|
+
for (var _i2 = 0; _i2 < keys.length; _i2++) {
|
|
185
|
+
var base = keys[_i2];
|
|
186
|
+
var total = snpinfo.cov[base].total;
|
|
187
|
+
ctx.fillStyle = colorForBase[base] || modificationTagMap[base.replace('mod_', '')] || '#888';
|
|
188
|
+
|
|
189
|
+
var _height = toHeight(_score);
|
|
190
|
+
|
|
191
|
+
var bottom = toY(_score) + _height;
|
|
192
|
+
|
|
193
|
+
ctx.fillRect(_leftPx, bottom - (total + curr) / _score * _height, _w, total / _score * _height);
|
|
194
|
+
curr += total;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
var interbaseEvents = Object.keys(snpinfo.noncov);
|
|
198
|
+
var indicatorHeight = 4.5;
|
|
199
|
+
|
|
200
|
+
if (drawInterbaseCounts) {
|
|
201
|
+
var _curr = 0;
|
|
202
|
+
|
|
203
|
+
for (var _i3 = 0; _i3 < interbaseEvents.length; _i3++) {
|
|
204
|
+
var _base = interbaseEvents[_i3];
|
|
205
|
+
var _total = snpinfo.noncov[_base].total;
|
|
206
|
+
ctx.fillStyle = colorForBase[_base];
|
|
207
|
+
ctx.fillRect(_leftPx - 0.6 + extraHorizontallyFlippedOffset, indicatorHeight + indicatorToHeight(_curr), 1.2, indicatorToHeight(_total));
|
|
208
|
+
_curr += _total;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if (drawIndicators) {
|
|
213
|
+
var accum = 0;
|
|
214
|
+
var max = 0;
|
|
215
|
+
var maxBase = '';
|
|
216
|
+
|
|
217
|
+
for (var _i4 = 0; _i4 < interbaseEvents.length; _i4++) {
|
|
218
|
+
var _base2 = interbaseEvents[_i4];
|
|
219
|
+
var _total2 = snpinfo.noncov[_base2].total;
|
|
220
|
+
accum += _total2;
|
|
221
|
+
|
|
222
|
+
if (_total2 > max) {
|
|
223
|
+
max = _total2;
|
|
224
|
+
maxBase = _base2;
|
|
225
|
+
}
|
|
226
|
+
} // avoid drawing a bunch of indicators if coverage is very low e.g.
|
|
227
|
+
// less than 7, uses the prev total in the case of the "cliff"
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
var indicatorComparatorScore = Math.max(totalScore, prevTotal);
|
|
231
|
+
|
|
232
|
+
if (accum > indicatorComparatorScore * indicatorThreshold && indicatorComparatorScore > 7) {
|
|
233
|
+
ctx.fillStyle = colorForBase[maxBase];
|
|
234
|
+
ctx.beginPath();
|
|
235
|
+
var l = _leftPx + extraHorizontallyFlippedOffset;
|
|
236
|
+
ctx.moveTo(l - 3.5, 0);
|
|
237
|
+
ctx.lineTo(l + 3.5, 0);
|
|
238
|
+
ctx.lineTo(l, indicatorHeight);
|
|
239
|
+
ctx.fill();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
prevTotal = totalScore;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (drawArcs) {
|
|
247
|
+
for (var _i5 = 0; _i5 < skips.length; _i5++) {
|
|
248
|
+
var f = skips[_i5];
|
|
249
|
+
|
|
250
|
+
var _bpSpanPx = (0, _util.bpSpanPx)(f.get('start'), f.get('end'), region, bpPerPx),
|
|
251
|
+
_bpSpanPx2 = (0, _slicedToArray2["default"])(_bpSpanPx, 2),
|
|
252
|
+
left = _bpSpanPx2[0],
|
|
253
|
+
right = _bpSpanPx2[1];
|
|
254
|
+
|
|
255
|
+
ctx.beginPath();
|
|
256
|
+
var str = f.get('strand');
|
|
257
|
+
var xs = f.get('xs');
|
|
258
|
+
var pos = 'rgba(255,200,200,0.7)';
|
|
259
|
+
var neg = 'rgba(200,200,255,0.7)';
|
|
260
|
+
var neutral = 'rgba(200,200,200,0.7)';
|
|
261
|
+
|
|
262
|
+
if (xs === '+') {
|
|
263
|
+
ctx.strokeStyle = pos;
|
|
264
|
+
} else if (xs === '-') {
|
|
265
|
+
ctx.strokeStyle = neg;
|
|
266
|
+
} else if (str === 1) {
|
|
267
|
+
ctx.strokeStyle = pos;
|
|
268
|
+
} else if (str === -1) {
|
|
269
|
+
ctx.strokeStyle = neg;
|
|
270
|
+
} else {
|
|
271
|
+
ctx.strokeStyle = neutral;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
ctx.lineWidth = Math.log(f.get('score') + 1);
|
|
275
|
+
ctx.moveTo(left, height - offset * 2);
|
|
276
|
+
ctx.bezierCurveTo(left, 0, right, 0, right, height - offset * 2);
|
|
277
|
+
ctx.stroke();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
if (displayCrossHatches) {
|
|
282
|
+
ctx.lineWidth = 1;
|
|
283
|
+
ctx.strokeStyle = 'rgba(140,140,140,0.8)';
|
|
284
|
+
ticks.values.forEach(function (tick) {
|
|
285
|
+
ctx.beginPath();
|
|
286
|
+
ctx.moveTo(0, Math.round(toY(tick)));
|
|
287
|
+
ctx.lineTo(width, Math.round(toY(tick)));
|
|
288
|
+
ctx.stroke();
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}]);
|
|
293
|
+
return SNPCoverageRenderer;
|
|
294
|
+
}(_pluginWiggle.WiggleBaseRenderer);
|
|
295
|
+
|
|
296
|
+
exports["default"] = SNPCoverageRenderer;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare var _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
2
|
-
export default _default;
|
|
1
|
+
declare var _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
9
|
+
|
|
10
|
+
var _default = (0, _configuration.ConfigurationSchema)('SNPCoverageRenderer', {
|
|
11
|
+
clipColor: {
|
|
12
|
+
type: 'color',
|
|
13
|
+
description: 'the color of the clipping marker',
|
|
14
|
+
defaultValue: 'red'
|
|
15
|
+
},
|
|
16
|
+
indicatorThreshold: {
|
|
17
|
+
type: 'number',
|
|
18
|
+
description: 'the proportion of reads containing a insertion/clip indicator',
|
|
19
|
+
defaultValue: 0.4
|
|
20
|
+
},
|
|
21
|
+
drawArcs: {
|
|
22
|
+
type: 'boolean',
|
|
23
|
+
description: 'Draw sashimi-style arcs for intron features',
|
|
24
|
+
defaultValue: true
|
|
25
|
+
},
|
|
26
|
+
drawInterbaseCounts: {
|
|
27
|
+
type: 'boolean',
|
|
28
|
+
description: 'draw count "upsidedown histogram" of the interbase events that don\'t contribute to the coverage count so are not drawn in the normal histogram',
|
|
29
|
+
defaultValue: true
|
|
30
|
+
},
|
|
31
|
+
drawIndicators: {
|
|
32
|
+
type: 'boolean',
|
|
33
|
+
description: 'draw a triangular indicator where an event has been detected',
|
|
34
|
+
defaultValue: true
|
|
35
|
+
}
|
|
36
|
+
}, {
|
|
37
|
+
explicitlyTyped: true
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
exports["default"] = _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import PluginManager from '@jbrowse/core/PluginManager';
|
|
2
|
-
export declare const configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
3
|
-
export default function register(pluginManager: PluginManager): void;
|
|
1
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
2
|
+
export declare const configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
3
|
+
export default function register(pluginManager: PluginManager): void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.configSchema = void 0;
|
|
9
|
+
exports["default"] = register;
|
|
10
|
+
|
|
11
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
12
|
+
|
|
13
|
+
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
14
|
+
|
|
15
|
+
var _SNPCoverageRenderer = _interopRequireDefault(require("./SNPCoverageRenderer"));
|
|
16
|
+
|
|
17
|
+
var _pluginWiggle = require("@jbrowse/plugin-wiggle");
|
|
18
|
+
|
|
19
|
+
var configSchema = (0, _configuration.ConfigurationSchema)('SNPCoverageRenderer', {}, {
|
|
20
|
+
baseConfiguration: _configSchema["default"],
|
|
21
|
+
explicitlyTyped: true
|
|
22
|
+
});
|
|
23
|
+
exports.configSchema = configSchema;
|
|
24
|
+
|
|
25
|
+
function register(pluginManager) {
|
|
26
|
+
pluginManager.addRendererType(function () {
|
|
27
|
+
return new _SNPCoverageRenderer["default"]({
|
|
28
|
+
name: 'SNPCoverageRenderer',
|
|
29
|
+
ReactComponent: _pluginWiggle.WiggleRendering,
|
|
30
|
+
configSchema: configSchema,
|
|
31
|
+
pluginManager: pluginManager
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import Plugin from '@jbrowse/core/Plugin';
|
|
2
|
-
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
-
import * as MismatchParser from './BamAdapter/MismatchParser';
|
|
4
|
-
import { LinearPileupDisplayModel } from './LinearPileupDisplay/model';
|
|
5
|
-
export { MismatchParser };
|
|
6
|
-
export type { LinearPileupDisplayModel };
|
|
7
|
-
export default class AlignmentsPlugin extends Plugin {
|
|
8
|
-
name: string;
|
|
9
|
-
install(pluginManager: PluginManager): void;
|
|
10
|
-
}
|
|
1
|
+
import Plugin from '@jbrowse/core/Plugin';
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
+
import * as MismatchParser from './BamAdapter/MismatchParser';
|
|
4
|
+
import { LinearPileupDisplayModel } from './LinearPileupDisplay/model';
|
|
5
|
+
export { MismatchParser };
|
|
6
|
+
export type { LinearPileupDisplayModel };
|
|
7
|
+
export default class AlignmentsPlugin extends Plugin {
|
|
8
|
+
name: string;
|
|
9
|
+
install(pluginManager: PluginManager): void;
|
|
10
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
|
|
2
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = exports.MismatchParser = void 0;
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
|
|
16
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var _Plugin2 = _interopRequireDefault(require("@jbrowse/core/Plugin"));
|
|
27
|
+
|
|
28
|
+
var MismatchParser = _interopRequireWildcard(require("./BamAdapter/MismatchParser"));
|
|
29
|
+
|
|
30
|
+
exports.MismatchParser = MismatchParser;
|
|
31
|
+
|
|
32
|
+
var _CramAdapter = _interopRequireDefault(require("./CramAdapter"));
|
|
33
|
+
|
|
34
|
+
var _BamAdapter = _interopRequireDefault(require("./BamAdapter"));
|
|
35
|
+
|
|
36
|
+
var _HtsgetBamAdapter = _interopRequireDefault(require("./HtsgetBamAdapter"));
|
|
37
|
+
|
|
38
|
+
var _SNPCoverageAdapter = _interopRequireDefault(require("./SNPCoverageAdapter"));
|
|
39
|
+
|
|
40
|
+
var _SNPCoverageRenderer = _interopRequireDefault(require("./SNPCoverageRenderer"));
|
|
41
|
+
|
|
42
|
+
var _PileupRenderer = _interopRequireDefault(require("./PileupRenderer"));
|
|
43
|
+
|
|
44
|
+
var _LinearAlignmentsDisplay = _interopRequireDefault(require("./LinearAlignmentsDisplay"));
|
|
45
|
+
|
|
46
|
+
var _LinearSNPCoverageDisplay = _interopRequireDefault(require("./LinearSNPCoverageDisplay"));
|
|
47
|
+
|
|
48
|
+
var _LinearPileupDisplay = _interopRequireDefault(require("./LinearPileupDisplay"));
|
|
49
|
+
|
|
50
|
+
var _AlignmentsTrack = _interopRequireDefault(require("./AlignmentsTrack"));
|
|
51
|
+
|
|
52
|
+
var _AlignmentsFeatureDetail = _interopRequireDefault(require("./AlignmentsFeatureDetail"));
|
|
53
|
+
|
|
54
|
+
var _rpcMethods = require("./PileupRPC/rpcMethods");
|
|
55
|
+
|
|
56
|
+
var _tracks = require("@jbrowse/core/util/tracks");
|
|
57
|
+
|
|
58
|
+
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); }
|
|
59
|
+
|
|
60
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
|
|
61
|
+
|
|
62
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
63
|
+
|
|
64
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
65
|
+
|
|
66
|
+
var AlignmentsPlugin = /*#__PURE__*/function (_Plugin) {
|
|
67
|
+
(0, _inherits2["default"])(AlignmentsPlugin, _Plugin);
|
|
68
|
+
|
|
69
|
+
var _super = _createSuper(AlignmentsPlugin);
|
|
70
|
+
|
|
71
|
+
function AlignmentsPlugin() {
|
|
72
|
+
var _this;
|
|
73
|
+
|
|
74
|
+
(0, _classCallCheck2["default"])(this, AlignmentsPlugin);
|
|
75
|
+
|
|
76
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
77
|
+
args[_key] = arguments[_key];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
81
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "name", 'AlignmentsPlugin');
|
|
82
|
+
return _this;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
(0, _createClass2["default"])(AlignmentsPlugin, [{
|
|
86
|
+
key: "install",
|
|
87
|
+
value: function install(pluginManager) {
|
|
88
|
+
;
|
|
89
|
+
[_BamAdapter["default"], _CramAdapter["default"], _LinearPileupDisplay["default"], _LinearSNPCoverageDisplay["default"], _AlignmentsTrack["default"], _SNPCoverageAdapter["default"], _HtsgetBamAdapter["default"], _PileupRenderer["default"], _SNPCoverageRenderer["default"], _LinearAlignmentsDisplay["default"], _AlignmentsFeatureDetail["default"]].map(function (f) {
|
|
90
|
+
return f(pluginManager);
|
|
91
|
+
});
|
|
92
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', function (adapterGuesser) {
|
|
93
|
+
return function (file, index, adapterHint) {
|
|
94
|
+
var regexGuess = /\.cram$/i;
|
|
95
|
+
var adapterName = 'CramAdapter';
|
|
96
|
+
var fileName = (0, _tracks.getFileName)(file);
|
|
97
|
+
var obj = {
|
|
98
|
+
type: adapterName,
|
|
99
|
+
cramLocation: file,
|
|
100
|
+
craiLocation: index || (0, _tracks.makeIndex)(file, '.crai')
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
104
|
+
return obj;
|
|
105
|
+
} else if (adapterHint === adapterName) {
|
|
106
|
+
return obj;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return adapterGuesser(file, index, adapterHint);
|
|
110
|
+
};
|
|
111
|
+
});
|
|
112
|
+
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', function (adapterGuesser) {
|
|
113
|
+
return function (file, index, adapterHint) {
|
|
114
|
+
var regexGuess = /\.bam$/i;
|
|
115
|
+
var adapterName = 'BamAdapter';
|
|
116
|
+
var fileName = (0, _tracks.getFileName)(file);
|
|
117
|
+
var indexName = index && (0, _tracks.getFileName)(index);
|
|
118
|
+
var obj = {
|
|
119
|
+
type: adapterName,
|
|
120
|
+
bamLocation: file,
|
|
121
|
+
index: {
|
|
122
|
+
location: index || (0, _tracks.makeIndex)(file, '.bai'),
|
|
123
|
+
indexType: (0, _tracks.makeIndexType)(indexName, 'CSI', 'BAI')
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
if (regexGuess.test(fileName) && !adapterHint) {
|
|
128
|
+
return obj;
|
|
129
|
+
} else if (adapterHint === adapterName) {
|
|
130
|
+
return obj;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return adapterGuesser(file, index, adapterHint);
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', function (trackTypeGuesser) {
|
|
137
|
+
return function (adapterName) {
|
|
138
|
+
if (adapterName === 'BamAdapter' || adapterName === 'CramAdapter') {
|
|
139
|
+
return 'AlignmentsTrack';
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return trackTypeGuesser(adapterName);
|
|
143
|
+
};
|
|
144
|
+
});
|
|
145
|
+
pluginManager.addRpcMethod(function () {
|
|
146
|
+
return new _rpcMethods.PileupGetGlobalValueForTag(pluginManager);
|
|
147
|
+
});
|
|
148
|
+
pluginManager.addRpcMethod(function () {
|
|
149
|
+
return new _rpcMethods.PileupGetVisibleModifications(pluginManager);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}]);
|
|
153
|
+
return AlignmentsPlugin;
|
|
154
|
+
}(_Plugin2["default"]);
|
|
155
|
+
|
|
156
|
+
exports["default"] = AlignmentsPlugin;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _PluginManager = _interopRequireDefault(require("@jbrowse/core/PluginManager"));
|
|
6
|
+
|
|
7
|
+
var _pluginSvg = _interopRequireDefault(require("@jbrowse/plugin-svg"));
|
|
8
|
+
|
|
9
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
10
|
+
|
|
11
|
+
var _ = _interopRequireDefault(require("."));
|
|
12
|
+
|
|
13
|
+
test('plugin in a stock JBrowse', function () {
|
|
14
|
+
console.warn = jest.fn();
|
|
15
|
+
var pluginManager = new _PluginManager["default"]([new _["default"](), new _pluginSvg["default"]()]);
|
|
16
|
+
pluginManager.createPluggableElements();
|
|
17
|
+
pluginManager.configure();
|
|
18
|
+
expect(function () {
|
|
19
|
+
return pluginManager.addPlugin(new _["default"]());
|
|
20
|
+
}).toThrow(/JBrowse already configured, cannot add plugins/);
|
|
21
|
+
var BamAdapter = pluginManager.getAdapterType('BamAdapter');
|
|
22
|
+
var config = BamAdapter.configSchema.create({
|
|
23
|
+
type: 'BamAdapter'
|
|
24
|
+
});
|
|
25
|
+
expect((0, _mobxStateTree.getSnapshot)(config)).toMatchSnapshot();
|
|
26
|
+
});
|