@jbrowse/plugin-alignments 1.6.6 → 1.6.9
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/BamSlightlyLazyFeature.d.ts +1 -10
- package/dist/BamAdapter/MismatchParser.d.ts +3 -5
- package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +1 -2
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +2 -2
- package/dist/PileupRenderer/PileupRenderer.d.ts +20 -6
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +3 -11
- package/dist/plugin-alignments.cjs.development.js +591 -552
- 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 +594 -555
- package/dist/plugin-alignments.esm.js.map +1 -1
- package/dist/util.d.ts +4 -0
- package/package.json +3 -3
- package/src/BamAdapter/BamAdapter.ts +10 -7
- package/src/BamAdapter/BamSlightlyLazyFeature.ts +11 -79
- package/src/BamAdapter/MismatchParser.test.ts +53 -297
- package/src/BamAdapter/MismatchParser.ts +54 -116
- package/src/BamAdapter/configSchema.ts +0 -4
- package/src/CramAdapter/CramSlightlyLazyFeature.ts +3 -10
- package/src/LinearAlignmentsDisplay/models/model.tsx +4 -6
- package/src/LinearPileupDisplay/components/ColorByModifications.tsx +76 -80
- package/src/LinearPileupDisplay/components/ColorByTag.tsx +24 -23
- package/src/LinearPileupDisplay/components/FilterByTag.tsx +73 -68
- package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +28 -26
- package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +24 -13
- package/src/LinearPileupDisplay/components/SortByTag.tsx +29 -21
- package/src/LinearPileupDisplay/model.ts +6 -0
- package/src/PileupRenderer/PileupRenderer.tsx +178 -57
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +180 -229
- package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +12 -11
- package/src/util.ts +25 -0
package/dist/util.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
1
2
|
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
3
|
+
import { AugmentedRegion } from '@jbrowse/core/util';
|
|
2
4
|
export declare function getTag(feature: Feature, tag: string): any;
|
|
3
5
|
export declare function getTagAlt(feature: Feature, tag: string, alt: string): any;
|
|
4
6
|
export declare const orientationTypes: {
|
|
@@ -13,3 +15,5 @@ export declare const orientationTypes: {
|
|
|
13
15
|
};
|
|
14
16
|
};
|
|
15
17
|
export declare function getColorWGBS(strand: number, base: string): "#f00" | "#00f" | "#888";
|
|
18
|
+
export declare function fetchSequence(region: AugmentedRegion, adapter: BaseFeatureDataAdapter): Promise<any>;
|
|
19
|
+
export declare function shouldFetchReferenceSequence(type?: string): boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-alignments",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.9",
|
|
4
4
|
"description": "JBrowse 2 alignments adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"useSrc": "node ../../scripts/useSrc.js"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@gmod/bam": "^1.1.
|
|
38
|
+
"@gmod/bam": "^1.1.15",
|
|
39
39
|
"@gmod/cram": "^1.6.1",
|
|
40
40
|
"@material-ui/icons": "^4.9.1",
|
|
41
41
|
"abortable-promise-cache": "^1.5.0",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "f6c3d4edfadc26f7ac635a2fa7259f50f0c7e5e3"
|
|
65
65
|
}
|
|
@@ -38,7 +38,6 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
|
|
|
38
38
|
const bamLocation = readConfObject(this.config, 'bamLocation')
|
|
39
39
|
const location = readConfObject(this.config, ['index', 'location'])
|
|
40
40
|
const indexType = readConfObject(this.config, ['index', 'indexType'])
|
|
41
|
-
const chunkSizeLimit = readConfObject(this.config, 'chunkSizeLimit')
|
|
42
41
|
const bam = new BamFile({
|
|
43
42
|
bamFilehandle: openLocation(bamLocation, this.pluginManager),
|
|
44
43
|
csiFilehandle:
|
|
@@ -49,8 +48,13 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
|
|
|
49
48
|
indexType !== 'CSI'
|
|
50
49
|
? openLocation(location, this.pluginManager)
|
|
51
50
|
: undefined,
|
|
52
|
-
|
|
53
|
-
fetchSizeLimit
|
|
51
|
+
|
|
52
|
+
// chunkSizeLimit and fetchSizeLimit are more troublesome than
|
|
53
|
+
// helpful, and have given overly large values on the ultra long
|
|
54
|
+
// nanopore reads even with 500MB limits, so disabled with infinity
|
|
55
|
+
chunkSizeLimit: Infinity,
|
|
56
|
+
fetchSizeLimit: Infinity,
|
|
57
|
+
yieldThreadTime: Infinity,
|
|
54
58
|
})
|
|
55
59
|
|
|
56
60
|
const adapterConfig = readConfObject(this.config, 'sequenceAdapter')
|
|
@@ -139,7 +143,7 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
|
|
|
139
143
|
|
|
140
144
|
const seqChunks = await features.pipe(toArray()).toPromise()
|
|
141
145
|
|
|
142
|
-
|
|
146
|
+
let sequence = ''
|
|
143
147
|
seqChunks
|
|
144
148
|
.sort((a, b) => a.get('start') - b.get('start'))
|
|
145
149
|
.forEach(chunk => {
|
|
@@ -149,10 +153,9 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
|
|
|
149
153
|
const trimEnd = Math.min(end - chunkStart, chunkEnd - chunkStart)
|
|
150
154
|
const trimLength = trimEnd - trimStart
|
|
151
155
|
const chunkSeq = chunk.get('seq') || chunk.get('residues')
|
|
152
|
-
|
|
156
|
+
sequence += chunkSeq.substr(trimStart, trimLength)
|
|
153
157
|
})
|
|
154
158
|
|
|
155
|
-
const sequence = trimmed.join('')
|
|
156
159
|
if (sequence.length !== end - start) {
|
|
157
160
|
throw new Error(
|
|
158
161
|
`sequence fetch failed: fetching ${refName}:${(
|
|
@@ -181,7 +184,7 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
|
|
|
181
184
|
|
|
182
185
|
for (const record of records) {
|
|
183
186
|
let ref: string | undefined
|
|
184
|
-
if (!record.get('
|
|
187
|
+
if (!record.get('MD')) {
|
|
185
188
|
ref = await this.seqFetch(
|
|
186
189
|
originalRefName || refName,
|
|
187
190
|
record.get('start'),
|
|
@@ -4,18 +4,13 @@ import {
|
|
|
4
4
|
SimpleFeatureSerialized,
|
|
5
5
|
} from '@jbrowse/core/util/simpleFeature'
|
|
6
6
|
import { BamRecord } from '@gmod/bam'
|
|
7
|
-
import {
|
|
8
|
-
parseCigar,
|
|
9
|
-
generateMD,
|
|
10
|
-
cigarToMismatches,
|
|
11
|
-
mdToMismatches,
|
|
12
|
-
Mismatch,
|
|
13
|
-
} from './MismatchParser'
|
|
7
|
+
import { getMismatches } from './MismatchParser'
|
|
14
8
|
|
|
15
9
|
import BamAdapter from './BamAdapter'
|
|
16
10
|
|
|
17
11
|
export default class BamSlightlyLazyFeature implements Feature {
|
|
18
|
-
|
|
12
|
+
// uses parameter properties to automatically create fields on the class
|
|
13
|
+
// https://www.typescriptlang.org/docs/handbook/classes.html#parameter-properties
|
|
19
14
|
constructor(
|
|
20
15
|
private record: BamRecord,
|
|
21
16
|
private adapter: BamAdapter,
|
|
@@ -70,18 +65,6 @@ export default class BamSlightlyLazyFeature implements Feature {
|
|
|
70
65
|
return this.record.getReadBases()
|
|
71
66
|
}
|
|
72
67
|
|
|
73
|
-
_get_MD() {
|
|
74
|
-
const md = this.record.get('MD') || this.cachedMD
|
|
75
|
-
if (!md) {
|
|
76
|
-
const seq = this.get('seq')
|
|
77
|
-
if (seq && this.ref) {
|
|
78
|
-
this.cachedMD = generateMD(this.ref, this.get('seq'), this.get('CIGAR'))
|
|
79
|
-
return this.cachedMD
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return md
|
|
83
|
-
}
|
|
84
|
-
|
|
85
68
|
qualRaw() {
|
|
86
69
|
return this.record.qualRaw()
|
|
87
70
|
}
|
|
@@ -100,8 +83,6 @@ export default class BamSlightlyLazyFeature implements Feature {
|
|
|
100
83
|
prop =>
|
|
101
84
|
prop.startsWith('_get_') &&
|
|
102
85
|
prop !== '_get_mismatches' &&
|
|
103
|
-
prop !== '_get_skips_and_dels' &&
|
|
104
|
-
prop !== '_get_cram_read_features' &&
|
|
105
86
|
prop !== '_get_tags' &&
|
|
106
87
|
prop !== '_get_next_seq_id' &&
|
|
107
88
|
prop !== '_get_seq_id',
|
|
@@ -154,63 +135,14 @@ export default class BamSlightlyLazyFeature implements Feature {
|
|
|
154
135
|
}
|
|
155
136
|
}
|
|
156
137
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
let mismatches: Mismatch[] = []
|
|
166
|
-
let cigarOps: string[] = []
|
|
167
|
-
|
|
168
|
-
// parse the CIGAR tag if it has one
|
|
169
|
-
const cigarString = this.get(cigarAttributeName)
|
|
170
|
-
if (cigarString) {
|
|
171
|
-
cigarOps = parseCigar(cigarString)
|
|
172
|
-
mismatches = mismatches.concat(
|
|
173
|
-
cigarToMismatches(cigarOps, this.get('seq'), this.qualRaw()),
|
|
174
|
-
)
|
|
175
|
-
}
|
|
176
|
-
return mismatches
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
_get_mismatches({
|
|
180
|
-
cigarAttributeName = 'CIGAR',
|
|
181
|
-
mdAttributeName = 'MD',
|
|
182
|
-
}: {
|
|
183
|
-
cigarAttributeName?: string
|
|
184
|
-
mdAttributeName?: string
|
|
185
|
-
} = {}) {
|
|
186
|
-
let mismatches: Mismatch[] = []
|
|
187
|
-
let cigarOps: string[] = []
|
|
188
|
-
|
|
189
|
-
// parse the CIGAR tag if it has one
|
|
190
|
-
const cigarString = this.get(cigarAttributeName)
|
|
191
|
-
const seq = this.get('seq')
|
|
192
|
-
const qual = this.qualRaw()
|
|
193
|
-
if (cigarString) {
|
|
194
|
-
cigarOps = parseCigar(cigarString)
|
|
195
|
-
mismatches = mismatches.concat(cigarToMismatches(cigarOps, seq, qual))
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// now let's look for CRAM or MD mismatches
|
|
199
|
-
const mdString = this.get(mdAttributeName)
|
|
200
|
-
if (mdString) {
|
|
201
|
-
mismatches = mismatches.concat(
|
|
202
|
-
mdToMismatches(mdString, cigarOps, mismatches, seq, qual),
|
|
203
|
-
)
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// uniqify the mismatches
|
|
207
|
-
const seen: { [index: string]: boolean } = {}
|
|
208
|
-
return mismatches.filter(m => {
|
|
209
|
-
const key = `${m.type},${m.start},${m.length}`
|
|
210
|
-
const s = seen[key]
|
|
211
|
-
seen[key] = true
|
|
212
|
-
return !s
|
|
213
|
-
})
|
|
138
|
+
_get_mismatches() {
|
|
139
|
+
return getMismatches(
|
|
140
|
+
this.get('CIGAR'),
|
|
141
|
+
this.get('MD'),
|
|
142
|
+
this.get('seq'),
|
|
143
|
+
this.ref,
|
|
144
|
+
this.qualRaw(),
|
|
145
|
+
)
|
|
214
146
|
}
|
|
215
147
|
|
|
216
148
|
_get_clipPos() {
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
generateMD,
|
|
3
2
|
getMismatches,
|
|
4
3
|
cigarToMismatches,
|
|
5
|
-
parseCigar,
|
|
6
4
|
mdToMismatches,
|
|
5
|
+
parseCigar,
|
|
7
6
|
getNextRefPos,
|
|
8
7
|
getModificationPositions,
|
|
9
8
|
} from './MismatchParser'
|
|
@@ -29,48 +28,58 @@ test('md to mismatches', () => {
|
|
|
29
28
|
])
|
|
30
29
|
})
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
describe('get mismatches', () => {
|
|
32
|
+
it('simple deletion', () => {
|
|
33
|
+
// simple deletion
|
|
34
|
+
expect(getMismatches('56M1D45M', '56^A45', seq)).toEqual([
|
|
35
|
+
{ start: 56, type: 'deletion', base: '*', length: 1 },
|
|
36
|
+
])
|
|
37
|
+
})
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
it('simple insertion', () => {
|
|
40
|
+
// simple insertion
|
|
41
|
+
expect(
|
|
42
|
+
getMismatches(
|
|
43
|
+
'89M1I11M',
|
|
44
|
+
'100',
|
|
45
|
+
'AAAAAAAAAACAAAAAAAAAAAAAACCCCCCCCCCCCCCCCCCCCCCCCCGGGGGGGGGGGGGGGGGGGGGGGGGTTTTTTTTTTTTTTTTTTTTTTTTTA',
|
|
46
|
+
),
|
|
47
|
+
).toEqual([{ start: 89, type: 'insertion', base: '1', length: 0 }])
|
|
48
|
+
})
|
|
46
49
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
it('deletion and a SNP', () => {
|
|
51
|
+
// contains a deletion and a SNP
|
|
52
|
+
// read GGGGG--ATTTTTT
|
|
53
|
+
// ||||| ||||||
|
|
54
|
+
// GGGGGACCTTTTTT
|
|
55
|
+
expect(getMismatches('5M2D6M', '5^AC0C5', 'GGGGGATTTTTT')).toEqual([
|
|
56
|
+
{ start: 5, type: 'deletion', base: '*', length: 2 },
|
|
57
|
+
{ start: 7, type: 'mismatch', base: 'A', altbase: 'C', length: 1 },
|
|
58
|
+
])
|
|
59
|
+
})
|
|
55
60
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
it('0-length MD entries', () => {
|
|
62
|
+
// 0-length MD entries, which indicates two SNPs right next to each other
|
|
63
|
+
// "They generally occur between SNPs, or between a deletion then a SNP."
|
|
64
|
+
// http://seqanswers.com/forums/showthread.php?t=8978
|
|
65
|
+
//
|
|
66
|
+
// read GGGGGCATTTTT
|
|
67
|
+
// ||||| |||||
|
|
68
|
+
// ref GGGGGACTTTTT
|
|
69
|
+
expect(getMismatches('12M', '5A0C5', 'GGGGGCATTTTT')).toEqual([
|
|
70
|
+
{ altbase: 'A', base: 'C', length: 1, start: 5, type: 'mismatch' },
|
|
71
|
+
{ altbase: 'C', base: 'A', length: 1, start: 6, type: 'mismatch' },
|
|
72
|
+
])
|
|
73
|
+
})
|
|
67
74
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
it('non-0-length-MD string', () => {
|
|
76
|
+
// same as above but with the non-0-length MD string
|
|
77
|
+
// not sure if it is entirely legal, but may appear in the wild
|
|
78
|
+
expect(getMismatches('12M', '5AC5', 'GGGGGCATTTTT')).toEqual([
|
|
79
|
+
{ altbase: 'A', base: 'C', length: 1, start: 5, type: 'mismatch' },
|
|
80
|
+
{ altbase: 'C', base: 'A', length: 1, start: 6, type: 'mismatch' },
|
|
81
|
+
])
|
|
82
|
+
})
|
|
74
83
|
})
|
|
75
84
|
|
|
76
85
|
test('basic skip', () => {
|
|
@@ -224,268 +233,15 @@ test('clipping', () => {
|
|
|
224
233
|
])
|
|
225
234
|
})
|
|
226
235
|
|
|
227
|
-
test('md generation', () => {
|
|
228
|
-
const query =
|
|
229
|
-
`CACACTAGCCCGTCAGCGAACGCGTGCGCGGCCGCTGCCCTGCAGCGAATGGGGCTAACGACGCATAAAACGCCCGCATA
|
|
230
|
-
ACCACTCGAGCTACGGGAAATTCACTCAGGCTGTGTTGCTTCGACGTGTAGATCTCATTCACATATCATAATACCTCCAA
|
|
231
|
-
GACCAACGGCTGCTCATGACTCTCTTACCTTGTTAGGGACATTTCGGCACTAGGGAAGAGCTGAGGACTTTGAAAACGTC
|
|
232
|
-
GATAAAACCATCGCGGGAACTAGCCTGCGTTAGAACTCCCATATTTTACGGGTCGCAAGCTTGAGAGTCCTGTCCCGGCA
|
|
233
|
-
GCTGCAAGTGCTACGGCAGGAGGGGATCTACCATAACGTGCAGTAAGACCCCTGCCCGTAATGAGGCGGTACTCGTCTCT
|
|
234
|
-
AATCGTCAGTAGTTACTATGTCCGAGGACGTGCCTCTACGAGTTGAACTCTGGCTAGGCCCACCTGTCCGCGCCACTGCT
|
|
235
|
-
CGGGTACCCCATCTGCTTTATCCAACTTCACCTGCGCCTTAACGGAATCTCTGGTTGCCAGTCATCCGATGGTCATTAAG
|
|
236
|
-
CAGCGTGGTACATCGTAAGCCAATACTTCAGGGCGCCTAGCCATATTCCCAGCCAAGCGGCTGCATAATTACAAGCGCTG
|
|
237
|
-
GCACGACTAATCGATCCCACGAAGCCTGGGAGATGACCCTAGCCCTAAAAGTCTGCCCTCGTGACCTATCTGCCACGTGA
|
|
238
|
-
TACTTGATATATTTGTAATGAGCGGAGCAGGGTAGATGACTAATATACAGGGTCGTCTAGGTTTGCACGAATGCAGACAT
|
|
239
|
-
CATCCGCGCAAGGCCCGGACGGCTGTACTCACACAAGCGTAGGTCTCCATTCTCCCTCAGCCAGCACTAAGATTCCCACG
|
|
240
|
-
TGACCAGGGCGACGGGCCCTCAGCCAAACGTATACCTTGATATCTACTTAAGTCAAGGTTGACTCCGAACCCTATGGGTC
|
|
241
|
-
GGTGCCGTTAACAGGGAGTCTATAGTCTCGGCGTTTCCATTGTTGTTTCAAACTCCTGCTTATAAGGGTGAAAGCGCTGG
|
|
242
|
-
AGGGCATAGTTTATGCCCAAAGTTGCGCGTAGATCCGTCGGGATAGTGTGCTATAATAAGGACTGCTCGAGGTGTAGGCG
|
|
243
|
-
GTAACGGCTCCCGCCTTCAGTAGGGCGCGGAACTCGAATCGGAGTTACAGGACTTGACCCGAGTCATATCCAAGTTTATG
|
|
244
|
-
TTAGCCCGATCGGATCTCGGATGCTCGTATCTGCGACGAGGTCGAAGACGGACGAAATACGATTCAACCGCGCGAACCAT
|
|
245
|
-
TGCATCTAACCTTTAGCCTCAATGGGTGTTAACGTGGTGGTGCTCACTGGTCGTACTCTTTTGTGCAACTACTTCCAGTA
|
|
246
|
-
TGAACAACAGTCAAGTTGCGACATGATGCCTCTTTACGTGATTCCCACAGTTTCCCACCTCAGGATGCTTGCTTCTTTAG
|
|
247
|
-
CTAAACCCAATAGTTATGGCGGCCACCTTCAGACGTCCCACGAGGACGGCTATGACGTTGCTAAACGCATTCGCCGCCGA
|
|
248
|
-
AAGGTAGCGCTAACGAGTTCTGTAGAGTTTGTTCCGGGCCAGATCTCCAGGATGGTCGCAACAACGCAGTACCGGTTTTA
|
|
249
|
-
TACTGGTGAACCCTCTACCTGTTATTAAGTTTACAGCGTTGTCCTACGGTACATGGTCGTGAGTACTCGCGTAGTCAAAC
|
|
250
|
-
GCCAGGACTAGCAGCGAGAATTATTGGTCGCGATACTTACTACAATAACTTACCCGATATTGACAGTGCAGGGTTGAAAG
|
|
251
|
-
AGATGGACAGTTGAATATCTACTTTTGACGGAATCCTCAAAACTCCCTCCACCTACAGGTAACGGCCCTGTCCGGGACCG
|
|
252
|
-
CTTTCTTGCATATATTGGTTTCCACAGAGCGTATCTAAGTTAGTCTCTTGACCGTTCACCGACTCTAGGGCGACTCGTTA
|
|
253
|
-
TCGCCCTCCGAAACGATGCTATTCGTTACCTCAATGATGACAGTTGGTCAGACGTAAGTGATCCCAATCTCACTCGTGCC
|
|
254
|
-
TTGTCCACCAGTTCCGTGAAGACGAAGCAATACGCGGAATACGTGGCTTCGTAATATTTTGACGATATGGGGCTGGGACG
|
|
255
|
-
CTCAAGACTTCCAGTGACAAACAAAGTGAAGAGCAACTTGCATCCCTCATCATGACACTATTACCAGAGTAGCCGATGGA
|
|
256
|
-
TTAACGCTAATTTGGTCAGGGCAGCTATCGCATCCCGCAGGTGTAGGCGGAGACTTTTTTTTTTTGCGAGTTGACAGGTA
|
|
257
|
-
ATCTCACGGTATAAGCACGGTTATTTACGCAAGCGACGTCCCTGGGAGAATCCGCCCACGGTAGGACCCCATAATCCATA
|
|
258
|
-
AATACTGCGGTCGAAACCGTTCATATCGTGATCAGGAACCTGCTTTCTAGGGATGCGGTCCCCGCATTCAGAGTTCTACT
|
|
259
|
-
TTGGCCAGCGTGAGACGTTAACAACCCACTTACGCGGTACATTGAAGTCGTTCGAGTCCAGTGTGACCTGTGTACCGAAT
|
|
260
|
-
AACGTGTAGACCAGCGCGTCTACGACTTAGCGCGGCTCCACTCCAAAGCACCTTTTGGGACTTTGCCAACGAGCCTGTTG
|
|
261
|
-
GCCGTTAAGCGGTATTTGCACAAACTAGATCACCCTAGTGTCGGTAACCGACTCACCCTATTGGGATCATCGTGAGCTCG
|
|
262
|
-
AAACACTAGGCGGACCAACGGATGAGCATTTGATTCGGCTCTACAGAGCTTGTCGCCAGAGAAAAACTGTGGCAACTCTA
|
|
263
|
-
CGCTCGCGGGGAATTGACTTTAGCGGCCCCCTAGACAGGTGTGGGACACCTAGTCTAGATTCACGTCCTACACGACATAA
|
|
264
|
-
CAGCACCTTCCTGGCCAGCCCAGAAATATGTACCTGGACGACACTCCAGTCCTTCCGACGCCATAATGTGAGCCGTAGCG
|
|
265
|
-
CCCACGACGATCAACGAGGAGAAATTTACAAAGGCTAGTGTGAATGCTACGTCGTCTACCCATTGCTCCATCGAAACGAA
|
|
266
|
-
CGCAACGCACAGCATACAACGTTCTACCATGCCGGAGCGCGGATCCTCAAGTACAGAAAACAGTAGGTCTAAACATGATC
|
|
267
|
-
CGAACAAATCGGTAGGTTTACACAGCTACCTCCGTCCATATGGCGTACTGCATCGATCGTGCTTACTACGGTCATCGCCG
|
|
268
|
-
GCCCGCGATGCACGTACGAAGGAATACCCTGTCTGCCCCCGCGCGAGCTTACGCTGTCTCGCACATACCGAGCACTGTCG
|
|
269
|
-
CTTCGAAGCTAAACTATGAGCCCAGCCGAGCTCCTTATGGCCGCAACGCTGGTGCGCCAGTCTGATAAATTCCACACGTA
|
|
270
|
-
CACGATCCTCGTGTAAGATCTCGGGCAGTAGTAAGTCATTATCACATGGTTAGGAGATGATAGAATACATGGGTTCTGGT
|
|
271
|
-
AGCTACAACACAGGATTTGTGAACCCTTGGCCCTTTGGTGAGTGCTACAATAAAATTCTCCGTATGGGACTAACCTAAAG
|
|
272
|
-
GGTGCTGCGATTGACTTCCCGGCCCAGGTTAGATGTCCATATCATTCATACATTCCCGACCGACCCAATGCCTAAATCAG
|
|
273
|
-
AGGCGCCTTAGCTAGTTCTTGTATGTGTGCCACGATCCAGGCCACGCAGACACGACCCCTCGGCGAGTGATCACCATTAC
|
|
274
|
-
CGGATTTGGCATCGAAGTCTTTTTCTGGGAAGTTAGCCAGTTTGGTGTGCGGTGCTTAGAATCTTATTCCCAGTCAAACG
|
|
275
|
-
CCCCTGAGGACGAATTGCTATACCCTAGTTGCCACGCCGGAACCATCTTCGGGAGAGTAGACAAATCCGAGTTAGATATG
|
|
276
|
-
TTAGCGTCTTCGTGGAGTCTGAAATGTATCACTTCTACCAGCAGAATACGCGAATGTCTGTTTGCCCTGGATGAGCGGAA
|
|
277
|
-
TTGGCTTAAAAGCACAGACTACGAGCATTTTGAGTACGGTTCCATATCGCGATGTAATTACCTATACTAGGTTATCGCTA
|
|
278
|
-
GTACGAATAGCGAAGTACAGTGTAGCAGGCCCTTTGTTAGCAAGTTGCTCTAAACAGTTGTCAATACGTAGGCACAATAG
|
|
279
|
-
TGCGATATCTTCCTAAATCCGGGAAGCCATGGCGCTGGGCAGAATATCACATACGGAATAATCAACCTCCATATTTGGTT
|
|
280
|
-
CGTTTTACTCGATGAGTGCCCCTTGCTTGAGACGAGCGTTCTGAGTTGATGGCATGTCGAAAGGTTTACGCGGTGAGTAG
|
|
281
|
-
AGCACTCTTGACCCCTACAGATCGGAATCCTCGGAGGTAGGACAGTTGGAACTTCACAGTTAACCTTTGTTCGATTGCAT
|
|
282
|
-
GAAGGTTGTGTTCTGGGAGTAGGCTCCCAAGGTAGCGGTTCATGCCTGGGGGCAGCCCTAAGTTTGTATATATGTGAGTT
|
|
283
|
-
TGCGTCTGAACACATTATAGCATGAGGAAACGTAAGCTTTCTGGAGGGATCTTCTAAAGCCAGGTATCGCCCGCTACGAT
|
|
284
|
-
GCCGGAGCGCAGGGTGGATTCACAGCTACCTCGTGCCTCAAAGGCTTAAGGCTAATCCATAGCAACAGTGCGAAAGGACG
|
|
285
|
-
TCCTTTCAGATTTCGAAAGGTGCTGACACATACAAGGGTCAGGGCGGTCCTACCCTTCTGATGTCCCTACCTGGTTTTTT
|
|
286
|
-
AGCAAGGGTCAAGGCTAGGCTTATACTCCCGAACGCTTTAAACATCTATTCCCACCCCTGACGGGGGGAAGTTGCCGCGT
|
|
287
|
-
TAAGTATAAGAATAAGATTTAACAGTACACTTTAGGTTCCTCTTCCGCGAGCCGTCATACAGCACCGAGCGCCGTTGAAA
|
|
288
|
-
CGCAATTAACGCGTATTTGTCGCTGCGAAAAAAAAACGCTCGCCAGCATATTGGAGTGTCGACTTGAAATATTGAACAAC
|
|
289
|
-
ACCGCATATCAAGACGAATAGTAGGGCTTCACTACCTCCACCTGACGGCCCTAGGACTTATACTCGAAAAAGACCTTCCA
|
|
290
|
-
TCACGATGTCCCTTACCGGCGAGAGTGCTATAATACGCATGAATAGCAGATCTTGCCGTCGCTGAGTGTCACCCAGGGTT
|
|
291
|
-
GCTCCCAGAAAGAGATAGGGCGGAGAGCCATCGACAGCAGCTCTCGATCTAGGTGGTAGCAGGCTAAGGAGTCGTGTCGT
|
|
292
|
-
CGCGCCCGAGTTGGAACCATTATCGATGTACATCAATGCAGTGAATGATGCTGATAGACTCGGGAGTTTGCCTCAAAACC
|
|
293
|
-
CCAGAGTTACGTAGAAGACGCAGGTCTATTAGTTAGAAGGAGTCAGTATTGGCCTTTGAAAGATCTTATGCTCATGCCCT
|
|
294
|
-
AATCGTAGTTAAACGGCGAATCCGTGGAAGGCCAATCTGGCCGGTTTTGACCCCCGGACTCTTAAGACGTCCAATGTGGC
|
|
295
|
-
TAGACATAAGTCAACGAATTACCTATACCGAGGGCGGGAACCGGCCAATTTATTACGAGAGCACGAGAGCCTTGTAGCGA
|
|
296
|
-
CCCAGCACACTAGTCCTCGAGTCCCTCTCATCCTGAGACGTAGAATAGCATATACCGCCTAGGAGAGAATGAGCGCGTCT
|
|
297
|
-
AGGCTTCCGTCGCCCTCTCCGTCGTCTCGGGTGAACCGTAAGTCCTTCCGCATTCCCTTACCTCAAGCGCGTTGGTGTGA
|
|
298
|
-
AGTGGTATTGAGGCCCAGTCTCTATAACGCATATACTTGTGCACTCTATTACTTACCATGGGAACCAATGGCACTCTACG
|
|
299
|
-
AATCATGCTCACAGCTGAGCAACGGTGCTGCTCACCAATTACATATGAGCTCGTGGATTTAGCGTTGGAGCGGAACGATG
|
|
300
|
-
AATTTCCATCTGTTCGCGCGCATCCACTAATCCAATATACGGTTATCCCGAGCGCTACTAGTGTCTGACCGGGTTGGTAG
|
|
301
|
-
CCGAACCCTTTTGCAAGCCGCGCTTAGTGGATGTTGAAGTGGGAGTGATAAGCTTAAGCCGCCACGTTCGGGGGGGACTC
|
|
302
|
-
GTTTATATTGGTGCTGGAATTACGAACGGCGTGATTCGTAGTCGGCCCTAATCGGGCGCGACCGAACACATGTAGTACTG
|
|
303
|
-
TCGAGGCGGTTTAAACCCCCACAGTAGGTACTCTATCAGCAGAATTATGCTAGAAAGTTTCACACACAACTTTCCGCATG
|
|
304
|
-
AGGCTCATGCGGAGCGTCGCACTCCCAATGGCCAGTGCCGGTAGTCGATGTTTGGTCGGAACTTAGTTCCTTCGGAATAA
|
|
305
|
-
CGAACCGGATTTAAAAGAGCCTCAGGAGAACCTAAACGAATCCGTACGCATCTTGCCCAAGGTTGCTGAGCCTCGTCGCC
|
|
306
|
-
TTTCTCAGTTCCACCTACATTAATGCAATGCGTTCGAAGCTTGACCTGCAAACAGGAATCAAGTTCAGACAGAGTGCAAG
|
|
307
|
-
AGTTTCGCAGATAATTGGGAGACGACCCACTTGGATATAGGTGCTTTTTGAGATGTGTGTACGACCGTCCTTTCGAGCAT
|
|
308
|
-
ACCTACGGGTTACAATTGCTCCGGTAAGTCAGGCACATAGAAAACATAGCCACTACTGAGGTGTATCAAGATTACCTCAT
|
|
309
|
-
GTAGACTTGAAATACAGCACATCCGCTTTAAGCTTAACCGATGTAGAACAGCATTTTGGGCGGCGTTGACAGCGTGGCCC
|
|
310
|
-
GCTCACCGGTTTGCTCCCTTCTCACCAAATAACCAATGAGCACGACTTTGGTGACTGGACTGCCAGATGACGGCTACAAC
|
|
311
|
-
CCGTTTTTGGTTCCGAATTCCGCTCTAACTCAACTAACATCCATACTATATGCGCCAGGATATTCTCGCGGTTGGACCCC
|
|
312
|
-
CCTGCCAATTCGGGTTAAAACCACTCCGCACCCCCATGTAGGGGAGCTGGGCCCGCATTACAATATGCGAATCGATCCCG
|
|
313
|
-
CAGATGGACGCTCACAAAATTCAGTCCTTTCACGACTCCGCTCATATAGACGGTAGAAGGGATACTGAGGCTGTTAGATA
|
|
314
|
-
GGACGTCGAGCATGGCGTAGACGAGCGCAACCGGGTCGAAGGCCCGCATTACCGTGACACCCAGTTGAAAGGATTTACAC
|
|
315
|
-
TGCTTCATATCGATATTTACCACTTTGTAATTGGGAGCTCAAAGACCTAAGTCAACACGGACCATCATACAGGGTCGCCA
|
|
316
|
-
GTAAATGAGAAGCGCTGTCTGTGCCATGGAGAAGCGCTGCTACAGCACACAACGAACAATCTGCATGTGAAGGAGGGTGC
|
|
317
|
-
CTCTTTTGGGATGAGCCTACGGGGATGTGTATCCCATGCCCTGTAGGCAGTTGGGACTAGCGCCGAGCTAATCTAGTAAC
|
|
318
|
-
TAAGGCGCCAGCCGCGGCTGTTTGCCGAAGTCGTGCTGACTGCTGTACAACGAAGGGCGAGCGTGTTAACATGCCTACAC
|
|
319
|
-
GTTGACCTAGACTAGTCCAAGTTCTGAAAGTCCCATTAGGTCCGGGTAGTACAGTCCTCGGTTCCAGTCCCATCTTGTGC
|
|
320
|
-
CGCCAAGGACAAGCGATCATCAAAATCTGACTGAGTAATTGAATCAGCTACCTCAGACCACATTCAGCTCTCGGTAAACA
|
|
321
|
-
TGCGATGGCTTGTGGTTGCACCGTAAAAGGGGGAAGCCCATCCATCCTGTAACACCACAATCGCGCGTAGCTTAATAACG
|
|
322
|
-
GCTCCACCATTAGAATTCGATCGAGAGACACTGGTTTCAAGAGCCTTCCCTTTTGCTTTAGTGGGCCAAATCGCAACCCT
|
|
323
|
-
GCTCCCCTCCCTTACGCCTTATACACTTCAGTGCAAATTCATCGCGTTCGAGCGAACAACCTGGACTTCTGTTGTACGTA
|
|
324
|
-
GTCCACGGGGGCTTTATTCATTATAGAAAGCCCCCTACTGTACACCGTTTATCATGGTTCACATCATGAGCTGATCACCT
|
|
325
|
-
AGAGAGTCGTCATGCACATTCGCACTAACAAGGACATATGAGTAACCGGGAGAG`.replace(/[\r\n]+/gm, '')
|
|
326
|
-
|
|
327
|
-
const target = `cacactagccccgtcagcgacggtgcgcggccgctgccctgcagcgaatggggctaacac
|
|
328
|
-
gcataaaacgcccgcataaccactcgagctacgggaattcactcaggctgttgcttcgac
|
|
329
|
-
gtgtagtctcattacataatcataatacctccaagaccaacggctgctcatgactctctt
|
|
330
|
-
accttgttagggacatttcggcactagggaagagctgaggactttgaaaacgtcgataaa
|
|
331
|
-
accatcgcgggaactagctgcgttagaactccatattttacgggtcgcaagcttgaggtc
|
|
332
|
-
ctgtcccggcagctgcaagtgctacggcaggaggggatctacctaacgtgcagtaacgag
|
|
333
|
-
cccctgcccgtaatgaggcgtactcgtctctaatcgtcagtaagttactatgtccgagga
|
|
334
|
-
cgcctctacgagttgaactctggctaggcccacctgtccgcgccctgctcgggtacccca
|
|
335
|
-
tctgcttatccaacttcacctcgccttacggaatctctggttgccagtcatccgatggtc
|
|
336
|
-
attaagcagcgtggtacatcgtagccaatacttcagggcgccagccatattcccagccaa
|
|
337
|
-
gcggctgcataattacagcgcctggcacgactaatcgatcccacaagcctggtagatgac
|
|
338
|
-
ccttagccctaaagcgccctctgacctatctgcacgtgatacttgattatttgtaatgag
|
|
339
|
-
cggacagggtagatgactaatatacagggtcgtctaggtttgcacaatgcagacatcatc
|
|
340
|
-
cgcgcaaggcccggacggctgtactcacacagctagctccatctccctcagcagcactaa
|
|
341
|
-
gattcccacgtgaccagggcgacgggcctcagccaaacgtatccttgatatctacttaag
|
|
342
|
-
tcaaggttgactccgaaccctatgggtcggtgccgttaacagggagtctatatctcggcg
|
|
343
|
-
ttccattgcttgtttcaaactcctgctataaggtgaaagcgctggagggcatagtttatg
|
|
344
|
-
cccaaagttgcgcgtagatccgtcgggatatgtgctataataaggactgctcgaggtagg
|
|
345
|
-
cggtaacggctcccgccttcagtaggcgcggaactcgaatcggagttacaggacttgacc
|
|
346
|
-
gagtcatatccaagtttatgttacccgatcggatccggatgctcgtatctgcgacgaggt
|
|
347
|
-
cggaagacggacgaaatacgattcaaccgcgcgaaccattagcatctaacctttagcctc
|
|
348
|
-
aatgggtgttaacgtggtgggctcactcggcgtactctttgtgcaactattccgtatgaa
|
|
349
|
-
caacagtcaagttgcgacatgatgctcttacgtgattcccacagtttcccacctcaggat
|
|
350
|
-
gctttctttagctaaacccaatagttatggcggcaccttcagactcccacgaggacggct
|
|
351
|
-
atgacgttgctaaaccattcgccgccaaaggctagcgctaacgagttctgtgagtttgtt
|
|
352
|
-
ccgggccagatctccaggatggtcgcaacaacgcagtaccggttttatactggtgaccct
|
|
353
|
-
ctacctgttattaagttacagcgttgtcctacgtacatggtcgtgagtactcgcgtagtc
|
|
354
|
-
aaacgccaggactagcagcgagaattattgtcgcgatacttactacaatacttacccgat
|
|
355
|
-
attgacgtgcagggttgaaagagatggacagttgaatatctattttgacggaatcctcaa
|
|
356
|
-
aactccctccacctcaggtaacggccctgtccgggaccgcattcttgcatatattggttc
|
|
357
|
-
ccagagcgtatctaagttagtctcttgaccgttcaccgactctagggcgactcgttatcg
|
|
358
|
-
ccctccgaaacgatgctttcgttacctcaatgatgacaggctgtaacgtaagtgatccca
|
|
359
|
-
atctcactcgtgccttgtccaccgttccgtgaagacgaagcaatacgcggaatacgtggc
|
|
360
|
-
ttcgtaatattttgacgatatggggctgggacgctcaagacttccatgacaaacaaagtg
|
|
361
|
-
aagagcaactgcatccctcatcatgatcactattaccagagtagcgatggataacgctaa
|
|
362
|
-
tttggtcagggcagctatcgcatcccgcaggtgtaggcggagactttttcttttgttgcg
|
|
363
|
-
agttgacaggtaatctcacggtataagcacggttatttacgcaagcgacgtccctgggag
|
|
364
|
-
aatccgcccacgtaggaccccataatccataaatactgcggtcgaaaccttcatatcgtg
|
|
365
|
-
acagaaccgctttctagggatgcggtccccgcattcagagttctactttggccagcgtga
|
|
366
|
-
gacttaacaactccacttacgcggtacattgaagtcgttcagtccagtgtgacctgtgta
|
|
367
|
-
ccgaataacgtgtagaccagcgcgtctacgacttagcgcggctccactccaaagcacctt
|
|
368
|
-
ttgggactttccaacgagcctgttggccgttaagcggtatttcacaaatagatcacccta
|
|
369
|
-
gtgtcggtaaccgactaccctattgggatcatcgtgagctcgaaacactagaggcggacc
|
|
370
|
-
aacggatgacatttgattcggctctacagagcttgtcgccagagaaaaactgtggcaatc
|
|
371
|
-
tacgctcgcggggaattgactttagcggcccctagacaggtgtgggacactagtctagat
|
|
372
|
-
tcacgtcctacacgacataacagcaccttcctggccagcccagaaatagtacctggacga
|
|
373
|
-
catccagccttccgacgccataatgtgagccgtagcgcccacgacgatcaacgaggagaa
|
|
374
|
-
atttacaaaggctgtgtgaatgctacgtcgtctaccattgctcatcgaaacgaacgcaac
|
|
375
|
-
gcacagcatacaacgtttaccatgccggagcgggatcctcaagtacagaaaacagaggtc
|
|
376
|
-
taaacatgatccgaacaaatcggtaggtttacacagctacctcgtccattggcgtactgc
|
|
377
|
-
atcgatcgtgcttactacggtcatgccggcccgcgatgcacgtacgaaggaataccctgt
|
|
378
|
-
ctgcccccgcgcgagttacgctgtctcgcacataccgagcactgtcgttcgaagctaaac
|
|
379
|
-
tatgagcccagccgagctccttatggccgcaacgctggtgcggccagctgataaattcca
|
|
380
|
-
cagtacacgatcctcgtgtaagatctcgggcatagtaagtcatttcacatggttaggaga
|
|
381
|
-
gatagaatacatggttctggtagctcaaccaggatttgtggaacccttggcccttggtga
|
|
382
|
-
gtgctacaataaaattctccgtatgggacaaccaaagggtgctggatgtgacttcccggc
|
|
383
|
-
ccaggttagatgtccatatcattcatacattgcccgaccgacccaatgcctaaatcagag
|
|
384
|
-
gcgccttagctagttcttgtagtgtgccacgtccggccacgcagacacgaccctcggcga
|
|
385
|
-
gtgatcaccattaccggattggcatcgaagtctttttctgggaagttagccagtttggtg
|
|
386
|
-
tgcggtgcttagaatcttattcccagtcaaacgcccctgggacgaattgctaaccctagt
|
|
387
|
-
tgccacgccggaaccatcttcgggagagtagacaaatccgagttagatatgttagcgtct
|
|
388
|
-
tcgtgagtctgaaatgtatcacttcaccgcagaatacgcgaatgtctgtttgccctggac
|
|
389
|
-
tgacggaattggcttaaaagccgactagagcattttggtacggttcctatccgcgatgta
|
|
390
|
-
attacctatctaggttatcgctagacgaatagcgagtacagtgtagcaggccctttgtta
|
|
391
|
-
gcaagttgctctaaacagttgtcaaaacgtaggcacaatagtgcgattcttctaaatccg
|
|
392
|
-
ggaagctcatggcgctgggcagaaatatcacatacgggaataatcaacctccattttggt
|
|
393
|
-
tcgttttactcgatgagtgccccttgcttgagacgagcgttctgagttgatggcatgtcg
|
|
394
|
-
aaaggtttacgcggtgagtagagcactttacccctacagatcggaatcctcgaggaggac
|
|
395
|
-
agttggaacttcacattaacctttgttcgattgcatgaaggttgtgttctgggagtaggc
|
|
396
|
-
tcccaaggtagcggttcatgctgggggcagccctaagtttgtattatgtgagtttgcgtc
|
|
397
|
-
tgaaactacatttagcatgaggaacgtaagctttctggagggatcttctaaagccaggta
|
|
398
|
-
tcgcccgctacgatgccggagccggtggttcacagctacctgtgctcaaaggcttaaggc
|
|
399
|
-
taatcatagcaacagtgcgaaaggacgtctttcagatttcgaaaggtgctgacacaacaa
|
|
400
|
-
gggtcagggcggtcctacccttctgattccctacctggttttttagcaagggtcaaggct
|
|
401
|
-
aggcttatactcccgaacgctttaaacactatcccacccctgacggggggaagttgcgcg
|
|
402
|
-
ttaagtataagaataagatttaacagtacactttaggttcctcttccgcgagccgtcata
|
|
403
|
-
cagcaccgagcgccgttgaaacgcgattaacgcgtattgtcgtgcgaaaaaaaaacgctc
|
|
404
|
-
gccagcatattggagtgtcgacttgaaatattgaacaacaccgcatatcaaggacgaata
|
|
405
|
-
gtagggcttcactacctccacctgacggccctaggacttatactcgaaaaagaccttcca
|
|
406
|
-
tcacgatgtcccttaccggcgagagggctatatacgcatgaatagcagatcttgccgtcg
|
|
407
|
-
ctgagtgtcacccagggttgctccagaaaggagatagggcggagagccatcgacagcagc
|
|
408
|
-
tctcgtctaggtggtagcagctaaggagtcgtgtcgtcgcgccgagttggaacattatcg
|
|
409
|
-
atgtacatcaatgcagtaatgatgctgatagactcgggagtttcctcaaacccagagtta
|
|
410
|
-
cgagaagacgcaggtctatcagttagaaggagtcagtattggcctttgaaagatcttatg
|
|
411
|
-
ctcatgcccaatcgtagttaaacgcgaatcgggaaggccaatctggcggttttgaccccc
|
|
412
|
-
ggactcttaagacgtccaatgtggctagacataagtaacgaattactctataccgagggg
|
|
413
|
-
cgggaaccggccaatttattacgagagcacgagagccttgtagcggccagcacactatcc
|
|
414
|
-
tcgagtccctctatcctgagacgtagatatacatatacgcctagagagaatagccgtcta
|
|
415
|
-
ggcttccgtcgccctctccgtcgttcgcgtgaaccgtaagtcttccgcattcccttcctc
|
|
416
|
-
aagcgcgttggtgtgagagtggtattgaggcccagtcttataacgcatatacttgtgcac
|
|
417
|
-
tctattacttaccatgggaaccaatggcactctcgaatcatgctcacagctgagcaacgg
|
|
418
|
-
tgctgctcaccaattacatatgagtcgtggtttagcgttggagcggaagatgaatttcca
|
|
419
|
-
tctgttcgcgcgcatcactaaccaatatacggttatcccagcgctatctagttctgaccg
|
|
420
|
-
ggttggtagcgaacccttttgcaagccggcttagtggatgtgaagtgggagtgataactt
|
|
421
|
-
aagccgccacgttcgggggggactcgtttatattggtgctggaatacgaacggcgtgatt
|
|
422
|
-
cgtagtcgccctaatcgggcgcgacaacacatgtagtactgtcgaggcggtttaaaccca
|
|
423
|
-
cagtaggtactctatcagcagaattatgctagaagtttcacaacaactttccgcatgagg
|
|
424
|
-
ctcagcggcagcgtcgcactcccaatggccagtgccggtagcgatgtttggtggaattag
|
|
425
|
-
ttccttcggaatacgaaccggatttaaagagcctcggagaacctaaacgaatccgtacgc
|
|
426
|
-
atcttgcccaaggtgctgagccttgtcgcctttctcagttccacctacattaatgcaatg
|
|
427
|
-
cgttcgaagctctgaccgcaaacaggaatcaagttcagacagagtgcaagagtttcgcaa
|
|
428
|
-
taattgggaacgacccacttgatataggtgcttttagagatgtgtgtacgaccgtccttc
|
|
429
|
-
gagcatacctacgggttacaattgctccggtaagtcaaggcacatagaaaacatagccaa
|
|
430
|
-
ctgagagtgtatacaagattacctcatgtagactgaaatacacacatcgctttaagctct
|
|
431
|
-
caaccgatgtagaacagattttgggcggcgttgacagcgtgcccgctcaccggtttgctc
|
|
432
|
-
ccttctcaccaaataaccatgagacgactttggtgactggactgccagatgacgggctac
|
|
433
|
-
aaccgttttggttccgaattcgctctaactcaactaacatcatactatatgcgccaggat
|
|
434
|
-
attctcgcggttggacccccctgccaattcgggttaaaaccactccccccatgtagggag
|
|
435
|
-
ctgccgcaattacaatatcgacgatcccagatggacgctcacaaaatatcagtcctttca
|
|
436
|
-
cgatccgctcatatagacggatgaagggactgaggctgttagatagtgacgtcgagcatg
|
|
437
|
-
gcgtagacgagcgcaaccgggtcgaggcccgcattaccgtgacacccagttgaaaggatt
|
|
438
|
-
tacactgcttcattcgatatttaccactttgtatgaggagctcaacctaagtcaacacgg
|
|
439
|
-
accatcatacaggtcgccagtaatgagaaggctgctgtgccatggagaagcgctgctaca
|
|
440
|
-
gcacacaacgaacatcttgcaatgtgaaggagggtgctcttttgggatgagcctacgggg
|
|
441
|
-
atgtgtatccctgccctgtaggcagttgggacttagcgcgactatctagataactaaggc
|
|
442
|
-
gccagccgcggctgtttgccgaagtcgtgctgatgctgtacaacgaagggcgagcgtgtt
|
|
443
|
-
aacatgctacacgttgacctagactagtccaagtctgaaagtcccaatttaggtcgggta
|
|
444
|
-
gtacagtcctcggttccagtcccatgttgtgccgacaaggacaagcgatcatcaaatcga
|
|
445
|
-
ctgaaattgaatcagctacctcagaccacattcagctctcggtaacatgggaggcttgtg
|
|
446
|
-
gttgcaccgtaaaagggggatagcccatccatcctgtaaacctacaatcgcgcgtagctt
|
|
447
|
-
aatacgctcacattagacattcgatcgagagacctggtttcaagagccttcccttttgct
|
|
448
|
-
ttagtgggccaaatcgcaaccctgctcccctcccttacgccttatacacttcagtgcaaa
|
|
449
|
-
ttcatgcgttcagcgaacaactggacttctgttgtacgtagtccacgggggcttattcat
|
|
450
|
-
tatagaaagccccctactgtcaccgttatatggttcacacatgagctgatcacctagaga
|
|
451
|
-
gtcgtcatgcacattcgcctaacaaggacatatgagtaaccgggaggg`.replace(/[\r\n]+/gm, '')
|
|
452
|
-
const cigar =
|
|
453
|
-
`8M1D10M1I3M1I36M1I37M1I13M2I18M1I7M1I4M1D119M1I13M1I27M1I46M1I13M1D2M1D19M1I22M1
|
|
454
|
-
D19M2I43M1I21M1I16M1I6M1I55M1I20M1I34M1I4M1D23M1I18M1D10M3I8M1I11M1I15M1I17M1I41
|
|
455
|
-
M1I45M1I3M1I3M2I5M1I10M1I35M1I16M1I70M1I8M1I8M1D17M1I5M1I59M1I25M2I29M1I34M1I25M
|
|
456
|
-
1I12M1I26M1D38M1D39M1I17M1I12M1I4M1I31M1I3M1I36M3I30M1I11M1I31M1I36M1I64M1I20M1I
|
|
457
|
-
17M1I57M1I20M1I17M1I36M1I32M1I45M2I78M1I22M2I44M1I83M1I23M1I17M1D17M1I7M1I57M2D8
|
|
458
|
-
1M1I38M1I12M1I2M1I5M1I55M1I8M1D28M1I90M1I32M1I6M1I28M1I33M2D18M1I49M1I30M1I21M1I
|
|
459
|
-
59M1I14M1I5M1I66M1I21M1I8M1I35M1I15M1I23M1I47M1I7M1I35M1I51M1I32M1I54M1D5M1I15M1
|
|
460
|
-
I30M1I12M1I16M1I12M1I13M1I4M1I10M1D13M1I36M1I4M1I11M1I3M1D43M1D49M1I10M1I3M1I16M
|
|
461
|
-
1I28M1I81M1I13M1I72M1I21M1I3M1I31M1D3M1I17M2I7M1I10M1I10M1I3M1D18M1I15M1I10M1I73
|
|
462
|
-
M1I4M1I15M1D15M1D12M1D18M1I91M2I26M1I4M1I20M1I65M1I24M1I20M2D6M1I10M1I60M3I6M1I1
|
|
463
|
-
3M1I3M1I20M1I24M1I28M1I31M1I61M1I3M1I25M1I100M1I6M1I69M1D99M1I51M1I7M1D35M1I14M1
|
|
464
|
-
I22M1I11M1I25M1I26M1I7M2I12M1I67M1I14M1I7M2I16M1I50M1I10M1D9M1D48M1I12M1I15M1I15
|
|
465
|
-
M1D3M1I6M1I6M1I8M1I3M1I30M1I17M1I15M1I20M1D21M1I55M1I51M1I6M1I18M1I27M1I6M1I18M1
|
|
466
|
-
I7M1D5M1I17M1I19M1I12M1I17M1I47M1I23M1I18M2I31M2I36M1I10M1I22M1I4M1D32M1I11M1I4M
|
|
467
|
-
1I16M1I13M1I10M1I38M1I58M1D5M1I42M1I10M1I11M1I37M1I39M1D22M2I6M1D6M1D20M1I9M1I5M
|
|
468
|
-
1I9M2D19M1I23M1I38M1I5M1I30M1D10M2I16M1I20M1I65M4I10M1I8M3I4M1D10M1I3M2I6M2I20M1
|
|
469
|
-
D15M1I25M2I18M1D37M1I49M1I20M2I2M1D8M3I27M1I10M1I9M1I4M1I46M1D15M1I35M1I21M1D5M1
|
|
470
|
-
I3M1I2M1I6M1D43M1I33M1I27M1I13M2D6M1I59M1I5M1I6M2I39M1I9M1I28M1D43M2I5M2I8M1D15M
|
|
471
|
-
1I92M1I6M1I9M1I32M1I28M1I5M1I4M1I10M1I39M1I30M`.replace(/[\r\n]+/gm, '')
|
|
472
|
-
|
|
473
|
-
expect(generateMD(target, query, cigar)).toBe(
|
|
474
|
-
'8^C128^A218^C2^G41^A218^C31T9^T10G0C293^C232^G38^A46C1G176A2G1C308A19C99C1G0T0A161^T81^TC4G196^T217^AG590^G117^G67^G43^G327^C21C28^C94A40^T15^A12^G112T155^AC0T75C301G86^G93G63^G169C70G75^T9^G48G41^T59C48^G209^T261^C134T47^C83A60^A28^A6^A43^CT2C112^G10G122^A39^A32A0T24^T108^A98T0C0T3^A71^T16^A116^AT37G8A74G30^T18A0C1T21C4A7^C268G1',
|
|
475
|
-
)
|
|
476
|
-
})
|
|
477
|
-
|
|
478
236
|
test('getNextRefPos basic', () => {
|
|
479
|
-
const cigar = '10S10M1I4M1D15M'
|
|
480
|
-
const
|
|
481
|
-
const iter = getNextRefPos(cigarOps, [5, 10, 15, 20, 25, 30, 35])
|
|
237
|
+
const cigar = parseCigar('10S10M1I4M1D15M')
|
|
238
|
+
const iter = getNextRefPos(cigar, [5, 10, 15, 20, 25, 30, 35])
|
|
482
239
|
const [...vals] = iter
|
|
483
240
|
expect(vals).toEqual([-5, 0, 5, 10, 14, 20, 25])
|
|
484
241
|
})
|
|
485
242
|
test('getNextRefPos with many indels', () => {
|
|
486
|
-
const cigar = '10S4M1D1IM10'
|
|
487
|
-
const
|
|
488
|
-
const iter = getNextRefPos(cigarOps, [5, 10, 15])
|
|
243
|
+
const cigar = parseCigar('10S4M1D1IM10')
|
|
244
|
+
const iter = getNextRefPos(cigar, [5, 10, 15])
|
|
489
245
|
const [...vals] = iter
|
|
490
246
|
expect(vals).toEqual([-5, 0, 5])
|
|
491
247
|
})
|