@jbrowse/plugin-alignments 1.4.1 → 1.5.2
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/index.d.ts +7 -4
- package/dist/AlignmentsTrack/index.d.ts +2 -0
- package/dist/BamAdapter/index.d.ts +2 -4
- package/dist/CramAdapter/index.d.ts +1 -4
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +2 -1
- package/dist/HtsgetBamAdapter/index.d.ts +2 -4
- package/dist/LinearAlignmentsDisplay/index.d.ts +2 -3
- package/dist/LinearAlignmentsDisplay/models/model.d.ts +6 -6
- package/dist/LinearPileupDisplay/index.d.ts +2 -2
- package/dist/LinearPileupDisplay/model.d.ts +9 -10
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
- package/dist/LinearSNPCoverageDisplay/index.d.ts +2 -2
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +3 -2
- package/dist/PileupRPC/rpcMethods.d.ts +2 -16
- package/dist/PileupRenderer/PileupRenderer.d.ts +20 -7
- package/dist/PileupRenderer/index.d.ts +2 -3
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +38 -26
- package/dist/SNPCoverageAdapter/index.d.ts +1 -5
- package/dist/SNPCoverageRenderer/index.d.ts +3 -3
- package/dist/plugin-alignments.cjs.development.js +4488 -4254
- package/dist/plugin-alignments.cjs.development.js.map +1 -1
- package/dist/plugin-alignments.cjs.production.min.js +1 -1
- package/dist/plugin-alignments.cjs.production.min.js.map +1 -1
- package/dist/plugin-alignments.esm.js +4485 -4251
- package/dist/plugin-alignments.esm.js.map +1 -1
- package/package.json +4 -4
- package/src/AlignmentsFeatureDetail/index.test.js +2 -4
- package/src/AlignmentsFeatureDetail/{index.js → index.ts} +19 -3
- package/src/AlignmentsTrack/index.ts +36 -0
- package/src/BamAdapter/BamAdapter.test.ts +8 -0
- package/src/BamAdapter/BamAdapter.ts +11 -5
- package/src/BamAdapter/BamSlightlyLazyFeature.ts +9 -19
- package/src/BamAdapter/MismatchParser.test.ts +24 -2
- package/src/BamAdapter/MismatchParser.ts +6 -5
- package/src/BamAdapter/configSchema.ts +5 -2
- package/src/BamAdapter/index.ts +11 -5
- package/src/CramAdapter/CramAdapter.test.ts +6 -0
- package/src/CramAdapter/CramAdapter.ts +4 -2
- package/src/CramAdapter/CramTestAdapters.ts +2 -1
- package/src/CramAdapter/configSchema.ts +8 -2
- package/src/CramAdapter/index.ts +11 -4
- package/src/HtsgetBamAdapter/HtsgetBamAdapter.ts +2 -2
- package/src/HtsgetBamAdapter/index.ts +18 -5
- package/src/LinearAlignmentsDisplay/index.ts +20 -3
- package/src/LinearAlignmentsDisplay/models/configSchema.test.js +8 -69
- package/src/LinearPileupDisplay/configSchema.test.js +2 -13
- package/src/LinearPileupDisplay/configSchema.ts +4 -6
- package/src/LinearPileupDisplay/index.ts +19 -2
- package/src/LinearPileupDisplay/model.ts +53 -51
- package/src/LinearSNPCoverageDisplay/components/Tooltip.tsx +17 -12
- package/src/LinearSNPCoverageDisplay/index.ts +19 -2
- package/src/LinearSNPCoverageDisplay/models/configSchema.test.js +2 -13
- package/src/LinearSNPCoverageDisplay/models/model.ts +23 -6
- package/src/PileupRPC/rpcMethods.ts +8 -2
- package/src/PileupRenderer/PileupRenderer.tsx +154 -128
- package/src/PileupRenderer/components/PileupRendering.tsx +4 -8
- package/src/PileupRenderer/configSchema.ts +2 -2
- package/src/PileupRenderer/index.ts +16 -3
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +95 -25
- package/src/SNPCoverageAdapter/index.ts +17 -5
- package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +62 -15
- package/src/SNPCoverageRenderer/configSchema.js +5 -0
- package/src/SNPCoverageRenderer/index.ts +24 -0
- package/src/index.ts +91 -165
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.test.ts +0 -269
- package/src/SNPCoverageAdapter/__snapshots__/SNPCoverageAdapter.test.ts.snap +0 -579
- package/src/SNPCoverageRenderer/index.js +0 -11
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import { toArray } from 'rxjs/operators'
|
|
2
|
-
import { LocalFile } from 'generic-filehandle'
|
|
3
|
-
import PluginManager from '@jbrowse/core/PluginManager'
|
|
4
|
-
import { SnapshotIn } from 'mobx-state-tree'
|
|
5
|
-
import AdapterF from './index'
|
|
6
|
-
import CramAdapterF from '../CramAdapter'
|
|
7
|
-
import BamAdapterF from '../BamAdapter'
|
|
8
|
-
|
|
9
|
-
import { SequenceAdapter } from '../CramAdapter/CramTestAdapters'
|
|
10
|
-
|
|
11
|
-
const pluginManager = new PluginManager()
|
|
12
|
-
const {
|
|
13
|
-
getAdapterClass: getSNPCoverageAdapter,
|
|
14
|
-
configSchema,
|
|
15
|
-
} = pluginManager.load(AdapterF)
|
|
16
|
-
const {
|
|
17
|
-
getAdapterClass: getCramAdapter,
|
|
18
|
-
configSchema: CramConfigSchema,
|
|
19
|
-
} = pluginManager.load(CramAdapterF)
|
|
20
|
-
const {
|
|
21
|
-
getAdapterClass: getBamAdapter,
|
|
22
|
-
configSchema: BamConfigSchema,
|
|
23
|
-
} = pluginManager.load(BamAdapterF)
|
|
24
|
-
|
|
25
|
-
pluginManager.configure()
|
|
26
|
-
|
|
27
|
-
async function newSNPCoverageWithBam(
|
|
28
|
-
bamConf: SnapshotIn<typeof BamConfigSchema>,
|
|
29
|
-
) {
|
|
30
|
-
const BamAdapter = await getBamAdapter()
|
|
31
|
-
const SNPCoverageAdapter = await getSNPCoverageAdapter()
|
|
32
|
-
return new SNPCoverageAdapter(configSchema.create({}), async () => {
|
|
33
|
-
return {
|
|
34
|
-
dataAdapter: new BamAdapter(BamConfigSchema.create(bamConf)),
|
|
35
|
-
sessionIds: new Set(),
|
|
36
|
-
}
|
|
37
|
-
})
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
test('SNP adapter can fetch features from volvox.bam using bam subadapter', async () => {
|
|
41
|
-
const adapter = await newSNPCoverageWithBam({
|
|
42
|
-
type: 'BamAdapter',
|
|
43
|
-
bamLocation: {
|
|
44
|
-
localPath: require.resolve('../../test_data/volvox-sorted.bam'),
|
|
45
|
-
},
|
|
46
|
-
index: {
|
|
47
|
-
location: {
|
|
48
|
-
localPath: require.resolve('../../test_data/volvox-sorted.bam.bai'),
|
|
49
|
-
},
|
|
50
|
-
indexType: 'BAI',
|
|
51
|
-
},
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
const features = adapter.getFeatures(
|
|
55
|
-
{
|
|
56
|
-
assemblyName: 'volvox',
|
|
57
|
-
refName: 'ctgA',
|
|
58
|
-
start: 0,
|
|
59
|
-
end: 20000,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
bpPerPx: 0.2,
|
|
63
|
-
},
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
const featuresArray = await features.pipe(toArray()).toPromise()
|
|
67
|
-
expect(featuresArray[0].get('refName')).toBe('ctgA')
|
|
68
|
-
expect(featuresArray[0].get('snpinfo')).toBeTruthy()
|
|
69
|
-
|
|
70
|
-
const featuresJsonArray = featuresArray.map(f => f.toJSON())
|
|
71
|
-
expect(featuresJsonArray.length).toEqual(19998)
|
|
72
|
-
expect(featuresJsonArray.slice(1000, 1010)).toMatchSnapshot()
|
|
73
|
-
|
|
74
|
-
expect(await adapter.hasDataForRefName('ctgA')).toBe(true)
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
test('test usage of BamSlightlyLazyFeature toJSON in a SNP adapter', async () => {
|
|
78
|
-
const adapter = await newSNPCoverageWithBam({
|
|
79
|
-
type: 'BamAdapter',
|
|
80
|
-
bamLocation: {
|
|
81
|
-
localPath: require.resolve('../../test_data/volvox-sorted.bam'),
|
|
82
|
-
},
|
|
83
|
-
index: {
|
|
84
|
-
location: {
|
|
85
|
-
localPath: require.resolve('../../test_data/volvox-sorted.bam.bai'),
|
|
86
|
-
},
|
|
87
|
-
indexType: 'BAI',
|
|
88
|
-
},
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
const features = adapter.getFeatures({
|
|
92
|
-
assemblyName: 'volvox',
|
|
93
|
-
refName: 'ctgA',
|
|
94
|
-
start: 0,
|
|
95
|
-
end: 100,
|
|
96
|
-
})
|
|
97
|
-
const featuresArray = await features.pipe(toArray()).toPromise()
|
|
98
|
-
const f = featuresArray[0].toJSON()
|
|
99
|
-
|
|
100
|
-
expect(f.refName).toBe('ctgA')
|
|
101
|
-
expect(f.start).toBe(2)
|
|
102
|
-
expect(f.end).toBe(3)
|
|
103
|
-
expect(f.snpinfo).toBeTruthy()
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
test('test usage of getMultiRegion stats, SNP adapter can generate a domain from BamFile', async () => {
|
|
107
|
-
const adapter = await newSNPCoverageWithBam({
|
|
108
|
-
type: 'BamAdapter',
|
|
109
|
-
bamLocation: {
|
|
110
|
-
localPath: require.resolve('../../test_data/volvox-sorted.bam'),
|
|
111
|
-
},
|
|
112
|
-
index: {
|
|
113
|
-
location: {
|
|
114
|
-
localPath: require.resolve('../../test_data/volvox-sorted.bam.bai'),
|
|
115
|
-
},
|
|
116
|
-
indexType: 'BAI',
|
|
117
|
-
},
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
const stats = await adapter.getMultiRegionStats(
|
|
121
|
-
[
|
|
122
|
-
{
|
|
123
|
-
assemblyName: 'volvox',
|
|
124
|
-
refName: 'ctgA',
|
|
125
|
-
start: 0,
|
|
126
|
-
end: 100,
|
|
127
|
-
},
|
|
128
|
-
],
|
|
129
|
-
{
|
|
130
|
-
opts: {
|
|
131
|
-
signal: {
|
|
132
|
-
aborted: false,
|
|
133
|
-
onabort: null,
|
|
134
|
-
},
|
|
135
|
-
bpPerPx: 0.2,
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
expect(Object.keys(stats).length).toEqual(9)
|
|
141
|
-
expect(stats.scoreMin).toEqual(1)
|
|
142
|
-
expect(stats.scoreMax).toEqual(13)
|
|
143
|
-
})
|
|
144
|
-
|
|
145
|
-
async function newSNPCoverageWithCram(
|
|
146
|
-
cramConf: SnapshotIn<typeof CramConfigSchema>,
|
|
147
|
-
sequenceFileName: string,
|
|
148
|
-
) {
|
|
149
|
-
const CramAdapter = await getCramAdapter()
|
|
150
|
-
const SNPCoverageAdapter = await getSNPCoverageAdapter()
|
|
151
|
-
return new SNPCoverageAdapter(configSchema.create({}), async () => {
|
|
152
|
-
return {
|
|
153
|
-
dataAdapter: new CramAdapter(
|
|
154
|
-
CramConfigSchema.create(cramConf),
|
|
155
|
-
async () => {
|
|
156
|
-
return {
|
|
157
|
-
dataAdapter: new SequenceAdapter(new LocalFile(sequenceFileName)),
|
|
158
|
-
sessionIds: new Set(),
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
),
|
|
162
|
-
sessionIds: new Set(),
|
|
163
|
-
}
|
|
164
|
-
})
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
test('SNP adapter can fetch features from volvox.cram using cram subadapter', async () => {
|
|
168
|
-
const adapter = await newSNPCoverageWithCram(
|
|
169
|
-
{
|
|
170
|
-
type: 'CramAdapter',
|
|
171
|
-
cramLocation: {
|
|
172
|
-
localPath: require.resolve('../../test_data/volvox-sorted.cram'),
|
|
173
|
-
},
|
|
174
|
-
craiLocation: {
|
|
175
|
-
localPath: require.resolve('../../test_data/volvox-sorted.cram.crai'),
|
|
176
|
-
},
|
|
177
|
-
},
|
|
178
|
-
require.resolve('../../test_data/volvox.fa'),
|
|
179
|
-
)
|
|
180
|
-
|
|
181
|
-
const features = adapter.getFeatures(
|
|
182
|
-
{
|
|
183
|
-
assemblyName: 'volvox',
|
|
184
|
-
refName: 'ctgA',
|
|
185
|
-
start: 0,
|
|
186
|
-
end: 20000,
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
bpPerPx: 0.2,
|
|
190
|
-
},
|
|
191
|
-
)
|
|
192
|
-
|
|
193
|
-
const featuresArray = await features.pipe(toArray()).toPromise()
|
|
194
|
-
expect(featuresArray[0].get('refName')).toBe('ctgA')
|
|
195
|
-
expect(featuresArray[0].get('snpinfo')).toBeTruthy()
|
|
196
|
-
|
|
197
|
-
const featuresJsonArray = featuresArray.map(f => f.toJSON())
|
|
198
|
-
expect(featuresJsonArray.length).toEqual(19998)
|
|
199
|
-
expect(featuresJsonArray.slice(1000, 1010)).toMatchSnapshot()
|
|
200
|
-
expect(await adapter.hasDataForRefName('ctgA')).toBe(true)
|
|
201
|
-
})
|
|
202
|
-
|
|
203
|
-
test('test usage of CramSlightlyLazyFeature toJSON in a SNP adapter', async () => {
|
|
204
|
-
const adapter = await newSNPCoverageWithCram(
|
|
205
|
-
{
|
|
206
|
-
type: 'CramAdapter',
|
|
207
|
-
cramLocation: {
|
|
208
|
-
localPath: require.resolve('../../test_data/volvox-sorted.cram'),
|
|
209
|
-
},
|
|
210
|
-
craiLocation: {
|
|
211
|
-
localPath: require.resolve('../../test_data/volvox-sorted.cram.crai'),
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
require.resolve('../../test_data/volvox.fa'),
|
|
215
|
-
)
|
|
216
|
-
|
|
217
|
-
const features = adapter.getFeatures({
|
|
218
|
-
assemblyName: 'volvox',
|
|
219
|
-
refName: 'ctgA',
|
|
220
|
-
start: 0,
|
|
221
|
-
end: 100,
|
|
222
|
-
})
|
|
223
|
-
const featuresArray = await features.pipe(toArray()).toPromise()
|
|
224
|
-
const f = featuresArray[0].toJSON()
|
|
225
|
-
|
|
226
|
-
expect(f.refName).toBe('ctgA')
|
|
227
|
-
expect(f.start).toBe(2)
|
|
228
|
-
expect(f.end).toBe(3)
|
|
229
|
-
expect(f.snpinfo).toBeTruthy()
|
|
230
|
-
})
|
|
231
|
-
|
|
232
|
-
test('test usage of getMultiRegion stats, SNP adapter can generate a domain from CramFile', async () => {
|
|
233
|
-
const adapter = await newSNPCoverageWithCram(
|
|
234
|
-
{
|
|
235
|
-
type: 'CramAdapter',
|
|
236
|
-
cramLocation: {
|
|
237
|
-
localPath: require.resolve('../../test_data/volvox-sorted.cram'),
|
|
238
|
-
},
|
|
239
|
-
craiLocation: {
|
|
240
|
-
localPath: require.resolve('../../test_data/volvox-sorted.cram.crai'),
|
|
241
|
-
},
|
|
242
|
-
},
|
|
243
|
-
require.resolve('../../test_data/volvox.fa'),
|
|
244
|
-
)
|
|
245
|
-
|
|
246
|
-
const stats = await adapter.getMultiRegionStats(
|
|
247
|
-
[
|
|
248
|
-
{
|
|
249
|
-
assemblyName: 'volvox',
|
|
250
|
-
refName: 'ctgA',
|
|
251
|
-
start: 0,
|
|
252
|
-
end: 100,
|
|
253
|
-
},
|
|
254
|
-
],
|
|
255
|
-
{
|
|
256
|
-
opts: {
|
|
257
|
-
signal: {
|
|
258
|
-
aborted: false,
|
|
259
|
-
onabort: null,
|
|
260
|
-
},
|
|
261
|
-
bpPerPx: 0.2,
|
|
262
|
-
},
|
|
263
|
-
},
|
|
264
|
-
)
|
|
265
|
-
|
|
266
|
-
expect(Object.keys(stats).length).toEqual(9)
|
|
267
|
-
expect(stats.scoreMin).toEqual(1)
|
|
268
|
-
expect(stats.scoreMax).toEqual(13)
|
|
269
|
-
})
|