@jbrowse/plugin-alignments 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +12 -13
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
- package/dist/BamAdapter/BamAdapter.d.ts +1 -1
- package/dist/BamAdapter/BamAdapter.js +1 -0
- package/dist/BamAdapter/BamAdapter.js.map +1 -1
- package/dist/BamAdapter/BamSlightlyLazyFeature.js +1 -0
- package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
- package/dist/BamAdapter/MismatchParser.d.ts +2 -2
- package/dist/BamAdapter/MismatchParser.js +4 -7
- package/dist/BamAdapter/MismatchParser.js.map +1 -1
- package/dist/BamAdapter/configSchema.js +1 -1
- package/dist/BamAdapter/configSchema.js.map +1 -1
- package/dist/BamAdapter/index.js +7 -5
- package/dist/BamAdapter/index.js.map +1 -1
- package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +1 -10
- package/dist/CramAdapter/CramSlightlyLazyFeature.js +5 -218
- package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
- package/dist/CramAdapter/CramTestAdapters.d.ts +1 -1
- package/dist/CramAdapter/CramTestAdapters.js +1 -1
- package/dist/CramAdapter/CramTestAdapters.js.map +1 -1
- package/dist/CramAdapter/configSchema.js +2 -2
- package/dist/CramAdapter/configSchema.js.map +1 -1
- package/dist/CramAdapter/index.js +7 -5
- package/dist/CramAdapter/index.js.map +1 -1
- package/dist/CramAdapter/util.d.ts +18 -0
- package/dist/CramAdapter/util.js +241 -0
- package/dist/CramAdapter/util.js.map +1 -0
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +1 -1
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
- package/dist/LinearAlignmentsDisplay/models/configSchema.d.ts +1 -1
- package/dist/LinearAlignmentsDisplay/models/model.d.ts +5 -5
- package/dist/LinearAlignmentsDisplay/models/model.js +7 -7
- package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -1
- package/dist/LinearPileupDisplay/configSchema.d.ts +4 -4
- package/dist/LinearPileupDisplay/configSchema.js +2 -2
- package/dist/LinearPileupDisplay/configSchema.js.map +1 -1
- package/dist/LinearPileupDisplay/index.d.ts +3 -0
- package/dist/LinearPileupDisplay/index.js +3 -0
- package/dist/LinearPileupDisplay/index.js.map +1 -1
- package/dist/LinearPileupDisplay/model.d.ts +19 -9
- package/dist/LinearPileupDisplay/model.js +25 -30
- package/dist/LinearPileupDisplay/model.js.map +1 -1
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +1 -1
- package/dist/PileupRPC/rpcMethods.d.ts +1 -1
- package/dist/PileupRPC/rpcMethods.js +12 -7
- package/dist/PileupRPC/rpcMethods.js.map +1 -1
- package/dist/PileupRenderer/PileupLayoutSession.d.ts +1 -1
- package/dist/PileupRenderer/PileupRenderer.js +32 -28
- package/dist/PileupRenderer/PileupRenderer.js.map +1 -1
- package/dist/PileupRenderer/index.js +8 -6
- package/dist/PileupRenderer/index.js.map +1 -1
- package/dist/SNPCoverageAdapter/configSchema.d.ts +2 -3
- package/dist/SNPCoverageAdapter/configSchema.js +6 -3
- package/dist/SNPCoverageAdapter/configSchema.js.map +1 -1
- package/dist/SNPCoverageAdapter/index.d.ts +1 -2
- package/dist/SNPCoverageAdapter/index.js +17 -14
- package/dist/SNPCoverageAdapter/index.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +12 -13
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -1
- package/esm/BamAdapter/BamAdapter.d.ts +1 -1
- package/esm/BamAdapter/BamAdapter.js +1 -0
- package/esm/BamAdapter/BamAdapter.js.map +1 -1
- package/esm/BamAdapter/BamSlightlyLazyFeature.js +1 -0
- package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -1
- package/esm/BamAdapter/MismatchParser.d.ts +2 -2
- package/esm/BamAdapter/MismatchParser.js +4 -7
- package/esm/BamAdapter/MismatchParser.js.map +1 -1
- package/esm/BamAdapter/configSchema.js +1 -1
- package/esm/BamAdapter/configSchema.js.map +1 -1
- package/esm/BamAdapter/index.js +7 -5
- package/esm/BamAdapter/index.js.map +1 -1
- package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +1 -10
- package/esm/CramAdapter/CramSlightlyLazyFeature.js +5 -218
- package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
- package/esm/CramAdapter/CramTestAdapters.d.ts +1 -1
- package/esm/CramAdapter/CramTestAdapters.js +1 -1
- package/esm/CramAdapter/CramTestAdapters.js.map +1 -1
- package/esm/CramAdapter/configSchema.js +2 -2
- package/esm/CramAdapter/configSchema.js.map +1 -1
- package/esm/CramAdapter/index.js +7 -5
- package/esm/CramAdapter/index.js.map +1 -1
- package/esm/CramAdapter/util.d.ts +18 -0
- package/esm/CramAdapter/util.js +236 -0
- package/esm/CramAdapter/util.js.map +1 -0
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +1 -1
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -1
- package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +1 -1
- package/esm/LinearAlignmentsDisplay/models/model.d.ts +5 -5
- package/esm/LinearAlignmentsDisplay/models/model.js +7 -7
- package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -1
- package/esm/LinearPileupDisplay/configSchema.d.ts +4 -4
- package/esm/LinearPileupDisplay/configSchema.js +2 -2
- package/esm/LinearPileupDisplay/configSchema.js.map +1 -1
- package/esm/LinearPileupDisplay/index.d.ts +3 -0
- package/esm/LinearPileupDisplay/index.js +1 -0
- package/esm/LinearPileupDisplay/index.js.map +1 -1
- package/esm/LinearPileupDisplay/model.d.ts +19 -9
- package/esm/LinearPileupDisplay/model.js +25 -30
- package/esm/LinearPileupDisplay/model.js.map +1 -1
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
- package/esm/LinearSNPCoverageDisplay/models/model.d.ts +1 -1
- package/esm/PileupRPC/rpcMethods.d.ts +1 -1
- package/esm/PileupRPC/rpcMethods.js +12 -7
- package/esm/PileupRPC/rpcMethods.js.map +1 -1
- package/esm/PileupRenderer/PileupLayoutSession.d.ts +1 -1
- package/esm/PileupRenderer/PileupRenderer.js +32 -28
- package/esm/PileupRenderer/PileupRenderer.js.map +1 -1
- package/esm/PileupRenderer/index.js +8 -6
- package/esm/PileupRenderer/index.js.map +1 -1
- package/esm/SNPCoverageAdapter/configSchema.d.ts +2 -3
- package/esm/SNPCoverageAdapter/configSchema.js +6 -3
- package/esm/SNPCoverageAdapter/configSchema.js.map +1 -1
- package/esm/SNPCoverageAdapter/index.d.ts +1 -2
- package/esm/SNPCoverageAdapter/index.js +17 -15
- package/esm/SNPCoverageAdapter/index.js.map +1 -1
- package/esm/index.d.ts +3 -2
- package/esm/index.js +2 -2
- package/esm/index.js.map +1 -1
- package/package.json +3 -2
- package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +17 -16
- package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +1 -473
- package/src/AlignmentsFeatureDetail/index.test.js +6 -4
- package/src/BamAdapter/BamAdapter.ts +3 -2
- package/src/BamAdapter/BamSlightlyLazyFeature.ts +2 -1
- package/src/BamAdapter/MismatchParser.test.ts +21 -12
- package/src/BamAdapter/MismatchParser.ts +7 -10
- package/src/BamAdapter/__snapshots__/BamAdapter.test.ts.snap +135 -135
- package/src/BamAdapter/configSchema.ts +1 -1
- package/src/BamAdapter/index.ts +7 -8
- package/src/CombinationTest.test.ts +107 -0
- package/src/CramAdapter/CramSlightlyLazyFeature.ts +10 -219
- package/src/CramAdapter/CramTestAdapters.ts +1 -1
- package/src/CramAdapter/__snapshots__/CramAdapter.test.ts.snap +31 -31
- package/src/CramAdapter/__snapshots__/util.test.ts.snap +14 -0
- package/src/CramAdapter/configSchema.ts +2 -3
- package/src/CramAdapter/index.ts +7 -8
- package/src/CramAdapter/util.test.ts +26 -0
- package/src/CramAdapter/util.ts +251 -0
- package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +3 -1
- package/src/LinearAlignmentsDisplay/models/model.tsx +8 -7
- package/src/LinearPileupDisplay/configSchema.ts +3 -5
- package/src/LinearPileupDisplay/index.ts +5 -0
- package/src/LinearPileupDisplay/model.ts +31 -30
- package/src/PileupRPC/rpcMethods.ts +15 -20
- package/src/PileupRenderer/{PileupRenderer.tsx → PileupRenderer.ts} +48 -54
- package/src/PileupRenderer/index.ts +8 -9
- package/src/SNPCoverageAdapter/configSchema.ts +14 -13
- package/src/SNPCoverageAdapter/index.ts +17 -18
- package/src/__snapshots__/index.test.ts.snap +1 -1
- package/src/index.ts +11 -4
|
@@ -178,9 +178,9 @@ export default class PileupRenderer extends BoxRendererType {
|
|
|
178
178
|
|
|
179
179
|
// Expand the start and end of feature when softclipping enabled
|
|
180
180
|
if (showSoftClip) {
|
|
181
|
-
const mismatches = feature.get('mismatches') as Mismatch[]
|
|
181
|
+
const mismatches = feature.get('mismatches') as Mismatch[] | undefined
|
|
182
182
|
const seq = feature.get('seq') as string
|
|
183
|
-
if (seq) {
|
|
183
|
+
if (seq && mismatches) {
|
|
184
184
|
for (let i = 0; i < mismatches.length; i += 1) {
|
|
185
185
|
const { type, start, cliplen = 0 } = mismatches[i]
|
|
186
186
|
if (type === 'softclip') {
|
|
@@ -849,7 +849,7 @@ export default class PileupRenderer extends BoxRendererType {
|
|
|
849
849
|
|
|
850
850
|
const pxPerBp = Math.min(1 / bpPerPx, 2)
|
|
851
851
|
const w = Math.max(minSubfeatureWidth, pxPerBp)
|
|
852
|
-
const mismatches
|
|
852
|
+
const mismatches = feature.get('mismatches') as Mismatch[] | undefined
|
|
853
853
|
const heightLim = charHeight - 2
|
|
854
854
|
|
|
855
855
|
// extraHorizontallyFlippedOffset is used to draw interbase items, which
|
|
@@ -858,6 +858,10 @@ export default class PileupRenderer extends BoxRendererType {
|
|
|
858
858
|
? 1 / bpPerPx + 1
|
|
859
859
|
: -1
|
|
860
860
|
|
|
861
|
+
if (!mismatches) {
|
|
862
|
+
return
|
|
863
|
+
}
|
|
864
|
+
|
|
861
865
|
// two pass rendering: first pass, draw all the mismatches except wide
|
|
862
866
|
// insertion markers
|
|
863
867
|
for (let i = 0; i < mismatches.length; i += 1) {
|
|
@@ -1052,7 +1056,7 @@ export default class PileupRenderer extends BoxRendererType {
|
|
|
1052
1056
|
const { regions, bpPerPx } = renderArgs
|
|
1053
1057
|
const [region] = regions
|
|
1054
1058
|
const minFeatWidth = readConfObject(config, 'minSubfeatureWidth')
|
|
1055
|
-
const mismatches
|
|
1059
|
+
const mismatches = feature.get('mismatches') as Mismatch[] | undefined
|
|
1056
1060
|
const seq = feature.get('seq')
|
|
1057
1061
|
const { charWidth, charHeight } = this.getCharWidthHeight()
|
|
1058
1062
|
const { bases } = theme.palette
|
|
@@ -1065,59 +1069,49 @@ export default class PileupRenderer extends BoxRendererType {
|
|
|
1065
1069
|
}
|
|
1066
1070
|
|
|
1067
1071
|
// Display all bases softclipped off in lightened colors
|
|
1068
|
-
if (seq) {
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
const [softClipLeftPx, softClipRightPx] = bpSpanPx(
|
|
1087
|
-
softClipStart + k,
|
|
1088
|
-
softClipStart + k + 1,
|
|
1089
|
-
region,
|
|
1090
|
-
bpPerPx,
|
|
1091
|
-
)
|
|
1092
|
-
const softClipWidthPx = Math.max(
|
|
1093
|
-
minFeatWidth,
|
|
1094
|
-
Math.abs(softClipLeftPx - softClipRightPx),
|
|
1095
|
-
)
|
|
1072
|
+
if (!(seq && mismatches)) {
|
|
1073
|
+
return
|
|
1074
|
+
}
|
|
1075
|
+
mismatches
|
|
1076
|
+
.filter(mismatch => mismatch.type === 'softclip')
|
|
1077
|
+
.forEach(mismatch => {
|
|
1078
|
+
const len = mismatch.cliplen || 0
|
|
1079
|
+
const s = feature.get('start')
|
|
1080
|
+
const start = mismatch.start === 0 ? s - len : s + mismatch.start
|
|
1081
|
+
|
|
1082
|
+
for (let k = 0; k < len; k += 1) {
|
|
1083
|
+
const base = seq.charAt(k + mismatch.start)
|
|
1084
|
+
|
|
1085
|
+
// If softclip length+start is longer than sequence, no need to
|
|
1086
|
+
// continue showing base
|
|
1087
|
+
if (!base) {
|
|
1088
|
+
return
|
|
1089
|
+
}
|
|
1096
1090
|
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
topPx,
|
|
1105
|
-
softClipWidthPx,
|
|
1106
|
-
heightPx,
|
|
1107
|
-
canvasWidth,
|
|
1108
|
-
)
|
|
1091
|
+
const [leftPx, rightPx] = bpSpanPx(
|
|
1092
|
+
start + k,
|
|
1093
|
+
start + k + 1,
|
|
1094
|
+
region,
|
|
1095
|
+
bpPerPx,
|
|
1096
|
+
)
|
|
1097
|
+
const widthPx = Math.max(minFeatWidth, rightPx - leftPx)
|
|
1109
1098
|
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1099
|
+
// Black accounts for IUPAC ambiguity code bases such as N that
|
|
1100
|
+
// show in soft clipping
|
|
1101
|
+
const baseColor = colorForBase[base] || '#000000'
|
|
1102
|
+
ctx.fillStyle = baseColor
|
|
1103
|
+
fillRect(ctx, leftPx, topPx, widthPx, heightPx, canvasWidth)
|
|
1104
|
+
|
|
1105
|
+
if (widthPx >= charWidth && heightPx >= charHeight - 5) {
|
|
1106
|
+
ctx.fillStyle = theme.palette.getContrastText(baseColor)
|
|
1107
|
+
ctx.fillText(
|
|
1108
|
+
base,
|
|
1109
|
+
leftPx + (widthPx - charWidth) / 2 + 1,
|
|
1110
|
+
topPx + heightPx,
|
|
1111
|
+
)
|
|
1118
1112
|
}
|
|
1119
|
-
}
|
|
1120
|
-
|
|
1113
|
+
}
|
|
1114
|
+
})
|
|
1121
1115
|
}
|
|
1122
1116
|
|
|
1123
1117
|
makeImageData({
|
|
@@ -4,13 +4,12 @@ import ReactComponent from './components/PileupRendering'
|
|
|
4
4
|
import configSchema from './configSchema'
|
|
5
5
|
|
|
6
6
|
export default function register(pluginManager: PluginManager) {
|
|
7
|
-
pluginManager.addRendererType(
|
|
8
|
-
(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
)
|
|
7
|
+
pluginManager.addRendererType(() => {
|
|
8
|
+
return new PileupRenderer({
|
|
9
|
+
name: 'PileupRenderer',
|
|
10
|
+
ReactComponent,
|
|
11
|
+
configSchema,
|
|
12
|
+
pluginManager,
|
|
13
|
+
})
|
|
14
|
+
})
|
|
16
15
|
}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { ConfigurationSchema } from '@jbrowse/core/configuration'
|
|
2
|
-
import PluginManager from '@jbrowse/core/PluginManager'
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* #config SNPCoverageAdapter
|
|
6
5
|
*/
|
|
7
6
|
function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
8
7
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
const configSchema = ConfigurationSchema(
|
|
9
|
+
'SNPCoverageAdapter',
|
|
10
|
+
{
|
|
11
|
+
/**
|
|
12
|
+
* #slot
|
|
13
|
+
* normally refers to a BAM or CRAM adapter
|
|
14
|
+
*/
|
|
15
|
+
subadapter: {
|
|
16
|
+
type: 'frozen',
|
|
17
|
+
defaultValue: null,
|
|
18
18
|
},
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
},
|
|
20
|
+
{ explicitlyTyped: true },
|
|
21
|
+
)
|
|
21
22
|
|
|
22
|
-
export default
|
|
23
|
+
export default configSchema
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import PluginManager from '@jbrowse/core/PluginManager'
|
|
2
2
|
import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'
|
|
3
|
-
import
|
|
3
|
+
import configSchema from './configSchema'
|
|
4
4
|
import { capabilities } from './SNPCoverageAdapter'
|
|
5
5
|
|
|
6
|
-
export default (pluginManager: PluginManager)
|
|
7
|
-
pluginManager.addAdapterType(
|
|
8
|
-
(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
)
|
|
6
|
+
export default function (pluginManager: PluginManager) {
|
|
7
|
+
pluginManager.addAdapterType(() => {
|
|
8
|
+
return new AdapterType({
|
|
9
|
+
name: 'SNPCoverageAdapter',
|
|
10
|
+
adapterMetadata: {
|
|
11
|
+
category: null,
|
|
12
|
+
displayName: null,
|
|
13
|
+
hiddenFromGUI: true,
|
|
14
|
+
description: null,
|
|
15
|
+
},
|
|
16
|
+
getAdapterClass: () =>
|
|
17
|
+
import('./SNPCoverageAdapter').then(r => r.default),
|
|
18
|
+
configSchema,
|
|
19
|
+
adapterCapabilities: capabilities,
|
|
20
|
+
})
|
|
21
|
+
})
|
|
23
22
|
}
|
package/src/index.ts
CHANGED
|
@@ -12,7 +12,10 @@ import SNPCoverageRendererF from './SNPCoverageRenderer'
|
|
|
12
12
|
import PileupRendererF from './PileupRenderer'
|
|
13
13
|
import LinearAlignmentsDisplayF from './LinearAlignmentsDisplay'
|
|
14
14
|
import LinearSNPCoverageDisplayF from './LinearSNPCoverageDisplay'
|
|
15
|
-
import LinearPileupDisplayF
|
|
15
|
+
import LinearPileupDisplayF, {
|
|
16
|
+
linearPileupDisplayStateModelFactory,
|
|
17
|
+
linearPileupDisplayConfigSchemaFactory,
|
|
18
|
+
} from './LinearPileupDisplay'
|
|
16
19
|
import AlignmentsTrackF from './AlignmentsTrack'
|
|
17
20
|
import AlignmentsFeatureWidgetF from './AlignmentsFeatureDetail'
|
|
18
21
|
|
|
@@ -28,9 +31,6 @@ import {
|
|
|
28
31
|
TrackTypeGuesser,
|
|
29
32
|
} from '@jbrowse/core/util/tracks'
|
|
30
33
|
|
|
31
|
-
export { MismatchParser }
|
|
32
|
-
export type { LinearPileupDisplayModel }
|
|
33
|
-
|
|
34
34
|
export default class AlignmentsPlugin extends Plugin {
|
|
35
35
|
name = 'AlignmentsPlugin'
|
|
36
36
|
|
|
@@ -125,3 +125,10 @@ export default class AlignmentsPlugin extends Plugin {
|
|
|
125
125
|
)
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
+
|
|
129
|
+
export {
|
|
130
|
+
linearPileupDisplayConfigSchemaFactory,
|
|
131
|
+
linearPileupDisplayStateModelFactory,
|
|
132
|
+
MismatchParser,
|
|
133
|
+
}
|
|
134
|
+
export type { LinearPileupDisplayModel }
|