@jbrowse/plugin-alignments 1.7.9 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +192 -207
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
- package/dist/AlignmentsFeatureDetail/index.d.ts +28 -3
- package/dist/AlignmentsFeatureDetail/index.js +48 -55
- package/dist/AlignmentsFeatureDetail/index.js.map +1 -0
- package/dist/AlignmentsTrack/index.js +24 -32
- package/dist/AlignmentsTrack/index.js.map +1 -0
- package/dist/BamAdapter/BamAdapter.js +345 -585
- package/dist/BamAdapter/BamAdapter.js.map +1 -0
- package/dist/BamAdapter/BamSlightlyLazyFeature.js +143 -174
- package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
- package/dist/BamAdapter/MismatchParser.js +340 -416
- package/dist/BamAdapter/MismatchParser.js.map +1 -0
- package/dist/BamAdapter/configSchema.js +33 -46
- package/dist/BamAdapter/configSchema.js.map +1 -0
- package/dist/BamAdapter/index.js +36 -32
- package/dist/BamAdapter/index.js.map +1 -0
- package/dist/CramAdapter/CramAdapter.js +376 -644
- package/dist/CramAdapter/CramAdapter.js.map +1 -0
- package/dist/CramAdapter/CramSlightlyLazyFeature.js +374 -439
- package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
- package/dist/CramAdapter/CramTestAdapters.js +169 -227
- package/dist/CramAdapter/CramTestAdapters.js.map +1 -0
- package/dist/CramAdapter/configSchema.js +28 -38
- package/dist/CramAdapter/configSchema.js.map +1 -0
- package/dist/CramAdapter/index.js +37 -32
- package/dist/CramAdapter/index.js.map +1 -0
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +91 -93
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
- package/dist/HtsgetBamAdapter/configSchema.js +19 -29
- package/dist/HtsgetBamAdapter/configSchema.js.map +1 -0
- package/dist/HtsgetBamAdapter/index.js +44 -38
- package/dist/HtsgetBamAdapter/index.js.map +1 -0
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +36 -65
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
- package/dist/LinearAlignmentsDisplay/index.js +22 -28
- package/dist/LinearAlignmentsDisplay/index.js.map +1 -0
- package/dist/LinearAlignmentsDisplay/models/configSchema.js +12 -23
- package/dist/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
- package/dist/LinearAlignmentsDisplay/models/model.d.ts +10 -10
- package/dist/LinearAlignmentsDisplay/models/model.js +257 -245
- package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -0
- package/dist/LinearPileupDisplay/components/ColorByModifications.js +98 -116
- package/dist/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
- package/dist/LinearPileupDisplay/components/ColorByTag.js +82 -91
- package/dist/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
- package/dist/LinearPileupDisplay/components/FilterByTag.js +156 -192
- package/dist/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +15 -29
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
- package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +79 -93
- package/dist/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
- package/dist/LinearPileupDisplay/components/SetMaxHeight.js +78 -81
- package/dist/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
- package/dist/LinearPileupDisplay/components/SortByTag.js +80 -88
- package/dist/LinearPileupDisplay/components/SortByTag.js.map +1 -0
- package/dist/LinearPileupDisplay/configSchema.js +40 -42
- package/dist/LinearPileupDisplay/configSchema.js.map +1 -0
- package/dist/LinearPileupDisplay/index.js +21 -27
- package/dist/LinearPileupDisplay/index.js.map +1 -0
- package/dist/LinearPileupDisplay/model.d.ts +33 -20
- package/dist/LinearPileupDisplay/model.js +702 -716
- package/dist/LinearPileupDisplay/model.js.map +1 -0
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +105 -57
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
- package/dist/LinearSNPCoverageDisplay/index.js +21 -27
- package/dist/LinearSNPCoverageDisplay/index.js.map +1 -0
- package/dist/LinearSNPCoverageDisplay/models/configSchema.js +45 -55
- package/dist/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +14 -12
- package/dist/LinearSNPCoverageDisplay/models/model.js +257 -230
- package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -0
- package/dist/NestedFrequencyTable.js +104 -139
- package/dist/NestedFrequencyTable.js.map +1 -0
- package/dist/PileupRPC/rpcMethods.js +199 -278
- package/dist/PileupRPC/rpcMethods.js.map +1 -0
- package/dist/PileupRenderer/PileupLayoutSession.js +56 -76
- package/dist/PileupRenderer/PileupLayoutSession.js.map +1 -0
- package/dist/PileupRenderer/PileupRenderer.d.ts +56 -11
- package/dist/PileupRenderer/PileupRenderer.js +942 -1134
- package/dist/PileupRenderer/PileupRenderer.js.map +1 -0
- package/dist/PileupRenderer/components/PileupRendering.d.ts +1 -1
- package/dist/PileupRenderer/components/PileupRendering.js +173 -253
- package/dist/PileupRenderer/components/PileupRendering.js.map +1 -0
- package/dist/PileupRenderer/configSchema.js +65 -71
- package/dist/PileupRenderer/configSchema.js.map +1 -0
- package/dist/PileupRenderer/index.js +17 -22
- package/dist/PileupRenderer/index.js.map +1 -0
- package/dist/PileupRenderer/sortUtil.js +83 -107
- package/dist/PileupRenderer/sortUtil.js.map +1 -0
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +2 -0
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +436 -586
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
- package/dist/SNPCoverageAdapter/configSchema.js +10 -20
- package/dist/SNPCoverageAdapter/configSchema.js.map +1 -0
- package/dist/SNPCoverageAdapter/index.js +46 -41
- package/dist/SNPCoverageAdapter/index.js.map +1 -0
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -1
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +265 -290
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
- package/dist/SNPCoverageRenderer/configSchema.js +30 -39
- package/dist/SNPCoverageRenderer/configSchema.js.map +1 -0
- package/dist/SNPCoverageRenderer/index.js +19 -30
- package/dist/SNPCoverageRenderer/index.js.map +1 -0
- package/dist/index.js +135 -152
- package/dist/index.js.map +1 -0
- package/dist/shared.js +84 -92
- package/dist/shared.js.map +1 -0
- package/dist/util.js +130 -121
- package/dist/util.js.map +1 -0
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -0
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +145 -0
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
- package/esm/AlignmentsFeatureDetail/index.d.ts +38 -0
- package/esm/AlignmentsFeatureDetail/index.js +23 -0
- package/esm/AlignmentsFeatureDetail/index.js.map +1 -0
- package/esm/AlignmentsTrack/index.d.ts +2 -0
- package/esm/AlignmentsTrack/index.js +23 -0
- package/esm/AlignmentsTrack/index.js.map +1 -0
- package/esm/BamAdapter/BamAdapter.d.ts +40 -0
- package/esm/BamAdapter/BamAdapter.js +173 -0
- package/esm/BamAdapter/BamAdapter.js.map +1 -0
- package/esm/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -0
- package/esm/BamAdapter/BamSlightlyLazyFeature.js +107 -0
- package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
- package/esm/BamAdapter/MismatchParser.d.ts +25 -0
- package/esm/BamAdapter/MismatchParser.js +294 -0
- package/esm/BamAdapter/MismatchParser.js.map +1 -0
- package/esm/BamAdapter/configSchema.d.ts +2 -0
- package/esm/BamAdapter/configSchema.js +31 -0
- package/esm/BamAdapter/configSchema.js.map +1 -0
- package/esm/BamAdapter/index.d.ts +3 -0
- package/esm/BamAdapter/index.js +10 -0
- package/esm/BamAdapter/index.js.map +1 -0
- package/esm/CramAdapter/CramAdapter.d.ts +53 -0
- package/esm/CramAdapter/CramAdapter.js +228 -0
- package/esm/CramAdapter/CramAdapter.js.map +1 -0
- package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -0
- package/esm/CramAdapter/CramSlightlyLazyFeature.js +349 -0
- package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
- package/esm/CramAdapter/CramTestAdapters.d.ts +29 -0
- package/esm/CramAdapter/CramTestAdapters.js +70 -0
- package/esm/CramAdapter/CramTestAdapters.js.map +1 -0
- package/esm/CramAdapter/configSchema.d.ts +3 -0
- package/esm/CramAdapter/configSchema.js +26 -0
- package/esm/CramAdapter/configSchema.js.map +1 -0
- package/esm/CramAdapter/index.d.ts +3 -0
- package/esm/CramAdapter/index.js +11 -0
- package/esm/CramAdapter/index.js.map +1 -0
- package/esm/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -0
- package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js +27 -0
- package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
- package/esm/HtsgetBamAdapter/configSchema.d.ts +2 -0
- package/esm/HtsgetBamAdapter/configSchema.js +17 -0
- package/esm/HtsgetBamAdapter/configSchema.js.map +1 -0
- package/esm/HtsgetBamAdapter/index.d.ts +3 -0
- package/esm/HtsgetBamAdapter/index.js +16 -0
- package/esm/HtsgetBamAdapter/index.js.map +1 -0
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -0
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +34 -0
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
- package/esm/LinearAlignmentsDisplay/index.d.ts +2 -0
- package/esm/LinearAlignmentsDisplay/index.js +19 -0
- package/esm/LinearAlignmentsDisplay/index.js.map +1 -0
- package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -0
- package/esm/LinearAlignmentsDisplay/models/configSchema.js +12 -0
- package/esm/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
- package/esm/LinearAlignmentsDisplay/models/model.d.ts +105 -0
- package/esm/LinearAlignmentsDisplay/models/model.js +181 -0
- package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -0
- package/esm/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -0
- package/esm/LinearPileupDisplay/components/ColorByModifications.js +71 -0
- package/esm/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
- package/esm/LinearPileupDisplay/components/ColorByTag.d.ts +9 -0
- package/esm/LinearPileupDisplay/components/ColorByTag.js +45 -0
- package/esm/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
- package/esm/LinearPileupDisplay/components/FilterByTag.d.ts +18 -0
- package/esm/LinearPileupDisplay/components/FilterByTag.js +123 -0
- package/esm/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
- package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -0
- package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +13 -0
- package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
- package/esm/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -0
- package/esm/LinearPileupDisplay/components/SetFeatureHeight.js +41 -0
- package/esm/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
- package/esm/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -0
- package/esm/LinearPileupDisplay/components/SetMaxHeight.js +43 -0
- package/esm/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
- package/esm/LinearPileupDisplay/components/SortByTag.d.ts +9 -0
- package/esm/LinearPileupDisplay/components/SortByTag.js +43 -0
- package/esm/LinearPileupDisplay/components/SortByTag.js.map +1 -0
- package/esm/LinearPileupDisplay/configSchema.d.ts +6 -0
- package/esm/LinearPileupDisplay/configSchema.js +41 -0
- package/esm/LinearPileupDisplay/configSchema.js.map +1 -0
- package/esm/LinearPileupDisplay/index.d.ts +2 -0
- package/esm/LinearPileupDisplay/index.js +18 -0
- package/esm/LinearPileupDisplay/index.js.map +1 -0
- package/esm/LinearPileupDisplay/model.d.ts +332 -0
- package/esm/LinearPileupDisplay/model.js +576 -0
- package/esm/LinearPileupDisplay/model.js.map +1 -0
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -0
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.js +57 -0
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
- package/esm/LinearSNPCoverageDisplay/index.d.ts +2 -0
- package/esm/LinearSNPCoverageDisplay/index.js +18 -0
- package/esm/LinearSNPCoverageDisplay/index.js.map +1 -0
- package/esm/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -0
- package/esm/LinearSNPCoverageDisplay/models/configSchema.js +44 -0
- package/esm/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
- package/esm/LinearSNPCoverageDisplay/models/model.d.ts +348 -0
- package/esm/LinearSNPCoverageDisplay/models/model.js +185 -0
- package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -0
- package/esm/NestedFrequencyTable.d.ts +14 -0
- package/esm/NestedFrequencyTable.js +101 -0
- package/esm/NestedFrequencyTable.js.map +1 -0
- package/esm/PileupRPC/rpcMethods.d.ts +34 -0
- package/esm/PileupRPC/rpcMethods.js +70 -0
- package/esm/PileupRPC/rpcMethods.js.map +1 -0
- package/esm/PileupRenderer/PileupLayoutSession.d.ts +32 -0
- package/esm/PileupRenderer/PileupLayoutSession.js +32 -0
- package/esm/PileupRenderer/PileupLayoutSession.js.map +1 -0
- package/esm/PileupRenderer/PileupRenderer.d.ts +182 -0
- package/esm/PileupRenderer/PileupRenderer.js +830 -0
- package/esm/PileupRenderer/PileupRenderer.js.map +1 -0
- package/esm/PileupRenderer/components/PileupRendering.d.ts +23 -0
- package/esm/PileupRenderer/components/PileupRendering.js +138 -0
- package/esm/PileupRenderer/components/PileupRendering.js.map +1 -0
- package/esm/PileupRenderer/configSchema.d.ts +2 -0
- package/esm/PileupRenderer/configSchema.js +64 -0
- package/esm/PileupRenderer/configSchema.js.map +1 -0
- package/esm/PileupRenderer/index.d.ts +2 -0
- package/esm/PileupRenderer/index.js +12 -0
- package/esm/PileupRenderer/index.js.map +1 -0
- package/esm/PileupRenderer/sortUtil.d.ts +8 -0
- package/esm/PileupRenderer/sortUtil.js +80 -0
- package/esm/PileupRenderer/sortUtil.js.map +1 -0
- package/esm/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -0
- package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +259 -0
- package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
- package/esm/SNPCoverageAdapter/configSchema.d.ts +3 -0
- package/esm/SNPCoverageAdapter/configSchema.js +6 -0
- package/esm/SNPCoverageAdapter/configSchema.js.map +1 -0
- package/esm/SNPCoverageAdapter/index.d.ts +3 -0
- package/esm/SNPCoverageAdapter/index.js +18 -0
- package/esm/SNPCoverageAdapter/index.js.map +1 -0
- package/esm/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -0
- package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +185 -0
- package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
- package/esm/SNPCoverageRenderer/configSchema.d.ts +2 -0
- package/esm/SNPCoverageRenderer/configSchema.js +29 -0
- package/esm/SNPCoverageRenderer/configSchema.js.map +1 -0
- package/esm/SNPCoverageRenderer/index.d.ts +3 -0
- package/esm/SNPCoverageRenderer/index.js +14 -0
- package/esm/SNPCoverageRenderer/index.js.map +1 -0
- package/esm/index.d.ts +10 -0
- package/esm/index.js +91 -0
- package/esm/index.js.map +1 -0
- package/esm/shared.d.ts +25 -0
- package/esm/shared.js +28 -0
- package/esm/shared.js.map +1 -0
- package/esm/util.d.ts +19 -0
- package/esm/util.js +83 -0
- package/esm/util.js.map +1 -0
- package/package.json +19 -11
- package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +16 -6
- package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +321 -397
- package/src/AlignmentsFeatureDetail/index.ts +7 -17
- package/src/BamAdapter/MismatchParser.ts +1 -0
- package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +3 -3
- package/src/LinearPileupDisplay/components/ColorByModifications.tsx +7 -7
- package/src/LinearPileupDisplay/components/ColorByTag.tsx +5 -5
- package/src/LinearPileupDisplay/components/FilterByTag.tsx +5 -5
- package/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx +1 -1
- package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +9 -9
- package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +5 -5
- package/src/LinearPileupDisplay/components/SortByTag.tsx +5 -5
- package/src/LinearPileupDisplay/model.ts +90 -32
- package/src/LinearSNPCoverageDisplay/components/Tooltip.tsx +44 -30
- package/src/LinearSNPCoverageDisplay/models/model.ts +25 -25
- package/src/PileupRenderer/PileupRenderer.tsx +399 -198
- package/src/PileupRenderer/components/PileupRendering.tsx +11 -11
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +5 -0
- package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +7 -5
- package/dist/AlignmentsFeatureDetail/index.test.js +0 -60
- package/dist/BamAdapter/BamAdapter.test.js +0 -177
- package/dist/BamAdapter/MismatchParser.test.js +0 -251
- package/dist/CramAdapter/CramAdapter.test.js +0 -138
- package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +0 -83
- package/dist/LinearPileupDisplay/configSchema.test.js +0 -92
- package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +0 -62
- package/dist/PileupRenderer/components/PileupRendering.test.js +0 -36
- package/dist/declare.d.js +0 -1
- package/dist/index.test.js +0 -26
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
2
|
+
import SimpleFeature from '@jbrowse/core/util/simpleFeature';
|
|
3
|
+
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
4
|
+
import { toArray } from 'rxjs/operators';
|
|
5
|
+
import { getTag, getTagAlt, fetchSequence, shouldFetchReferenceSequence, } from '../util';
|
|
6
|
+
import { parseCigar, getNextRefPos, getModificationPositions, } from '../BamAdapter/MismatchParser';
|
|
7
|
+
function mismatchLen(mismatch) {
|
|
8
|
+
return !isInterbase(mismatch.type) ? mismatch.length : 1;
|
|
9
|
+
}
|
|
10
|
+
function isInterbase(type) {
|
|
11
|
+
return type === 'softclip' || type === 'hardclip' || type === 'insertion';
|
|
12
|
+
}
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
function inc(bin, strand, type, field) {
|
|
15
|
+
let thisBin = bin[type][field];
|
|
16
|
+
if (thisBin === undefined) {
|
|
17
|
+
thisBin = bin[type][field] = {
|
|
18
|
+
total: 0,
|
|
19
|
+
'-1': 0,
|
|
20
|
+
'0': 0,
|
|
21
|
+
'1': 0,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
thisBin.total++;
|
|
25
|
+
thisBin[strand]++;
|
|
26
|
+
}
|
|
27
|
+
export default class SNPCoverageAdapter extends BaseFeatureDataAdapter {
|
|
28
|
+
async configure() {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
const subadapterConfig = this.getConf('subadapter');
|
|
31
|
+
const sequenceConf = this.getConf(['subadapter', 'sequenceAdapter']);
|
|
32
|
+
const dataAdapter = await ((_a = this.getSubAdapter) === null || _a === void 0 ? void 0 : _a.call(this, subadapterConfig));
|
|
33
|
+
const sequenceAdapter = sequenceConf
|
|
34
|
+
? await ((_b = this.getSubAdapter) === null || _b === void 0 ? void 0 : _b.call(this, sequenceConf))
|
|
35
|
+
: undefined;
|
|
36
|
+
if (!dataAdapter) {
|
|
37
|
+
throw new Error('Failed to get subadapter');
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
subadapter: dataAdapter.dataAdapter,
|
|
41
|
+
sequenceAdapter: sequenceAdapter === null || sequenceAdapter === void 0 ? void 0 : sequenceAdapter.dataAdapter,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async fetchSequence(region) {
|
|
45
|
+
const { sequenceAdapter } = await this.configure();
|
|
46
|
+
if (!sequenceAdapter) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
return fetchSequence(region, sequenceAdapter);
|
|
50
|
+
}
|
|
51
|
+
getFeatures(region, opts = {}) {
|
|
52
|
+
return ObservableCreate(async (observer) => {
|
|
53
|
+
const { subadapter } = await this.configure();
|
|
54
|
+
const feats = await subadapter
|
|
55
|
+
.getFeatures(region, opts)
|
|
56
|
+
.pipe(toArray())
|
|
57
|
+
.toPromise();
|
|
58
|
+
const { bins, skipmap } = await this.generateCoverageBins(feats, region, opts);
|
|
59
|
+
bins.forEach((bin, index) => {
|
|
60
|
+
observer.next(new SimpleFeature({
|
|
61
|
+
id: `${this.id}-${region.start + index}`,
|
|
62
|
+
data: {
|
|
63
|
+
score: bin.total,
|
|
64
|
+
snpinfo: bin,
|
|
65
|
+
start: region.start + index,
|
|
66
|
+
end: region.start + index + 1,
|
|
67
|
+
refName: region.refName,
|
|
68
|
+
},
|
|
69
|
+
}));
|
|
70
|
+
});
|
|
71
|
+
// make fake features from the coverage
|
|
72
|
+
Object.entries(skipmap).forEach(([key, skip]) => {
|
|
73
|
+
observer.next(new SimpleFeature({
|
|
74
|
+
id: key,
|
|
75
|
+
data: {
|
|
76
|
+
type: 'skip',
|
|
77
|
+
start: skip.start,
|
|
78
|
+
end: skip.end,
|
|
79
|
+
strand: skip.strand,
|
|
80
|
+
score: skip.score,
|
|
81
|
+
xs: skip.xs,
|
|
82
|
+
},
|
|
83
|
+
}));
|
|
84
|
+
});
|
|
85
|
+
observer.complete();
|
|
86
|
+
}, opts.signal);
|
|
87
|
+
}
|
|
88
|
+
async estimateRegionsStats(regions, opts) {
|
|
89
|
+
const { subadapter } = await this.configure();
|
|
90
|
+
return subadapter.estimateRegionsStats(regions, opts);
|
|
91
|
+
}
|
|
92
|
+
async getRefNames(opts = {}) {
|
|
93
|
+
const { subadapter } = await this.configure();
|
|
94
|
+
return subadapter.getRefNames(opts);
|
|
95
|
+
}
|
|
96
|
+
freeResources( /* { region } */) { }
|
|
97
|
+
async generateCoverageBins(features, region, opts) {
|
|
98
|
+
var _a;
|
|
99
|
+
const { colorBy } = opts;
|
|
100
|
+
const binMax = Math.ceil(region.end - region.start);
|
|
101
|
+
const skipmap = {};
|
|
102
|
+
const regionSeq = features.length && shouldFetchReferenceSequence((_a = opts.colorBy) === null || _a === void 0 ? void 0 : _a.type)
|
|
103
|
+
? await this.fetchSequence(region)
|
|
104
|
+
: undefined;
|
|
105
|
+
const bins = [];
|
|
106
|
+
for (let i = 0; i < features.length; i++) {
|
|
107
|
+
const feature = features[i];
|
|
108
|
+
const fstart = feature.get('start');
|
|
109
|
+
const fend = feature.get('end');
|
|
110
|
+
const fstrand = feature.get('strand');
|
|
111
|
+
for (let j = fstart; j < fend + 1; j++) {
|
|
112
|
+
const i = j - region.start;
|
|
113
|
+
if (i >= 0 && i < binMax) {
|
|
114
|
+
if (bins[i] === undefined) {
|
|
115
|
+
bins[i] = {
|
|
116
|
+
total: 0,
|
|
117
|
+
all: 0,
|
|
118
|
+
ref: 0,
|
|
119
|
+
'-1': 0,
|
|
120
|
+
'0': 0,
|
|
121
|
+
'1': 0,
|
|
122
|
+
lowqual: {},
|
|
123
|
+
cov: {},
|
|
124
|
+
delskips: {},
|
|
125
|
+
noncov: {},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (j !== fend) {
|
|
129
|
+
bins[i].total++;
|
|
130
|
+
bins[i].all++;
|
|
131
|
+
bins[i].ref++;
|
|
132
|
+
bins[i][fstrand]++;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if ((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications') {
|
|
137
|
+
const seq = feature.get('seq');
|
|
138
|
+
const mm = getTagAlt(feature, 'MM', 'Mm') || '';
|
|
139
|
+
const ops = parseCigar(feature.get('CIGAR'));
|
|
140
|
+
const fend = feature.get('end');
|
|
141
|
+
getModificationPositions(mm, seq, fstrand).forEach(({ type, positions }) => {
|
|
142
|
+
const mod = `mod_${type}`;
|
|
143
|
+
for (const pos of getNextRefPos(ops, positions)) {
|
|
144
|
+
const epos = pos + fstart - region.start;
|
|
145
|
+
if (epos >= 0 && epos < bins.length && pos + fstart < fend) {
|
|
146
|
+
const bin = bins[epos];
|
|
147
|
+
if (bin) {
|
|
148
|
+
inc(bin, fstrand, 'cov', mod);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
console.warn('Undefined position in modifications snpcoverage encountered');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// methylation based coloring takes into account both reference
|
|
158
|
+
// sequence CpG detection and reads
|
|
159
|
+
else if ((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'methylation') {
|
|
160
|
+
if (!regionSeq) {
|
|
161
|
+
throw new Error('no region sequence detected, need sequenceAdapter configuration');
|
|
162
|
+
}
|
|
163
|
+
const seq = feature.get('seq');
|
|
164
|
+
const mm = getTagAlt(feature, 'MM', 'Mm') || '';
|
|
165
|
+
const methBins = new Array(region.end - region.start).fill(0);
|
|
166
|
+
const ops = parseCigar(feature.get('CIGAR'));
|
|
167
|
+
getModificationPositions(mm, seq, fstrand).forEach(({ type, positions }) => {
|
|
168
|
+
// we are processing methylation
|
|
169
|
+
if (type === 'm') {
|
|
170
|
+
for (const pos of getNextRefPos(ops, positions)) {
|
|
171
|
+
const epos = pos + fstart - region.start;
|
|
172
|
+
if (epos >= 0 && epos < methBins.length) {
|
|
173
|
+
methBins[epos] = 1;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
for (let j = fstart; j < fend; j++) {
|
|
179
|
+
const i = j - region.start;
|
|
180
|
+
if (i >= 0 && i < bins.length - 1) {
|
|
181
|
+
const l1 = regionSeq[i].toLowerCase();
|
|
182
|
+
const l2 = regionSeq[i + 1].toLowerCase();
|
|
183
|
+
const bin = bins[i];
|
|
184
|
+
const bin1 = bins[i + 1];
|
|
185
|
+
// color
|
|
186
|
+
if (l1 === 'c' && l2 === 'g') {
|
|
187
|
+
if (methBins[i] || methBins[i + 1]) {
|
|
188
|
+
inc(bin, fstrand, 'cov', 'meth');
|
|
189
|
+
inc(bin1, fstrand, 'cov', 'meth');
|
|
190
|
+
bins[i].ref--;
|
|
191
|
+
bins[i][fstrand]--;
|
|
192
|
+
bins[i + 1].ref--;
|
|
193
|
+
bins[i + 1][fstrand]--;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
inc(bin, fstrand, 'cov', 'unmeth');
|
|
197
|
+
inc(bin1, fstrand, 'cov', 'unmeth');
|
|
198
|
+
bins[i].ref--;
|
|
199
|
+
bins[i][fstrand]--;
|
|
200
|
+
bins[i + 1].ref--;
|
|
201
|
+
bins[i + 1][fstrand]--;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// normal SNP based coloring
|
|
208
|
+
const mismatches = feature.get('mismatches') || [];
|
|
209
|
+
const colorSNPs = (colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) !== 'modifications' && (colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) !== 'methylation';
|
|
210
|
+
for (let i = 0; i < mismatches.length; i++) {
|
|
211
|
+
const mismatch = mismatches[i];
|
|
212
|
+
const mstart = fstart + mismatch.start;
|
|
213
|
+
const mlen = mismatchLen(mismatch);
|
|
214
|
+
const mend = mstart + mlen;
|
|
215
|
+
for (let j = mstart; j < mstart + mlen; j++) {
|
|
216
|
+
const epos = j - region.start;
|
|
217
|
+
if (epos >= 0 && epos < bins.length) {
|
|
218
|
+
const bin = bins[epos];
|
|
219
|
+
const { base, type } = mismatch;
|
|
220
|
+
const interbase = isInterbase(type);
|
|
221
|
+
if (!interbase) {
|
|
222
|
+
bin.ref--;
|
|
223
|
+
bin[fstrand]--;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
inc(bin, fstrand, 'noncov', type);
|
|
227
|
+
}
|
|
228
|
+
if (type === 'deletion' || type === 'skip') {
|
|
229
|
+
inc(bin, fstrand, 'delskips', type);
|
|
230
|
+
bin.total--;
|
|
231
|
+
}
|
|
232
|
+
else if (!interbase && colorSNPs) {
|
|
233
|
+
inc(bin, fstrand, 'cov', base);
|
|
234
|
+
bin.refbase = mismatch.altbase;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (mismatch.type === 'skip') {
|
|
239
|
+
const hash = `${mstart}_${mend}_${fstrand}`;
|
|
240
|
+
if (skipmap[hash] === undefined) {
|
|
241
|
+
skipmap[hash] = {
|
|
242
|
+
feature: feature,
|
|
243
|
+
start: mstart,
|
|
244
|
+
end: mend,
|
|
245
|
+
strand: fstrand,
|
|
246
|
+
xs: getTag(feature, 'XS') || getTag(feature, 'TS'),
|
|
247
|
+
score: 0,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
skipmap[hash].score++;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return { bins, skipmap };
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
const { capabilities } = SNPCoverageAdapter;
|
|
258
|
+
export { capabilities };
|
|
259
|
+
//# sourceMappingURL=SNPCoverageAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SNPCoverageAdapter.js","sourceRoot":"","sources":["../../src/SNPCoverageAdapter/SNPCoverageAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
+
import { types } from 'mobx-state-tree';
|
|
3
|
+
export default (pluginManager) => types.late(() => ConfigurationSchema('SNPCoverageAdapter', {
|
|
4
|
+
subadapter: pluginManager.pluggableConfigSchemaType('adapter'),
|
|
5
|
+
}, { explicitlyTyped: true }));
|
|
6
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/SNPCoverageAdapter/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,eAAe,CAAC,aAA4B,EAAE,EAAE,CAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CACd,mBAAmB,CACjB,oBAAoB,EACpB;IACE,UAAU,EAAE,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC;CAC/D,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CACF,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType';
|
|
2
|
+
import configSchemaFactory from './configSchema';
|
|
3
|
+
import { capabilities } from './SNPCoverageAdapter';
|
|
4
|
+
export default (pluginManager) => {
|
|
5
|
+
pluginManager.addAdapterType(() => new AdapterType({
|
|
6
|
+
name: 'SNPCoverageAdapter',
|
|
7
|
+
adapterMetadata: {
|
|
8
|
+
category: null,
|
|
9
|
+
displayName: null,
|
|
10
|
+
hiddenFromGUI: true,
|
|
11
|
+
description: null,
|
|
12
|
+
},
|
|
13
|
+
getAdapterClass: () => import('./SNPCoverageAdapter').then(r => r.default),
|
|
14
|
+
configSchema: configSchemaFactory(pluginManager),
|
|
15
|
+
adapterCapabilities: capabilities,
|
|
16
|
+
}));
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SNPCoverageAdapter/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,iDAAiD,CAAA;AACzE,OAAO,mBAAmB,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,eAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,aAAa,CAAC,cAAc,CAC1B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;QACd,IAAI,EAAE,oBAAoB;QAC1B,eAAe,EAAE;YACf,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;SAClB;QACD,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACrD,YAAY,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAChD,mBAAmB,EAAE,YAAY;KAClC,CAAC,CACL,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +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): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { createJBrowseTheme } from '@jbrowse/core/ui';
|
|
2
|
+
import { featureSpanPx, bpSpanPx } from '@jbrowse/core/util';
|
|
3
|
+
import { readConfObject } from '@jbrowse/core/configuration';
|
|
4
|
+
import { getOrigin, getScale, WiggleBaseRenderer, YSCALEBAR_LABEL_OFFSET, } from '@jbrowse/plugin-wiggle';
|
|
5
|
+
export default class SNPCoverageRenderer extends WiggleBaseRenderer {
|
|
6
|
+
// note: the snps are drawn on linear scale even if the data is drawn in log
|
|
7
|
+
// scape hence the two different scales being used
|
|
8
|
+
async draw(ctx, props) {
|
|
9
|
+
const { features, regions, bpPerPx, displayCrossHatches, modificationTagMap = {}, scaleOpts, height: unadjustedHeight, theme: configTheme, config: cfg, ticks, } = props;
|
|
10
|
+
const theme = createJBrowseTheme(configTheme);
|
|
11
|
+
const [region] = regions;
|
|
12
|
+
const width = (region.end - region.start) / bpPerPx;
|
|
13
|
+
// the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the
|
|
14
|
+
// wiggle display, and makes the height of the actual drawn area add
|
|
15
|
+
// "padding" to the top and bottom of the display
|
|
16
|
+
const offset = YSCALEBAR_LABEL_OFFSET;
|
|
17
|
+
const height = unadjustedHeight - offset * 2;
|
|
18
|
+
const { domain } = scaleOpts;
|
|
19
|
+
if (!domain) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const opts = { ...scaleOpts, range: [0, height] };
|
|
23
|
+
const viewScale = getScale(opts);
|
|
24
|
+
// clipping and insertion indicators, uses a smaller height/2 scale
|
|
25
|
+
const indicatorViewScale = getScale({
|
|
26
|
+
...opts,
|
|
27
|
+
range: [0, height / 2],
|
|
28
|
+
scaleType: 'linear',
|
|
29
|
+
});
|
|
30
|
+
const originY = getOrigin(scaleOpts.scaleType);
|
|
31
|
+
const indicatorThreshold = readConfObject(cfg, 'indicatorThreshold');
|
|
32
|
+
const drawInterbaseCounts = readConfObject(cfg, 'drawInterbaseCounts');
|
|
33
|
+
const drawArcs = readConfObject(cfg, 'drawArcs');
|
|
34
|
+
const drawIndicators = readConfObject(cfg, 'drawIndicators');
|
|
35
|
+
// get the y coordinate that we are plotting at, this can be log scale
|
|
36
|
+
const toY = (n) => height - (viewScale(n) || 0) + offset;
|
|
37
|
+
const toHeight = (n) => toY(originY) - toY(n);
|
|
38
|
+
const indicatorToY = (n) => height - (indicatorViewScale(n) || 0) + offset;
|
|
39
|
+
const indicatorToHeight = (n) => indicatorToY(getOrigin('linear')) - indicatorToY(n);
|
|
40
|
+
// @ts-ignore
|
|
41
|
+
const { bases } = theme.palette;
|
|
42
|
+
const colorForBase = {
|
|
43
|
+
A: bases.A.main,
|
|
44
|
+
C: bases.C.main,
|
|
45
|
+
G: bases.G.main,
|
|
46
|
+
T: bases.T.main,
|
|
47
|
+
total: 'lightgrey',
|
|
48
|
+
insertion: 'purple',
|
|
49
|
+
softclip: 'blue',
|
|
50
|
+
hardclip: 'red',
|
|
51
|
+
meth: 'red',
|
|
52
|
+
unmeth: 'blue',
|
|
53
|
+
ref: 'lightgrey',
|
|
54
|
+
};
|
|
55
|
+
const feats = [...features.values()];
|
|
56
|
+
const coverage = feats.filter(f => f.get('type') !== 'skip');
|
|
57
|
+
const skips = feats.filter(f => f.get('type') === 'skip');
|
|
58
|
+
// Use two pass rendering, which helps in visualizing the SNPs at higher
|
|
59
|
+
// bpPerPx First pass: draw the gray background
|
|
60
|
+
ctx.fillStyle = colorForBase.total;
|
|
61
|
+
for (let i = 0; i < coverage.length; i++) {
|
|
62
|
+
const feature = coverage[i];
|
|
63
|
+
const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
|
|
64
|
+
const w = rightPx - leftPx + 0.3;
|
|
65
|
+
const score = feature.get('score');
|
|
66
|
+
ctx.fillRect(leftPx, toY(score), w, toHeight(score));
|
|
67
|
+
}
|
|
68
|
+
// Keep track of previous total which we will use it to draw the interbase
|
|
69
|
+
// indicator (if there is a sudden clip, there will be no read coverage but
|
|
70
|
+
// there will be "clip" coverage) at that position beyond the read. if the
|
|
71
|
+
// clip is right at a block boundary then prevTotal will not be available,
|
|
72
|
+
// so this is a best attempt to plot interbase indicator at the "cliffs"
|
|
73
|
+
let prevTotal = 0;
|
|
74
|
+
// extraHorizontallyFlippedOffset is used to draw interbase items, which
|
|
75
|
+
// are located to the left when forward and right when reversed
|
|
76
|
+
const extraHorizontallyFlippedOffset = region.reversed ? 1 / bpPerPx : 0;
|
|
77
|
+
// Second pass: draw the SNP data, and add a minimum feature width of 1px
|
|
78
|
+
// which can be wider than the actual bpPerPx This reduces overdrawing of
|
|
79
|
+
// the grey background over the SNPs
|
|
80
|
+
for (let i = 0; i < coverage.length; i++) {
|
|
81
|
+
const feature = coverage[i];
|
|
82
|
+
const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
|
|
83
|
+
const score = feature.get('score');
|
|
84
|
+
const snpinfo = feature.get('snpinfo');
|
|
85
|
+
const w = Math.max(rightPx - leftPx + 0.3, 1);
|
|
86
|
+
const totalScore = snpinfo.total;
|
|
87
|
+
const keys = Object.keys(snpinfo.cov).sort();
|
|
88
|
+
let curr = 0;
|
|
89
|
+
for (let i = 0; i < keys.length; i++) {
|
|
90
|
+
const base = keys[i];
|
|
91
|
+
const { total } = snpinfo.cov[base];
|
|
92
|
+
ctx.fillStyle =
|
|
93
|
+
colorForBase[base] ||
|
|
94
|
+
modificationTagMap[base.replace('mod_', '')] ||
|
|
95
|
+
'#888';
|
|
96
|
+
const height = toHeight(score);
|
|
97
|
+
const bottom = toY(score) + height;
|
|
98
|
+
ctx.fillRect(leftPx, bottom - ((total + curr) / score) * height, w, (total / score) * height);
|
|
99
|
+
curr += total;
|
|
100
|
+
}
|
|
101
|
+
const interbaseEvents = Object.keys(snpinfo.noncov);
|
|
102
|
+
const indicatorHeight = 4.5;
|
|
103
|
+
if (drawInterbaseCounts) {
|
|
104
|
+
let curr = 0;
|
|
105
|
+
for (let i = 0; i < interbaseEvents.length; i++) {
|
|
106
|
+
const base = interbaseEvents[i];
|
|
107
|
+
const { total } = snpinfo.noncov[base];
|
|
108
|
+
ctx.fillStyle = colorForBase[base];
|
|
109
|
+
ctx.fillRect(leftPx - 0.6 + extraHorizontallyFlippedOffset, indicatorHeight + indicatorToHeight(curr), 1.2, indicatorToHeight(total));
|
|
110
|
+
curr += total;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (drawIndicators) {
|
|
114
|
+
let accum = 0;
|
|
115
|
+
let max = 0;
|
|
116
|
+
let maxBase = '';
|
|
117
|
+
for (let i = 0; i < interbaseEvents.length; i++) {
|
|
118
|
+
const base = interbaseEvents[i];
|
|
119
|
+
const { total } = snpinfo.noncov[base];
|
|
120
|
+
accum += total;
|
|
121
|
+
if (total > max) {
|
|
122
|
+
max = total;
|
|
123
|
+
maxBase = base;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// avoid drawing a bunch of indicators if coverage is very low e.g.
|
|
127
|
+
// less than 7, uses the prev total in the case of the "cliff"
|
|
128
|
+
const indicatorComparatorScore = Math.max(totalScore, prevTotal);
|
|
129
|
+
if (accum > indicatorComparatorScore * indicatorThreshold &&
|
|
130
|
+
indicatorComparatorScore > 7) {
|
|
131
|
+
ctx.fillStyle = colorForBase[maxBase];
|
|
132
|
+
ctx.beginPath();
|
|
133
|
+
const l = leftPx + extraHorizontallyFlippedOffset;
|
|
134
|
+
ctx.moveTo(l - 3.5, 0);
|
|
135
|
+
ctx.lineTo(l + 3.5, 0);
|
|
136
|
+
ctx.lineTo(l, indicatorHeight);
|
|
137
|
+
ctx.fill();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
prevTotal = totalScore;
|
|
141
|
+
}
|
|
142
|
+
if (drawArcs) {
|
|
143
|
+
for (let i = 0; i < skips.length; i++) {
|
|
144
|
+
const f = skips[i];
|
|
145
|
+
const [left, right] = bpSpanPx(f.get('start'), f.get('end'), region, bpPerPx);
|
|
146
|
+
ctx.beginPath();
|
|
147
|
+
const str = f.get('strand');
|
|
148
|
+
const xs = f.get('xs');
|
|
149
|
+
const pos = 'rgba(255,200,200,0.7)';
|
|
150
|
+
const neg = 'rgba(200,200,255,0.7)';
|
|
151
|
+
const neutral = 'rgba(200,200,200,0.7)';
|
|
152
|
+
if (xs === '+') {
|
|
153
|
+
ctx.strokeStyle = pos;
|
|
154
|
+
}
|
|
155
|
+
else if (xs === '-') {
|
|
156
|
+
ctx.strokeStyle = neg;
|
|
157
|
+
}
|
|
158
|
+
else if (str === 1) {
|
|
159
|
+
ctx.strokeStyle = pos;
|
|
160
|
+
}
|
|
161
|
+
else if (str === -1) {
|
|
162
|
+
ctx.strokeStyle = neg;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
ctx.strokeStyle = neutral;
|
|
166
|
+
}
|
|
167
|
+
ctx.lineWidth = Math.log(f.get('score') + 1);
|
|
168
|
+
ctx.moveTo(left, height - offset * 2);
|
|
169
|
+
ctx.bezierCurveTo(left, 0, right, 0, right, height - offset * 2);
|
|
170
|
+
ctx.stroke();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (displayCrossHatches) {
|
|
174
|
+
ctx.lineWidth = 1;
|
|
175
|
+
ctx.strokeStyle = 'rgba(140,140,140,0.8)';
|
|
176
|
+
ticks.values.forEach(tick => {
|
|
177
|
+
ctx.beginPath();
|
|
178
|
+
ctx.moveTo(0, Math.round(toY(tick)));
|
|
179
|
+
ctx.lineTo(width, Math.round(toY(tick)));
|
|
180
|
+
ctx.stroke();
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=SNPCoverageRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SNPCoverageRenderer.js","sourceRoot":"","sources":["../../src/SNPCoverageRenderer/SNPCoverageRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
+
export default ConfigurationSchema('SNPCoverageRenderer', {
|
|
3
|
+
clipColor: {
|
|
4
|
+
type: 'color',
|
|
5
|
+
description: 'the color of the clipping marker',
|
|
6
|
+
defaultValue: 'red',
|
|
7
|
+
},
|
|
8
|
+
indicatorThreshold: {
|
|
9
|
+
type: 'number',
|
|
10
|
+
description: 'the proportion of reads containing a insertion/clip indicator',
|
|
11
|
+
defaultValue: 0.4,
|
|
12
|
+
},
|
|
13
|
+
drawArcs: {
|
|
14
|
+
type: 'boolean',
|
|
15
|
+
description: 'Draw sashimi-style arcs for intron features',
|
|
16
|
+
defaultValue: true,
|
|
17
|
+
},
|
|
18
|
+
drawInterbaseCounts: {
|
|
19
|
+
type: 'boolean',
|
|
20
|
+
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',
|
|
21
|
+
defaultValue: true,
|
|
22
|
+
},
|
|
23
|
+
drawIndicators: {
|
|
24
|
+
type: 'boolean',
|
|
25
|
+
description: 'draw a triangular indicator where an event has been detected',
|
|
26
|
+
defaultValue: true,
|
|
27
|
+
},
|
|
28
|
+
}, { explicitlyTyped: true });
|
|
29
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/SNPCoverageRenderer/configSchema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,eAAe,mBAAmB,CAChC,qBAAqB,EACrB;IACE,SAAS,EAAE;QACT,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kCAAkC;QAC/C,YAAY,EAAE,KAAK;KACpB;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,+DAA+D;QACjE,YAAY,EAAE,GAAG;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,6CAA6C;QAC1D,YAAY,EAAE,IAAI;KACnB;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,iJAAiJ;QACnJ,YAAY,EAAE,IAAI;KACnB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,SAAS;QACf,WAAW,EACT,8DAA8D;QAChE,YAAY,EAAE,IAAI;KACnB;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
+
import ConfigSchema from './configSchema';
|
|
3
|
+
import SNPCoverageRenderer from './SNPCoverageRenderer';
|
|
4
|
+
import { WiggleRendering } from '@jbrowse/plugin-wiggle';
|
|
5
|
+
export const configSchema = ConfigurationSchema('SNPCoverageRenderer', {}, { baseConfiguration: ConfigSchema, explicitlyTyped: true });
|
|
6
|
+
export default function register(pluginManager) {
|
|
7
|
+
pluginManager.addRendererType(() => new SNPCoverageRenderer({
|
|
8
|
+
name: 'SNPCoverageRenderer',
|
|
9
|
+
ReactComponent: WiggleRendering,
|
|
10
|
+
configSchema,
|
|
11
|
+
pluginManager,
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SNPCoverageRenderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAEzC,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAC7C,qBAAqB,EACrB,EAAE,EACF,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,CAC3D,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,aAA4B;IAC3D,aAAa,CAAC,eAAe,CAC3B,GAAG,EAAE,CACH,IAAI,mBAAmB,CAAC;QACtB,IAAI,EAAE,qBAAqB;QAC3B,cAAc,EAAE,eAAe;QAC/B,YAAY;QACZ,aAAa;KACd,CAAC,CACL,CAAA;AACH,CAAC"}
|
package/esm/index.d.ts
ADDED
|
@@ -0,0 +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
|
+
}
|