@jbrowse/plugin-alignments 2.3.1 → 2.3.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/BamAdapter/BamAdapter.js +2 -1
- package/dist/BamAdapter/BamAdapter.js.map +1 -1
- package/dist/CramAdapter/CramAdapter.js +3 -3
- package/dist/CramAdapter/CramAdapter.js.map +1 -1
- package/dist/LinearReadArcsDisplay/configSchema.js +8 -0
- package/dist/LinearReadArcsDisplay/configSchema.js.map +1 -1
- package/dist/LinearReadArcsDisplay/drawFeats.d.ts +1 -0
- package/dist/LinearReadArcsDisplay/drawFeats.js +45 -37
- package/dist/LinearReadArcsDisplay/drawFeats.js.map +1 -1
- package/dist/LinearReadArcsDisplay/model.d.ts +46 -15
- package/dist/LinearReadArcsDisplay/model.js +42 -0
- package/dist/LinearReadArcsDisplay/model.js.map +1 -1
- package/dist/LinearReadCloudDisplay/drawFeats.js +18 -32
- package/dist/LinearReadCloudDisplay/drawFeats.js.map +1 -1
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +1 -1
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -1
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +8 -8
- package/dist/PileupRPC/methods/GetGlobalValueForTag.js +3 -1
- package/dist/PileupRPC/methods/GetGlobalValueForTag.js.map +1 -1
- package/dist/PileupRPC/methods/GetReducedFeatures.js +2 -4
- package/dist/PileupRPC/methods/GetReducedFeatures.js.map +1 -1
- package/dist/PileupRPC/methods/GetVisibleModifications.js +2 -4
- package/dist/PileupRPC/methods/GetVisibleModifications.js.map +1 -1
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +3 -4
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
- package/dist/util.js +3 -3
- package/dist/util.js.map +1 -1
- package/esm/BamAdapter/BamAdapter.js +2 -1
- package/esm/BamAdapter/BamAdapter.js.map +1 -1
- package/esm/CramAdapter/CramAdapter.js +3 -3
- package/esm/CramAdapter/CramAdapter.js.map +1 -1
- package/esm/LinearReadArcsDisplay/configSchema.js +8 -0
- package/esm/LinearReadArcsDisplay/configSchema.js.map +1 -1
- package/esm/LinearReadArcsDisplay/drawFeats.d.ts +1 -0
- package/esm/LinearReadArcsDisplay/drawFeats.js +45 -37
- package/esm/LinearReadArcsDisplay/drawFeats.js.map +1 -1
- package/esm/LinearReadArcsDisplay/model.d.ts +46 -15
- package/esm/LinearReadArcsDisplay/model.js +42 -0
- package/esm/LinearReadArcsDisplay/model.js.map +1 -1
- package/esm/LinearReadCloudDisplay/drawFeats.js +19 -33
- package/esm/LinearReadCloudDisplay/drawFeats.js.map +1 -1
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.js +1 -1
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -1
- package/esm/LinearSNPCoverageDisplay/models/model.d.ts +8 -8
- package/esm/PileupRPC/methods/GetGlobalValueForTag.js +3 -1
- package/esm/PileupRPC/methods/GetGlobalValueForTag.js.map +1 -1
- package/esm/PileupRPC/methods/GetReducedFeatures.js +2 -4
- package/esm/PileupRPC/methods/GetReducedFeatures.js.map +1 -1
- package/esm/PileupRPC/methods/GetVisibleModifications.js +2 -4
- package/esm/PileupRPC/methods/GetVisibleModifications.js.map +1 -1
- package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +3 -4
- package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
- package/esm/util.js +3 -3
- package/esm/util.js.map +1 -1
- package/package.json +3 -3
- package/src/AlignmentsFeatureDetail/__snapshots__/{index.test.js.snap → index.test.tsx.snap} +0 -0
- package/src/AlignmentsFeatureDetail/{index.test.js → index.test.tsx} +4 -2
- package/src/BamAdapter/BamAdapter.test.ts +5 -4
- package/src/BamAdapter/BamAdapter.ts +2 -1
- package/src/CombinationTest.test.ts +3 -2
- package/src/CramAdapter/CramAdapter.test.ts +3 -2
- package/src/CramAdapter/CramAdapter.ts +11 -9
- package/src/LinearAlignmentsDisplay/models/{configSchema.test.js → configSchema.test.ts} +5 -1
- package/src/LinearReadArcsDisplay/configSchema.ts +10 -0
- package/src/LinearReadArcsDisplay/drawFeats.ts +73 -54
- package/src/LinearReadArcsDisplay/model.tsx +45 -0
- package/src/LinearReadCloudDisplay/drawFeats.ts +21 -33
- package/src/LinearSNPCoverageDisplay/components/Tooltip.tsx +76 -73
- package/src/LinearSNPCoverageDisplay/models/{configSchema.test.js → configSchema.test.ts} +3 -1
- package/src/PileupRPC/methods/GetGlobalValueForTag.ts +4 -1
- package/src/PileupRPC/methods/GetReducedFeatures.ts +4 -5
- package/src/PileupRPC/methods/GetVisibleModifications.ts +4 -4
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +6 -4
- package/src/index.test.ts +0 -1
- package/src/util.ts +10 -8
- package/src/PileupRenderer/components/PileupRendering.test.js +0 -21
- package/src/PileupRenderer/components/__snapshots__/PileupRendering.test.js.snap +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetGlobalValueForTag.js","sourceRoot":"","sources":["../../../src/PileupRPC/methods/GetGlobalValueForTag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAIzE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,aAAa,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,aAAa;IAArE;;QACE,SAAI,GAAG,4BAA4B,CAAA;IA+BrC,CAAC;IA7BC,KAAK,CAAC,OAAO,CACX,IAOC,EACD,SAAiB;QAEjB,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAC9C,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAElD,MAAM,WAAW,GAAG,CAClB,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAC/D,CAAC,WAAqC,CAAA;QAEvC,MAAM,QAAQ,GAAG,WAAW,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAA;QAClE,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"GetGlobalValueForTag.js","sourceRoot":"","sources":["../../../src/PileupRPC/methods/GetGlobalValueForTag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAIzE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAErC,SAAS;AACT,OAAO,aAAa,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,aAAa;IAArE;;QACE,SAAI,GAAG,4BAA4B,CAAA;IA+BrC,CAAC;IA7BC,KAAK,CAAC,OAAO,CACX,IAOC,EACD,SAAiB;QAEjB,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAC9C,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAElD,MAAM,WAAW,GAAG,CAClB,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAC/D,CAAC,WAAqC,CAAA;QAEvC,MAAM,QAAQ,GAAG,WAAW,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAA;QAClE,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACpE,OAAO;YACL,GAAG,IAAI,GAAG,CACR,aAAa;iBACV,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;iBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;iBAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CACpB;SACF,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
2
2
|
import { dedupe } from '@jbrowse/core/util';
|
|
3
3
|
import { toArray } from 'rxjs/operators';
|
|
4
|
+
import { firstValueFrom } from 'rxjs';
|
|
4
5
|
// locals
|
|
5
6
|
import { filterForPairs, getInsertSizeStats } from '../util';
|
|
6
7
|
import PileupBaseRPC from '../base';
|
|
@@ -15,10 +16,7 @@ export default class PileupGetReducedFeatures extends PileupBaseRPC {
|
|
|
15
16
|
const des = await this.deserializeArguments(args, rpcDriver);
|
|
16
17
|
const { adapterConfig, sessionId, regions } = des;
|
|
17
18
|
const dataAdapter = (await getAdapter(this.pluginManager, sessionId, adapterConfig)).dataAdapter;
|
|
18
|
-
const featuresArray = await dataAdapter
|
|
19
|
-
.getFeaturesInMultipleRegions(regions, des)
|
|
20
|
-
.pipe(toArray())
|
|
21
|
-
.toPromise();
|
|
19
|
+
const featuresArray = await firstValueFrom(dataAdapter.getFeaturesInMultipleRegions(regions, des).pipe(toArray()));
|
|
22
20
|
const reduced = dedupe(featuresArray.map(f => ({
|
|
23
21
|
id: f.id(),
|
|
24
22
|
refName: f.get('refName'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetReducedFeatures.js","sourceRoot":"","sources":["../../../src/PileupRPC/methods/GetReducedFeatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AACzE,OAAO,EAAU,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"GetReducedFeatures.js","sourceRoot":"","sources":["../../../src/PileupRPC/methods/GetReducedFeatures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
2
2
|
import { toArray } from 'rxjs/operators';
|
|
3
|
+
import { firstValueFrom } from 'rxjs';
|
|
3
4
|
// locals
|
|
4
5
|
import { getModificationTypes } from '../../MismatchParser';
|
|
5
6
|
import PileupBaseRPC from '../base';
|
|
@@ -12,10 +13,7 @@ export default class PileupGetVisibleModifications extends PileupBaseRPC {
|
|
|
12
13
|
async execute(args, rpcDriver) {
|
|
13
14
|
const { adapterConfig, sessionId, regions } = await this.deserializeArguments(args, rpcDriver);
|
|
14
15
|
const dataAdapter = (await getAdapter(this.pluginManager, sessionId, adapterConfig)).dataAdapter;
|
|
15
|
-
const featuresArray = await dataAdapter
|
|
16
|
-
.getFeaturesInMultipleRegions(regions)
|
|
17
|
-
.pipe(toArray())
|
|
18
|
-
.toPromise();
|
|
16
|
+
const featuresArray = await firstValueFrom(dataAdapter.getFeaturesInMultipleRegions(regions).pipe(toArray()));
|
|
19
17
|
const uniqueValues = new Set();
|
|
20
18
|
featuresArray.forEach(f => {
|
|
21
19
|
getModificationTypes(getTagAlt(f, 'MM', 'Mm') || '').forEach(t => uniqueValues.add(t));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetVisibleModifications.js","sourceRoot":"","sources":["../../../src/PileupRPC/methods/GetVisibleModifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAIzE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"GetVisibleModifications.js","sourceRoot":"","sources":["../../../src/PileupRPC/methods/GetVisibleModifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAIzE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAErC,SAAS;AACT,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,aAAa,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,aAAa;IAAxE;;QACE,SAAI,GAAG,+BAA+B,CAAA;IA+BxC,CAAC;IA7BC,KAAK,CAAC,OAAO,CACX,IAOC,EACD,SAAiB;QAEjB,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,GACzC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAClD,MAAM,WAAW,GAAG,CAClB,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAC/D,CAAC,WAAqC,CAAA;QAEvC,MAAM,aAAa,GAAG,MAAM,cAAc,CACxC,WAAW,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAClE,CAAA;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;QACtC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACxB,oBAAoB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAC/D,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CACpB,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,YAAY,CAAC,CAAA;IAC1B,CAAC;CACF"}
|
|
@@ -2,6 +2,8 @@ import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter
|
|
|
2
2
|
import SimpleFeature from '@jbrowse/core/util/simpleFeature';
|
|
3
3
|
import { ObservableCreate } from '@jbrowse/core/util/rxjs';
|
|
4
4
|
import { toArray } from 'rxjs/operators';
|
|
5
|
+
import { firstValueFrom } from 'rxjs';
|
|
6
|
+
// locals
|
|
5
7
|
import generateCoverageBins from './generateCoverageBins';
|
|
6
8
|
import { fetchSequence } from '../util';
|
|
7
9
|
export default class SNPCoverageAdapter extends BaseFeatureDataAdapter {
|
|
@@ -31,10 +33,7 @@ export default class SNPCoverageAdapter extends BaseFeatureDataAdapter {
|
|
|
31
33
|
getFeatures(region, opts = {}) {
|
|
32
34
|
return ObservableCreate(async (observer) => {
|
|
33
35
|
const { subadapter } = await this.configure();
|
|
34
|
-
const feats = await subadapter
|
|
35
|
-
.getFeatures(region, opts)
|
|
36
|
-
.pipe(toArray())
|
|
37
|
-
.toPromise();
|
|
36
|
+
const feats = await firstValueFrom(subadapter.getFeatures(region, opts).pipe(toArray()));
|
|
38
37
|
const { bins, skipmap } = await generateCoverageBins(feats, region, opts, arg => this.fetchSequence(arg));
|
|
39
38
|
bins.forEach((bin, index) => {
|
|
40
39
|
const start = region.start + index;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SNPCoverageAdapter.js","sourceRoot":"","sources":["../../src/SNPCoverageAdapter/SNPCoverageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAEvB,MAAM,yCAAyC,CAAA;AAEhD,OAAO,aAA0B,MAAM,kCAAkC,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,oBAAoB,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,sBAAsB;IAC1D,KAAK,CAAC,SAAS;;QACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QACnD,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAA;QACrD,MAAM,WAAW,GAAG,MAAM,CAAA,MAAA,IAAI,CAAC,aAAa,qDAAG,gBAAgB,CAAC,CAAA,CAAA;QAEhE,MAAM,eAAe,GAAG,YAAY;YAClC,CAAC,CAAC,MAAM,CAAA,MAAA,IAAI,CAAC,aAAa,qDAAG,YAAY,CAAC,CAAA;YAC1C,CAAC,CAAC,SAAS,CAAA;QAEb,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,OAAO;YACL,UAAU,EAAE,WAAW,CAAC,WAAqC;YAC7D,eAAe,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAErB;SACd,CAAA;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QAClD,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,SAAS,CAAA;SACjB;QAED,OAAO,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,OAAoB,EAAE;QAChD,OAAO,gBAAgB,CAAU,KAAK,EAAC,QAAQ,EAAC,EAAE;YAChD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;YAC7C,MAAM,KAAK,GAAG,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"SNPCoverageAdapter.js","sourceRoot":"","sources":["../../src/SNPCoverageAdapter/SNPCoverageAdapter.ts"],"names":[],"mappings":"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"}
|
package/esm/util.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { toArray } from 'rxjs/operators';
|
|
2
|
+
import { firstValueFrom } from 'rxjs';
|
|
2
3
|
// get tag from BAM or CRAM feature, where CRAM uses feature.get('tags') and
|
|
3
4
|
// BAM does not
|
|
4
5
|
export function getTag(feature, tag) {
|
|
@@ -66,14 +67,13 @@ export function getColorWGBS(strand, base) {
|
|
|
66
67
|
export async function fetchSequence(region, adapter) {
|
|
67
68
|
var _a;
|
|
68
69
|
const { end, originalRefName, refName } = region;
|
|
69
|
-
const feats = await adapter
|
|
70
|
+
const feats = await firstValueFrom(adapter
|
|
70
71
|
.getFeatures({
|
|
71
72
|
...region,
|
|
72
73
|
refName: originalRefName || refName,
|
|
73
74
|
end: end + 1,
|
|
74
75
|
})
|
|
75
|
-
.pipe(toArray())
|
|
76
|
-
.toPromise();
|
|
76
|
+
.pipe(toArray()));
|
|
77
77
|
return (_a = feats[0]) === null || _a === void 0 ? void 0 : _a.get('seq');
|
|
78
78
|
}
|
|
79
79
|
// has to check underlying C-G (aka CpG) on the reference sequence
|
package/esm/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAGxC,4EAA4E;AAC5E,eAAe;AACf,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,GAAW;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC5C,CAAC;AAED,4EAA4E;AAC5E,0CAA0C;AAC1C,MAAM,UAAU,SAAS,CAAC,OAAgB,EAAE,GAAW,EAAE,GAAW;IAClE,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACrD,CAAC;AAED,gDAAgD;AAChD,kFAAkF;AAClF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACkB;IAE9B,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACkB;IAE9B,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACkB;CAC/B,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAY;IACvD,IAAI,MAAM,KAAK,CAAC,EAAE;QAChB,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,MAAM,CAAA;SACd;QACD,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,MAAM,CAAA;SACd;KACF;SAAM,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;QACxB,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,MAAM,CAAA;SACd;QACD,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,MAAM,CAAA;SACd;KACF;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAuB,EACvB,OAA+B;;IAE/B,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAEhD,MAAM,KAAK,GAAG,MAAM,OAAO;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AACrC,4EAA4E;AAC5E,eAAe;AACf,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,GAAW;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC5C,CAAC;AAED,4EAA4E;AAC5E,0CAA0C;AAC1C,MAAM,UAAU,SAAS,CAAC,OAAgB,EAAE,GAAW,EAAE,GAAW;IAClE,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACrD,CAAC;AAED,gDAAgD;AAChD,kFAAkF;AAClF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACkB;IAE9B,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACkB;IAE9B,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QAEV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACkB;CAC/B,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAY;IACvD,IAAI,MAAM,KAAK,CAAC,EAAE;QAChB,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,MAAM,CAAA;SACd;QACD,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,MAAM,CAAA;SACd;KACF;SAAM,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;QACxB,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,MAAM,CAAA;SACd;QACD,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,OAAO,MAAM,CAAA;SACd;KACF;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAuB,EACvB,OAA+B;;IAE/B,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAEhD,MAAM,KAAK,GAAG,MAAM,cAAc,CAChC,OAAO;SACJ,WAAW,CAAC;QACX,GAAG,MAAM;QACT,OAAO,EAAE,eAAe,IAAI,OAAO;QACnC,GAAG,EAAE,GAAG,GAAG,CAAC;KACb,CAAC;SACD,IAAI,CAAC,OAAO,EAAE,CAAC,CACnB,CAAA;IACD,OAAO,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,4BAA4B,CAAC,IAAa;IACxD,OAAO,IAAI,KAAK,aAAa,CAAA;AAC/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-alignments",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.3",
|
|
4
4
|
"description": "JBrowse 2 alignments adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"mobx-react": "^7.0.0",
|
|
57
57
|
"mobx-state-tree": "^5.0.0",
|
|
58
58
|
"react": ">=16.8.0",
|
|
59
|
-
"rxjs": "^
|
|
59
|
+
"rxjs": "^7.0.0",
|
|
60
60
|
"tss-react": "^4.0.0"
|
|
61
61
|
},
|
|
62
62
|
"publishConfig": {
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"distModule": "esm/index.js",
|
|
66
66
|
"srcModule": "src/index.ts",
|
|
67
67
|
"module": "esm/index.js",
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "283e0387ccd5acc9f092cf00804d1fcac212e68d"
|
|
69
69
|
}
|
package/src/AlignmentsFeatureDetail/__snapshots__/{index.test.js.snap → index.test.tsx.snap}
RENAMED
|
File without changes
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import React from 'react'
|
|
1
2
|
import { render } from '@testing-library/react'
|
|
2
3
|
import { types } from 'mobx-state-tree'
|
|
3
|
-
import React from 'react'
|
|
4
4
|
import PluginManager from '@jbrowse/core/PluginManager'
|
|
5
5
|
import { ConfigurationSchema } from '@jbrowse/core/configuration'
|
|
6
|
+
|
|
7
|
+
// locals
|
|
6
8
|
import { stateModelFactory } from '.'
|
|
7
9
|
import ReactComponent from './AlignmentsFeatureDetail'
|
|
8
10
|
|
|
9
11
|
test('open up a widget', () => {
|
|
10
|
-
console.warn = jest.fn()
|
|
11
12
|
const pluginManager = new PluginManager([])
|
|
12
13
|
|
|
13
14
|
const Session = types.model({
|
|
@@ -17,6 +18,7 @@ test('open up a widget', () => {
|
|
|
17
18
|
})
|
|
18
19
|
const session = Session.create(
|
|
19
20
|
{
|
|
21
|
+
// @ts-ignore
|
|
20
22
|
widget: { type: 'AlignmentsFeatureWidget' },
|
|
21
23
|
},
|
|
22
24
|
{ pluginManager },
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { toArray } from 'rxjs/operators'
|
|
2
|
+
import { firstValueFrom } from 'rxjs'
|
|
2
3
|
import Adapter from './BamAdapter'
|
|
3
4
|
import configSchema from './configSchema'
|
|
4
5
|
|
|
@@ -25,7 +26,7 @@ test('adapter can fetch features from volvox.bam', async () => {
|
|
|
25
26
|
end: 20000,
|
|
26
27
|
})
|
|
27
28
|
|
|
28
|
-
const featuresArray = await features.pipe(toArray())
|
|
29
|
+
const featuresArray = await firstValueFrom(features.pipe(toArray()))
|
|
29
30
|
expect(featuresArray[0].get('refName')).toBe('ctgA')
|
|
30
31
|
const featuresJsonArray = featuresArray.map(f => f.toJSON())
|
|
31
32
|
expect(featuresJsonArray.length).toEqual(3809)
|
|
@@ -58,7 +59,7 @@ test('adapter can fetch features from volvox.bam', async () => {
|
|
|
58
59
|
start: 0,
|
|
59
60
|
end: 20000,
|
|
60
61
|
})
|
|
61
|
-
const featuresArrayCSI = await featuresCSI.pipe(toArray())
|
|
62
|
+
const featuresArrayCSI = await firstValueFrom(featuresCSI.pipe(toArray()))
|
|
62
63
|
const featuresJsonArrayCSI = featuresArrayCSI.map(f => f.toJSON())
|
|
63
64
|
expect(featuresJsonArrayCSI).toEqual(featuresJsonArray)
|
|
64
65
|
})
|
|
@@ -86,7 +87,7 @@ test('test usage of BamSlightlyLazyFeature toJSON (used in the widget)', async (
|
|
|
86
87
|
start: 0,
|
|
87
88
|
end: 100,
|
|
88
89
|
})
|
|
89
|
-
const featuresArray = await features.pipe(toArray())
|
|
90
|
+
const featuresArray = await firstValueFrom(features.pipe(toArray()))
|
|
90
91
|
const f = featuresArray[0].toJSON()
|
|
91
92
|
expect(f.refName).toBe('ctgA')
|
|
92
93
|
expect(f.start).toBe(2)
|
|
@@ -117,7 +118,7 @@ test('test usage of BamSlightlyLazyFeature for extended CIGAR', async () => {
|
|
|
117
118
|
start: 13260,
|
|
118
119
|
end: 13340,
|
|
119
120
|
})
|
|
120
|
-
const featuresArray = await features.pipe(toArray())
|
|
121
|
+
const featuresArray = await firstValueFrom(features.pipe(toArray()))
|
|
121
122
|
const f = featuresArray[0]
|
|
122
123
|
expect(f.get('mismatches')).toMatchSnapshot()
|
|
123
124
|
})
|
|
@@ -11,6 +11,7 @@ import { toArray } from 'rxjs/operators'
|
|
|
11
11
|
|
|
12
12
|
// locals
|
|
13
13
|
import BamSlightlyLazyFeature from './BamSlightlyLazyFeature'
|
|
14
|
+
import { firstValueFrom } from 'rxjs'
|
|
14
15
|
|
|
15
16
|
interface Header {
|
|
16
17
|
idToName: string[]
|
|
@@ -138,7 +139,7 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
|
|
|
138
139
|
assemblyName: '',
|
|
139
140
|
})
|
|
140
141
|
|
|
141
|
-
const seqChunks = await features.pipe(toArray())
|
|
142
|
+
const seqChunks = await firstValueFrom(features.pipe(toArray()))
|
|
142
143
|
|
|
143
144
|
let sequence = ''
|
|
144
145
|
seqChunks
|
|
@@ -9,6 +9,7 @@ import { SequenceAdapter } from './CramAdapter/CramTestAdapters'
|
|
|
9
9
|
|
|
10
10
|
import cramConfigSchema from './CramAdapter/configSchema'
|
|
11
11
|
import bamConfigSchema from './BamAdapter/configSchema'
|
|
12
|
+
import { firstValueFrom } from 'rxjs'
|
|
12
13
|
|
|
13
14
|
const pluginManager = new PluginManager()
|
|
14
15
|
|
|
@@ -55,8 +56,8 @@ async function getFeats(f1: string, f2: string) {
|
|
|
55
56
|
}
|
|
56
57
|
const bamFeatures = bamAdapter.getFeatures(query)
|
|
57
58
|
const cramFeatures = cramAdapter.getFeatures(query)
|
|
58
|
-
const bamFeaturesArray = await bamFeatures.pipe(toArray())
|
|
59
|
-
const cramFeaturesArray = await cramFeatures.pipe(toArray())
|
|
59
|
+
const bamFeaturesArray = await firstValueFrom(bamFeatures.pipe(toArray()))
|
|
60
|
+
const cramFeaturesArray = await firstValueFrom(cramFeatures.pipe(toArray()))
|
|
60
61
|
return { bamFeaturesArray, cramFeaturesArray }
|
|
61
62
|
}
|
|
62
63
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { toArray } from 'rxjs/operators'
|
|
2
|
+
import { firstValueFrom } from 'rxjs'
|
|
2
3
|
import { LocalFile } from 'generic-filehandle'
|
|
3
4
|
import PluginManager from '@jbrowse/core/PluginManager'
|
|
4
5
|
import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'
|
|
@@ -40,7 +41,7 @@ test('adapter can fetch features from volvox-sorted.cram', async () => {
|
|
|
40
41
|
end: 20000,
|
|
41
42
|
})
|
|
42
43
|
|
|
43
|
-
const featuresArray = await features.pipe(toArray())
|
|
44
|
+
const featuresArray = await firstValueFrom(features.pipe(toArray()))
|
|
44
45
|
expect(featuresArray[0].get('refName')).toBe('ctgA')
|
|
45
46
|
const featuresJsonArray = featuresArray.map(f => f.toJSON())
|
|
46
47
|
expect(featuresJsonArray.length).toEqual(3809)
|
|
@@ -74,7 +75,7 @@ test('test usage of cramSlightlyLazyFeature toJSON (used in the widget)', async
|
|
|
74
75
|
start: 0,
|
|
75
76
|
end: 100,
|
|
76
77
|
})
|
|
77
|
-
const featuresArray = await features.pipe(toArray())
|
|
78
|
+
const featuresArray = await firstValueFrom(features.pipe(toArray()))
|
|
78
79
|
const f = featuresArray[0].toJSON()
|
|
79
80
|
expect(f.refName).toBe('ctgA')
|
|
80
81
|
expect(f.start).toBe(2)
|
|
@@ -8,6 +8,7 @@ import { checkAbortSignal, Region, Feature } from '@jbrowse/core/util'
|
|
|
8
8
|
import { openLocation } from '@jbrowse/core/util/io'
|
|
9
9
|
import { ObservableCreate } from '@jbrowse/core/util/rxjs'
|
|
10
10
|
import { toArray } from 'rxjs/operators'
|
|
11
|
+
import { firstValueFrom } from 'rxjs'
|
|
11
12
|
import CramSlightlyLazyFeature from './CramSlightlyLazyFeature'
|
|
12
13
|
|
|
13
14
|
interface Header {
|
|
@@ -103,15 +104,16 @@ export default class CramAdapter extends BaseFeatureDataAdapter {
|
|
|
103
104
|
throw new Error('unknown')
|
|
104
105
|
}
|
|
105
106
|
|
|
106
|
-
const seqChunks = await
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
107
|
+
const seqChunks = await firstValueFrom(
|
|
108
|
+
sequenceAdapter
|
|
109
|
+
.getFeatures({
|
|
110
|
+
refName,
|
|
111
|
+
start,
|
|
112
|
+
end,
|
|
113
|
+
assemblyName: '',
|
|
114
|
+
})
|
|
115
|
+
.pipe(toArray()),
|
|
116
|
+
)
|
|
115
117
|
|
|
116
118
|
const sequence = seqChunks
|
|
117
119
|
.sort((a, b) => a.get('start') - b.get('start'))
|
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
svgFeatureRendererConfigSchema,
|
|
6
6
|
SvgFeatureRendererReactComponent,
|
|
7
7
|
} from '@jbrowse/plugin-svg'
|
|
8
|
+
|
|
9
|
+
// locals
|
|
8
10
|
import PileupRenderer from '../../PileupRenderer'
|
|
9
11
|
import SNPCoverageRenderer from '../../SNPCoverageRenderer'
|
|
10
12
|
import LinearPileupDisplay from '../../LinearPileupDisplay'
|
|
@@ -17,11 +19,13 @@ beforeEach(() => {
|
|
|
17
19
|
})
|
|
18
20
|
|
|
19
21
|
afterEach(() => {
|
|
22
|
+
// @ts-ignore
|
|
20
23
|
console.warn.mockRestore()
|
|
21
24
|
})
|
|
22
25
|
|
|
23
26
|
class AlignmentsPlugin extends Plugin {
|
|
24
|
-
|
|
27
|
+
name = 'AlignmentsPlugin'
|
|
28
|
+
install(pluginManager: PluginManager) {
|
|
25
29
|
PileupRenderer(pluginManager)
|
|
26
30
|
|
|
27
31
|
pluginManager.addRendererType(
|
|
@@ -28,6 +28,16 @@ function configSchemaF(pluginManager: PluginManager) {
|
|
|
28
28
|
defaultValue: 1,
|
|
29
29
|
},
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* #slot
|
|
33
|
+
*/
|
|
34
|
+
jitter: {
|
|
35
|
+
type: 'number',
|
|
36
|
+
description:
|
|
37
|
+
'jitters the x position so e.g. if many reads map to exact same x position, jittering makes it easy to see that there are many of them',
|
|
38
|
+
defaultValue: 0,
|
|
39
|
+
},
|
|
40
|
+
|
|
31
41
|
/**
|
|
32
42
|
* #slot
|
|
33
43
|
*/
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
} from '../shared/color'
|
|
10
10
|
import { ChainData } from '../shared/fetchChains'
|
|
11
11
|
import { featurizeSA } from '../MismatchParser'
|
|
12
|
+
import { Assembly } from '@jbrowse/core/assemblyManager/assembly'
|
|
12
13
|
|
|
13
14
|
export function hasPairedReads(features: ChainData) {
|
|
14
15
|
for (const f of features.chains.values()) {
|
|
@@ -21,6 +22,17 @@ export function hasPairedReads(features: ChainData) {
|
|
|
21
22
|
|
|
22
23
|
type LGV = LinearGenomeViewModel
|
|
23
24
|
|
|
25
|
+
function jitter(n: number) {
|
|
26
|
+
return Math.random() * 2 * n - n
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface CoreFeat {
|
|
30
|
+
strand: number
|
|
31
|
+
refName: string
|
|
32
|
+
start: number
|
|
33
|
+
end: number
|
|
34
|
+
}
|
|
35
|
+
|
|
24
36
|
export default async function drawFeats(
|
|
25
37
|
self: {
|
|
26
38
|
setLastDrawnOffsetPx: (n: number) => void
|
|
@@ -31,34 +43,48 @@ export default async function drawFeats(
|
|
|
31
43
|
height: number
|
|
32
44
|
chainData?: ChainData
|
|
33
45
|
lineWidthSetting: number
|
|
46
|
+
jitterVal: number
|
|
34
47
|
},
|
|
35
48
|
ctx: CanvasRenderingContext2D,
|
|
36
49
|
) {
|
|
37
|
-
const {
|
|
50
|
+
const {
|
|
51
|
+
chainData,
|
|
52
|
+
height,
|
|
53
|
+
colorBy,
|
|
54
|
+
drawInter,
|
|
55
|
+
drawLongRange,
|
|
56
|
+
lineWidthSetting,
|
|
57
|
+
jitterVal,
|
|
58
|
+
} = self
|
|
38
59
|
if (!chainData) {
|
|
39
60
|
return
|
|
40
61
|
}
|
|
41
|
-
const displayHeight = self.height
|
|
42
62
|
const view = getContainingView(self) as LGV
|
|
43
63
|
const { assemblyManager } = getSession(self)
|
|
44
64
|
self.setLastDrawnOffsetPx(view.offsetPx)
|
|
45
|
-
ctx.lineWidth =
|
|
65
|
+
ctx.lineWidth = lineWidthSetting
|
|
46
66
|
const { chains, stats } = chainData
|
|
47
67
|
const hasPaired = hasPairedReads(chainData)
|
|
48
68
|
const assemblyName = view.assemblyNames[0]
|
|
49
69
|
const asm = assemblyManager.get(assemblyName)
|
|
50
|
-
const type =
|
|
70
|
+
const type = colorBy?.type || 'insertSizeAndOrientation'
|
|
71
|
+
if (!asm) {
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function drawLineAtOffset(p: number, c: string) {
|
|
76
|
+
// draws a vertical line off to middle of nowhere if the second end not found
|
|
77
|
+
ctx.strokeStyle = c
|
|
78
|
+
ctx.beginPath()
|
|
79
|
+
ctx.moveTo(p, 0)
|
|
80
|
+
ctx.lineTo(p, height)
|
|
81
|
+
ctx.stroke()
|
|
82
|
+
}
|
|
51
83
|
|
|
52
84
|
function draw(
|
|
53
|
-
k1: {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
start: number
|
|
57
|
-
end: number
|
|
58
|
-
tlen?: number
|
|
59
|
-
pair_orientation?: string
|
|
60
|
-
},
|
|
61
|
-
k2: { strand: number; refName: string; start: number; end: number },
|
|
85
|
+
k1: CoreFeat & { tlen?: number; pair_orientation?: string },
|
|
86
|
+
k2: CoreFeat,
|
|
87
|
+
assembly: Assembly,
|
|
62
88
|
longRange?: boolean,
|
|
63
89
|
) {
|
|
64
90
|
const s1 = k1.strand
|
|
@@ -68,14 +94,16 @@ export default async function drawFeats(
|
|
|
68
94
|
|
|
69
95
|
const p1 = f1 ? k1.start : k1.end
|
|
70
96
|
const p2 = hasPaired ? (f2 ? k2.start : k2.end) : f2 ? k2.end : k2.start
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
const
|
|
97
|
+
const ra1 = assembly.getCanonicalRefName(k1.refName)
|
|
98
|
+
const ra2 = assembly.getCanonicalRefName(k2.refName)
|
|
99
|
+
const r1 = view.bpToPx({ refName: ra1, coord: p1 })
|
|
100
|
+
const r2 = view.bpToPx({ refName: ra2, coord: p2 })
|
|
74
101
|
|
|
75
102
|
if (r1 && r2) {
|
|
76
103
|
const radius = (r2.offsetPx - r1.offsetPx) / 2
|
|
77
104
|
const absrad = Math.abs(radius)
|
|
78
105
|
const p = r1.offsetPx - view.offsetPx
|
|
106
|
+
const p2 = r2.offsetPx - view.offsetPx
|
|
79
107
|
|
|
80
108
|
// bezier (used for non-long-range arcs) requires moveTo before beginPath
|
|
81
109
|
// arc (used for long-range) requires moveTo after beginPath (or else a
|
|
@@ -99,9 +127,7 @@ export default async function drawFeats(
|
|
|
99
127
|
} else if (type === 'insertSize') {
|
|
100
128
|
ctx.strokeStyle = getInsertSizeColor(k1, k2, stats) || 'grey'
|
|
101
129
|
} else if (type === 'gradient') {
|
|
102
|
-
ctx.strokeStyle = `hsl(${
|
|
103
|
-
Math.log10(Math.abs(p1 - p2)) * 10
|
|
104
|
-
},50%,50%)`
|
|
130
|
+
ctx.strokeStyle = `hsl(${Math.log10(absrad) * 10},50%,50%)`
|
|
105
131
|
}
|
|
106
132
|
} else {
|
|
107
133
|
if (type === 'orientation' || type === 'insertSizeAndOrientation') {
|
|
@@ -113,53 +139,55 @@ export default async function drawFeats(
|
|
|
113
139
|
ctx.strokeStyle = 'grey'
|
|
114
140
|
}
|
|
115
141
|
} else if (type === 'gradient') {
|
|
116
|
-
ctx.strokeStyle = `hsl(${
|
|
117
|
-
Math.log10(Math.abs(p1 - p2)) * 10
|
|
118
|
-
},50%,50%)`
|
|
142
|
+
ctx.strokeStyle = `hsl(${Math.log10(absrad) * 10},50%,50%)`
|
|
119
143
|
}
|
|
120
144
|
}
|
|
121
145
|
}
|
|
122
146
|
|
|
123
147
|
const destX = p + radius * 2
|
|
124
|
-
const destY = Math.min(
|
|
148
|
+
const destY = Math.min(height + jitter(jitterVal), absrad)
|
|
125
149
|
if (longRange) {
|
|
126
|
-
|
|
150
|
+
// avoid drawing gigantic circles that glitch out the rendering,
|
|
151
|
+
// instead draw vertical lines
|
|
152
|
+
if (absrad > 100_000) {
|
|
153
|
+
drawLineAtOffset(p + jitter(jitterVal), 'red')
|
|
154
|
+
drawLineAtOffset(p2 + jitter(jitterVal), 'red')
|
|
155
|
+
} else {
|
|
156
|
+
ctx.arc(p + radius + jitter(jitterVal), 0, absrad, 0, Math.PI)
|
|
157
|
+
ctx.stroke()
|
|
158
|
+
}
|
|
127
159
|
} else {
|
|
128
|
-
ctx.bezierCurveTo(
|
|
160
|
+
ctx.bezierCurveTo(
|
|
161
|
+
p + jitter(jitterVal),
|
|
162
|
+
destY,
|
|
163
|
+
destX,
|
|
164
|
+
destY,
|
|
165
|
+
destX + jitter(jitterVal),
|
|
166
|
+
0,
|
|
167
|
+
)
|
|
168
|
+
ctx.stroke()
|
|
129
169
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
// draws a vertical line off to middle of nowhere if the second end not found
|
|
133
|
-
const p = r1.offsetPx - view.offsetPx
|
|
134
|
-
ctx.strokeStyle = 'purple'
|
|
135
|
-
ctx.beginPath()
|
|
136
|
-
ctx.moveTo(p, 0)
|
|
137
|
-
ctx.lineTo(p, displayHeight)
|
|
138
|
-
ctx.stroke()
|
|
170
|
+
} else if (r1 && drawInter) {
|
|
171
|
+
drawLineAtOffset(r1.offsetPx - view.offsetPx, 'purple')
|
|
139
172
|
}
|
|
140
173
|
}
|
|
141
174
|
|
|
142
175
|
for (let i = 0; i < chains.length; i++) {
|
|
143
176
|
let chain = chains[i]
|
|
144
|
-
|
|
145
|
-
if (chain.length === 1 && self.drawLongRange) {
|
|
177
|
+
if (chain.length === 1 && drawLongRange) {
|
|
146
178
|
// singleton feature
|
|
147
179
|
const f = chain[0]
|
|
148
180
|
|
|
149
181
|
// special case where we look at RPOS/RNEXT
|
|
150
182
|
if (hasPaired) {
|
|
151
183
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
152
|
-
const refName =
|
|
184
|
+
const refName = f.next_ref!
|
|
153
185
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
154
186
|
const coord = f.next_pos!
|
|
155
187
|
draw(
|
|
156
188
|
f,
|
|
157
|
-
{
|
|
158
|
-
|
|
159
|
-
start: coord,
|
|
160
|
-
end: coord,
|
|
161
|
-
strand: f.strand,
|
|
162
|
-
},
|
|
189
|
+
{ refName, start: coord, end: coord, strand: f.strand },
|
|
190
|
+
asm,
|
|
163
191
|
true,
|
|
164
192
|
)
|
|
165
193
|
}
|
|
@@ -171,16 +199,7 @@ export default async function drawFeats(
|
|
|
171
199
|
for (let i = 0; i < features.length - 1; i++) {
|
|
172
200
|
const f = features[i]
|
|
173
201
|
const v1 = features[i + 1]
|
|
174
|
-
draw(
|
|
175
|
-
f,
|
|
176
|
-
{
|
|
177
|
-
refName: asm?.getCanonicalRefName(v1.refName) || v1.refName,
|
|
178
|
-
start: v1.start,
|
|
179
|
-
end: v1.end,
|
|
180
|
-
strand: v1.strand,
|
|
181
|
-
},
|
|
182
|
-
true,
|
|
183
|
-
)
|
|
202
|
+
draw(f, v1, asm, true)
|
|
184
203
|
}
|
|
185
204
|
}
|
|
186
205
|
} else {
|
|
@@ -192,7 +211,7 @@ export default async function drawFeats(
|
|
|
192
211
|
chain = chain.filter(f => !(f.flags & 2048))
|
|
193
212
|
}
|
|
194
213
|
for (let i = 0; i < chain.length - 1; i++) {
|
|
195
|
-
draw(chain[i], chain[i + 1], false)
|
|
214
|
+
draw(chain[i], chain[i + 1], asm, false)
|
|
196
215
|
}
|
|
197
216
|
}
|
|
198
217
|
}
|