From c3b594c214ad93407d24a82f9552568b6588ca08 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 14 Aug 2023 23:59:09 -0400 Subject: [PATCH 01/12] Testing Yarn upgrade Misc Human vs mouse example Misc Misc Updates Misc Misc --- .../src/BedTabixAdapter/BedTabixAdapter.ts | 4 +- plugins/comparative-adapters/package.json | 1 + .../src/PAFAdapter/PAFAdapter.ts | 15 +- .../src/PAFAdapter/util.ts | 63 -------- .../PairwiseIndexedPAFAdapter.ts | 134 ++++++++++++++++++ .../PairwiseIndexedPAFAdapter/configSchema.ts | 72 ++++++++++ .../src/PairwiseIndexedPAFAdapter/index.ts | 19 +++ .../index.ts} | 0 plugins/comparative-adapters/src/index.ts | 12 +- .../src/{PAFAdapter => }/util.test.ts | 0 plugins/comparative-adapters/src/util.ts | 63 ++++++++ .../components/LinearSyntenyRendering.tsx | 24 ++-- .../wiggle/src/BigWigAdapter/BigWigAdapter.ts | 6 +- .../src/components/NoConfigMessage.tsx | 2 +- .../config.json} | 29 ++++ 15 files changed, 349 insertions(+), 95 deletions(-) create mode 100644 plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts create mode 100644 plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts create mode 100644 plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/index.ts rename plugins/comparative-adapters/src/{PAFAdapter/SyntenyFeature.ts => SyntenyFeature/index.ts} (100%) rename plugins/comparative-adapters/src/{PAFAdapter => }/util.test.ts (100%) rename test_data/{human_vs_mouse.json => hs1_vs_mm39/config.json} (75%) diff --git a/plugins/bed/src/BedTabixAdapter/BedTabixAdapter.ts b/plugins/bed/src/BedTabixAdapter/BedTabixAdapter.ts index 097e463326..c6a4edd182 100644 --- a/plugins/bed/src/BedTabixAdapter/BedTabixAdapter.ts +++ b/plugins/bed/src/BedTabixAdapter/BedTabixAdapter.ts @@ -7,11 +7,13 @@ import { openLocation } from '@jbrowse/core/util/io' import { ObservableCreate } from '@jbrowse/core/util/rxjs' import { FileLocation, Region, Feature } from '@jbrowse/core/util' import { TabixIndexedFile } from '@gmod/tabix' -import { featureData } from '../util' import PluginManager from '@jbrowse/core/PluginManager' import { AnyConfigurationModel } from '@jbrowse/core/configuration' import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache' +// locals +import { featureData } from '../util' + export default class BedTabixAdapter extends BaseFeatureDataAdapter { private parser: BED diff --git a/plugins/comparative-adapters/package.json b/plugins/comparative-adapters/package.json index 8581d5dd5d..01b414841a 100644 --- a/plugins/comparative-adapters/package.json +++ b/plugins/comparative-adapters/package.json @@ -37,6 +37,7 @@ }, "dependencies": { "@gmod/bgzf-filehandle": "^1.4.3", + "@gmod/tabix": "^1.5.6", "generic-filehandle": "^3.0.0" }, "peerDependencies": { diff --git a/plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts b/plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts index bafbafcdc7..ee76e3462a 100644 --- a/plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts +++ b/plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts @@ -15,15 +15,15 @@ import { unzip } from '@gmod/bgzf-filehandle' import { MismatchParser } from '@jbrowse/plugin-alignments' // locals -import SyntenyFeature from './SyntenyFeature' -import { isGzip, parseLineByLine } from '../util' +import SyntenyFeature from '../SyntenyFeature' import { - getWeightedMeans, flipCigar, swapIndelCigar, parsePAFLine, - PAFRecord, -} from './util' + isGzip, + parseLineByLine, +} from '../util' +import { getWeightedMeans, PAFRecord } from './util' const { parseCigar } = MismatchParser @@ -102,8 +102,9 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { // The index of the assembly name in the query list corresponds to the // adapter in the subadapters list - const index = assemblyNames.indexOf(query.assemblyName) const { start: qstart, end: qend, refName: qref, assemblyName } = query + const index = assemblyNames.indexOf(assemblyName) + const flip = index === 0 if (index === -1) { console.warn(`${assemblyName} not found in this adapter`) observer.complete() @@ -117,8 +118,6 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { let mateName = '' let mateStart = 0 let mateEnd = 0 - const flip = index === 0 - const assemblyName = assemblyNames[+!flip] if (index === 0) { start = r.qstart end = r.qend diff --git a/plugins/comparative-adapters/src/PAFAdapter/util.ts b/plugins/comparative-adapters/src/PAFAdapter/util.ts index 4faad3cc5a..0499f095c4 100644 --- a/plugins/comparative-adapters/src/PAFAdapter/util.ts +++ b/plugins/comparative-adapters/src/PAFAdapter/util.ts @@ -107,66 +107,3 @@ function weightedMean(tuples: [number, number][]) { ) return valueSum / weightSum } - -export function parsePAFLine(line: string) { - const [ - qname, - , - qstart, - qend, - strand, - tname, - , - tstart, - tend, - numMatches, - blockLen, - mappingQual, - ...fields - ] = line.split('\t') - - const rest = Object.fromEntries( - fields.map(field => { - const r = field.indexOf(':') - const fieldName = field.slice(0, r) - const fieldValue = field.slice(r + 3) - return [fieldName, fieldValue] - }), - ) - - return { - tname, - tstart: +tstart, - tend: +tend, - qname, - qstart: +qstart, - qend: +qend, - strand: strand === '-' ? -1 : 1, - extra: { - numMatches: +numMatches, - blockLen: +blockLen, - mappingQual: +mappingQual, - ...rest, - }, - } as PAFRecord -} - -export function flipCigar(cigar: string[]) { - const arr = [] - for (let i = cigar.length - 2; i >= 0; i -= 2) { - arr.push(cigar[i]) - const op = cigar[i + 1] - if (op === 'D') { - arr.push('I') - } else if (op === 'I') { - arr.push('D') - } else { - arr.push(op) - } - } - return arr -} - -export function swapIndelCigar(cigar: string) { - return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I') -} diff --git a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts new file mode 100644 index 0000000000..47d97bdcbe --- /dev/null +++ b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts @@ -0,0 +1,134 @@ +import { + BaseFeatureDataAdapter, + BaseOptions, +} from '@jbrowse/core/data_adapters/BaseAdapter' +import { FileLocation, Region } from '@jbrowse/core/util/types' +import { ObservableCreate } from '@jbrowse/core/util/rxjs' +import { Feature } from '@jbrowse/core/util' +import { AnyConfigurationModel } from '@jbrowse/core/configuration' +import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache' +import PluginManager from '@jbrowse/core/PluginManager' +import { openLocation } from '@jbrowse/core/util/io' +import { TabixIndexedFile } from '@gmod/tabix' + +// locals +import { parsePAFLine } from '../util' +import SyntenyFeature from '../SyntenyFeature' + +interface PAFOptions extends BaseOptions { + config?: AnyConfigurationModel +} + +export default class PAFAdapter extends BaseFeatureDataAdapter { + public static capabilities = ['getFeatures', 'getRefNames'] + + protected paf: TabixIndexedFile + + public constructor( + config: AnyConfigurationModel, + getSubAdapter?: getSubAdapterType, + pluginManager?: PluginManager, + ) { + super(config, getSubAdapter, pluginManager) + const pafGzLoc = this.getConf('pafGzLocation') as FileLocation + const type = this.getConf(['index', 'indexType']) + const loc = this.getConf(['index', 'location']) + const pm = this.pluginManager + + this.paf = new TabixIndexedFile({ + filehandle: openLocation(pafGzLoc, pm), + csiFilehandle: type === 'CSI' ? openLocation(loc, pm) : undefined, + tbiFilehandle: type !== 'CSI' ? openLocation(loc, pm) : undefined, + chunkCacheSize: 50 * 2 ** 20, + }) + } + async getHeader() { + return this.paf.getHeader() + } + + getAssemblyNames(): string[] { + const assemblyNames = this.getConf('assemblyNames') as string[] + if (assemblyNames.length === 0) { + return [ + this.getConf('queryAssembly') as string, + this.getConf('targetAssembly') as string, + ] + } + return assemblyNames + } + + public async hasDataForRefName() { + return true + } + + async getRefNames(opts: BaseOptions & { regions?: Region[] } = {}) { + const r1 = opts.regions?.[0].assemblyName + if (!r1) { + throw new Error('no assembly name provided') + } + + const idx = this.getAssemblyNames().indexOf(r1) + const names = await this.paf.getReferenceSequenceNames(opts) + if (idx === 0) { + return names.filter(n => n.startsWith('q')).map(n => n.slice(1)) + } else if (idx === 1) { + return names.filter(n => n.startsWith('t')).map(n => n.slice(1)) + } + return [] + } + + getFeatures(query: Region, opts: PAFOptions = {}) { + return ObservableCreate(async observer => { + const { assemblyName } = query + + const assemblyNames = this.getAssemblyNames() + const index = assemblyNames.indexOf(assemblyName) + const flip = index === 0 + const letter = flip ? 't' : 'q' + + await this.paf.getLines(letter + query.refName, query.start, query.end, { + lineCallback: (line, fileOffset) => { + const r = parsePAFLine(line) + const refName = r.qname.slice(1) + const start = r.qstart + const end = r.qend + const mateName = r.tname + const mateStart = r.tstart + const mateEnd = r.tend + + const { extra, strand } = r + const { numMatches = 0, blockLen = 1, cg, ...rest } = extra + + observer.next( + new SyntenyFeature({ + uniqueId: fileOffset + assemblyName, + assemblyName, + start, + end, + type: 'match', + refName, + strand, + ...rest, + CIGAR: extra.cg, + syntenyId: fileOffset, + identity: numMatches / blockLen, + numMatches, + blockLen, + mate: { + start: mateStart, + end: mateEnd, + refName: mateName, + assemblyName: assemblyNames[+flip], + }, + }), + ) + }, + signal: opts.signal, + }) + + observer.complete() + }) + } + + freeResources(/* { query } */): void {} +} diff --git a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts new file mode 100644 index 0000000000..a585dc67cd --- /dev/null +++ b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts @@ -0,0 +1,72 @@ +import { ConfigurationSchema } from '@jbrowse/core/configuration' +import { types } from 'mobx-state-tree' + +/** + * #config PairwiseIndexedPAFAdapter + */ +function x() {} // eslint-disable-line @typescript-eslint/no-unused-vars + +const PairwiseIndexedPAFAdapter = ConfigurationSchema( + 'PairwiseIndexedPAFAdapter', + { + /** + * #slot + */ + assemblyNames: { + type: 'stringArray', + defaultValue: [], + description: + 'Array of assembly names to use for this file. The target assembly name is the first value in the array, query assembly name is the second', + }, + /** + * #slot + */ + targetAssembly: { + type: 'string', + defaultValue: '', + description: 'Alternative to assemblyNames: the target assembly name', + }, + /** + * #slot + */ + queryAssembly: { + type: 'string', + defaultValue: '', + description: 'Alternative to assemblyNames: the query assembly name', + }, + /** + * #slot + */ + pafGzLocation: { + type: 'fileLocation', + description: 'location of pairwise tabix indexed PAF', + defaultValue: { uri: '/path/to/data/file.paf.gz' }, + }, + /** + * #slot + */ + index: ConfigurationSchema('TabixIndex', { + /** + * #slot index.indexType + */ + indexType: { + model: types.enumeration('IndexType', ['TBI', 'CSI']), + type: 'stringEnum', + defaultValue: 'TBI', + }, + /** + * #slot index.location + */ + location: { + type: 'fileLocation', + defaultValue: { + uri: '/path/to/my.paf.gz.tbi', + locationType: 'UriLocation', + }, + }, + }), + }, + { explicitlyTyped: true }, +) + +export default PairwiseIndexedPAFAdapter diff --git a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/index.ts b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/index.ts new file mode 100644 index 0000000000..90aebd5d21 --- /dev/null +++ b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/index.ts @@ -0,0 +1,19 @@ +import PluginManager from '@jbrowse/core/PluginManager' +import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType' +import configSchema from './configSchema' + +export default (pluginManager: PluginManager) => { + pluginManager.addAdapterType( + () => + new AdapterType({ + name: 'PairwiseIndexedPAFAdapter', + displayName: 'Pairwise indexed PAF adapter', + configSchema, + adapterMetadata: { + hiddenFromGUI: true, + }, + getAdapterClass: () => + import('./PairwiseIndexedPAFAdapter').then(r => r.default), + }), + ) +} diff --git a/plugins/comparative-adapters/src/PAFAdapter/SyntenyFeature.ts b/plugins/comparative-adapters/src/SyntenyFeature/index.ts similarity index 100% rename from plugins/comparative-adapters/src/PAFAdapter/SyntenyFeature.ts rename to plugins/comparative-adapters/src/SyntenyFeature/index.ts diff --git a/plugins/comparative-adapters/src/index.ts b/plugins/comparative-adapters/src/index.ts index 451ab31975..98a98d780d 100644 --- a/plugins/comparative-adapters/src/index.ts +++ b/plugins/comparative-adapters/src/index.ts @@ -3,6 +3,7 @@ import PluginManager from '@jbrowse/core/PluginManager' import { FileLocation } from '@jbrowse/core/util/types' import PAFAdapterF from './PAFAdapter' +import PairwiseIndexedPAFAdapterF from './PairwiseIndexedPAFAdapter' import MCScanAnchorsAdapterF from './MCScanAnchorsAdapter' import MCScanSimpleAnchorsAdapterF from './MCScanSimpleAnchorsAdapter' import MashMapAdapterF from './MashMapAdapter' @@ -20,6 +21,7 @@ export default class ComparativeAdaptersPlugin extends Plugin { install(pluginManager: PluginManager) { PAFAdapterF(pluginManager) + PairwiseIndexedPAFAdapterF(pluginManager) DeltaAdapterF(pluginManager) ChainAdapterF(pluginManager) MCScanAnchorsAdapterF(pluginManager) @@ -50,12 +52,10 @@ export default class ComparativeAdaptersPlugin extends Plugin { pluginManager.addToExtensionPoint( 'Core-guessTrackTypeForLocation', (trackTypeGuesser: TrackTypeGuesser) => { - return (adapterName: string) => { - if (adapterName === 'PAFAdapter') { - return 'SyntenyTrack' - } - return trackTypeGuesser(adapterName) - } + return (adapterName: string) => + adapterName === 'PAFAdapter' + ? 'SyntenyTrack' + : trackTypeGuesser(adapterName) }, ) } diff --git a/plugins/comparative-adapters/src/PAFAdapter/util.test.ts b/plugins/comparative-adapters/src/util.test.ts similarity index 100% rename from plugins/comparative-adapters/src/PAFAdapter/util.test.ts rename to plugins/comparative-adapters/src/util.test.ts diff --git a/plugins/comparative-adapters/src/util.ts b/plugins/comparative-adapters/src/util.ts index 35429811c1..fc68943d05 100644 --- a/plugins/comparative-adapters/src/util.ts +++ b/plugins/comparative-adapters/src/util.ts @@ -64,3 +64,66 @@ export function parseLineByLine( } return entries } + +export function parsePAFLine(line: string) { + const [ + qname, + , + qstart, + qend, + strand, + tname, + , + tstart, + tend, + numMatches, + blockLen, + mappingQual, + ...fields + ] = line.split('\t') + + const rest = Object.fromEntries( + fields.map(field => { + const r = field.indexOf(':') + const fieldName = field.slice(0, r) + const fieldValue = field.slice(r + 3) + return [fieldName, fieldValue] + }), + ) + + return { + tname, + tstart: +tstart, + tend: +tend, + qname, + qstart: +qstart, + qend: +qend, + strand: strand === '-' ? -1 : 1, + extra: { + numMatches: +numMatches, + blockLen: +blockLen, + mappingQual: +mappingQual, + ...rest, + }, + } as PAFRecord +} + +export function flipCigar(cigar: string[]) { + const arr = [] + for (let i = cigar.length - 2; i >= 0; i -= 2) { + arr.push(cigar[i]) + const op = cigar[i + 1] + if (op === 'D') { + arr.push('I') + } else if (op === 'I') { + arr.push('D') + } else { + arr.push(op) + } + } + return arr +} + +export function swapIndelCigar(cigar: string) { + return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I') +} diff --git a/plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/LinearSyntenyRendering.tsx b/plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/LinearSyntenyRendering.tsx index 1655e218a3..0bdfc02b9a 100644 --- a/plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/LinearSyntenyRendering.tsx +++ b/plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/LinearSyntenyRendering.tsx @@ -136,6 +136,7 @@ const LinearSyntenyRendering = observer(function ({ const f2 = f1.mate const unitMultiplier2 = Math.floor(MAX_COLOR_RANGE / cigar.length) const cigarIdx = getId(r2, g2, b2, unitMultiplier2) + const cigarOp = cigar[cigarIdx] const l1 = f1.end - f1.start const l2 = f2.end - f2.start const identity = f1.identity @@ -145,22 +146,17 @@ const LinearSyntenyRendering = observer(function ({ `Loc1: ${assembleLocString(f1)}`, `Loc2: ${assembleLocString(f2)}`, `Inverted: ${f1.strand === -1}`, - `Query len: ${l1}`, - `Target len: ${l2}`, + `Query len: ${l1.toLocaleString('en-US')}`, + `Target len: ${l2.toLocaleString('en-US')}`, + identity ? `Identity: ${identity.toPrecision(2)}` : '', + cigarOp ? `CIGAR operator: ${cigarOp}${cigar[cigarIdx + 1]}` : '', + n1 ? `Name 1: ${n1}` : '', + n2 ? `Name 1: ${n2}` : '', ] - if (identity) { - tooltip.push(`Identity: ${identity}`) - } + .filter(f => !!f) + .join('
') - if (cigar[cigarIdx]) { - tooltip.push( - `CIGAR operator: ${cigar[cigarIdx]}${cigar[cigarIdx + 1]}`, - ) - } - if (n1 && n2) { - tooltip.push(`Name 1: ${n1}`, `Name 2: ${n2}`) - } - setTooltip(tooltip.join('
')) + setTooltip(tooltip) } }} onMouseLeave={() => model.setMouseoverId(undefined)} diff --git a/plugins/wiggle/src/BigWigAdapter/BigWigAdapter.ts b/plugins/wiggle/src/BigWigAdapter/BigWigAdapter.ts index c9dedbccc6..9229dc8984 100644 --- a/plugins/wiggle/src/BigWigAdapter/BigWigAdapter.ts +++ b/plugins/wiggle/src/BigWigAdapter/BigWigAdapter.ts @@ -17,8 +17,10 @@ interface WiggleOptions extends BaseOptions { } export default class BigWigAdapter extends BaseFeatureDataAdapter { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private setupP?: Promise<{ bigwig: BigWig; header: any }> + private setupP?: Promise<{ + bigwig: BigWig + header: Awaited> + }> public static capabilities = [ 'hasResolution', diff --git a/products/jbrowse-web/src/components/NoConfigMessage.tsx b/products/jbrowse-web/src/components/NoConfigMessage.tsx index 176cba7870..f883d2071d 100644 --- a/products/jbrowse-web/src/components/NoConfigMessage.tsx +++ b/products/jbrowse-web/src/components/NoConfigMessage.tsx @@ -9,7 +9,7 @@ export default function NoConfigMessage() { ['test_data/breakpoint/config.json', 'Breakpoint'], ['test_data/config_dotplot.json', 'Grape/Peach dotplot'], ['test_data/config_synteny_grape_peach.json', 'Grape/Peach synteny'], - ['test_data/human_vs_mouse.json', 'Human vs mouse synteny'], + ['test_data/hs1_vs_mm39/config.json', 'Hs1 vs mm39 synteny'], ['test_data/yeast_synteny/config.json', 'Yeast synteny'], ['test_data/config_many_contigs.json', 'Many contigs'], ['test_data/config_honeybee.json', 'Honeybee'], diff --git a/test_data/human_vs_mouse.json b/test_data/hs1_vs_mm39/config.json similarity index 75% rename from test_data/human_vs_mouse.json rename to test_data/hs1_vs_mm39/config.json index 099d482a72..8b31c9381c 100644 --- a/test_data/human_vs_mouse.json +++ b/test_data/hs1_vs_mm39/config.json @@ -14,6 +14,15 @@ "uri": "https://hgdownload.soe.ucsc.edu/goldenPath/hs1/bigZips/hs1.chrom.sizes.txt" } } + }, + "refNameAliases": { + "adapter": { + "type": "RefNameAliasAdapter", + "location": { + "uri": "https://hgdownload.soe.ucsc.edu/goldenPath/hs1/bigZips/hs1.chromAlias.txt", + "locationType": "UriLocation" + } + } } }, { @@ -95,6 +104,26 @@ "queryAssembly": "mm39" }, "assemblyNames": ["hs1", "mm39"] + }, + { + "type": "SyntenyTrack", + "trackId": "liftover_pairwise_paf", + "name": "liftover_pairwise_paf", + "adapter": { + "type": "PairwiseIndexedPAFAdapter", + "pafGzLocation": { + "uri": "https://s3.amazonaws.com/jbrowse.org/genomes/hs1_vs_mm39/hs1_vs_mm39.paf.gz" + }, + "index": { + "location": { + "uri": "https://s3.amazonaws.com/jbrowse.org/genomes/hs1_vs_mm39/hs1_vs_mm39.paf.gz.tbi" + } + }, + + "targetAssembly": "hs1", + "queryAssembly": "mm39" + }, + "assemblyNames": ["hs1", "mm39"] } ] } From 66e372f2a6ae6da6704fa93862f35aa8c59beeca Mon Sep 17 00:00:00 2001 From: Colin Date: Fri, 8 Sep 2023 15:25:20 -0400 Subject: [PATCH 02/12] Add jbrowse CLI command process-paf --- .../src/commands/process-paf.test.ts | 19 ++++ .../jbrowse-cli/src/commands/process-paf.ts | 91 +++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 products/jbrowse-cli/src/commands/process-paf.test.ts create mode 100644 products/jbrowse-cli/src/commands/process-paf.ts diff --git a/products/jbrowse-cli/src/commands/process-paf.test.ts b/products/jbrowse-cli/src/commands/process-paf.test.ts new file mode 100644 index 0000000000..a1e91f4d78 --- /dev/null +++ b/products/jbrowse-cli/src/commands/process-paf.test.ts @@ -0,0 +1,19 @@ +/** + * @jest-environment node + */ + +import path from 'path' + +import { setup } from '../testUtil' + +const base = path.join(__dirname, '..', '..', 'test', 'data') +const simplePaf = path.join(base, 'volvox_inv_indels.paf') +const testConfig = path.join(base, 'test_config.json') + +describe('process-paf', () => { + setup + .command(['process-paf', simplePaf]) + .it('fails if load flag isnt passed in for a localFile', ctx => { + console.log(ctx.stdoutWrite) + }) +}) diff --git a/products/jbrowse-cli/src/commands/process-paf.ts b/products/jbrowse-cli/src/commands/process-paf.ts new file mode 100644 index 0000000000..d4ebe8b8af --- /dev/null +++ b/products/jbrowse-cli/src/commands/process-paf.ts @@ -0,0 +1,91 @@ +import fs from 'fs' +import JBrowseCommand from '../base' + +import readline from 'readline' +import { createGunzip } from 'zlib' + +function getReadline(filename: string) { + const stream = fs.createReadStream(filename) + return readline.createInterface({ + input: filename.match(/.b?gz$/) ? stream.pipe(createGunzip()) : stream, + }) +} + +const cigarRegex = new RegExp(/([MIDNSHPX=])/) + +export function parseCigar(cigar = '') { + return cigar.split(cigarRegex).slice(0, -1) +} +export function flipCigar(cigar: string[]) { + const arr = [] + for (let i = cigar.length - 2; i >= 0; i -= 2) { + arr.push(cigar[i]) + const op = cigar[i + 1] + if (op === 'D') { + arr.push('I') + } else if (op === 'I') { + arr.push('D') + } else { + arr.push(op) + } + } + return arr +} + +export function swapIndelCigar(cigar: string) { + return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I') +} + +export default class ProcessPAF extends JBrowseCommand { + // @ts-expect-error + target: string + + static description = 'Pairwise index the PAF' + + static examples = [ + '# processes a local PAF file into our custom format PPAF, which pairwise indexes the PAF', + '$ jbrowse process-paf file.paf > output.ppaf', + ] + + static args = [ + { + name: 'track', + required: true, + description: `Track file or URL`, + }, + ] + + async run() { + const { args: runArgs } = this.parse(ProcessPAF) + + const { track: filename } = runArgs + + const rl1 = getReadline(filename) + for await (const line of rl1) { + // eslint-disable-next-line no-console + console.log(`q${line}`) + } + rl1.close() + + const rl2 = getReadline(filename) + for await (const line of rl2) { + const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') + const cigarIdx = rest.findIndex(f => f.startsWith('cg:Z')) + + const CIGAR = rest[cigarIdx] + if (CIGAR) { + rest[cigarIdx] = `cg:Z:${ + strand === '-' + ? flipCigar(parseCigar(CIGAR.slice(5))).join('') + : swapIndelCigar(CIGAR.slice(5)) + }` + } + + // eslint-disable-next-line no-console + console.log( + [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t'), + ) + } + rl2.close() + } +} From 30e63969bffe52a123df706dd76c60b7c455bd7a Mon Sep 17 00:00:00 2001 From: Colin Date: Fri, 8 Sep 2023 15:28:51 -0400 Subject: [PATCH 03/12] [skip ci] Update snaps --- .../__snapshots__/process-paf.test.ts.snap | 21 +++++++++++++++++++ .../src/commands/process-paf.test.ts | 14 +++++++------ .../jbrowse-cli/src/commands/process-paf.ts | 6 ++---- 3 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap diff --git a/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap b/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap new file mode 100644 index 0000000000..660db3ad5a --- /dev/null +++ b/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap @@ -0,0 +1,21 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`process-paf processes volvox paf 1`] = `15`; + +exports[`process-paf processes volvox paf 2`] = ` +"qctgA 49186 26805 49184 + ctgA 50001 27258 50001 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3D58M1I4M1I3M2D20M3I2M1D42M15D1M1D15M6D2M4D24M1D10M1D64M1D62M1I11M2D10M4D23M1I25M4I23M1I20M2D3M1I7M10I7M1I4M1I5M1I15M10I21M1D3M3I6M1D12M1I6M1D30M1I5M1I6M9D4M1D33M1D2M1D8M1D3M1I5M5I25M2I10M1I34M1I6M5D4M4D6M1D34M1D13M1I25M2D19M1I25M1D1M2I24M1I3M1I20M1D2M1I7M1I3M2I6M4I14M2D29M1D3M2D7M1D4M1D6M2D8M4I30M1I8M4D18M1I7M1D3M1D1M1D9M1D11M3D21M5I6M1D1M1D2M1I5M4I27M1I19M1D7M1D9M5I50M1D3M7D33M1D5M1D2M1D32M34D1M1D6M3I40M1D21M2I33M1I2M1I14M1D4M2D17M1I30M1D9M1I53M1D22M1I5M1I6M2D13M4I19M2D6M2I3M1I15M3D4M1I15M1I3M1D8M7I1M1I56M3D12M1D17M1D5M1D52M7D13M1D2M1D4M1I2M3D9M1D18M1I9M6D9M1I1M2D5M1I6M2D3M3D1M2D3M2D17M2D11M5D4M4D12M1D6M1D9M2D3M1I12M1I7M1I17M1I6M1I13M1I15M2I19M2D6M2I2M1I9M2D20M12I12M1D35M3D6M1I23M3D7M1I8M2D7M1I10M1I41M2I20M1D34M1I2M1I10M1I12M2D10M1D13M13D18M1I27M2D13M2I26M3D4M1D9M2I5M3D39M1D19M1D9M1I12M2D33M1D22M1I31M1I28M1D11M2I5M1D22M1D3M27D38M1I8M1D8M1I29M5D8M1I46M1I18M1D6M1D61M1D16M6D4M3D13M1D19M5D4M1D5M2D6M6D4M7D7M1D7M1D7M1I41M5I3M1I11M1D17M1I3M1I3M1I5M1D11M2I30M5I4M1I6M1D18M1D10M1D50M1I8M1I16M1D9M26D11M1I44M1D19M1I9M2D2M1I18M1D8M15I19M1D13M1I8M1I6M1I4M3I7M1D4M1D3M1I2M1I3M3D1M1D20M1I15M1D11M1D22M2I41M2D12M1I7M2D6M8D3M7D2M2D27M1D19M1D2M1D41M1I13M1D38M1D11M4D7M1I14M1D1M3D37M1D2M1D4M1D3M4D2M1D21M1D18M1I11M2D13M1I23M25I15M1I2M1I3M7I18M1I35M1D11M1I5M1I45M4D5M1D7M1D6M1D35M1I34M2I9M1D6M1I47M1I10M1I34M1I5M1D6M1I1M1I4M8I28M3D6M1I19M1D18M1I7M5D5M1D22M1D3M2I5M12D8M1I71M2I23M1I6M1D3M2D5M2I12M1D12M1I24M1D14M1I3M1D24M1D26M22D42M1D9M1I1M1I9M1D6M1D12M1I6M3D17M12D7M1I11M2I19M1D17M1D17M2I2M2I9M2D10M1D6M2D29M1D3M1D19M1I4M3I8M1I1M2I55M1I43M3I42M1I33M22I22M1D3M1D24M1I40M1D21M1D2M1I5M1D2M1D18M1D20M2D12M1I22M1I4M4I84M1I21M1I35M1D3M4D13M1I5M1I10M4I11M1D20M1D5M1D16M1I14M1D8M1I58M1I9M1I5M26I6M1D30M2I7M1I9M1D9M1I38M5I1M2I8M2I14M2D1M2D13M1D2M1I12M1D21M1D8M1D17M2I4M4I7M1I12M1I23M1D12M1I8M8D12M1I5M1D18M1I39M1I2M1D9M1I5M2D16M1D23M3D6M2I17M3D1M1D13M1I49M1D25M1I5M1I13M1I9M1D21M1D6M1I13M1I2M2D3M2D3M1D3M3D22M1I1M1I10M4I1M4I3M2I7M2D3M2I15M1I9M1I3M4D6M7D1M1D16M1I9M1D6M9D4M3D7M1D5M1I7M1D5M1D31M1D10M1I29M1D6M5D4M1I3M5D22M1I1M1I4M4D2M1I15M2I4M1I1M1I5M2D5M2D7M1D6M1D1M1D14M4D25M1D30M1I30M6D15M3I12M1I9M1I72M1I9M1D8M1D6M1I5M1D18M5I3M1D4M3I3M7I17M1D5M1D19M2I3M1I14M3I2M1I10M1I2M1I38M4I2M1D25M1D23M2I4M1I8M1I3M19I16M1D21M1I21M2I6M23I9M1I9M11I3M5I17M1I2M8I5M1I5M1D12M1D25M1D20M1D10M3I2M4D3M1I18M3I6M2D35M1D2M3I2M1D9M1I1M1I14M1D2M10D1M2D4M1I6M5D3M6D1M6D18M1D8M1I6M1I49M1D18M1I1M1I7M2D24M1D13M1D1M26D8M2D2M1I19M1D13M1I9M1I5M1I3M10D10M5I1M1I15M1D27M1I15M1I30M2D12M1D10M3D22M5D4M1D9M1I33M1D3M1D12M9I4M1D6M5I3M8I8M1I33M5I13M1D22M1D12M1I17M6I5M3D12M1I12M1D1M1D7M1I44M1D1M1D12M1I47M1D8M2D27M1D1M1D35M1D9M1I6M3D52M3I6M1I27M1I8M1I13M1D13M4I16M3I43M1I13M1D31M1D63M1D30M1I6M1D1M1D15M20D18M2D15M9D8M3D16M11D9M1D18M1I27M8I2M3I1M1I11M2D24M2D27M1D2M1D52M1I50M1I4M1D7M7D23M1I6M1D34M2I15M2D11M1I9M1D21M6D1M1D11M2I2M1I7M27D18M1I2M1D10M4D12M3D1M2D15M5D1M1D6M6D6M1D40M5I8M1I8M35I6M1I27M1D15M2I3M18I5M4I2M1I4M4I8M1I39M2I5M6D9M38D3M1I24M1D2M1D17M1D9M2D7M9I12M1I1M1I15M1I10M2D11M1D10M1D19M3I20M1D43M1D8M1I4M3I1M2I2M3I5M3D13M1I9M5I6M1D6M1I2M2D23M1I8M1I19M1D12M1I20M1D5M1I16M2I10M15I5M2D7M1I14M4D13M1D16M1I4M1D5M2D5M2D3M1I14M17I6M1I16M6I13M5D1M1D6M1I4M1D2M2I17M1D33M1I4M1D16M1I44M1I19M1I19M1D10M13D13M1I5M2D12M1D4M1I10M1D15M1D5M1I7M1I8M1D30M1D3M1D6M2I30M1D33M2I7M4I8M1D2M1D16M1D20M1I3M1D35M1I5M1D10M4D5M1D3M1D19M2I5M2I8M5I49M1D14M1I15M1I11M1I4M3D5M1D50M1I11M7I2M4I9M1I18M2I11M1I5M2I13M5I3M2D19M2I11M2I47M4I1M2I7M1I26M1D4M1D6M1D6M1I24M2I5M3D9M1D13M1I9M1I22M1D3M1I12M1I4M4D32M1I2M2I15M3D3M1D10M1D7M1D11M1I4M1D3M7I2M1D11M1I4M1I1M2I9M8I15M1I9M1I44M1D4M2D10M1D15M1I23M5I4M2D7M4I14M1D10M2I35M1I5M3D25M1D17M1I18M5D5M2I15M2D21M1D1M1D55M7I11M1D5M1I13M2I13M1I12M1D18M1I9M3I29M1I5M1D11M2I11M1I4M4I13M1D10M3I83M1D24M1D6M2D4M1I5M1D6M1D34M1D4M2D11M1D4M2D47M10I7M1D40M3D11M2I39M1I19M1I2M1I3M1D22M2I17M2I4M1D2M1I7M1I27M1I7M1I17M1I7M1I15M1D8M1I3M1I1M1I44M1I1M3D4M1I2M1I19M1D15M1I6M4D28M1I8M1D13M1I4M1D11M1D19M2I69M1I43M4D24M1D25M2I13M2I16M1D4M1D8M1D42M1I11M1I7M3D1M2D1M5D14M2D2M1I28M1D5M1I25M1D46M7I8M2I30M1I4M1I19M1D22M1I30M1D10M5I7M1I5M1I3M2I12M11D3M1I7M8D2M6D2M3D7M2D4M1I1M2D5M1D18M2I1M1I1M1I4M1I10M3I18M1I27M2D5M1I6M1D7M2I7M22D30M1D31M1D19M2I46M1I3M1I27M6D13M1I37M1I12M2D14M28I3M1I3M1D18M6I25M1I8M1D9M2D17M1D2M4I10M1I44M1I6M1D14M3I10M2D7M1D10M2I9M15I18M1D13M1I15M1D25M1D13M1I1M1I18M5I17M1D16M1D16M1I29M1I24M1D17M1D15M2I10M1I11M3D3M1I2M1D50M11D2M2D2M1D1M2D1M1D9M1D18M2I41M1I26M1I25M1I22M4D6M2D2M13D23M1D11M1D25M1D7M3I9M1I4M1D16M1I4M1D2M1I6M1I20M1D37M2D42M1I3M1D47M1D11M1D3M1D14M1D7M1D19M7D11M3D10M2I7M1I11M1D48M1I2M1I10M4I2M1I18M1D67M2D4M4D6M1D17M1I6M2I23M1D9M1D1M3D8M1D14M2D2M3I6M4D9M1D5M5D22M1D6M2D25M8D1M2D4M1D2M4D31M2I7M1I11M11D16M2D11M2D14M1D8M2D3M1I21M1I6M2I1M1I6M1D27M1D1M1D33M1D21M2D1M1D8M1D5M2D6M1D8M1I34M1D3M4I7M1I2M1I16M1I1M1I46M1D12M1I7M1I31M6I10M1I1M1I1M1I5M11I10M1I19M1D22M1D10M1D11M1I8M1I24M1D6M2I7M3D2M1D17M1I24M1I2M4D19M1I14M2D17M1D9M3I16M1D10M1D25M1I26M11D3M2D5M1D2M8D30M2I15M2I13M1D6M5D5M3D17M2D17M2I18M2D11M1I11M2I3M1D18M1D9M1I8M1I16M1D2M1D13M3D1M1D10M1D11M1I8M3D3M1I26M1D4M2D8M1D3M2D4M1I4M2I11M1D10M1D4M1D8M6D1M1D5M7D2M1D5M8D3M2D13M4I1M1I17M1D21M1D22M1I10M1D41M1I2M1I2M1I5M1D41M1D29M1I5M1D5M1I8M1I15M1D9M1D22M1D29M4D7M1I9M1D8M1I32M2D15M1I15M1I23M1I7M10I19M1D38M1I7M1I4M1I16M28D29M7D28M1D52M2I6M1I1M1I1M1I3M1I25M2D15M1I9M5D6M1D12M1I6M1I4M2I11M5D1M2D1M4D15M3I11M3D4M1I8M1D40M6I12M1D17M1D9M5D1M1D2M1D25M1I23M2D9M1D11M1I3M2D28M1I12M1I17M15I10M1D9M1I2M1I8M4I11M1D9M1I6M1I8M1I40M2D3M2I8M1D11M1D16M1D6M1I7M1I34M2I27M1I5M1D3M2D39M1I30M1D22M1I10M3D61M2I19M2I6M1D7M1I23M1I4M1D3M1D6M2I12M2D11M14I13M1D6M4I9M2D11M1I17M1I4M1D8M1D3M1I4M1I35M1D47M1D17M1I7M1I2M1I25M1I13M1D3M1D18M1I13M2D10M2I19M2I6M1D6M1I7M1I11M1I6M3D2M1D11M1I6M1D17M12I1M1I2M1I9M1D1M1D7M7I4M1I9M8I12M1I37M1I25M4I1M1D7M3D13M1I4M1D2M1D43M1D11M1I4M1I6M1D31M2I38M2D12M2D6M2I39M1I19M6I1M1I12M1D16M1D50M1D40M1D24M1I4M2D5M1D5M2I13M2I4M7D2M2D2M7D1M3D15M1I8M1D10M10D41M1I34M1I10M1D11M1I3M3D7M3I23M9D47M2D19M1I36M42D2M1I3M1D3M1D7M1D5M3D6M1D16M1D13M1D39M14I7M1I16M1D19M1D14M1D8M1I34M2I3M1D6M1D12M2I3M1D10M2I1M1D6M39D2M2D16M2I3M2I3M1D23M1D14M3D3M2D6M3D2M1D1M1D10M1D25M1I17M2I33M2D2M1I7M1I36M2D13M1I9M1D6M3I11M1I2M1D8M1D21M1I34M1D12M2I3M1I8M4I11M1D59M5D18M2I11M1I4M7D26M2I77M5D11M1I16M2D6M5I19M1D13M1D1M2D23M1D6M2I11M1D35M1D10M1I14M1D30M1D12M38D2M1D3M1I2M1I5M2D7M1I1M2I3M1I57M1I31M1I9M1I63M1I40M2I3M1I25M1I4M2I21M15I10M1I30M2D3M2D6M2D15M1I6M1I48M2I27M1D6M1D77M2D3M1I22M3D20M1I14M1I29M1I16M1D20M1D5M30D25M6D7M1I17M1I5M14D16M1I3M1D15M1D41M1D13M1I13M1D5M2D19M2I6M1D29M1I2M2D16M1D6M1D8M1I4M9I13M3D10M1I16M4D27M1D1M3D6M2I9M5I38M1D3M2D1M1D4M2I5M1I24M1D18M1I3M5D2M3D3M1I3M1D1M1D5M1D4M1D11M5D3M8D6M1I3M2D5M1D11M1I19M1I1M1I15M1I3M1D15M1D5M3D1M1D12M1D23M1D1M1D6M4I2M4I9M1I17M1I4M1D18M3I7M1I51M11D11M1D12M3D17M1D14M2I12M4I10M1D26M1I45M1I3M1D15M2I11M1I28M1I4M2D9M1I31M3I15M1I11M1D3M4I10M1I21M1D31M8I23M4I24M1D13M5I19M2D1M1D5M10D10M1I23M1I20M2I32M1D5M1D23M1D9M1I14M1I22M1D6M1D19M3I14M1I18M1D10M1D7M1D14M1D46M1D7M21I5M1D17M3D2M4D7M1D16M1I2M1I14M1I3M1I4M1I16M2I42M1I7M1I17M5D1M1D29M13D24M1I3M8I5M12I9M1I23M1D8M +qctgA 49186 2214 15925 + ctgA 50001 2212 16198 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1I4M2I21M1I10M1I14M1I5M1D29M2D9M1I15M1I27M1I12M1D5M1I11M1D7M2I4M2D9M1D4M6D32M1D13M1I55M1I8M1I1M1I12M1I2M1D22M2I56M1D11M1I5M5I17M3I3M1I13M1D16M1I50M1I2M1I10M1D1M1D42M1D2M2D33M22I3M1I2M1I6M1D8M2D5M1D50M1D6M3D6M2D12M3I13M1D9M5D1M1D10M1I3M1D5M1I3M1I4M1I24M1I5M2D30M1D3M1I15M1D9M1I3M1I18M1I9M1D11M2D6M1I23M4D1M1D22M1I3M1I11M2D1M1D7M1D4M1D18M1I6M1I5M2D5M1I66M2I3M1D8M1I13M1I8M1I3M2D4M1D20M1I5M2I22M1I6M8I14M1I6M1D8M2D5M9D7M2I4M1D11M1I20M2D2M1I33M8I10M2I7M1I18M4I5M1D4M4D1M1D33M3I10M1D20M2D8M1D9M1I10M1D7M1I8M1D6M2I66M1I3M2I2M1I24M1D63M1I14M8I7M1I13M1D31M1I16M4D41M1D3M1D4M23I9M1D2M1D8M1I1M1I12M1I2M1I3M1D33M1I24M2I3M1I4M1I12M122D6M4D2M1D13M1I3M1D35M1I4M1I13M1D32M1D6M1I5M1I5M1D12M1D8M1D48M1I2M1D19M1D9M1I24M1D13M1D8M1I5M7I5M2D10M1I11M3I15M1I6M2I4M1I18M1D14M1D3M1D1M2D17M1D12M4D15M1I3M1D31M1D1M1D1M1D1M1D12M5I2M1D31M2I18M1D5M20D10M1I20M3D11M1I14M1I1M9I4M4I2M4I2M3I4M1D10M1D50M1I14M1I11M8I11M2D9M1I20M3I5M1I27M1D5M3I9M2I9M3D34M1I21M1D15M1I9M1I2M1I2M1I8M1I26M3D4M1D3M1I2M1I25M1I1M1I14M6I45M2I21M1I17M2D23M1D6M2I8M2D20M1I24M1D9M1I1M2D6M1D3M1D9M8I4M2I30M2D8M1D7M1I50M1I3M3I26M3D17M1D17M1D5M1D8M1I29M2D2M1I3M1I6M1D11M3I20M3I19M1I17M2I33M1D35M2D7M2D3M18D1M3D10M5D11M1D8M1D6M1I9M1I4M2D5M1D13M1D22M1D16M14I22M1D3M1I19M1D53M1I13M1I20M8I8M1I6M6D28M3D28M9D23M5D26M1I6M1D5M1D24M1I5M2I13M1I2M4I2M1I4M4I8M1I14M1I12M1I28M1I18M4I10M2D8M1I62M1I14M2I5M1I18M1D1M3I4M1I13M1D4M2I3M1D8M4D2M8D71M1I8M4I23M1I15M5D13M1D6M1D8M7I16M2I13M2D27M1D46M1I20M2D6M1I9M1D4M1I7M1D6M1I2M6I11M4D25M1I22M1D14M2D20M1D30M3I7M3D4M1I22M1D4M1D10M1D20M1I21M3I3M1I8M1D14M1I10M2I45M1D14M1D17M1D27M2D3M1I2M2I4M1D13M1D5M4I6M2I11M1I11M4I6M1I15M1I8M1I6M9I1M1I19M1I4M1I8M2D9M1I7M1D33M1D19M1D3M1D35M3D4M1D6M2D16M3D1M1D30M26D28M1D7M2I12M2D10M1I7M1D16M1D4M1I18M1I33M1I31M1I7M1I12M1D7M1D16M5I3M1I4M1D4M1D28M8D12M1D4M1D7M3D11M1D15M1D12M1I12M3I6M2D4M1D16M1I11M1D5M1D2M2I22M4D14M2I19M1D7M3I17M1I22M5D6M1D14M2D1M1D12M1I11M10I16M1D21M1D24M5D17M1D48M1D3M1D4M1D12M1D13M4D9M1I22M1I21M1I12M1D11M3D2M1D9M1I10M1D4M1I4M1D18M1I3M1D18M2D4M1I21M4D5M3I3M1D21M1I33M1D19M1I38M2I27M1I7M1I15M2I8M5D2M1D15M1I7M2I2M1I11M1D24M1I4M1D14M1I51M1D47M1D3M4D4M3D3M1I3M1D13M1D3M1I13M1I10M3I34M1D3M1I17M1D5M1I8M1D28M1I13M2I2M1I16M1D21M2I22M5I8M1I3M1I9M1D12M2D11M1I7M1I2M2D10M3I26M4D12M1D3M1D12M7I12M1I5M1D5M8D5M1D8M1I31M1D3M1D6M1I12M2D4M1D24M2I10M1I17M1D1M3D11M1D8M2D16M1D18M2D3M6D2M1D6M24D10M2I14M1I11M1I4M1D10M1I34M4I14M1D21M1D6M43D8M4D2M1D12M1D7M5D4M2I15M1D39M1D6M1I9M3D1M3D2M2D4M4D2M3D1M1D2M1D10M1I16M3D17M1I1M1I28M1D10M1D11M1D28M1D11M2I17M1I14M1I7M2D6M1D4M7D3M7D10M1I6M1I57M2D4M1D5M1D18M2I50M5I38M1D6M1D15M1D5M1I58M4I28M1I15M1D14M3I4M2D4M1I11M4D4M1D44M1I25M1I8M2D12M1I7M1D31M1D9M26I5M1I19M1D1M1D9M1D5M1D7M34I1M1I38M1I1M1I21M1D4M11D29M1D11M1D7M3I19M2I36M1D12M1I21M1I2M7I23M2I19M1I6M1I16M2I2M3D10M1D11M10I5M1I15M2D18M1I17M1I7M2D6M2I6M1D27M1I17M1I23M5I29M4D3M1I41M1D33M1D9M1D11M6I25M1D17M3D6M1I8M1I14M1D13M1D12M1I16M1I12M1I3M1D12M1I28M1D32M1D15M1I32M6I2M2I8M1D6M1D23M22I30M1I9M10D58M3I7M1D12M1I10M6I31M1D14M1I38M1I13M3D14M1D23M1I6M1I10M3I22M1I10M1I8M5I67M1I13M4D3M5D6M1I4M1I8M3D8M3I2M1I11M1D11M1I4M2I1M1I2M1I5M3I9M2D1M1D4M1D6M2D5M1D5M1I8M4D8M1I7M2I3M3D15M6D1M1D9M1D4M1D6M1D36M1D7M1D18M1I5M1D3M2I20M1D13M4I7M5I2M2I43M1I5M1D12M1I7M1D31M1I13M1D13M1I6M1D1M1D4M3D7M1D31M2D26M1I7M1I8M1D7M1I17M1D18M1I6M1D4M7D13M1I6M1D7M1I31M1D5M1I15M1D20M1I20M1I26M3I2M3I1M9I5M1I24M2D25M1D14M1D5M3D2M1I7M1I3M1I19M1I17M1I16M2I5M5D8M1I15M1I3M2I5M5I15M1D13M3D7M1D9M5I10M2D5M1I10M2I1M1I2M1I9M8I2M1D5M1I6M6D7M1I13M3I7M1I3M1D15M2D18M1D3M1D2M1D5M1D5M2I9M1I1M1I27M1I11M1D16M8I1M2I8M1I15M1I6M1I10M1D24M1D3M1D19M1I12M1I24M1D8M1D2M1D2M1I6M1D31M2I5M5D16M5I5M1I6M3D11M14D12M3I29M1I12M1I5M23I2M1I4M4I6M1D41M2I21M1D17M1D5M1D25M3I18M1D6M1D5M1D42M1I3M1D31M1I3M1D14M1D21M1I8M3D4M1I19M6D10M2I12M7I32M8I2M1D18M2D31M1D15M1I21M1I6M1I3M1I39M2I1M1D10M1D3M1I36M12D45M1D7M1I4M1I1M3I7M1I3M1D5M1D6M1D14M1D14M1I18M1D1M1D6M1I1M2D1M1D4M2D8M1D27M5I20M12D11M1D9M1D29M3D26M2D4M2D3M1I6M37D1M1D4M5D3M1D3M6D3M4D16M1D27M2D3M1D2M2D60M4D5M4I8M21D26M1D16M1D3M1I8M1D22M1I8M10D3M2D3M3D13M36D4M1D40M1I6M1I5M1I7M2I7M1I13M2I2M1D8M2I6M1I9M1I3M1D4M4I3M1D5M1I11M1D4M4D23M1I21M1I17M1D37M2I10M1D36M1D8M1D1M1D9M1I6M1D1M5D1M7D3M2D2M10D2M2D12M1I27M2I1M1D16M1D18M1D25M1D29M1I12M2I18M1I2M3I3M7I13M1D30M3D2M2D18M1D4M2D36M1I19M1D19M1I6M1I4M3D20M2D13M1I61M1I12M3D1M1D6M2D4M2D3M1I7M1D34M1I9M1D5M5D9M3D11M1D4M1I4M1I3M4D2M3D1M8D22M1I10M1D12M1D57M1D25M1D58M4I26M1I2M1I2M1I7M2I43M1I3M1D6M1D9M2D20M1D5M41D5M1D30M1D32M1D12M2I9M4I17M2D44M1D2M1I29M14I1M1I17M1I8M1D27M4I14M1D9M1D4M1I6M1D12M5D26M3I2M1I2M1I18M +qctgA 49186 18755 26306 + ctgA 50001 19011 26774 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1I43M1D4M7D2M7D13M2I3M1I7M1I19M1D5M1D32M1D5M2I63M4D20M5D50M2I12M1I16M3D8M1I19M2D38M1D28M7I2M1I5M4I1M1I3M2I2M1D25M1I10M1D2M1D19M1I5M1D32M1I8M5D4M8D7M1D1M1D26M2D16M2I6M7D14M4I2M1I3M2I4M1D32M6I8M1D12M1D10M1D24M4D2M1D43M1D22M1I11M1I30M2D31M1D19M1D2M1D10M3I48M1I26M4D11M1D4M1D11M2D4M1D18M7I8M1I10M1I2M1D61M1D4M1I18M1D13M3D3M2D5M8D47M1I30M3D6M1I44M2D14M1I40M9D1M2D24M1D16M39I5M1I38M3I22M4D35M1I19M1I19M1I26M1D4M1I10M4D39M1I10M2I10M1I10M1I3M1D1M5D16M1I13M1D11M1D25M1D21M8I22M4D11M1D9M5D17M1D73M1I36M6D4M1D19M1I52M1I15M24I1M1I2M2I15M1I2M6I2M1I28M1D41M4I46M4I14M1D7M21D4M1I20M1D2M1I15M1I3M1I29M1I20M5D37M2I9M1I16M1I24M1I22M3D1M2D47M1I6M1D6M1I19M1D18M1I1M1I18M1I3M1I2M1I5M35D8M1D13M1I7M4I31M1I6M1D83M2D1M1I26M1I15M1I3M2D5M2D12M1D42M1I1M2I12M4D2M4D6M26D8M3D1M1D2M4D9M1D30M2D3M2D28M1I4M1I41M1D18M1I41M1I12M1I19M4I35M5I31M4I31M1I3M1D11M1I25M2D2M3D30M1D5M1I8M1D22M1I7M1D32M1I29M6D1M7D10M3D1M1D5M1I15M7I18M2I10M4D42M1D15M1I13M1D5M1D2M2I38M1I9M2I7M3I20M1D15M1I5M1D3M1D8M2I12M1D10M1D3M1D6M1D30M1D94M1I18M1I4M5D3M1D29M1D2M1D2M1D5M1I4M1D13M1I9M6I10M1D6M1D12M2I5M2D1M1D11M2D1M1D10M5D9M8D17M1D35M1D4M1I16M5I1M1I9M8I21M23I2M1I38M1D1M1D8M1D27M1I42M1I9M2D1M1I5M1D23M2I5M1I28M1D25M1D24M1D5M1I21M1I4M4I7M1D7M1I25M21I5M1I4M1I42M2D26M1D7M1I10M1I1M1I19M10D4M1D14M1D42M8D28M3D2M3D13M1I17M1D11M1I22M1I19M1I1M4I9M2D2M1I14M8I9M2D9M1I13M2D11M3D2M2I5M1I3M1I6M3D10M1I9M1D21M1I5M2I9M2I10M1D3M2I9M1I21M3D23M1I8M1I3M1I26M1I33M8D7M1I9M10D10M1I7M1D52M10D13M1I6M2D39M1D6M1D26M1I4M1D4M32D24M1D21M2D1M1D7M1D1M1D15M1D5M1D24M2I1M1I6M1D2M1D19M35D41M3I6M3I15M2D3M1D14M2I9M3D19M2D26M1D30M1I6M3D32M1I5M1D36M1D8M1D2M2D2M1D6M3I3M7I2M2I17M1D12M1D6M1I40M3D28M2I2M2I21M1D4M1I9M1I4M1I31M2I11M1D31M1D3M2D3M5D7M4D7M1D6M1D6M8D4M1I1M2D19M3I14M1D7M1D12M1I4M3I2M4I11M1I8M1I17M1D11M1D3M1D15M17I8M3D42M1I17M1D25M1I15M1I11M2I7M1D23M4I14M2D20M1I9M3D2M1D17M1D34M1I3M1I4M1D13M1I2M1I6M1I6M1D12M2D1M4D2M4D4M1I16M36D6M1D32M1D27M1D4M1D2M1I11M20D16M3D4M1I16M1D27M1D14M1D21M2I14M1D10M3D5M2D3M3D2M1D1M4D5M1D2M3D7M1D7M1I9M1D5M1D4M1D16M1D9M9D1M1D2M1D4M1D3M2I6M2D5M1I22M1D3M1I8M1D8M3D43M1I4M1D31M1I17M3I8M2I12M6I13M1I16M1D11M2D4M1I5M2D2M2D2M1I29M1I12M2D13M1I7M14D1M1D3M5D10M1D12M5I19M1I10M1I3M7I2M14I3M9I13M2I5M1I13M1D4M1D18M1I3M1D28M1I5M4D35M1D23M3D11M2I8M1D17M1I9M1I23M4D4M1D9M1I3M1I26M1I5M3I1M1I14M1D42M1I5M16I15M1D28M4D5M1I5M1D4M1D11M2D5M1I4M1I3M1I9M +qctgA 49186 16409 18309 + ctgA 50001 16650 18559 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5D3M3I13M1D9M1D5M2I5M8D39M1I36M2D33M1D22M1D10M2I8M1D5M1D16M6D5M2D11M2I12M1I7M1I3M3I3M1D3M1I13M1D21M1I4M2I1M1D14M1I12M1I2M1D12M6I5M1D19M10D28M1D26M1D41M1I11M1D9M1I9M4D15M6D13M1D25M5D3M1I27M2D7M1D17M7D18M2I16M1I12M1D22M2I5M12D5M7D2M1D13M1I13M2D2M1I15M1I19M1D17M1I58M1I8M11I8M1I6M2D6M1D2M1I8M2D4M15D6M1D1M2I8M3I25M1D21M1I43M1I6M1D12M2I10M14I5M1D19M3D4M1I95M2D16M2I9M3I8M1I3M1D3M4D1M1D5M3D14M1I7M1I6M2I40M1I1M2I5M1D5M1I11M7D25M10I16M1I2M2D21M1D4M1D4M1D15M2D3M1I13M13I28M2D5M1I33M1I11M1D36M1D19M1I22M1D18M1I1M1I12M1D6M9D11M2D4M1I5M10D16M5I21M1D5M1I11M37I13M3I4M1D9M1I3M1I12M1I58M1D14M +qctgA 49186 3 1851 + ctgA 50001 0 1859 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1I16M1I5M3I33M1D14M3D7M1D25M2I5M2I4M1D17M3D11M1D5M3D3M1I15M3I1M2I6M1I2M6D6M2D24M1I3M2D29M1I2M1I3M1I6M1I10M2D8M19D33M1D23M2D9M1D11M1I6M1D5M1D28M1I13M1D5M1I2M1I49M5D6M2I21M1D1M2D2M2D4M4I4M1I5M1I3M1D2M1I4M37D17M2I16M6D5M3D3M6D16M5I4M8I5M4I1M1I52M2D2M1I5M28D33M1D17M2I2M2D31M42I5M1I9M1I7M1D8M1I40M1I39M1I2M1D3M2I11M2I6M2I10M1D14M1I12M1I16M1D6M3I6M2I4M1I1M1I27M1I3M10I3M2D11M3D3M1I35M1I1M3D3M2D19M3D9M4D23M1I3M1I28M1I52M1I28M1D20M2I66M1I3M2I7M1D7M2D9M1D11M1D11M1D7M1I3M1I30M1D11M1D15M2I7M3D3M1I12M6I35M1D4M1D17M1D15M1I5M1D4M1I5M1I3M5D10M1D2M1D8M7I13M5I9M1D4M1I45M6I4M1I19M2D16M1D1M2I23M7I11M1I19M1D13M +qctgA 49186 18309 18754 - ctgA 50001 18559 19001 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:5M1I15M2I30M1D20M1D13M2D2M1D14M8I11M1D18M1I7M1I56M1D33M1D52M2D7M1I19M7D26M1I9M2I10M1I27M1D18M1I15M2I17M +qctgA 49186 1860 2214 - ctgA 50001 1859 2192 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:14M1D4M1D3M1D9M1I12M5D20M2I43M1I10M1I7M2D2M1D8M1I30M1I9M1I2M1I6M15I39M2I16M4I2M1I35M1I2M1I6M1D42M +tctgA 50001 27258 50001 + ctgA 49186 26805 49184 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3I58M1D4M1D3M2I20M3D2M1I42M15I1M1I15M6I2M4I24M1I10M1I64M1I62M1D11M2I10M4I23M1D25M4D23M1D20M2I3M1D7M10D7M1D4M1D5M1D15M10D21M1I3M3D6M1I12M1D6M1I30M1D5M1D6M9I4M1I33M1I2M1I8M1I3M1D5M5D25M2D10M1D34M1D6M5I4M4I6M1I34M1I13M1D25M2I19M1D25M1I1M2D24M1D3M1D20M1I2M1D7M1D3M2D6M4D14M2I29M1I3M2I7M1I4M1I6M2I8M4D30M1D8M4I18M1D7M1I3M1I1M1I9M1I11M3I21M5D6M1I1M1I2M1D5M4D27M1D19M1I7M1I9M5D50M1I3M7I33M1I5M1I2M1I32M34I1M1I6M3D40M1I21M2D33M1D2M1D14M1I4M2I17M1D30M1I9M1D53M1I22M1D5M1D6M2I13M4D19M2I6M2D3M1D15M3I4M1D15M1D3M1I8M7D1M1D56M3I12M1I17M1I5M1I52M7I13M1I2M1I4M1D2M3I9M1I18M1D9M6I9M1D1M2I5M1D6M2I3M3I1M2I3M2I17M2I11M5I4M4I12M1I6M1I9M2I3M1D12M1D7M1D17M1D6M1D13M1D15M2D19M2I6M2D2M1D9M2I20M12D12M1I35M3I6M1D23M3I7M1D8M2I7M1D10M1D41M2D20M1I34M1D2M1D10M1D12M2I10M1I13M13I18M1D27M2I13M2D26M3I4M1I9M2D5M3I39M1I19M1I9M1D12M2I33M1I22M1D31M1D28M1I11M2D5M1I22M1I3M27I38M1D8M1I8M1D29M5I8M1D46M1D18M1I6M1I61M1I16M6I4M3I13M1I19M5I4M1I5M2I6M6I4M7I7M1I7M1I7M1D41M5D3M1D11M1I17M1D3M1D3M1D5M1I11M2D30M5D4M1D6M1I18M1I10M1I50M1D8M1D16M1I9M26I11M1D44M1I19M1D9M2I2M1D18M1I8M15D19M1I13M1D8M1D6M1D4M3D7M1I4M1I3M1D2M1D3M3I1M1I20M1D15M1I11M1I22M2D41M2I12M1D7M2I6M8I3M7I2M2I27M1I19M1I2M1I41M1D13M1I38M1I11M4I7M1D14M1I1M3I37M1I2M1I4M1I3M4I2M1I21M1I18M1D11M2I13M1D23M25D15M1D2M1D3M7D18M1D35M1I11M1D5M1D45M4I5M1I7M1I6M1I35M1D34M2D9M1I6M1D47M1D10M1D34M1D5M1I6M1D1M1D4M8D28M3I6M1D19M1I18M1D7M5I5M1I22M1I3M2D5M12I8M1D71M2D23M1D6M1I3M2I5M2D12M1I12M1D24M1I14M1D3M1I24M1I26M22I42M1I9M1D1M1D9M1I6M1I12M1D6M3I17M12I7M1D11M2D19M1I17M1I17M2D2M2D9M2I10M1I6M2I29M1I3M1I19M1D4M3D8M1D1M2D55M1D43M3D42M1D33M22D22M1I3M1I24M1D40M1I21M1I2M1D5M1I2M1I18M1I20M2I12M1D22M1D4M4D84M1D21M1D35M1I3M4I13M1D5M1D10M4D11M1I20M1I5M1I16M1D14M1I8M1D58M1D9M1D5M26D6M1I30M2D7M1D9M1I9M1D38M5D1M2D8M2D14M2I1M2I13M1I2M1D12M1I21M1I8M1I17M2D4M4D7M1D12M1D23M1I12M1D8M8I12M1D5M1I18M1D39M1D2M1I9M1D5M2I16M1I23M3I6M2D17M3I1M1I13M1D49M1I25M1D5M1D13M1D9M1I21M1I6M1D13M1D2M2I3M2I3M1I3M3I22M1D1M1D10M4D1M4D3M2D7M2I3M2D15M1D9M1D3M4I6M7I1M1I16M1D9M1I6M9I4M3I7M1I5M1D7M1I5M1I31M1I10M1D29M1I6M5I4M1D3M5I22M1D1M1D4M4I2M1D15M2D4M1D1M1D5M2I5M2I7M1I6M1I1M1I14M4I25M1I30M1D30M6I15M3D12M1D9M1D72M1D9M1I8M1I6M1D5M1I18M5D3M1I4M3D3M7D17M1I5M1I19M2D3M1D14M3D2M1D10M1D2M1D38M4D2M1I25M1I23M2D4M1D8M1D3M19D16M1I21M1D21M2D6M23D9M1D9M11D3M5D17M1D2M8D5M1D5M1I12M1I25M1I20M1I10M3D2M4I3M1D18M3D6M2I35M1I2M3D2M1I9M1D1M1D14M1I2M10I1M2I4M1D6M5I3M6I1M6I18M1I8M1D6M1D49M1I18M1D1M1D7M2I24M1I13M1I1M26I8M2I2M1D19M1I13M1D9M1D5M1D3M10I10M5D1M1D15M1I27M1D15M1D30M2I12M1I10M3I22M5I4M1I9M1D33M1I3M1I12M9D4M1I6M5D3M8D8M1D33M5D13M1I22M1I12M1D17M6D5M3I12M1D12M1I1M1I7M1D44M1I1M1I12M1D47M1I8M2I27M1I1M1I35M1I9M1D6M3I52M3D6M1D27M1D8M1D13M1I13M4D16M3D43M1D13M1I31M1I63M1I30M1D6M1I1M1I15M20I18M2I15M9I8M3I16M11I9M1I18M1D27M8D2M3D1M1D11M2I24M2I27M1I2M1I52M1D50M1D4M1I7M7I23M1D6M1I34M2D15M2I11M1D9M1I21M6I1M1I11M2D2M1D7M27I18M1D2M1I10M4I12M3I1M2I15M5I1M1I6M6I6M1I40M5D8M1D8M35D6M1D27M1I15M2D3M18D5M4D2M1D4M4D8M1D39M2D5M6I9M38I3M1D24M1I2M1I17M1I9M2I7M9D12M1D1M1D15M1D10M2I11M1I10M1I19M3D20M1I43M1I8M1D4M3D1M2D2M3D5M3I13M1D9M5D6M1I6M1D2M2I23M1D8M1D19M1I12M1D20M1I5M1D16M2D10M15D5M2I7M1D14M4I13M1I16M1D4M1I5M2I5M2I3M1D14M17D6M1D16M6D13M5I1M1I6M1D4M1I2M2D17M1I33M1D4M1I16M1D44M1D19M1D19M1I10M13I13M1D5M2I12M1I4M1D10M1I15M1I5M1D7M1D8M1I30M1I3M1I6M2D30M1I33M2D7M4D8M1I2M1I16M1I20M1D3M1I35M1D5M1I10M4I5M1I3M1I19M2D5M2D8M5D49M1I14M1D15M1D11M1D4M3I5M1I50M1D11M7D2M4D9M1D18M2D11M1D5M2D13M5D3M2I19M2D11M2D47M4D1M2D7M1D26M1I4M1I6M1I6M1D24M2D5M3I9M1I13M1D9M1D22M1I3M1D12M1D4M4I32M1D2M2D15M3I3M1I10M1I7M1I11M1D4M1I3M7D2M1I11M1D4M1D1M2D9M8D15M1D9M1D44M1I4M2I10M1I15M1D23M5D4M2I7M4D14M1I10M2D35M1D5M3I25M1I17M1D18M5I5M2D15M2I21M1I1M1I55M7D11M1I5M1D13M2D13M1D12M1I18M1D9M3D29M1D5M1I11M2D11M1D4M4D13M1I10M3D83M1I24M1I6M2I4M1D5M1I6M1I34M1I4M2I11M1I4M2I47M10D7M1I40M3I11M2D39M1D19M1D2M1D3M1I22M2D17M2D4M1I2M1D7M1D27M1D7M1D17M1D7M1D15M1I8M1D3M1D1M1D44M1D1M3I4M1D2M1D19M1I15M1D6M4I28M1D8M1I13M1D4M1I11M1I19M2D69M1D43M4I24M1I25M2D13M2D16M1I4M1I8M1I42M1D11M1D7M3I1M2I1M5I14M2I2M1D28M1I5M1D25M1I46M7D8M2D30M1D4M1D19M1I22M1D30M1I10M5D7M1D5M1D3M2D12M11I3M1D7M8I2M6I2M3I7M2I4M1D1M2I5M1I18M2D1M1D1M1D4M1D10M3D18M1D27M2I5M1D6M1I7M2D7M22I30M1I31M1I19M2D46M1D3M1D27M6I13M1D37M1D12M2I14M28D3M1D3M1I18M6D25M1D8M1I9M2I17M1I2M4D10M1D44M1D6M1I14M3D10M2I7M1I10M2D9M15D18M1I13M1D15M1I25M1I13M1D1M1D18M5D17M1I16M1I16M1D29M1D24M1I17M1I15M2D10M1D11M3I3M1D2M1I50M11I2M2I2M1I1M2I1M1I9M1I18M2D41M1D26M1D25M1D22M4I6M2I2M13I23M1I11M1I25M1I7M3D9M1D4M1I16M1D4M1I2M1D6M1D20M1I37M2I42M1D3M1I47M1I11M1I3M1I14M1I7M1I19M7I11M3I10M2D7M1D11M1I48M1D2M1D10M4D2M1D18M1I67M2I4M4I6M1I17M1D6M2D23M1I9M1I1M3I8M1I14M2I2M3D6M4I9M1I5M5I22M1I6M2I25M8I1M2I4M1I2M4I31M2D7M1D11M11I16M2I11M2I14M1I8M2I3M1D21M1D6M2D1M1D6M1I27M1I1M1I33M1I21M2I1M1I8M1I5M2I6M1I8M1D34M1I3M4D7M1D2M1D16M1D1M1D46M1I12M1D7M1D31M6D10M1D1M1D1M1D5M11D10M1D19M1I22M1I10M1I11M1D8M1D24M1I6M2D7M3I2M1I17M1D24M1D2M4I19M1D14M2I17M1I9M3D16M1I10M1I25M1D26M11I3M2I5M1I2M8I30M2D15M2D13M1I6M5I5M3I17M2I17M2D18M2I11M1D11M2D3M1I18M1I9M1D8M1D16M1I2M1I13M3I1M1I10M1I11M1D8M3I3M1D26M1I4M2I8M1I3M2I4M1D4M2D11M1I10M1I4M1I8M6I1M1I5M7I2M1I5M8I3M2I13M4D1M1D17M1I21M1I22M1D10M1I41M1D2M1D2M1D5M1I41M1I29M1D5M1I5M1D8M1D15M1I9M1I22M1I29M4I7M1D9M1I8M1D32M2I15M1D15M1D23M1D7M10D19M1I38M1D7M1D4M1D16M28I29M7I28M1I52M2D6M1D1M1D1M1D3M1D25M2I15M1D9M5I6M1I12M1D6M1D4M2D11M5I1M2I1M4I15M3D11M3I4M1D8M1I40M6D12M1I17M1I9M5I1M1I2M1I25M1D23M2I9M1I11M1D3M2I28M1D12M1D17M15D10M1I9M1D2M1D8M4D11M1I9M1D6M1D8M1D40M2I3M2D8M1I11M1I16M1I6M1D7M1D34M2D27M1D5M1I3M2I39M1D30M1I22M1D10M3I61M2D19M2D6M1I7M1D23M1D4M1I3M1I6M2D12M2I11M14D13M1I6M4D9M2I11M1D17M1D4M1I8M1I3M1D4M1D35M1I47M1I17M1D7M1D2M1D25M1D13M1I3M1I18M1D13M2I10M2D19M2D6M1I6M1D7M1D11M1D6M3I2M1I11M1D6M1I17M12D1M1D2M1D9M1I1M1I7M7D4M1D9M8D12M1D37M1D25M4D1M1I7M3I13M1D4M1I2M1I43M1I11M1D4M1D6M1I31M2D38M2I12M2I6M2D39M1D19M6D1M1D12M1I16M1I50M1I40M1I24M1D4M2I5M1I5M2D13M2D4M7I2M2I2M7I1M3I15M1D8M1I10M10I41M1D34M1D10M1I11M1D3M3I7M3D23M9I47M2I19M1D36M42I2M1D3M1I3M1I7M1I5M3I6M1I16M1I13M1I39M14D7M1D16M1I19M1I14M1I8M1D34M2D3M1I6M1I12M2D3M1I10M2D1M1I6M39I2M2I16M2D3M2D3M1I23M1I14M3I3M2I6M3I2M1I1M1I10M1I25M1D17M2D33M2I2M1D7M1D36M2I13M1D9M1I6M3D11M1D2M1I8M1I21M1D34M1I12M2D3M1D8M4D11M1I59M5I18M2D11M1D4M7I26M2D77M5I11M1D16M2I6M5D19M1I13M1I1M2I23M1I6M2D11M1I35M1I10M1D14M1I30M1I12M38I2M1I3M1D2M1D5M2I7M1D1M2D3M1D57M1D31M1D9M1D63M1D40M2D3M1D25M1D4M2D21M15D10M1D30M2I3M2I6M2I15M1D6M1D48M2D27M1I6M1I77M2I3M1D22M3I20M1D14M1D29M1D16M1I20M1I5M30I25M6I7M1D17M1D5M14I16M1D3M1I15M1I41M1I13M1D13M1I5M2I19M2D6M1I29M1D2M2I16M1I6M1I8M1D4M9D13M3I10M1D16M4I27M1I1M3I6M2D9M5D38M1I3M2I1M1I4M2D5M1D24M1I18M1D3M5I2M3I3M1D3M1I1M1I5M1I4M1I11M5I3M8I6M1D3M2I5M1I11M1D19M1D1M1D15M1D3M1I15M1I5M3I1M1I12M1I23M1I1M1I6M4D2M4D9M1D17M1D4M1I18M3D7M1D51M11I11M1I12M3I17M1I14M2D12M4D10M1I26M1D45M1D3M1I15M2D11M1D28M1D4M2I9M1D31M3D15M1D11M1I3M4D10M1D21M1I31M8D23M4D24M1I13M5D19M2I1M1I5M10I10M1D23M1D20M2D32M1I5M1I23M1I9M1D14M1D22M1I6M1I19M3D14M1D18M1I10M1I7M1I14M1I46M1I7M21D5M1I17M3I2M4I7M1I16M1D2M1D14M1D3M1D4M1D16M2D42M1D7M1D17M5I1M1I29M13I24M1D3M8D5M12D9M1D23M1I8M +tctgA 50001 2212 16198 + ctgA 49186 2214 15925 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1D4M2D21M1D10M1D14M1D5M1I29M2I9M1D15M1D27M1D12M1I5M1D11M1I7M2D4M2I9M1I4M6I32M1I13M1D55M1D8M1D1M1D12M1D2M1I22M2D56M1I11M1D5M5D17M3D3M1D13M1I16M1D50M1D2M1D10M1I1M1I42M1I2M2I33M22D3M1D2M1D6M1I8M2I5M1I50M1I6M3I6M2I12M3D13M1I9M5I1M1I10M1D3M1I5M1D3M1D4M1D24M1D5M2I30M1I3M1D15M1I9M1D3M1D18M1D9M1I11M2I6M1D23M4I1M1I22M1D3M1D11M2I1M1I7M1I4M1I18M1D6M1D5M2I5M1D66M2D3M1I8M1D13M1D8M1D3M2I4M1I20M1D5M2D22M1D6M8D14M1D6M1I8M2I5M9I7M2D4M1I11M1D20M2I2M1D33M8D10M2D7M1D18M4D5M1I4M4I1M1I33M3D10M1I20M2I8M1I9M1D10M1I7M1D8M1I6M2D66M1D3M2D2M1D24M1I63M1D14M8D7M1D13M1I31M1D16M4I41M1I3M1I4M23D9M1I2M1I8M1D1M1D12M1D2M1D3M1I33M1D24M2D3M1D4M1D12M122I6M4I2M1I13M1D3M1I35M1D4M1D13M1I32M1I6M1D5M1D5M1I12M1I8M1I48M1D2M1I19M1I9M1D24M1I13M1I8M1D5M7D5M2I10M1D11M3D15M1D6M2D4M1D18M1I14M1I3M1I1M2I17M1I12M4I15M1D3M1I31M1I1M1I1M1I1M1I12M5D2M1I31M2D18M1I5M20I10M1D20M3I11M1D14M1D1M9D4M4D2M4D2M3D4M1I10M1I50M1D14M1D11M8D11M2I9M1D20M3D5M1D27M1I5M3D9M2D9M3I34M1D21M1I15M1D9M1D2M1D2M1D8M1D26M3I4M1I3M1D2M1D25M1D1M1D14M6D45M2D21M1D17M2I23M1I6M2D8M2I20M1D24M1I9M1D1M2I6M1I3M1I9M8D4M2D30M2I8M1I7M1D50M1D3M3D26M3I17M1I17M1I5M1I8M1D29M2I2M1D3M1D6M1I11M3D20M3D19M1D17M2D33M1I35M2I7M2I3M18I1M3I10M5I11M1I8M1I6M1D9M1D4M2I5M1I13M1I22M1I16M14D22M1I3M1D19M1I53M1D13M1D20M8D8M1D6M6I28M3I28M9I23M5I26M1D6M1I5M1I24M1D5M2D13M1D2M4D2M1D4M4D8M1D14M1D12M1D28M1D18M4D10M2I8M1D62M1D14M2D5M1D18M1I1M3D4M1D13M1I4M2D3M1I8M4I2M8I71M1D8M4D23M1D15M5I13M1I6M1I8M7D16M2D13M2I27M1I46M1D20M2I6M1D9M1I4M1D7M1I6M1D2M6D11M4I25M1D22M1I14M2I20M1I30M3D7M3I4M1D22M1I4M1I10M1I20M1D21M3D3M1D8M1I14M1D10M2D45M1I14M1I17M1I27M2I3M1D2M2D4M1I13M1I5M4D6M2D11M1D11M4D6M1D15M1D8M1D6M9D1M1D19M1D4M1D8M2I9M1D7M1I33M1I19M1I3M1I35M3I4M1I6M2I16M3I1M1I30M26I28M1I7M2D12M2I10M1D7M1I16M1I4M1D18M1D33M1D31M1D7M1D12M1I7M1I16M5D3M1D4M1I4M1I28M8I12M1I4M1I7M3I11M1I15M1I12M1D12M3D6M2I4M1I16M1D11M1I5M1I2M2D22M4I14M2D19M1I7M3D17M1D22M5I6M1I14M2I1M1I12M1D11M10D16M1I21M1I24M5I17M1I48M1I3M1I4M1I12M1I13M4I9M1D22M1D21M1D12M1I11M3I2M1I9M1D10M1I4M1D4M1I18M1D3M1I18M2I4M1D21M4I5M3D3M1I21M1D33M1I19M1D38M2D27M1D7M1D15M2D8M5I2M1I15M1D7M2D2M1D11M1I24M1D4M1I14M1D51M1I47M1I3M4I4M3I3M1D3M1I13M1I3M1D13M1D10M3D34M1I3M1D17M1I5M1D8M1I28M1D13M2D2M1D16M1I21M2D22M5D8M1D3M1D9M1I12M2I11M1D7M1D2M2I10M3D26M4I12M1I3M1I12M7D12M1D5M1I5M8I5M1I8M1D31M1I3M1I6M1D12M2I4M1I24M2D10M1D17M1I1M3I11M1I8M2I16M1I18M2I3M6I2M1I6M24I10M2D14M1D11M1D4M1I10M1D34M4D14M1I21M1I6M43I8M4I2M1I12M1I7M5I4M2D15M1I39M1I6M1D9M3I1M3I2M2I4M4I2M3I1M1I2M1I10M1D16M3I17M1D1M1D28M1I10M1I11M1I28M1I11M2D17M1D14M1D7M2I6M1I4M7I3M7I10M1D6M1D57M2I4M1I5M1I18M2D50M5D38M1I6M1I15M1I5M1D58M4D28M1D15M1I14M3D4M2I4M1D11M4I4M1I44M1D25M1D8M2I12M1D7M1I31M1I9M26D5M1D19M1I1M1I9M1I5M1I7M34D1M1D38M1D1M1D21M1I4M11I29M1I11M1I7M3D19M2D36M1I12M1D21M1D2M7D23M2D19M1D6M1D16M2D2M3I10M1I11M10D5M1D15M2I18M1D17M1D7M2I6M2D6M1I27M1D17M1D23M5D29M4I3M1D41M1I33M1I9M1I11M6D25M1I17M3I6M1D8M1D14M1I13M1I12M1D16M1D12M1D3M1I12M1D28M1I32M1I15M1D32M6D2M2D8M1I6M1I23M22D30M1D9M10I58M3D7M1I12M1D10M6D31M1I14M1D38M1D13M3I14M1I23M1D6M1D10M3D22M1D10M1D8M5D67M1D13M4I3M5I6M1D4M1D8M3I8M3D2M1D11M1I11M1D4M2D1M1D2M1D5M3D9M2I1M1I4M1I6M2I5M1I5M1D8M4I8M1D7M2D3M3I15M6I1M1I9M1I4M1I6M1I36M1I7M1I18M1D5M1I3M2D20M1I13M4D7M5D2M2D43M1D5M1I12M1D7M1I31M1D13M1I13M1D6M1I1M1I4M3I7M1I31M2I26M1D7M1D8M1I7M1D17M1I18M1D6M1I4M7I13M1D6M1I7M1D31M1I5M1D15M1I20M1D20M1D26M3D2M3D1M9D5M1D24M2I25M1I14M1I5M3I2M1D7M1D3M1D19M1D17M1D16M2D5M5I8M1D15M1D3M2D5M5D15M1I13M3I7M1I9M5D10M2I5M1D10M2D1M1D2M1D9M8D2M1I5M1D6M6I7M1D13M3D7M1D3M1I15M2I18M1I3M1I2M1I5M1I5M2D9M1D1M1D27M1D11M1I16M8D1M2D8M1D15M1D6M1D10M1I24M1I3M1I19M1D12M1D24M1I8M1I2M1I2M1D6M1I31M2D5M5I16M5D5M1D6M3I11M14I12M3D29M1D12M1D5M23D2M1D4M4D6M1I41M2D21M1I17M1I5M1I25M3D18M1I6M1I5M1I42M1D3M1I31M1D3M1I14M1I21M1D8M3I4M1D19M6I10M2D12M7D32M8D2M1I18M2I31M1I15M1D21M1D6M1D3M1D39M2D1M1I10M1I3M1D36M12I45M1I7M1D4M1D1M3D7M1D3M1I5M1I6M1I14M1I14M1D18M1I1M1I6M1D1M2I1M1I4M2I8M1I27M5D20M12I11M1I9M1I29M3I26M2I4M2I3M1D6M37I1M1I4M5I3M1I3M6I3M4I16M1I27M2I3M1I2M2I60M4I5M4D8M21I26M1I16M1I3M1D8M1I22M1D8M10I3M2I3M3I13M36I4M1I40M1D6M1D5M1D7M2D7M1D13M2D2M1I8M2D6M1D9M1D3M1I4M4D3M1I5M1D11M1I4M4I23M1D21M1D17M1I37M2D10M1I36M1I8M1I1M1I9M1D6M1I1M5I1M7I3M2I2M10I2M2I12M1D27M2D1M1I16M1I18M1I25M1I29M1D12M2D18M1D2M3D3M7D13M1I30M3I2M2I18M1I4M2I36M1D19M1I19M1D6M1D4M3I20M2I13M1D61M1D12M3I1M1I6M2I4M2I3M1D7M1I34M1D9M1I5M5I9M3I11M1I4M1D4M1D3M4I2M3I1M8I22M1D10M1I12M1I57M1I25M1I58M4D26M1D2M1D2M1D7M2D43M1D3M1I6M1I9M2I20M1I5M41I5M1I30M1I32M1I12M2D9M4D17M2I44M1I2M1D29M14D1M1D17M1D8M1I27M4D14M1I9M1I4M1D6M1I12M5I26M3D2M1D2M1D18M +tctgA 50001 19011 26774 + ctgA 49186 18755 26306 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1D43M1I4M7I2M7I13M2D3M1D7M1D19M1I5M1I32M1I5M2D63M4I20M5I50M2D12M1D16M3I8M1D19M2I38M1I28M7D2M1D5M4D1M1D3M2D2M1I25M1D10M1I2M1I19M1D5M1I32M1D8M5I4M8I7M1I1M1I26M2I16M2D6M7I14M4D2M1D3M2D4M1I32M6D8M1I12M1I10M1I24M4I2M1I43M1I22M1D11M1D30M2I31M1I19M1I2M1I10M3D48M1D26M4I11M1I4M1I11M2I4M1I18M7D8M1D10M1D2M1I61M1I4M1D18M1I13M3I3M2I5M8I47M1D30M3I6M1D44M2I14M1D40M9I1M2I24M1I16M39D5M1D38M3D22M4I35M1D19M1D19M1D26M1I4M1D10M4I39M1D10M2D10M1D10M1D3M1I1M5I16M1D13M1I11M1I25M1I21M8D22M4I11M1I9M5I17M1I73M1D36M6I4M1I19M1D52M1D15M24D1M1D2M2D15M1D2M6D2M1D28M1I41M4D46M4D14M1I7M21I4M1D20M1I2M1D15M1D3M1D29M1D20M5I37M2D9M1D16M1D24M1D22M3I1M2I47M1D6M1I6M1D19M1I18M1D1M1D18M1D3M1D2M1D5M35I8M1I13M1D7M4D31M1D6M1I83M2I1M1D26M1D15M1D3M2I5M2I12M1I42M1D1M2D12M4I2M4I6M26I8M3I1M1I2M4I9M1I30M2I3M2I28M1D4M1D41M1I18M1D41M1D12M1D19M4D35M5D31M4D31M1D3M1I11M1D25M2I2M3I30M1I5M1D8M1I22M1D7M1I32M1D29M6I1M7I10M3I1M1I5M1D15M7D18M2D10M4I42M1I15M1D13M1I5M1I2M2D38M1D9M2D7M3D20M1I15M1D5M1I3M1I8M2D12M1I10M1I3M1I6M1I30M1I94M1D18M1D4M5I3M1I29M1I2M1I2M1I5M1D4M1I13M1D9M6D10M1I6M1I12M2D5M2I1M1I11M2I1M1I10M5I9M8I17M1I35M1I4M1D16M5D1M1D9M8D21M23D2M1D38M1I1M1I8M1I27M1D42M1D9M2I1M1D5M1I23M2D5M1D28M1I25M1I24M1I5M1D21M1D4M4D7M1I7M1D25M21D5M1D4M1D42M2I26M1I7M1D10M1D1M1D19M10I4M1I14M1I42M8I28M3I2M3I13M1D17M1I11M1D22M1D19M1D1M4D9M2I2M1D14M8D9M2I9M1D13M2I11M3I2M2D5M1D3M1D6M3I10M1D9M1I21M1D5M2D9M2D10M1I3M2D9M1D21M3I23M1D8M1D3M1D26M1D33M8I7M1D9M10I10M1D7M1I52M10I13M1D6M2I39M1I6M1I26M1D4M1I4M32I24M1I21M2I1M1I7M1I1M1I15M1I5M1I24M2D1M1D6M1I2M1I19M35I41M3D6M3D15M2I3M1I14M2D9M3I19M2I26M1I30M1D6M3I32M1D5M1I36M1I8M1I2M2I2M1I6M3D3M7D2M2D17M1I12M1I6M1D40M3I28M2D2M2D21M1I4M1D9M1D4M1D31M2D11M1I31M1I3M2I3M5I7M4I7M1I6M1I6M8I4M1D1M2I19M3D14M1I7M1I12M1D4M3D2M4D11M1D8M1D17M1I11M1I3M1I15M17D8M3I42M1D17M1I25M1D15M1D11M2D7M1I23M4D14M2I20M1D9M3I2M1I17M1I34M1D3M1D4M1I13M1D2M1D6M1D6M1I12M2I1M4I2M4I4M1D16M36I6M1I32M1I27M1I4M1I2M1D11M20I16M3I4M1D16M1I27M1I14M1I21M2D14M1I10M3I5M2I3M3I2M1I1M4I5M1I2M3I7M1I7M1D9M1I5M1I4M1I16M1I9M9I1M1I2M1I4M1I3M2D6M2I5M1D22M1I3M1D8M1I8M3I43M1D4M1I31M1D17M3D8M2D12M6D13M1D16M1I11M2I4M1D5M2I2M2I2M1D29M1D12M2I13M1D7M14I1M1I3M5I10M1I12M5D19M1D10M1D3M7D2M14D3M9D13M2D5M1D13M1I4M1I18M1D3M1I28M1D5M4I35M1I23M3I11M2D8M1I17M1D9M1D23M4I4M1I9M1D3M1D26M1D5M3D1M1D14M1I42M1D5M16D15M1I28M4I5M1D5M1I4M1I11M2I5M1D4M1D3M1D9M +tctgA 50001 16650 18559 + ctgA 49186 16409 18309 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5I3M3D13M1I9M1I5M2D5M8I39M1D36M2I33M1I22M1I10M2D8M1I5M1I16M6I5M2I11M2D12M1D7M1D3M3D3M1I3M1D13M1I21M1D4M2D1M1I14M1D12M1D2M1I12M6D5M1I19M10I28M1I26M1I41M1D11M1I9M1D9M4I15M6I13M1I25M5I3M1D27M2I7M1I17M7I18M2D16M1D12M1I22M2D5M12I5M7I2M1I13M1D13M2I2M1D15M1D19M1I17M1D58M1D8M11D8M1D6M2I6M1I2M1D8M2I4M15I6M1I1M2D8M3D25M1I21M1D43M1D6M1I12M2D10M14D5M1I19M3I4M1D95M2I16M2D9M3D8M1D3M1I3M4I1M1I5M3I14M1D7M1D6M2D40M1D1M2D5M1I5M1D11M7I25M10D16M1D2M2I21M1I4M1I4M1I15M2I3M1D13M13D28M2I5M1D33M1D11M1I36M1I19M1D22M1I18M1D1M1D12M1I6M9I11M2I4M1D5M10I16M5D21M1I5M1D11M37D13M3D4M1I9M1D3M1D12M1D58M1I14M +tctgA 50001 0 1859 + ctgA 49186 3 1851 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1D16M1D5M3D33M1I14M3I7M1I25M2D5M2D4M1I17M3I11M1I5M3I3M1D15M3D1M2D6M1D2M6I6M2I24M1D3M2I29M1D2M1D3M1D6M1D10M2I8M19I33M1I23M2I9M1I11M1D6M1I5M1I28M1D13M1I5M1D2M1D49M5I6M2D21M1I1M2I2M2I4M4D4M1D5M1D3M1I2M1D4M37I17M2D16M6I5M3I3M6I16M5D4M8D5M4D1M1D52M2I2M1D5M28I33M1I17M2D2M2I31M42D5M1D9M1D7M1I8M1D40M1D39M1D2M1I3M2D11M2D6M2D10M1I14M1D12M1D16M1I6M3D6M2D4M1D1M1D27M1D3M10D3M2I11M3I3M1D35M1D1M3I3M2I19M3I9M4I23M1D3M1D28M1D52M1D28M1I20M2D66M1D3M2D7M1I7M2I9M1I11M1I11M1I7M1D3M1D30M1I11M1I15M2D7M3I3M1D12M6D35M1I4M1I17M1I15M1D5M1I4M1D5M1D3M5I10M1I2M1I8M7D13M5D9M1I4M1D45M6D4M1D19M2I16M1I1M2D23M7D11M1D19M1I13M +tctgA 50001 18559 19001 - ctgA 49186 18309 18754 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:17M2D15M1D18M1I27M1D10M2D9M1D26M7I19M1D7M2I52M1I33M1I56M1D7M1D18M1I11M8D14M1I2M2I13M1I20M1I30M2D15M1D5M +tctgA 50001 1859 2192 - ctgA 49186 1860 2214 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:42M1I6M1D2M1D35M1D2M4D16M2D39M15D6M1D2M1D9M1D30M1D8M1I2M2I7M1D10M1D43M2D20M5I12M1D9M1I3M1I4M1I14M +" +`; diff --git a/products/jbrowse-cli/src/commands/process-paf.test.ts b/products/jbrowse-cli/src/commands/process-paf.test.ts index a1e91f4d78..dac2e56686 100644 --- a/products/jbrowse-cli/src/commands/process-paf.test.ts +++ b/products/jbrowse-cli/src/commands/process-paf.test.ts @@ -8,12 +8,14 @@ import { setup } from '../testUtil' const base = path.join(__dirname, '..', '..', 'test', 'data') const simplePaf = path.join(base, 'volvox_inv_indels.paf') -const testConfig = path.join(base, 'test_config.json') describe('process-paf', () => { - setup - .command(['process-paf', simplePaf]) - .it('fails if load flag isnt passed in for a localFile', ctx => { - console.log(ctx.stdoutWrite) - }) + setup.command(['process-paf', simplePaf]).it('processes volvox paf', ctx => { + let res = '' + for (const obj of ctx.stdoutWrite.mock.calls) { + res += obj[0] + } + expect(res.split('\n').length).toMatchSnapshot() + expect(res).toMatchSnapshot() + }) }) diff --git a/products/jbrowse-cli/src/commands/process-paf.ts b/products/jbrowse-cli/src/commands/process-paf.ts index d4ebe8b8af..154011a82f 100644 --- a/products/jbrowse-cli/src/commands/process-paf.ts +++ b/products/jbrowse-cli/src/commands/process-paf.ts @@ -62,8 +62,7 @@ export default class ProcessPAF extends JBrowseCommand { const rl1 = getReadline(filename) for await (const line of rl1) { - // eslint-disable-next-line no-console - console.log(`q${line}`) + this.log(`q${line}`) } rl1.close() @@ -81,8 +80,7 @@ export default class ProcessPAF extends JBrowseCommand { }` } - // eslint-disable-next-line no-console - console.log( + this.log( [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t'), ) } From d873d7b2421015e0e6d9179610fb46ab62aa6e80 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 4 Dec 2023 12:38:12 -0500 Subject: [PATCH 04/12] Updates --- .../PairwiseIndexedPAFAdapter.ts | 14 ++++---- .../PairwiseIndexedPAFAdapter/configSchema.ts | 9 ++++-- products/jbrowse-cli/README.md | 24 ++++++++++++++ products/jbrowse-cli/createppaf.sh | 4 +++ .../__snapshots__/process-paf.test.ts.snap | 32 +++++++++---------- .../jbrowse-cli/src/commands/add-track.ts | 15 ++++++++- .../src/commands/process-paf.test.ts | 18 ++++++----- .../jbrowse-cli/src/commands/process-paf.ts | 27 +++++++--------- test_data/hs1_vs_mm39/config.json | 27 ++++++++-------- 9 files changed, 105 insertions(+), 65 deletions(-) create mode 100755 products/jbrowse-cli/createppaf.sh diff --git a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts index 47d97bdcbe..7d2f23262f 100644 --- a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts +++ b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts @@ -22,7 +22,7 @@ interface PAFOptions extends BaseOptions { export default class PAFAdapter extends BaseFeatureDataAdapter { public static capabilities = ['getFeatures', 'getRefNames'] - protected paf: TabixIndexedFile + protected ppaf: TabixIndexedFile public constructor( config: AnyConfigurationModel, @@ -30,20 +30,20 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { pluginManager?: PluginManager, ) { super(config, getSubAdapter, pluginManager) - const pafGzLoc = this.getConf('pafGzLocation') as FileLocation + const ppafGzLoc = this.getConf('ppafGzLocation') as FileLocation const type = this.getConf(['index', 'indexType']) const loc = this.getConf(['index', 'location']) const pm = this.pluginManager - this.paf = new TabixIndexedFile({ - filehandle: openLocation(pafGzLoc, pm), + this.ppaf = new TabixIndexedFile({ + filehandle: openLocation(ppafGzLoc, pm), csiFilehandle: type === 'CSI' ? openLocation(loc, pm) : undefined, tbiFilehandle: type !== 'CSI' ? openLocation(loc, pm) : undefined, chunkCacheSize: 50 * 2 ** 20, }) } async getHeader() { - return this.paf.getHeader() + return this.ppaf.getHeader() } getAssemblyNames(): string[] { @@ -68,7 +68,7 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { } const idx = this.getAssemblyNames().indexOf(r1) - const names = await this.paf.getReferenceSequenceNames(opts) + const names = await this.ppaf.getReferenceSequenceNames(opts) if (idx === 0) { return names.filter(n => n.startsWith('q')).map(n => n.slice(1)) } else if (idx === 1) { @@ -86,7 +86,7 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { const flip = index === 0 const letter = flip ? 't' : 'q' - await this.paf.getLines(letter + query.refName, query.start, query.end, { + await this.ppaf.getLines(letter + query.refName, query.start, query.end, { lineCallback: (line, fileOffset) => { const r = parsePAFLine(line) const refName = r.qname.slice(1) diff --git a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts index a585dc67cd..20b6cb9e38 100644 --- a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts +++ b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts @@ -37,10 +37,13 @@ const PairwiseIndexedPAFAdapter = ConfigurationSchema( /** * #slot */ - pafGzLocation: { + ppafGzLocation: { type: 'fileLocation', - description: 'location of pairwise tabix indexed PAF', - defaultValue: { uri: '/path/to/data/file.paf.gz' }, + description: 'location of pairwise tabix indexed PAF (ppaf)', + defaultValue: { + uri: '/path/to/data/file.ppaf.gz', + locationType: 'UriLocation', + }, }, /** * #slot diff --git a/products/jbrowse-cli/README.md b/products/jbrowse-cli/README.md index 6d9edd3654..52e64aad18 100644 --- a/products/jbrowse-cli/README.md +++ b/products/jbrowse-cli/README.md @@ -54,6 +54,7 @@ It is likely preferable in most cases to install the tools globally with - [`jbrowse admin-server`](#jbrowse-admin-server) - [`jbrowse create LOCALPATH`](#jbrowse-create-localpath) - [`jbrowse help [COMMANDS]`](#jbrowse-help-commands) +- [`jbrowse process-paf TRACK`](#jbrowse-process-paf-track) - [`jbrowse remove-track TRACK`](#jbrowse-remove-track-track) - [`jbrowse set-default-session`](#jbrowse-set-default-session) - [`jbrowse sort-gff FILE`](#jbrowse-sort-gff-file) @@ -478,6 +479,29 @@ DESCRIPTION _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.20/src/commands/help.ts)_ +## `jbrowse process-paf TRACK` + +Pairwise index the PAF + +``` +USAGE + $ jbrowse process-paf TRACK + +ARGUMENTS + TRACK Track file or URL + +DESCRIPTION + Pairwise index the PAF + +EXAMPLES + # processes a local PAF file into our custom format PPAF, which pairwise indexes the PAF + + $ jbrowse process-paf file.paf > output.ppaf +``` + +_See code: +[src/commands/process-paf.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/process-paf.ts)_ + ## `jbrowse remove-track TRACK` Remove a track configuration from a JBrowse 2 configuration. Be aware that this diff --git a/products/jbrowse-cli/createppaf.sh b/products/jbrowse-cli/createppaf.sh new file mode 100755 index 0000000000..fed4f2765d --- /dev/null +++ b/products/jbrowse-cli/createppaf.sh @@ -0,0 +1,4 @@ +#!/bin/bash +# Usage: createppaf.sh input.paf out.ppaf +bin/dev process-paf $1 | sort -t$'\t' -k1,1 -k3,3n | bgzip > $2 +tabix -s1 -b3 -e4 $2 diff --git a/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap b/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap index 660db3ad5a..5c802aaca1 100644 --- a/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap +++ b/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap @@ -1,21 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`process-paf processes volvox paf 1`] = `15`; - -exports[`process-paf processes volvox paf 2`] = ` -"qctgA 49186 26805 49184 + ctgA 50001 27258 50001 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3D58M1I4M1I3M2D20M3I2M1D42M15D1M1D15M6D2M4D24M1D10M1D64M1D62M1I11M2D10M4D23M1I25M4I23M1I20M2D3M1I7M10I7M1I4M1I5M1I15M10I21M1D3M3I6M1D12M1I6M1D30M1I5M1I6M9D4M1D33M1D2M1D8M1D3M1I5M5I25M2I10M1I34M1I6M5D4M4D6M1D34M1D13M1I25M2D19M1I25M1D1M2I24M1I3M1I20M1D2M1I7M1I3M2I6M4I14M2D29M1D3M2D7M1D4M1D6M2D8M4I30M1I8M4D18M1I7M1D3M1D1M1D9M1D11M3D21M5I6M1D1M1D2M1I5M4I27M1I19M1D7M1D9M5I50M1D3M7D33M1D5M1D2M1D32M34D1M1D6M3I40M1D21M2I33M1I2M1I14M1D4M2D17M1I30M1D9M1I53M1D22M1I5M1I6M2D13M4I19M2D6M2I3M1I15M3D4M1I15M1I3M1D8M7I1M1I56M3D12M1D17M1D5M1D52M7D13M1D2M1D4M1I2M3D9M1D18M1I9M6D9M1I1M2D5M1I6M2D3M3D1M2D3M2D17M2D11M5D4M4D12M1D6M1D9M2D3M1I12M1I7M1I17M1I6M1I13M1I15M2I19M2D6M2I2M1I9M2D20M12I12M1D35M3D6M1I23M3D7M1I8M2D7M1I10M1I41M2I20M1D34M1I2M1I10M1I12M2D10M1D13M13D18M1I27M2D13M2I26M3D4M1D9M2I5M3D39M1D19M1D9M1I12M2D33M1D22M1I31M1I28M1D11M2I5M1D22M1D3M27D38M1I8M1D8M1I29M5D8M1I46M1I18M1D6M1D61M1D16M6D4M3D13M1D19M5D4M1D5M2D6M6D4M7D7M1D7M1D7M1I41M5I3M1I11M1D17M1I3M1I3M1I5M1D11M2I30M5I4M1I6M1D18M1D10M1D50M1I8M1I16M1D9M26D11M1I44M1D19M1I9M2D2M1I18M1D8M15I19M1D13M1I8M1I6M1I4M3I7M1D4M1D3M1I2M1I3M3D1M1D20M1I15M1D11M1D22M2I41M2D12M1I7M2D6M8D3M7D2M2D27M1D19M1D2M1D41M1I13M1D38M1D11M4D7M1I14M1D1M3D37M1D2M1D4M1D3M4D2M1D21M1D18M1I11M2D13M1I23M25I15M1I2M1I3M7I18M1I35M1D11M1I5M1I45M4D5M1D7M1D6M1D35M1I34M2I9M1D6M1I47M1I10M1I34M1I5M1D6M1I1M1I4M8I28M3D6M1I19M1D18M1I7M5D5M1D22M1D3M2I5M12D8M1I71M2I23M1I6M1D3M2D5M2I12M1D12M1I24M1D14M1I3M1D24M1D26M22D42M1D9M1I1M1I9M1D6M1D12M1I6M3D17M12D7M1I11M2I19M1D17M1D17M2I2M2I9M2D10M1D6M2D29M1D3M1D19M1I4M3I8M1I1M2I55M1I43M3I42M1I33M22I22M1D3M1D24M1I40M1D21M1D2M1I5M1D2M1D18M1D20M2D12M1I22M1I4M4I84M1I21M1I35M1D3M4D13M1I5M1I10M4I11M1D20M1D5M1D16M1I14M1D8M1I58M1I9M1I5M26I6M1D30M2I7M1I9M1D9M1I38M5I1M2I8M2I14M2D1M2D13M1D2M1I12M1D21M1D8M1D17M2I4M4I7M1I12M1I23M1D12M1I8M8D12M1I5M1D18M1I39M1I2M1D9M1I5M2D16M1D23M3D6M2I17M3D1M1D13M1I49M1D25M1I5M1I13M1I9M1D21M1D6M1I13M1I2M2D3M2D3M1D3M3D22M1I1M1I10M4I1M4I3M2I7M2D3M2I15M1I9M1I3M4D6M7D1M1D16M1I9M1D6M9D4M3D7M1D5M1I7M1D5M1D31M1D10M1I29M1D6M5D4M1I3M5D22M1I1M1I4M4D2M1I15M2I4M1I1M1I5M2D5M2D7M1D6M1D1M1D14M4D25M1D30M1I30M6D15M3I12M1I9M1I72M1I9M1D8M1D6M1I5M1D18M5I3M1D4M3I3M7I17M1D5M1D19M2I3M1I14M3I2M1I10M1I2M1I38M4I2M1D25M1D23M2I4M1I8M1I3M19I16M1D21M1I21M2I6M23I9M1I9M11I3M5I17M1I2M8I5M1I5M1D12M1D25M1D20M1D10M3I2M4D3M1I18M3I6M2D35M1D2M3I2M1D9M1I1M1I14M1D2M10D1M2D4M1I6M5D3M6D1M6D18M1D8M1I6M1I49M1D18M1I1M1I7M2D24M1D13M1D1M26D8M2D2M1I19M1D13M1I9M1I5M1I3M10D10M5I1M1I15M1D27M1I15M1I30M2D12M1D10M3D22M5D4M1D9M1I33M1D3M1D12M9I4M1D6M5I3M8I8M1I33M5I13M1D22M1D12M1I17M6I5M3D12M1I12M1D1M1D7M1I44M1D1M1D12M1I47M1D8M2D27M1D1M1D35M1D9M1I6M3D52M3I6M1I27M1I8M1I13M1D13M4I16M3I43M1I13M1D31M1D63M1D30M1I6M1D1M1D15M20D18M2D15M9D8M3D16M11D9M1D18M1I27M8I2M3I1M1I11M2D24M2D27M1D2M1D52M1I50M1I4M1D7M7D23M1I6M1D34M2I15M2D11M1I9M1D21M6D1M1D11M2I2M1I7M27D18M1I2M1D10M4D12M3D1M2D15M5D1M1D6M6D6M1D40M5I8M1I8M35I6M1I27M1D15M2I3M18I5M4I2M1I4M4I8M1I39M2I5M6D9M38D3M1I24M1D2M1D17M1D9M2D7M9I12M1I1M1I15M1I10M2D11M1D10M1D19M3I20M1D43M1D8M1I4M3I1M2I2M3I5M3D13M1I9M5I6M1D6M1I2M2D23M1I8M1I19M1D12M1I20M1D5M1I16M2I10M15I5M2D7M1I14M4D13M1D16M1I4M1D5M2D5M2D3M1I14M17I6M1I16M6I13M5D1M1D6M1I4M1D2M2I17M1D33M1I4M1D16M1I44M1I19M1I19M1D10M13D13M1I5M2D12M1D4M1I10M1D15M1D5M1I7M1I8M1D30M1D3M1D6M2I30M1D33M2I7M4I8M1D2M1D16M1D20M1I3M1D35M1I5M1D10M4D5M1D3M1D19M2I5M2I8M5I49M1D14M1I15M1I11M1I4M3D5M1D50M1I11M7I2M4I9M1I18M2I11M1I5M2I13M5I3M2D19M2I11M2I47M4I1M2I7M1I26M1D4M1D6M1D6M1I24M2I5M3D9M1D13M1I9M1I22M1D3M1I12M1I4M4D32M1I2M2I15M3D3M1D10M1D7M1D11M1I4M1D3M7I2M1D11M1I4M1I1M2I9M8I15M1I9M1I44M1D4M2D10M1D15M1I23M5I4M2D7M4I14M1D10M2I35M1I5M3D25M1D17M1I18M5D5M2I15M2D21M1D1M1D55M7I11M1D5M1I13M2I13M1I12M1D18M1I9M3I29M1I5M1D11M2I11M1I4M4I13M1D10M3I83M1D24M1D6M2D4M1I5M1D6M1D34M1D4M2D11M1D4M2D47M10I7M1D40M3D11M2I39M1I19M1I2M1I3M1D22M2I17M2I4M1D2M1I7M1I27M1I7M1I17M1I7M1I15M1D8M1I3M1I1M1I44M1I1M3D4M1I2M1I19M1D15M1I6M4D28M1I8M1D13M1I4M1D11M1D19M2I69M1I43M4D24M1D25M2I13M2I16M1D4M1D8M1D42M1I11M1I7M3D1M2D1M5D14M2D2M1I28M1D5M1I25M1D46M7I8M2I30M1I4M1I19M1D22M1I30M1D10M5I7M1I5M1I3M2I12M11D3M1I7M8D2M6D2M3D7M2D4M1I1M2D5M1D18M2I1M1I1M1I4M1I10M3I18M1I27M2D5M1I6M1D7M2I7M22D30M1D31M1D19M2I46M1I3M1I27M6D13M1I37M1I12M2D14M28I3M1I3M1D18M6I25M1I8M1D9M2D17M1D2M4I10M1I44M1I6M1D14M3I10M2D7M1D10M2I9M15I18M1D13M1I15M1D25M1D13M1I1M1I18M5I17M1D16M1D16M1I29M1I24M1D17M1D15M2I10M1I11M3D3M1I2M1D50M11D2M2D2M1D1M2D1M1D9M1D18M2I41M1I26M1I25M1I22M4D6M2D2M13D23M1D11M1D25M1D7M3I9M1I4M1D16M1I4M1D2M1I6M1I20M1D37M2D42M1I3M1D47M1D11M1D3M1D14M1D7M1D19M7D11M3D10M2I7M1I11M1D48M1I2M1I10M4I2M1I18M1D67M2D4M4D6M1D17M1I6M2I23M1D9M1D1M3D8M1D14M2D2M3I6M4D9M1D5M5D22M1D6M2D25M8D1M2D4M1D2M4D31M2I7M1I11M11D16M2D11M2D14M1D8M2D3M1I21M1I6M2I1M1I6M1D27M1D1M1D33M1D21M2D1M1D8M1D5M2D6M1D8M1I34M1D3M4I7M1I2M1I16M1I1M1I46M1D12M1I7M1I31M6I10M1I1M1I1M1I5M11I10M1I19M1D22M1D10M1D11M1I8M1I24M1D6M2I7M3D2M1D17M1I24M1I2M4D19M1I14M2D17M1D9M3I16M1D10M1D25M1I26M11D3M2D5M1D2M8D30M2I15M2I13M1D6M5D5M3D17M2D17M2I18M2D11M1I11M2I3M1D18M1D9M1I8M1I16M1D2M1D13M3D1M1D10M1D11M1I8M3D3M1I26M1D4M2D8M1D3M2D4M1I4M2I11M1D10M1D4M1D8M6D1M1D5M7D2M1D5M8D3M2D13M4I1M1I17M1D21M1D22M1I10M1D41M1I2M1I2M1I5M1D41M1D29M1I5M1D5M1I8M1I15M1D9M1D22M1D29M4D7M1I9M1D8M1I32M2D15M1I15M1I23M1I7M10I19M1D38M1I7M1I4M1I16M28D29M7D28M1D52M2I6M1I1M1I1M1I3M1I25M2D15M1I9M5D6M1D12M1I6M1I4M2I11M5D1M2D1M4D15M3I11M3D4M1I8M1D40M6I12M1D17M1D9M5D1M1D2M1D25M1I23M2D9M1D11M1I3M2D28M1I12M1I17M15I10M1D9M1I2M1I8M4I11M1D9M1I6M1I8M1I40M2D3M2I8M1D11M1D16M1D6M1I7M1I34M2I27M1I5M1D3M2D39M1I30M1D22M1I10M3D61M2I19M2I6M1D7M1I23M1I4M1D3M1D6M2I12M2D11M14I13M1D6M4I9M2D11M1I17M1I4M1D8M1D3M1I4M1I35M1D47M1D17M1I7M1I2M1I25M1I13M1D3M1D18M1I13M2D10M2I19M2I6M1D6M1I7M1I11M1I6M3D2M1D11M1I6M1D17M12I1M1I2M1I9M1D1M1D7M7I4M1I9M8I12M1I37M1I25M4I1M1D7M3D13M1I4M1D2M1D43M1D11M1I4M1I6M1D31M2I38M2D12M2D6M2I39M1I19M6I1M1I12M1D16M1D50M1D40M1D24M1I4M2D5M1D5M2I13M2I4M7D2M2D2M7D1M3D15M1I8M1D10M10D41M1I34M1I10M1D11M1I3M3D7M3I23M9D47M2D19M1I36M42D2M1I3M1D3M1D7M1D5M3D6M1D16M1D13M1D39M14I7M1I16M1D19M1D14M1D8M1I34M2I3M1D6M1D12M2I3M1D10M2I1M1D6M39D2M2D16M2I3M2I3M1D23M1D14M3D3M2D6M3D2M1D1M1D10M1D25M1I17M2I33M2D2M1I7M1I36M2D13M1I9M1D6M3I11M1I2M1D8M1D21M1I34M1D12M2I3M1I8M4I11M1D59M5D18M2I11M1I4M7D26M2I77M5D11M1I16M2D6M5I19M1D13M1D1M2D23M1D6M2I11M1D35M1D10M1I14M1D30M1D12M38D2M1D3M1I2M1I5M2D7M1I1M2I3M1I57M1I31M1I9M1I63M1I40M2I3M1I25M1I4M2I21M15I10M1I30M2D3M2D6M2D15M1I6M1I48M2I27M1D6M1D77M2D3M1I22M3D20M1I14M1I29M1I16M1D20M1D5M30D25M6D7M1I17M1I5M14D16M1I3M1D15M1D41M1D13M1I13M1D5M2D19M2I6M1D29M1I2M2D16M1D6M1D8M1I4M9I13M3D10M1I16M4D27M1D1M3D6M2I9M5I38M1D3M2D1M1D4M2I5M1I24M1D18M1I3M5D2M3D3M1I3M1D1M1D5M1D4M1D11M5D3M8D6M1I3M2D5M1D11M1I19M1I1M1I15M1I3M1D15M1D5M3D1M1D12M1D23M1D1M1D6M4I2M4I9M1I17M1I4M1D18M3I7M1I51M11D11M1D12M3D17M1D14M2I12M4I10M1D26M1I45M1I3M1D15M2I11M1I28M1I4M2D9M1I31M3I15M1I11M1D3M4I10M1I21M1D31M8I23M4I24M1D13M5I19M2D1M1D5M10D10M1I23M1I20M2I32M1D5M1D23M1D9M1I14M1I22M1D6M1D19M3I14M1I18M1D10M1D7M1D14M1D46M1D7M21I5M1D17M3D2M4D7M1D16M1I2M1I14M1I3M1I4M1I16M2I42M1I7M1I17M5D1M1D29M13D24M1I3M8I5M12I9M1I23M1D8M -qctgA 49186 2214 15925 + ctgA 50001 2212 16198 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1I4M2I21M1I10M1I14M1I5M1D29M2D9M1I15M1I27M1I12M1D5M1I11M1D7M2I4M2D9M1D4M6D32M1D13M1I55M1I8M1I1M1I12M1I2M1D22M2I56M1D11M1I5M5I17M3I3M1I13M1D16M1I50M1I2M1I10M1D1M1D42M1D2M2D33M22I3M1I2M1I6M1D8M2D5M1D50M1D6M3D6M2D12M3I13M1D9M5D1M1D10M1I3M1D5M1I3M1I4M1I24M1I5M2D30M1D3M1I15M1D9M1I3M1I18M1I9M1D11M2D6M1I23M4D1M1D22M1I3M1I11M2D1M1D7M1D4M1D18M1I6M1I5M2D5M1I66M2I3M1D8M1I13M1I8M1I3M2D4M1D20M1I5M2I22M1I6M8I14M1I6M1D8M2D5M9D7M2I4M1D11M1I20M2D2M1I33M8I10M2I7M1I18M4I5M1D4M4D1M1D33M3I10M1D20M2D8M1D9M1I10M1D7M1I8M1D6M2I66M1I3M2I2M1I24M1D63M1I14M8I7M1I13M1D31M1I16M4D41M1D3M1D4M23I9M1D2M1D8M1I1M1I12M1I2M1I3M1D33M1I24M2I3M1I4M1I12M122D6M4D2M1D13M1I3M1D35M1I4M1I13M1D32M1D6M1I5M1I5M1D12M1D8M1D48M1I2M1D19M1D9M1I24M1D13M1D8M1I5M7I5M2D10M1I11M3I15M1I6M2I4M1I18M1D14M1D3M1D1M2D17M1D12M4D15M1I3M1D31M1D1M1D1M1D1M1D12M5I2M1D31M2I18M1D5M20D10M1I20M3D11M1I14M1I1M9I4M4I2M4I2M3I4M1D10M1D50M1I14M1I11M8I11M2D9M1I20M3I5M1I27M1D5M3I9M2I9M3D34M1I21M1D15M1I9M1I2M1I2M1I8M1I26M3D4M1D3M1I2M1I25M1I1M1I14M6I45M2I21M1I17M2D23M1D6M2I8M2D20M1I24M1D9M1I1M2D6M1D3M1D9M8I4M2I30M2D8M1D7M1I50M1I3M3I26M3D17M1D17M1D5M1D8M1I29M2D2M1I3M1I6M1D11M3I20M3I19M1I17M2I33M1D35M2D7M2D3M18D1M3D10M5D11M1D8M1D6M1I9M1I4M2D5M1D13M1D22M1D16M14I22M1D3M1I19M1D53M1I13M1I20M8I8M1I6M6D28M3D28M9D23M5D26M1I6M1D5M1D24M1I5M2I13M1I2M4I2M1I4M4I8M1I14M1I12M1I28M1I18M4I10M2D8M1I62M1I14M2I5M1I18M1D1M3I4M1I13M1D4M2I3M1D8M4D2M8D71M1I8M4I23M1I15M5D13M1D6M1D8M7I16M2I13M2D27M1D46M1I20M2D6M1I9M1D4M1I7M1D6M1I2M6I11M4D25M1I22M1D14M2D20M1D30M3I7M3D4M1I22M1D4M1D10M1D20M1I21M3I3M1I8M1D14M1I10M2I45M1D14M1D17M1D27M2D3M1I2M2I4M1D13M1D5M4I6M2I11M1I11M4I6M1I15M1I8M1I6M9I1M1I19M1I4M1I8M2D9M1I7M1D33M1D19M1D3M1D35M3D4M1D6M2D16M3D1M1D30M26D28M1D7M2I12M2D10M1I7M1D16M1D4M1I18M1I33M1I31M1I7M1I12M1D7M1D16M5I3M1I4M1D4M1D28M8D12M1D4M1D7M3D11M1D15M1D12M1I12M3I6M2D4M1D16M1I11M1D5M1D2M2I22M4D14M2I19M1D7M3I17M1I22M5D6M1D14M2D1M1D12M1I11M10I16M1D21M1D24M5D17M1D48M1D3M1D4M1D12M1D13M4D9M1I22M1I21M1I12M1D11M3D2M1D9M1I10M1D4M1I4M1D18M1I3M1D18M2D4M1I21M4D5M3I3M1D21M1I33M1D19M1I38M2I27M1I7M1I15M2I8M5D2M1D15M1I7M2I2M1I11M1D24M1I4M1D14M1I51M1D47M1D3M4D4M3D3M1I3M1D13M1D3M1I13M1I10M3I34M1D3M1I17M1D5M1I8M1D28M1I13M2I2M1I16M1D21M2I22M5I8M1I3M1I9M1D12M2D11M1I7M1I2M2D10M3I26M4D12M1D3M1D12M7I12M1I5M1D5M8D5M1D8M1I31M1D3M1D6M1I12M2D4M1D24M2I10M1I17M1D1M3D11M1D8M2D16M1D18M2D3M6D2M1D6M24D10M2I14M1I11M1I4M1D10M1I34M4I14M1D21M1D6M43D8M4D2M1D12M1D7M5D4M2I15M1D39M1D6M1I9M3D1M3D2M2D4M4D2M3D1M1D2M1D10M1I16M3D17M1I1M1I28M1D10M1D11M1D28M1D11M2I17M1I14M1I7M2D6M1D4M7D3M7D10M1I6M1I57M2D4M1D5M1D18M2I50M5I38M1D6M1D15M1D5M1I58M4I28M1I15M1D14M3I4M2D4M1I11M4D4M1D44M1I25M1I8M2D12M1I7M1D31M1D9M26I5M1I19M1D1M1D9M1D5M1D7M34I1M1I38M1I1M1I21M1D4M11D29M1D11M1D7M3I19M2I36M1D12M1I21M1I2M7I23M2I19M1I6M1I16M2I2M3D10M1D11M10I5M1I15M2D18M1I17M1I7M2D6M2I6M1D27M1I17M1I23M5I29M4D3M1I41M1D33M1D9M1D11M6I25M1D17M3D6M1I8M1I14M1D13M1D12M1I16M1I12M1I3M1D12M1I28M1D32M1D15M1I32M6I2M2I8M1D6M1D23M22I30M1I9M10D58M3I7M1D12M1I10M6I31M1D14M1I38M1I13M3D14M1D23M1I6M1I10M3I22M1I10M1I8M5I67M1I13M4D3M5D6M1I4M1I8M3D8M3I2M1I11M1D11M1I4M2I1M1I2M1I5M3I9M2D1M1D4M1D6M2D5M1D5M1I8M4D8M1I7M2I3M3D15M6D1M1D9M1D4M1D6M1D36M1D7M1D18M1I5M1D3M2I20M1D13M4I7M5I2M2I43M1I5M1D12M1I7M1D31M1I13M1D13M1I6M1D1M1D4M3D7M1D31M2D26M1I7M1I8M1D7M1I17M1D18M1I6M1D4M7D13M1I6M1D7M1I31M1D5M1I15M1D20M1I20M1I26M3I2M3I1M9I5M1I24M2D25M1D14M1D5M3D2M1I7M1I3M1I19M1I17M1I16M2I5M5D8M1I15M1I3M2I5M5I15M1D13M3D7M1D9M5I10M2D5M1I10M2I1M1I2M1I9M8I2M1D5M1I6M6D7M1I13M3I7M1I3M1D15M2D18M1D3M1D2M1D5M1D5M2I9M1I1M1I27M1I11M1D16M8I1M2I8M1I15M1I6M1I10M1D24M1D3M1D19M1I12M1I24M1D8M1D2M1D2M1I6M1D31M2I5M5D16M5I5M1I6M3D11M14D12M3I29M1I12M1I5M23I2M1I4M4I6M1D41M2I21M1D17M1D5M1D25M3I18M1D6M1D5M1D42M1I3M1D31M1I3M1D14M1D21M1I8M3D4M1I19M6D10M2I12M7I32M8I2M1D18M2D31M1D15M1I21M1I6M1I3M1I39M2I1M1D10M1D3M1I36M12D45M1D7M1I4M1I1M3I7M1I3M1D5M1D6M1D14M1D14M1I18M1D1M1D6M1I1M2D1M1D4M2D8M1D27M5I20M12D11M1D9M1D29M3D26M2D4M2D3M1I6M37D1M1D4M5D3M1D3M6D3M4D16M1D27M2D3M1D2M2D60M4D5M4I8M21D26M1D16M1D3M1I8M1D22M1I8M10D3M2D3M3D13M36D4M1D40M1I6M1I5M1I7M2I7M1I13M2I2M1D8M2I6M1I9M1I3M1D4M4I3M1D5M1I11M1D4M4D23M1I21M1I17M1D37M2I10M1D36M1D8M1D1M1D9M1I6M1D1M5D1M7D3M2D2M10D2M2D12M1I27M2I1M1D16M1D18M1D25M1D29M1I12M2I18M1I2M3I3M7I13M1D30M3D2M2D18M1D4M2D36M1I19M1D19M1I6M1I4M3D20M2D13M1I61M1I12M3D1M1D6M2D4M2D3M1I7M1D34M1I9M1D5M5D9M3D11M1D4M1I4M1I3M4D2M3D1M8D22M1I10M1D12M1D57M1D25M1D58M4I26M1I2M1I2M1I7M2I43M1I3M1D6M1D9M2D20M1D5M41D5M1D30M1D32M1D12M2I9M4I17M2D44M1D2M1I29M14I1M1I17M1I8M1D27M4I14M1D9M1D4M1I6M1D12M5D26M3I2M1I2M1I18M -qctgA 49186 18755 26306 + ctgA 50001 19011 26774 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1I43M1D4M7D2M7D13M2I3M1I7M1I19M1D5M1D32M1D5M2I63M4D20M5D50M2I12M1I16M3D8M1I19M2D38M1D28M7I2M1I5M4I1M1I3M2I2M1D25M1I10M1D2M1D19M1I5M1D32M1I8M5D4M8D7M1D1M1D26M2D16M2I6M7D14M4I2M1I3M2I4M1D32M6I8M1D12M1D10M1D24M4D2M1D43M1D22M1I11M1I30M2D31M1D19M1D2M1D10M3I48M1I26M4D11M1D4M1D11M2D4M1D18M7I8M1I10M1I2M1D61M1D4M1I18M1D13M3D3M2D5M8D47M1I30M3D6M1I44M2D14M1I40M9D1M2D24M1D16M39I5M1I38M3I22M4D35M1I19M1I19M1I26M1D4M1I10M4D39M1I10M2I10M1I10M1I3M1D1M5D16M1I13M1D11M1D25M1D21M8I22M4D11M1D9M5D17M1D73M1I36M6D4M1D19M1I52M1I15M24I1M1I2M2I15M1I2M6I2M1I28M1D41M4I46M4I14M1D7M21D4M1I20M1D2M1I15M1I3M1I29M1I20M5D37M2I9M1I16M1I24M1I22M3D1M2D47M1I6M1D6M1I19M1D18M1I1M1I18M1I3M1I2M1I5M35D8M1D13M1I7M4I31M1I6M1D83M2D1M1I26M1I15M1I3M2D5M2D12M1D42M1I1M2I12M4D2M4D6M26D8M3D1M1D2M4D9M1D30M2D3M2D28M1I4M1I41M1D18M1I41M1I12M1I19M4I35M5I31M4I31M1I3M1D11M1I25M2D2M3D30M1D5M1I8M1D22M1I7M1D32M1I29M6D1M7D10M3D1M1D5M1I15M7I18M2I10M4D42M1D15M1I13M1D5M1D2M2I38M1I9M2I7M3I20M1D15M1I5M1D3M1D8M2I12M1D10M1D3M1D6M1D30M1D94M1I18M1I4M5D3M1D29M1D2M1D2M1D5M1I4M1D13M1I9M6I10M1D6M1D12M2I5M2D1M1D11M2D1M1D10M5D9M8D17M1D35M1D4M1I16M5I1M1I9M8I21M23I2M1I38M1D1M1D8M1D27M1I42M1I9M2D1M1I5M1D23M2I5M1I28M1D25M1D24M1D5M1I21M1I4M4I7M1D7M1I25M21I5M1I4M1I42M2D26M1D7M1I10M1I1M1I19M10D4M1D14M1D42M8D28M3D2M3D13M1I17M1D11M1I22M1I19M1I1M4I9M2D2M1I14M8I9M2D9M1I13M2D11M3D2M2I5M1I3M1I6M3D10M1I9M1D21M1I5M2I9M2I10M1D3M2I9M1I21M3D23M1I8M1I3M1I26M1I33M8D7M1I9M10D10M1I7M1D52M10D13M1I6M2D39M1D6M1D26M1I4M1D4M32D24M1D21M2D1M1D7M1D1M1D15M1D5M1D24M2I1M1I6M1D2M1D19M35D41M3I6M3I15M2D3M1D14M2I9M3D19M2D26M1D30M1I6M3D32M1I5M1D36M1D8M1D2M2D2M1D6M3I3M7I2M2I17M1D12M1D6M1I40M3D28M2I2M2I21M1D4M1I9M1I4M1I31M2I11M1D31M1D3M2D3M5D7M4D7M1D6M1D6M8D4M1I1M2D19M3I14M1D7M1D12M1I4M3I2M4I11M1I8M1I17M1D11M1D3M1D15M17I8M3D42M1I17M1D25M1I15M1I11M2I7M1D23M4I14M2D20M1I9M3D2M1D17M1D34M1I3M1I4M1D13M1I2M1I6M1I6M1D12M2D1M4D2M4D4M1I16M36D6M1D32M1D27M1D4M1D2M1I11M20D16M3D4M1I16M1D27M1D14M1D21M2I14M1D10M3D5M2D3M3D2M1D1M4D5M1D2M3D7M1D7M1I9M1D5M1D4M1D16M1D9M9D1M1D2M1D4M1D3M2I6M2D5M1I22M1D3M1I8M1D8M3D43M1I4M1D31M1I17M3I8M2I12M6I13M1I16M1D11M2D4M1I5M2D2M2D2M1I29M1I12M2D13M1I7M14D1M1D3M5D10M1D12M5I19M1I10M1I3M7I2M14I3M9I13M2I5M1I13M1D4M1D18M1I3M1D28M1I5M4D35M1D23M3D11M2I8M1D17M1I9M1I23M4D4M1D9M1I3M1I26M1I5M3I1M1I14M1D42M1I5M16I15M1D28M4D5M1I5M1D4M1D11M2D5M1I4M1I3M1I9M -qctgA 49186 16409 18309 + ctgA 50001 16650 18559 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5D3M3I13M1D9M1D5M2I5M8D39M1I36M2D33M1D22M1D10M2I8M1D5M1D16M6D5M2D11M2I12M1I7M1I3M3I3M1D3M1I13M1D21M1I4M2I1M1D14M1I12M1I2M1D12M6I5M1D19M10D28M1D26M1D41M1I11M1D9M1I9M4D15M6D13M1D25M5D3M1I27M2D7M1D17M7D18M2I16M1I12M1D22M2I5M12D5M7D2M1D13M1I13M2D2M1I15M1I19M1D17M1I58M1I8M11I8M1I6M2D6M1D2M1I8M2D4M15D6M1D1M2I8M3I25M1D21M1I43M1I6M1D12M2I10M14I5M1D19M3D4M1I95M2D16M2I9M3I8M1I3M1D3M4D1M1D5M3D14M1I7M1I6M2I40M1I1M2I5M1D5M1I11M7D25M10I16M1I2M2D21M1D4M1D4M1D15M2D3M1I13M13I28M2D5M1I33M1I11M1D36M1D19M1I22M1D18M1I1M1I12M1D6M9D11M2D4M1I5M10D16M5I21M1D5M1I11M37I13M3I4M1D9M1I3M1I12M1I58M1D14M -qctgA 49186 3 1851 + ctgA 50001 0 1859 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1I16M1I5M3I33M1D14M3D7M1D25M2I5M2I4M1D17M3D11M1D5M3D3M1I15M3I1M2I6M1I2M6D6M2D24M1I3M2D29M1I2M1I3M1I6M1I10M2D8M19D33M1D23M2D9M1D11M1I6M1D5M1D28M1I13M1D5M1I2M1I49M5D6M2I21M1D1M2D2M2D4M4I4M1I5M1I3M1D2M1I4M37D17M2I16M6D5M3D3M6D16M5I4M8I5M4I1M1I52M2D2M1I5M28D33M1D17M2I2M2D31M42I5M1I9M1I7M1D8M1I40M1I39M1I2M1D3M2I11M2I6M2I10M1D14M1I12M1I16M1D6M3I6M2I4M1I1M1I27M1I3M10I3M2D11M3D3M1I35M1I1M3D3M2D19M3D9M4D23M1I3M1I28M1I52M1I28M1D20M2I66M1I3M2I7M1D7M2D9M1D11M1D11M1D7M1I3M1I30M1D11M1D15M2I7M3D3M1I12M6I35M1D4M1D17M1D15M1I5M1D4M1I5M1I3M5D10M1D2M1D8M7I13M5I9M1D4M1I45M6I4M1I19M2D16M1D1M2I23M7I11M1I19M1D13M -qctgA 49186 18309 18754 - ctgA 50001 18559 19001 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:5M1I15M2I30M1D20M1D13M2D2M1D14M8I11M1D18M1I7M1I56M1D33M1D52M2D7M1I19M7D26M1I9M2I10M1I27M1D18M1I15M2I17M -qctgA 49186 1860 2214 - ctgA 50001 1859 2192 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:14M1D4M1D3M1D9M1I12M5D20M2I43M1I10M1I7M2D2M1D8M1I30M1I9M1I2M1I6M15I39M2I16M4I2M1I35M1I2M1I6M1D42M -tctgA 50001 27258 50001 + ctgA 49186 26805 49184 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3I58M1D4M1D3M2I20M3D2M1I42M15I1M1I15M6I2M4I24M1I10M1I64M1I62M1D11M2I10M4I23M1D25M4D23M1D20M2I3M1D7M10D7M1D4M1D5M1D15M10D21M1I3M3D6M1I12M1D6M1I30M1D5M1D6M9I4M1I33M1I2M1I8M1I3M1D5M5D25M2D10M1D34M1D6M5I4M4I6M1I34M1I13M1D25M2I19M1D25M1I1M2D24M1D3M1D20M1I2M1D7M1D3M2D6M4D14M2I29M1I3M2I7M1I4M1I6M2I8M4D30M1D8M4I18M1D7M1I3M1I1M1I9M1I11M3I21M5D6M1I1M1I2M1D5M4D27M1D19M1I7M1I9M5D50M1I3M7I33M1I5M1I2M1I32M34I1M1I6M3D40M1I21M2D33M1D2M1D14M1I4M2I17M1D30M1I9M1D53M1I22M1D5M1D6M2I13M4D19M2I6M2D3M1D15M3I4M1D15M1D3M1I8M7D1M1D56M3I12M1I17M1I5M1I52M7I13M1I2M1I4M1D2M3I9M1I18M1D9M6I9M1D1M2I5M1D6M2I3M3I1M2I3M2I17M2I11M5I4M4I12M1I6M1I9M2I3M1D12M1D7M1D17M1D6M1D13M1D15M2D19M2I6M2D2M1D9M2I20M12D12M1I35M3I6M1D23M3I7M1D8M2I7M1D10M1D41M2D20M1I34M1D2M1D10M1D12M2I10M1I13M13I18M1D27M2I13M2D26M3I4M1I9M2D5M3I39M1I19M1I9M1D12M2I33M1I22M1D31M1D28M1I11M2D5M1I22M1I3M27I38M1D8M1I8M1D29M5I8M1D46M1D18M1I6M1I61M1I16M6I4M3I13M1I19M5I4M1I5M2I6M6I4M7I7M1I7M1I7M1D41M5D3M1D11M1I17M1D3M1D3M1D5M1I11M2D30M5D4M1D6M1I18M1I10M1I50M1D8M1D16M1I9M26I11M1D44M1I19M1D9M2I2M1D18M1I8M15D19M1I13M1D8M1D6M1D4M3D7M1I4M1I3M1D2M1D3M3I1M1I20M1D15M1I11M1I22M2D41M2I12M1D7M2I6M8I3M7I2M2I27M1I19M1I2M1I41M1D13M1I38M1I11M4I7M1D14M1I1M3I37M1I2M1I4M1I3M4I2M1I21M1I18M1D11M2I13M1D23M25D15M1D2M1D3M7D18M1D35M1I11M1D5M1D45M4I5M1I7M1I6M1I35M1D34M2D9M1I6M1D47M1D10M1D34M1D5M1I6M1D1M1D4M8D28M3I6M1D19M1I18M1D7M5I5M1I22M1I3M2D5M12I8M1D71M2D23M1D6M1I3M2I5M2D12M1I12M1D24M1I14M1D3M1I24M1I26M22I42M1I9M1D1M1D9M1I6M1I12M1D6M3I17M12I7M1D11M2D19M1I17M1I17M2D2M2D9M2I10M1I6M2I29M1I3M1I19M1D4M3D8M1D1M2D55M1D43M3D42M1D33M22D22M1I3M1I24M1D40M1I21M1I2M1D5M1I2M1I18M1I20M2I12M1D22M1D4M4D84M1D21M1D35M1I3M4I13M1D5M1D10M4D11M1I20M1I5M1I16M1D14M1I8M1D58M1D9M1D5M26D6M1I30M2D7M1D9M1I9M1D38M5D1M2D8M2D14M2I1M2I13M1I2M1D12M1I21M1I8M1I17M2D4M4D7M1D12M1D23M1I12M1D8M8I12M1D5M1I18M1D39M1D2M1I9M1D5M2I16M1I23M3I6M2D17M3I1M1I13M1D49M1I25M1D5M1D13M1D9M1I21M1I6M1D13M1D2M2I3M2I3M1I3M3I22M1D1M1D10M4D1M4D3M2D7M2I3M2D15M1D9M1D3M4I6M7I1M1I16M1D9M1I6M9I4M3I7M1I5M1D7M1I5M1I31M1I10M1D29M1I6M5I4M1D3M5I22M1D1M1D4M4I2M1D15M2D4M1D1M1D5M2I5M2I7M1I6M1I1M1I14M4I25M1I30M1D30M6I15M3D12M1D9M1D72M1D9M1I8M1I6M1D5M1I18M5D3M1I4M3D3M7D17M1I5M1I19M2D3M1D14M3D2M1D10M1D2M1D38M4D2M1I25M1I23M2D4M1D8M1D3M19D16M1I21M1D21M2D6M23D9M1D9M11D3M5D17M1D2M8D5M1D5M1I12M1I25M1I20M1I10M3D2M4I3M1D18M3D6M2I35M1I2M3D2M1I9M1D1M1D14M1I2M10I1M2I4M1D6M5I3M6I1M6I18M1I8M1D6M1D49M1I18M1D1M1D7M2I24M1I13M1I1M26I8M2I2M1D19M1I13M1D9M1D5M1D3M10I10M5D1M1D15M1I27M1D15M1D30M2I12M1I10M3I22M5I4M1I9M1D33M1I3M1I12M9D4M1I6M5D3M8D8M1D33M5D13M1I22M1I12M1D17M6D5M3I12M1D12M1I1M1I7M1D44M1I1M1I12M1D47M1I8M2I27M1I1M1I35M1I9M1D6M3I52M3D6M1D27M1D8M1D13M1I13M4D16M3D43M1D13M1I31M1I63M1I30M1D6M1I1M1I15M20I18M2I15M9I8M3I16M11I9M1I18M1D27M8D2M3D1M1D11M2I24M2I27M1I2M1I52M1D50M1D4M1I7M7I23M1D6M1I34M2D15M2I11M1D9M1I21M6I1M1I11M2D2M1D7M27I18M1D2M1I10M4I12M3I1M2I15M5I1M1I6M6I6M1I40M5D8M1D8M35D6M1D27M1I15M2D3M18D5M4D2M1D4M4D8M1D39M2D5M6I9M38I3M1D24M1I2M1I17M1I9M2I7M9D12M1D1M1D15M1D10M2I11M1I10M1I19M3D20M1I43M1I8M1D4M3D1M2D2M3D5M3I13M1D9M5D6M1I6M1D2M2I23M1D8M1D19M1I12M1D20M1I5M1D16M2D10M15D5M2I7M1D14M4I13M1I16M1D4M1I5M2I5M2I3M1D14M17D6M1D16M6D13M5I1M1I6M1D4M1I2M2D17M1I33M1D4M1I16M1D44M1D19M1D19M1I10M13I13M1D5M2I12M1I4M1D10M1I15M1I5M1D7M1D8M1I30M1I3M1I6M2D30M1I33M2D7M4D8M1I2M1I16M1I20M1D3M1I35M1D5M1I10M4I5M1I3M1I19M2D5M2D8M5D49M1I14M1D15M1D11M1D4M3I5M1I50M1D11M7D2M4D9M1D18M2D11M1D5M2D13M5D3M2I19M2D11M2D47M4D1M2D7M1D26M1I4M1I6M1I6M1D24M2D5M3I9M1I13M1D9M1D22M1I3M1D12M1D4M4I32M1D2M2D15M3I3M1I10M1I7M1I11M1D4M1I3M7D2M1I11M1D4M1D1M2D9M8D15M1D9M1D44M1I4M2I10M1I15M1D23M5D4M2I7M4D14M1I10M2D35M1D5M3I25M1I17M1D18M5I5M2D15M2I21M1I1M1I55M7D11M1I5M1D13M2D13M1D12M1I18M1D9M3D29M1D5M1I11M2D11M1D4M4D13M1I10M3D83M1I24M1I6M2I4M1D5M1I6M1I34M1I4M2I11M1I4M2I47M10D7M1I40M3I11M2D39M1D19M1D2M1D3M1I22M2D17M2D4M1I2M1D7M1D27M1D7M1D17M1D7M1D15M1I8M1D3M1D1M1D44M1D1M3I4M1D2M1D19M1I15M1D6M4I28M1D8M1I13M1D4M1I11M1I19M2D69M1D43M4I24M1I25M2D13M2D16M1I4M1I8M1I42M1D11M1D7M3I1M2I1M5I14M2I2M1D28M1I5M1D25M1I46M7D8M2D30M1D4M1D19M1I22M1D30M1I10M5D7M1D5M1D3M2D12M11I3M1D7M8I2M6I2M3I7M2I4M1D1M2I5M1I18M2D1M1D1M1D4M1D10M3D18M1D27M2I5M1D6M1I7M2D7M22I30M1I31M1I19M2D46M1D3M1D27M6I13M1D37M1D12M2I14M28D3M1D3M1I18M6D25M1D8M1I9M2I17M1I2M4D10M1D44M1D6M1I14M3D10M2I7M1I10M2D9M15D18M1I13M1D15M1I25M1I13M1D1M1D18M5D17M1I16M1I16M1D29M1D24M1I17M1I15M2D10M1D11M3I3M1D2M1I50M11I2M2I2M1I1M2I1M1I9M1I18M2D41M1D26M1D25M1D22M4I6M2I2M13I23M1I11M1I25M1I7M3D9M1D4M1I16M1D4M1I2M1D6M1D20M1I37M2I42M1D3M1I47M1I11M1I3M1I14M1I7M1I19M7I11M3I10M2D7M1D11M1I48M1D2M1D10M4D2M1D18M1I67M2I4M4I6M1I17M1D6M2D23M1I9M1I1M3I8M1I14M2I2M3D6M4I9M1I5M5I22M1I6M2I25M8I1M2I4M1I2M4I31M2D7M1D11M11I16M2I11M2I14M1I8M2I3M1D21M1D6M2D1M1D6M1I27M1I1M1I33M1I21M2I1M1I8M1I5M2I6M1I8M1D34M1I3M4D7M1D2M1D16M1D1M1D46M1I12M1D7M1D31M6D10M1D1M1D1M1D5M11D10M1D19M1I22M1I10M1I11M1D8M1D24M1I6M2D7M3I2M1I17M1D24M1D2M4I19M1D14M2I17M1I9M3D16M1I10M1I25M1D26M11I3M2I5M1I2M8I30M2D15M2D13M1I6M5I5M3I17M2I17M2D18M2I11M1D11M2D3M1I18M1I9M1D8M1D16M1I2M1I13M3I1M1I10M1I11M1D8M3I3M1D26M1I4M2I8M1I3M2I4M1D4M2D11M1I10M1I4M1I8M6I1M1I5M7I2M1I5M8I3M2I13M4D1M1D17M1I21M1I22M1D10M1I41M1D2M1D2M1D5M1I41M1I29M1D5M1I5M1D8M1D15M1I9M1I22M1I29M4I7M1D9M1I8M1D32M2I15M1D15M1D23M1D7M10D19M1I38M1D7M1D4M1D16M28I29M7I28M1I52M2D6M1D1M1D1M1D3M1D25M2I15M1D9M5I6M1I12M1D6M1D4M2D11M5I1M2I1M4I15M3D11M3I4M1D8M1I40M6D12M1I17M1I9M5I1M1I2M1I25M1D23M2I9M1I11M1D3M2I28M1D12M1D17M15D10M1I9M1D2M1D8M4D11M1I9M1D6M1D8M1D40M2I3M2D8M1I11M1I16M1I6M1D7M1D34M2D27M1D5M1I3M2I39M1D30M1I22M1D10M3I61M2D19M2D6M1I7M1D23M1D4M1I3M1I6M2D12M2I11M14D13M1I6M4D9M2I11M1D17M1D4M1I8M1I3M1D4M1D35M1I47M1I17M1D7M1D2M1D25M1D13M1I3M1I18M1D13M2I10M2D19M2D6M1I6M1D7M1D11M1D6M3I2M1I11M1D6M1I17M12D1M1D2M1D9M1I1M1I7M7D4M1D9M8D12M1D37M1D25M4D1M1I7M3I13M1D4M1I2M1I43M1I11M1D4M1D6M1I31M2D38M2I12M2I6M2D39M1D19M6D1M1D12M1I16M1I50M1I40M1I24M1D4M2I5M1I5M2D13M2D4M7I2M2I2M7I1M3I15M1D8M1I10M10I41M1D34M1D10M1I11M1D3M3I7M3D23M9I47M2I19M1D36M42I2M1D3M1I3M1I7M1I5M3I6M1I16M1I13M1I39M14D7M1D16M1I19M1I14M1I8M1D34M2D3M1I6M1I12M2D3M1I10M2D1M1I6M39I2M2I16M2D3M2D3M1I23M1I14M3I3M2I6M3I2M1I1M1I10M1I25M1D17M2D33M2I2M1D7M1D36M2I13M1D9M1I6M3D11M1D2M1I8M1I21M1D34M1I12M2D3M1D8M4D11M1I59M5I18M2D11M1D4M7I26M2D77M5I11M1D16M2I6M5D19M1I13M1I1M2I23M1I6M2D11M1I35M1I10M1D14M1I30M1I12M38I2M1I3M1D2M1D5M2I7M1D1M2D3M1D57M1D31M1D9M1D63M1D40M2D3M1D25M1D4M2D21M15D10M1D30M2I3M2I6M2I15M1D6M1D48M2D27M1I6M1I77M2I3M1D22M3I20M1D14M1D29M1D16M1I20M1I5M30I25M6I7M1D17M1D5M14I16M1D3M1I15M1I41M1I13M1D13M1I5M2I19M2D6M1I29M1D2M2I16M1I6M1I8M1D4M9D13M3I10M1D16M4I27M1I1M3I6M2D9M5D38M1I3M2I1M1I4M2D5M1D24M1I18M1D3M5I2M3I3M1D3M1I1M1I5M1I4M1I11M5I3M8I6M1D3M2I5M1I11M1D19M1D1M1D15M1D3M1I15M1I5M3I1M1I12M1I23M1I1M1I6M4D2M4D9M1D17M1D4M1I18M3D7M1D51M11I11M1I12M3I17M1I14M2D12M4D10M1I26M1D45M1D3M1I15M2D11M1D28M1D4M2I9M1D31M3D15M1D11M1I3M4D10M1D21M1I31M8D23M4D24M1I13M5D19M2I1M1I5M10I10M1D23M1D20M2D32M1I5M1I23M1I9M1D14M1D22M1I6M1I19M3D14M1D18M1I10M1I7M1I14M1I46M1I7M21D5M1I17M3I2M4I7M1I16M1D2M1D14M1D3M1D4M1D16M2D42M1D7M1D17M5I1M1I29M13I24M1D3M8D5M12D9M1D23M1I8M -tctgA 50001 2212 16198 + ctgA 49186 2214 15925 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1D4M2D21M1D10M1D14M1D5M1I29M2I9M1D15M1D27M1D12M1I5M1D11M1I7M2D4M2I9M1I4M6I32M1I13M1D55M1D8M1D1M1D12M1D2M1I22M2D56M1I11M1D5M5D17M3D3M1D13M1I16M1D50M1D2M1D10M1I1M1I42M1I2M2I33M22D3M1D2M1D6M1I8M2I5M1I50M1I6M3I6M2I12M3D13M1I9M5I1M1I10M1D3M1I5M1D3M1D4M1D24M1D5M2I30M1I3M1D15M1I9M1D3M1D18M1D9M1I11M2I6M1D23M4I1M1I22M1D3M1D11M2I1M1I7M1I4M1I18M1D6M1D5M2I5M1D66M2D3M1I8M1D13M1D8M1D3M2I4M1I20M1D5M2D22M1D6M8D14M1D6M1I8M2I5M9I7M2D4M1I11M1D20M2I2M1D33M8D10M2D7M1D18M4D5M1I4M4I1M1I33M3D10M1I20M2I8M1I9M1D10M1I7M1D8M1I6M2D66M1D3M2D2M1D24M1I63M1D14M8D7M1D13M1I31M1D16M4I41M1I3M1I4M23D9M1I2M1I8M1D1M1D12M1D2M1D3M1I33M1D24M2D3M1D4M1D12M122I6M4I2M1I13M1D3M1I35M1D4M1D13M1I32M1I6M1D5M1D5M1I12M1I8M1I48M1D2M1I19M1I9M1D24M1I13M1I8M1D5M7D5M2I10M1D11M3D15M1D6M2D4M1D18M1I14M1I3M1I1M2I17M1I12M4I15M1D3M1I31M1I1M1I1M1I1M1I12M5D2M1I31M2D18M1I5M20I10M1D20M3I11M1D14M1D1M9D4M4D2M4D2M3D4M1I10M1I50M1D14M1D11M8D11M2I9M1D20M3D5M1D27M1I5M3D9M2D9M3I34M1D21M1I15M1D9M1D2M1D2M1D8M1D26M3I4M1I3M1D2M1D25M1D1M1D14M6D45M2D21M1D17M2I23M1I6M2D8M2I20M1D24M1I9M1D1M2I6M1I3M1I9M8D4M2D30M2I8M1I7M1D50M1D3M3D26M3I17M1I17M1I5M1I8M1D29M2I2M1D3M1D6M1I11M3D20M3D19M1D17M2D33M1I35M2I7M2I3M18I1M3I10M5I11M1I8M1I6M1D9M1D4M2I5M1I13M1I22M1I16M14D22M1I3M1D19M1I53M1D13M1D20M8D8M1D6M6I28M3I28M9I23M5I26M1D6M1I5M1I24M1D5M2D13M1D2M4D2M1D4M4D8M1D14M1D12M1D28M1D18M4D10M2I8M1D62M1D14M2D5M1D18M1I1M3D4M1D13M1I4M2D3M1I8M4I2M8I71M1D8M4D23M1D15M5I13M1I6M1I8M7D16M2D13M2I27M1I46M1D20M2I6M1D9M1I4M1D7M1I6M1D2M6D11M4I25M1D22M1I14M2I20M1I30M3D7M3I4M1D22M1I4M1I10M1I20M1D21M3D3M1D8M1I14M1D10M2D45M1I14M1I17M1I27M2I3M1D2M2D4M1I13M1I5M4D6M2D11M1D11M4D6M1D15M1D8M1D6M9D1M1D19M1D4M1D8M2I9M1D7M1I33M1I19M1I3M1I35M3I4M1I6M2I16M3I1M1I30M26I28M1I7M2D12M2I10M1D7M1I16M1I4M1D18M1D33M1D31M1D7M1D12M1I7M1I16M5D3M1D4M1I4M1I28M8I12M1I4M1I7M3I11M1I15M1I12M1D12M3D6M2I4M1I16M1D11M1I5M1I2M2D22M4I14M2D19M1I7M3D17M1D22M5I6M1I14M2I1M1I12M1D11M10D16M1I21M1I24M5I17M1I48M1I3M1I4M1I12M1I13M4I9M1D22M1D21M1D12M1I11M3I2M1I9M1D10M1I4M1D4M1I18M1D3M1I18M2I4M1D21M4I5M3D3M1I21M1D33M1I19M1D38M2D27M1D7M1D15M2D8M5I2M1I15M1D7M2D2M1D11M1I24M1D4M1I14M1D51M1I47M1I3M4I4M3I3M1D3M1I13M1I3M1D13M1D10M3D34M1I3M1D17M1I5M1D8M1I28M1D13M2D2M1D16M1I21M2D22M5D8M1D3M1D9M1I12M2I11M1D7M1D2M2I10M3D26M4I12M1I3M1I12M7D12M1D5M1I5M8I5M1I8M1D31M1I3M1I6M1D12M2I4M1I24M2D10M1D17M1I1M3I11M1I8M2I16M1I18M2I3M6I2M1I6M24I10M2D14M1D11M1D4M1I10M1D34M4D14M1I21M1I6M43I8M4I2M1I12M1I7M5I4M2D15M1I39M1I6M1D9M3I1M3I2M2I4M4I2M3I1M1I2M1I10M1D16M3I17M1D1M1D28M1I10M1I11M1I28M1I11M2D17M1D14M1D7M2I6M1I4M7I3M7I10M1D6M1D57M2I4M1I5M1I18M2D50M5D38M1I6M1I15M1I5M1D58M4D28M1D15M1I14M3D4M2I4M1D11M4I4M1I44M1D25M1D8M2I12M1D7M1I31M1I9M26D5M1D19M1I1M1I9M1I5M1I7M34D1M1D38M1D1M1D21M1I4M11I29M1I11M1I7M3D19M2D36M1I12M1D21M1D2M7D23M2D19M1D6M1D16M2D2M3I10M1I11M10D5M1D15M2I18M1D17M1D7M2I6M2D6M1I27M1D17M1D23M5D29M4I3M1D41M1I33M1I9M1I11M6D25M1I17M3I6M1D8M1D14M1I13M1I12M1D16M1D12M1D3M1I12M1D28M1I32M1I15M1D32M6D2M2D8M1I6M1I23M22D30M1D9M10I58M3D7M1I12M1D10M6D31M1I14M1D38M1D13M3I14M1I23M1D6M1D10M3D22M1D10M1D8M5D67M1D13M4I3M5I6M1D4M1D8M3I8M3D2M1D11M1I11M1D4M2D1M1D2M1D5M3D9M2I1M1I4M1I6M2I5M1I5M1D8M4I8M1D7M2D3M3I15M6I1M1I9M1I4M1I6M1I36M1I7M1I18M1D5M1I3M2D20M1I13M4D7M5D2M2D43M1D5M1I12M1D7M1I31M1D13M1I13M1D6M1I1M1I4M3I7M1I31M2I26M1D7M1D8M1I7M1D17M1I18M1D6M1I4M7I13M1D6M1I7M1D31M1I5M1D15M1I20M1D20M1D26M3D2M3D1M9D5M1D24M2I25M1I14M1I5M3I2M1D7M1D3M1D19M1D17M1D16M2D5M5I8M1D15M1D3M2D5M5D15M1I13M3I7M1I9M5D10M2I5M1D10M2D1M1D2M1D9M8D2M1I5M1D6M6I7M1D13M3D7M1D3M1I15M2I18M1I3M1I2M1I5M1I5M2D9M1D1M1D27M1D11M1I16M8D1M2D8M1D15M1D6M1D10M1I24M1I3M1I19M1D12M1D24M1I8M1I2M1I2M1D6M1I31M2D5M5I16M5D5M1D6M3I11M14I12M3D29M1D12M1D5M23D2M1D4M4D6M1I41M2D21M1I17M1I5M1I25M3D18M1I6M1I5M1I42M1D3M1I31M1D3M1I14M1I21M1D8M3I4M1D19M6I10M2D12M7D32M8D2M1I18M2I31M1I15M1D21M1D6M1D3M1D39M2D1M1I10M1I3M1D36M12I45M1I7M1D4M1D1M3D7M1D3M1I5M1I6M1I14M1I14M1D18M1I1M1I6M1D1M2I1M1I4M2I8M1I27M5D20M12I11M1I9M1I29M3I26M2I4M2I3M1D6M37I1M1I4M5I3M1I3M6I3M4I16M1I27M2I3M1I2M2I60M4I5M4D8M21I26M1I16M1I3M1D8M1I22M1D8M10I3M2I3M3I13M36I4M1I40M1D6M1D5M1D7M2D7M1D13M2D2M1I8M2D6M1D9M1D3M1I4M4D3M1I5M1D11M1I4M4I23M1D21M1D17M1I37M2D10M1I36M1I8M1I1M1I9M1D6M1I1M5I1M7I3M2I2M10I2M2I12M1D27M2D1M1I16M1I18M1I25M1I29M1D12M2D18M1D2M3D3M7D13M1I30M3I2M2I18M1I4M2I36M1D19M1I19M1D6M1D4M3I20M2I13M1D61M1D12M3I1M1I6M2I4M2I3M1D7M1I34M1D9M1I5M5I9M3I11M1I4M1D4M1D3M4I2M3I1M8I22M1D10M1I12M1I57M1I25M1I58M4D26M1D2M1D2M1D7M2D43M1D3M1I6M1I9M2I20M1I5M41I5M1I30M1I32M1I12M2D9M4D17M2I44M1I2M1D29M14D1M1D17M1D8M1I27M4D14M1I9M1I4M1D6M1I12M5I26M3D2M1D2M1D18M -tctgA 50001 19011 26774 + ctgA 49186 18755 26306 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1D43M1I4M7I2M7I13M2D3M1D7M1D19M1I5M1I32M1I5M2D63M4I20M5I50M2D12M1D16M3I8M1D19M2I38M1I28M7D2M1D5M4D1M1D3M2D2M1I25M1D10M1I2M1I19M1D5M1I32M1D8M5I4M8I7M1I1M1I26M2I16M2D6M7I14M4D2M1D3M2D4M1I32M6D8M1I12M1I10M1I24M4I2M1I43M1I22M1D11M1D30M2I31M1I19M1I2M1I10M3D48M1D26M4I11M1I4M1I11M2I4M1I18M7D8M1D10M1D2M1I61M1I4M1D18M1I13M3I3M2I5M8I47M1D30M3I6M1D44M2I14M1D40M9I1M2I24M1I16M39D5M1D38M3D22M4I35M1D19M1D19M1D26M1I4M1D10M4I39M1D10M2D10M1D10M1D3M1I1M5I16M1D13M1I11M1I25M1I21M8D22M4I11M1I9M5I17M1I73M1D36M6I4M1I19M1D52M1D15M24D1M1D2M2D15M1D2M6D2M1D28M1I41M4D46M4D14M1I7M21I4M1D20M1I2M1D15M1D3M1D29M1D20M5I37M2D9M1D16M1D24M1D22M3I1M2I47M1D6M1I6M1D19M1I18M1D1M1D18M1D3M1D2M1D5M35I8M1I13M1D7M4D31M1D6M1I83M2I1M1D26M1D15M1D3M2I5M2I12M1I42M1D1M2D12M4I2M4I6M26I8M3I1M1I2M4I9M1I30M2I3M2I28M1D4M1D41M1I18M1D41M1D12M1D19M4D35M5D31M4D31M1D3M1I11M1D25M2I2M3I30M1I5M1D8M1I22M1D7M1I32M1D29M6I1M7I10M3I1M1I5M1D15M7D18M2D10M4I42M1I15M1D13M1I5M1I2M2D38M1D9M2D7M3D20M1I15M1D5M1I3M1I8M2D12M1I10M1I3M1I6M1I30M1I94M1D18M1D4M5I3M1I29M1I2M1I2M1I5M1D4M1I13M1D9M6D10M1I6M1I12M2D5M2I1M1I11M2I1M1I10M5I9M8I17M1I35M1I4M1D16M5D1M1D9M8D21M23D2M1D38M1I1M1I8M1I27M1D42M1D9M2I1M1D5M1I23M2D5M1D28M1I25M1I24M1I5M1D21M1D4M4D7M1I7M1D25M21D5M1D4M1D42M2I26M1I7M1D10M1D1M1D19M10I4M1I14M1I42M8I28M3I2M3I13M1D17M1I11M1D22M1D19M1D1M4D9M2I2M1D14M8D9M2I9M1D13M2I11M3I2M2D5M1D3M1D6M3I10M1D9M1I21M1D5M2D9M2D10M1I3M2D9M1D21M3I23M1D8M1D3M1D26M1D33M8I7M1D9M10I10M1D7M1I52M10I13M1D6M2I39M1I6M1I26M1D4M1I4M32I24M1I21M2I1M1I7M1I1M1I15M1I5M1I24M2D1M1D6M1I2M1I19M35I41M3D6M3D15M2I3M1I14M2D9M3I19M2I26M1I30M1D6M3I32M1D5M1I36M1I8M1I2M2I2M1I6M3D3M7D2M2D17M1I12M1I6M1D40M3I28M2D2M2D21M1I4M1D9M1D4M1D31M2D11M1I31M1I3M2I3M5I7M4I7M1I6M1I6M8I4M1D1M2I19M3D14M1I7M1I12M1D4M3D2M4D11M1D8M1D17M1I11M1I3M1I15M17D8M3I42M1D17M1I25M1D15M1D11M2D7M1I23M4D14M2I20M1D9M3I2M1I17M1I34M1D3M1D4M1I13M1D2M1D6M1D6M1I12M2I1M4I2M4I4M1D16M36I6M1I32M1I27M1I4M1I2M1D11M20I16M3I4M1D16M1I27M1I14M1I21M2D14M1I10M3I5M2I3M3I2M1I1M4I5M1I2M3I7M1I7M1D9M1I5M1I4M1I16M1I9M9I1M1I2M1I4M1I3M2D6M2I5M1D22M1I3M1D8M1I8M3I43M1D4M1I31M1D17M3D8M2D12M6D13M1D16M1I11M2I4M1D5M2I2M2I2M1D29M1D12M2I13M1D7M14I1M1I3M5I10M1I12M5D19M1D10M1D3M7D2M14D3M9D13M2D5M1D13M1I4M1I18M1D3M1I28M1D5M4I35M1I23M3I11M2D8M1I17M1D9M1D23M4I4M1I9M1D3M1D26M1D5M3D1M1D14M1I42M1D5M16D15M1I28M4I5M1D5M1I4M1I11M2I5M1D4M1D3M1D9M -tctgA 50001 16650 18559 + ctgA 49186 16409 18309 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5I3M3D13M1I9M1I5M2D5M8I39M1D36M2I33M1I22M1I10M2D8M1I5M1I16M6I5M2I11M2D12M1D7M1D3M3D3M1I3M1D13M1I21M1D4M2D1M1I14M1D12M1D2M1I12M6D5M1I19M10I28M1I26M1I41M1D11M1I9M1D9M4I15M6I13M1I25M5I3M1D27M2I7M1I17M7I18M2D16M1D12M1I22M2D5M12I5M7I2M1I13M1D13M2I2M1D15M1D19M1I17M1D58M1D8M11D8M1D6M2I6M1I2M1D8M2I4M15I6M1I1M2D8M3D25M1I21M1D43M1D6M1I12M2D10M14D5M1I19M3I4M1D95M2I16M2D9M3D8M1D3M1I3M4I1M1I5M3I14M1D7M1D6M2D40M1D1M2D5M1I5M1D11M7I25M10D16M1D2M2I21M1I4M1I4M1I15M2I3M1D13M13D28M2I5M1D33M1D11M1I36M1I19M1D22M1I18M1D1M1D12M1I6M9I11M2I4M1D5M10I16M5D21M1I5M1D11M37D13M3D4M1I9M1D3M1D12M1D58M1I14M -tctgA 50001 0 1859 + ctgA 49186 3 1851 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1D16M1D5M3D33M1I14M3I7M1I25M2D5M2D4M1I17M3I11M1I5M3I3M1D15M3D1M2D6M1D2M6I6M2I24M1D3M2I29M1D2M1D3M1D6M1D10M2I8M19I33M1I23M2I9M1I11M1D6M1I5M1I28M1D13M1I5M1D2M1D49M5I6M2D21M1I1M2I2M2I4M4D4M1D5M1D3M1I2M1D4M37I17M2D16M6I5M3I3M6I16M5D4M8D5M4D1M1D52M2I2M1D5M28I33M1I17M2D2M2I31M42D5M1D9M1D7M1I8M1D40M1D39M1D2M1I3M2D11M2D6M2D10M1I14M1D12M1D16M1I6M3D6M2D4M1D1M1D27M1D3M10D3M2I11M3I3M1D35M1D1M3I3M2I19M3I9M4I23M1D3M1D28M1D52M1D28M1I20M2D66M1D3M2D7M1I7M2I9M1I11M1I11M1I7M1D3M1D30M1I11M1I15M2D7M3I3M1D12M6D35M1I4M1I17M1I15M1D5M1I4M1D5M1D3M5I10M1I2M1I8M7D13M5D9M1I4M1D45M6D4M1D19M2I16M1I1M2D23M7D11M1D19M1I13M -tctgA 50001 18559 19001 - ctgA 49186 18309 18754 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:17M2D15M1D18M1I27M1D10M2D9M1D26M7I19M1D7M2I52M1I33M1I56M1D7M1D18M1I11M8D14M1I2M2I13M1I20M1I30M2D15M1D5M -tctgA 50001 1859 2192 - ctgA 49186 1860 2214 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:42M1I6M1D2M1D35M1D2M4D16M2D39M15D6M1D2M1D9M1D30M1D8M1I2M2I7M1D10M1D43M2D20M5I12M1D9M1I3M1I4M1I14M +exports[`process-paf processes volvox paf 1`] = ` +"tctgA 49186 26805 49184 + ctgA 50001 27258 50001 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3D58M1I4M1I3M2D20M3I2M1D42M15D1M1D15M6D2M4D24M1D10M1D64M1D62M1I11M2D10M4D23M1I25M4I23M1I20M2D3M1I7M10I7M1I4M1I5M1I15M10I21M1D3M3I6M1D12M1I6M1D30M1I5M1I6M9D4M1D33M1D2M1D8M1D3M1I5M5I25M2I10M1I34M1I6M5D4M4D6M1D34M1D13M1I25M2D19M1I25M1D1M2I24M1I3M1I20M1D2M1I7M1I3M2I6M4I14M2D29M1D3M2D7M1D4M1D6M2D8M4I30M1I8M4D18M1I7M1D3M1D1M1D9M1D11M3D21M5I6M1D1M1D2M1I5M4I27M1I19M1D7M1D9M5I50M1D3M7D33M1D5M1D2M1D32M34D1M1D6M3I40M1D21M2I33M1I2M1I14M1D4M2D17M1I30M1D9M1I53M1D22M1I5M1I6M2D13M4I19M2D6M2I3M1I15M3D4M1I15M1I3M1D8M7I1M1I56M3D12M1D17M1D5M1D52M7D13M1D2M1D4M1I2M3D9M1D18M1I9M6D9M1I1M2D5M1I6M2D3M3D1M2D3M2D17M2D11M5D4M4D12M1D6M1D9M2D3M1I12M1I7M1I17M1I6M1I13M1I15M2I19M2D6M2I2M1I9M2D20M12I12M1D35M3D6M1I23M3D7M1I8M2D7M1I10M1I41M2I20M1D34M1I2M1I10M1I12M2D10M1D13M13D18M1I27M2D13M2I26M3D4M1D9M2I5M3D39M1D19M1D9M1I12M2D33M1D22M1I31M1I28M1D11M2I5M1D22M1D3M27D38M1I8M1D8M1I29M5D8M1I46M1I18M1D6M1D61M1D16M6D4M3D13M1D19M5D4M1D5M2D6M6D4M7D7M1D7M1D7M1I41M5I3M1I11M1D17M1I3M1I3M1I5M1D11M2I30M5I4M1I6M1D18M1D10M1D50M1I8M1I16M1D9M26D11M1I44M1D19M1I9M2D2M1I18M1D8M15I19M1D13M1I8M1I6M1I4M3I7M1D4M1D3M1I2M1I3M3D1M1D20M1I15M1D11M1D22M2I41M2D12M1I7M2D6M8D3M7D2M2D27M1D19M1D2M1D41M1I13M1D38M1D11M4D7M1I14M1D1M3D37M1D2M1D4M1D3M4D2M1D21M1D18M1I11M2D13M1I23M25I15M1I2M1I3M7I18M1I35M1D11M1I5M1I45M4D5M1D7M1D6M1D35M1I34M2I9M1D6M1I47M1I10M1I34M1I5M1D6M1I1M1I4M8I28M3D6M1I19M1D18M1I7M5D5M1D22M1D3M2I5M12D8M1I71M2I23M1I6M1D3M2D5M2I12M1D12M1I24M1D14M1I3M1D24M1D26M22D42M1D9M1I1M1I9M1D6M1D12M1I6M3D17M12D7M1I11M2I19M1D17M1D17M2I2M2I9M2D10M1D6M2D29M1D3M1D19M1I4M3I8M1I1M2I55M1I43M3I42M1I33M22I22M1D3M1D24M1I40M1D21M1D2M1I5M1D2M1D18M1D20M2D12M1I22M1I4M4I84M1I21M1I35M1D3M4D13M1I5M1I10M4I11M1D20M1D5M1D16M1I14M1D8M1I58M1I9M1I5M26I6M1D30M2I7M1I9M1D9M1I38M5I1M2I8M2I14M2D1M2D13M1D2M1I12M1D21M1D8M1D17M2I4M4I7M1I12M1I23M1D12M1I8M8D12M1I5M1D18M1I39M1I2M1D9M1I5M2D16M1D23M3D6M2I17M3D1M1D13M1I49M1D25M1I5M1I13M1I9M1D21M1D6M1I13M1I2M2D3M2D3M1D3M3D22M1I1M1I10M4I1M4I3M2I7M2D3M2I15M1I9M1I3M4D6M7D1M1D16M1I9M1D6M9D4M3D7M1D5M1I7M1D5M1D31M1D10M1I29M1D6M5D4M1I3M5D22M1I1M1I4M4D2M1I15M2I4M1I1M1I5M2D5M2D7M1D6M1D1M1D14M4D25M1D30M1I30M6D15M3I12M1I9M1I72M1I9M1D8M1D6M1I5M1D18M5I3M1D4M3I3M7I17M1D5M1D19M2I3M1I14M3I2M1I10M1I2M1I38M4I2M1D25M1D23M2I4M1I8M1I3M19I16M1D21M1I21M2I6M23I9M1I9M11I3M5I17M1I2M8I5M1I5M1D12M1D25M1D20M1D10M3I2M4D3M1I18M3I6M2D35M1D2M3I2M1D9M1I1M1I14M1D2M10D1M2D4M1I6M5D3M6D1M6D18M1D8M1I6M1I49M1D18M1I1M1I7M2D24M1D13M1D1M26D8M2D2M1I19M1D13M1I9M1I5M1I3M10D10M5I1M1I15M1D27M1I15M1I30M2D12M1D10M3D22M5D4M1D9M1I33M1D3M1D12M9I4M1D6M5I3M8I8M1I33M5I13M1D22M1D12M1I17M6I5M3D12M1I12M1D1M1D7M1I44M1D1M1D12M1I47M1D8M2D27M1D1M1D35M1D9M1I6M3D52M3I6M1I27M1I8M1I13M1D13M4I16M3I43M1I13M1D31M1D63M1D30M1I6M1D1M1D15M20D18M2D15M9D8M3D16M11D9M1D18M1I27M8I2M3I1M1I11M2D24M2D27M1D2M1D52M1I50M1I4M1D7M7D23M1I6M1D34M2I15M2D11M1I9M1D21M6D1M1D11M2I2M1I7M27D18M1I2M1D10M4D12M3D1M2D15M5D1M1D6M6D6M1D40M5I8M1I8M35I6M1I27M1D15M2I3M18I5M4I2M1I4M4I8M1I39M2I5M6D9M38D3M1I24M1D2M1D17M1D9M2D7M9I12M1I1M1I15M1I10M2D11M1D10M1D19M3I20M1D43M1D8M1I4M3I1M2I2M3I5M3D13M1I9M5I6M1D6M1I2M2D23M1I8M1I19M1D12M1I20M1D5M1I16M2I10M15I5M2D7M1I14M4D13M1D16M1I4M1D5M2D5M2D3M1I14M17I6M1I16M6I13M5D1M1D6M1I4M1D2M2I17M1D33M1I4M1D16M1I44M1I19M1I19M1D10M13D13M1I5M2D12M1D4M1I10M1D15M1D5M1I7M1I8M1D30M1D3M1D6M2I30M1D33M2I7M4I8M1D2M1D16M1D20M1I3M1D35M1I5M1D10M4D5M1D3M1D19M2I5M2I8M5I49M1D14M1I15M1I11M1I4M3D5M1D50M1I11M7I2M4I9M1I18M2I11M1I5M2I13M5I3M2D19M2I11M2I47M4I1M2I7M1I26M1D4M1D6M1D6M1I24M2I5M3D9M1D13M1I9M1I22M1D3M1I12M1I4M4D32M1I2M2I15M3D3M1D10M1D7M1D11M1I4M1D3M7I2M1D11M1I4M1I1M2I9M8I15M1I9M1I44M1D4M2D10M1D15M1I23M5I4M2D7M4I14M1D10M2I35M1I5M3D25M1D17M1I18M5D5M2I15M2D21M1D1M1D55M7I11M1D5M1I13M2I13M1I12M1D18M1I9M3I29M1I5M1D11M2I11M1I4M4I13M1D10M3I83M1D24M1D6M2D4M1I5M1D6M1D34M1D4M2D11M1D4M2D47M10I7M1D40M3D11M2I39M1I19M1I2M1I3M1D22M2I17M2I4M1D2M1I7M1I27M1I7M1I17M1I7M1I15M1D8M1I3M1I1M1I44M1I1M3D4M1I2M1I19M1D15M1I6M4D28M1I8M1D13M1I4M1D11M1D19M2I69M1I43M4D24M1D25M2I13M2I16M1D4M1D8M1D42M1I11M1I7M3D1M2D1M5D14M2D2M1I28M1D5M1I25M1D46M7I8M2I30M1I4M1I19M1D22M1I30M1D10M5I7M1I5M1I3M2I12M11D3M1I7M8D2M6D2M3D7M2D4M1I1M2D5M1D18M2I1M1I1M1I4M1I10M3I18M1I27M2D5M1I6M1D7M2I7M22D30M1D31M1D19M2I46M1I3M1I27M6D13M1I37M1I12M2D14M28I3M1I3M1D18M6I25M1I8M1D9M2D17M1D2M4I10M1I44M1I6M1D14M3I10M2D7M1D10M2I9M15I18M1D13M1I15M1D25M1D13M1I1M1I18M5I17M1D16M1D16M1I29M1I24M1D17M1D15M2I10M1I11M3D3M1I2M1D50M11D2M2D2M1D1M2D1M1D9M1D18M2I41M1I26M1I25M1I22M4D6M2D2M13D23M1D11M1D25M1D7M3I9M1I4M1D16M1I4M1D2M1I6M1I20M1D37M2D42M1I3M1D47M1D11M1D3M1D14M1D7M1D19M7D11M3D10M2I7M1I11M1D48M1I2M1I10M4I2M1I18M1D67M2D4M4D6M1D17M1I6M2I23M1D9M1D1M3D8M1D14M2D2M3I6M4D9M1D5M5D22M1D6M2D25M8D1M2D4M1D2M4D31M2I7M1I11M11D16M2D11M2D14M1D8M2D3M1I21M1I6M2I1M1I6M1D27M1D1M1D33M1D21M2D1M1D8M1D5M2D6M1D8M1I34M1D3M4I7M1I2M1I16M1I1M1I46M1D12M1I7M1I31M6I10M1I1M1I1M1I5M11I10M1I19M1D22M1D10M1D11M1I8M1I24M1D6M2I7M3D2M1D17M1I24M1I2M4D19M1I14M2D17M1D9M3I16M1D10M1D25M1I26M11D3M2D5M1D2M8D30M2I15M2I13M1D6M5D5M3D17M2D17M2I18M2D11M1I11M2I3M1D18M1D9M1I8M1I16M1D2M1D13M3D1M1D10M1D11M1I8M3D3M1I26M1D4M2D8M1D3M2D4M1I4M2I11M1D10M1D4M1D8M6D1M1D5M7D2M1D5M8D3M2D13M4I1M1I17M1D21M1D22M1I10M1D41M1I2M1I2M1I5M1D41M1D29M1I5M1D5M1I8M1I15M1D9M1D22M1D29M4D7M1I9M1D8M1I32M2D15M1I15M1I23M1I7M10I19M1D38M1I7M1I4M1I16M28D29M7D28M1D52M2I6M1I1M1I1M1I3M1I25M2D15M1I9M5D6M1D12M1I6M1I4M2I11M5D1M2D1M4D15M3I11M3D4M1I8M1D40M6I12M1D17M1D9M5D1M1D2M1D25M1I23M2D9M1D11M1I3M2D28M1I12M1I17M15I10M1D9M1I2M1I8M4I11M1D9M1I6M1I8M1I40M2D3M2I8M1D11M1D16M1D6M1I7M1I34M2I27M1I5M1D3M2D39M1I30M1D22M1I10M3D61M2I19M2I6M1D7M1I23M1I4M1D3M1D6M2I12M2D11M14I13M1D6M4I9M2D11M1I17M1I4M1D8M1D3M1I4M1I35M1D47M1D17M1I7M1I2M1I25M1I13M1D3M1D18M1I13M2D10M2I19M2I6M1D6M1I7M1I11M1I6M3D2M1D11M1I6M1D17M12I1M1I2M1I9M1D1M1D7M7I4M1I9M8I12M1I37M1I25M4I1M1D7M3D13M1I4M1D2M1D43M1D11M1I4M1I6M1D31M2I38M2D12M2D6M2I39M1I19M6I1M1I12M1D16M1D50M1D40M1D24M1I4M2D5M1D5M2I13M2I4M7D2M2D2M7D1M3D15M1I8M1D10M10D41M1I34M1I10M1D11M1I3M3D7M3I23M9D47M2D19M1I36M42D2M1I3M1D3M1D7M1D5M3D6M1D16M1D13M1D39M14I7M1I16M1D19M1D14M1D8M1I34M2I3M1D6M1D12M2I3M1D10M2I1M1D6M39D2M2D16M2I3M2I3M1D23M1D14M3D3M2D6M3D2M1D1M1D10M1D25M1I17M2I33M2D2M1I7M1I36M2D13M1I9M1D6M3I11M1I2M1D8M1D21M1I34M1D12M2I3M1I8M4I11M1D59M5D18M2I11M1I4M7D26M2I77M5D11M1I16M2D6M5I19M1D13M1D1M2D23M1D6M2I11M1D35M1D10M1I14M1D30M1D12M38D2M1D3M1I2M1I5M2D7M1I1M2I3M1I57M1I31M1I9M1I63M1I40M2I3M1I25M1I4M2I21M15I10M1I30M2D3M2D6M2D15M1I6M1I48M2I27M1D6M1D77M2D3M1I22M3D20M1I14M1I29M1I16M1D20M1D5M30D25M6D7M1I17M1I5M14D16M1I3M1D15M1D41M1D13M1I13M1D5M2D19M2I6M1D29M1I2M2D16M1D6M1D8M1I4M9I13M3D10M1I16M4D27M1D1M3D6M2I9M5I38M1D3M2D1M1D4M2I5M1I24M1D18M1I3M5D2M3D3M1I3M1D1M1D5M1D4M1D11M5D3M8D6M1I3M2D5M1D11M1I19M1I1M1I15M1I3M1D15M1D5M3D1M1D12M1D23M1D1M1D6M4I2M4I9M1I17M1I4M1D18M3I7M1I51M11D11M1D12M3D17M1D14M2I12M4I10M1D26M1I45M1I3M1D15M2I11M1I28M1I4M2D9M1I31M3I15M1I11M1D3M4I10M1I21M1D31M8I23M4I24M1D13M5I19M2D1M1D5M10D10M1I23M1I20M2I32M1D5M1D23M1D9M1I14M1I22M1D6M1D19M3I14M1I18M1D10M1D7M1D14M1D46M1D7M21I5M1D17M3D2M4D7M1D16M1I2M1I14M1I3M1I4M1I16M2I42M1I7M1I17M5D1M1D29M13D24M1I3M8I5M12I9M1I23M1D8M +qctgA 50001 27258 50001 + ctgA 49186 26805 49184 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3I58M1D4M1D3M2I20M3D2M1I42M15I1M1I15M6I2M4I24M1I10M1I64M1I62M1D11M2I10M4I23M1D25M4D23M1D20M2I3M1D7M10D7M1D4M1D5M1D15M10D21M1I3M3D6M1I12M1D6M1I30M1D5M1D6M9I4M1I33M1I2M1I8M1I3M1D5M5D25M2D10M1D34M1D6M5I4M4I6M1I34M1I13M1D25M2I19M1D25M1I1M2D24M1D3M1D20M1I2M1D7M1D3M2D6M4D14M2I29M1I3M2I7M1I4M1I6M2I8M4D30M1D8M4I18M1D7M1I3M1I1M1I9M1I11M3I21M5D6M1I1M1I2M1D5M4D27M1D19M1I7M1I9M5D50M1I3M7I33M1I5M1I2M1I32M34I1M1I6M3D40M1I21M2D33M1D2M1D14M1I4M2I17M1D30M1I9M1D53M1I22M1D5M1D6M2I13M4D19M2I6M2D3M1D15M3I4M1D15M1D3M1I8M7D1M1D56M3I12M1I17M1I5M1I52M7I13M1I2M1I4M1D2M3I9M1I18M1D9M6I9M1D1M2I5M1D6M2I3M3I1M2I3M2I17M2I11M5I4M4I12M1I6M1I9M2I3M1D12M1D7M1D17M1D6M1D13M1D15M2D19M2I6M2D2M1D9M2I20M12D12M1I35M3I6M1D23M3I7M1D8M2I7M1D10M1D41M2D20M1I34M1D2M1D10M1D12M2I10M1I13M13I18M1D27M2I13M2D26M3I4M1I9M2D5M3I39M1I19M1I9M1D12M2I33M1I22M1D31M1D28M1I11M2D5M1I22M1I3M27I38M1D8M1I8M1D29M5I8M1D46M1D18M1I6M1I61M1I16M6I4M3I13M1I19M5I4M1I5M2I6M6I4M7I7M1I7M1I7M1D41M5D3M1D11M1I17M1D3M1D3M1D5M1I11M2D30M5D4M1D6M1I18M1I10M1I50M1D8M1D16M1I9M26I11M1D44M1I19M1D9M2I2M1D18M1I8M15D19M1I13M1D8M1D6M1D4M3D7M1I4M1I3M1D2M1D3M3I1M1I20M1D15M1I11M1I22M2D41M2I12M1D7M2I6M8I3M7I2M2I27M1I19M1I2M1I41M1D13M1I38M1I11M4I7M1D14M1I1M3I37M1I2M1I4M1I3M4I2M1I21M1I18M1D11M2I13M1D23M25D15M1D2M1D3M7D18M1D35M1I11M1D5M1D45M4I5M1I7M1I6M1I35M1D34M2D9M1I6M1D47M1D10M1D34M1D5M1I6M1D1M1D4M8D28M3I6M1D19M1I18M1D7M5I5M1I22M1I3M2D5M12I8M1D71M2D23M1D6M1I3M2I5M2D12M1I12M1D24M1I14M1D3M1I24M1I26M22I42M1I9M1D1M1D9M1I6M1I12M1D6M3I17M12I7M1D11M2D19M1I17M1I17M2D2M2D9M2I10M1I6M2I29M1I3M1I19M1D4M3D8M1D1M2D55M1D43M3D42M1D33M22D22M1I3M1I24M1D40M1I21M1I2M1D5M1I2M1I18M1I20M2I12M1D22M1D4M4D84M1D21M1D35M1I3M4I13M1D5M1D10M4D11M1I20M1I5M1I16M1D14M1I8M1D58M1D9M1D5M26D6M1I30M2D7M1D9M1I9M1D38M5D1M2D8M2D14M2I1M2I13M1I2M1D12M1I21M1I8M1I17M2D4M4D7M1D12M1D23M1I12M1D8M8I12M1D5M1I18M1D39M1D2M1I9M1D5M2I16M1I23M3I6M2D17M3I1M1I13M1D49M1I25M1D5M1D13M1D9M1I21M1I6M1D13M1D2M2I3M2I3M1I3M3I22M1D1M1D10M4D1M4D3M2D7M2I3M2D15M1D9M1D3M4I6M7I1M1I16M1D9M1I6M9I4M3I7M1I5M1D7M1I5M1I31M1I10M1D29M1I6M5I4M1D3M5I22M1D1M1D4M4I2M1D15M2D4M1D1M1D5M2I5M2I7M1I6M1I1M1I14M4I25M1I30M1D30M6I15M3D12M1D9M1D72M1D9M1I8M1I6M1D5M1I18M5D3M1I4M3D3M7D17M1I5M1I19M2D3M1D14M3D2M1D10M1D2M1D38M4D2M1I25M1I23M2D4M1D8M1D3M19D16M1I21M1D21M2D6M23D9M1D9M11D3M5D17M1D2M8D5M1D5M1I12M1I25M1I20M1I10M3D2M4I3M1D18M3D6M2I35M1I2M3D2M1I9M1D1M1D14M1I2M10I1M2I4M1D6M5I3M6I1M6I18M1I8M1D6M1D49M1I18M1D1M1D7M2I24M1I13M1I1M26I8M2I2M1D19M1I13M1D9M1D5M1D3M10I10M5D1M1D15M1I27M1D15M1D30M2I12M1I10M3I22M5I4M1I9M1D33M1I3M1I12M9D4M1I6M5D3M8D8M1D33M5D13M1I22M1I12M1D17M6D5M3I12M1D12M1I1M1I7M1D44M1I1M1I12M1D47M1I8M2I27M1I1M1I35M1I9M1D6M3I52M3D6M1D27M1D8M1D13M1I13M4D16M3D43M1D13M1I31M1I63M1I30M1D6M1I1M1I15M20I18M2I15M9I8M3I16M11I9M1I18M1D27M8D2M3D1M1D11M2I24M2I27M1I2M1I52M1D50M1D4M1I7M7I23M1D6M1I34M2D15M2I11M1D9M1I21M6I1M1I11M2D2M1D7M27I18M1D2M1I10M4I12M3I1M2I15M5I1M1I6M6I6M1I40M5D8M1D8M35D6M1D27M1I15M2D3M18D5M4D2M1D4M4D8M1D39M2D5M6I9M38I3M1D24M1I2M1I17M1I9M2I7M9D12M1D1M1D15M1D10M2I11M1I10M1I19M3D20M1I43M1I8M1D4M3D1M2D2M3D5M3I13M1D9M5D6M1I6M1D2M2I23M1D8M1D19M1I12M1D20M1I5M1D16M2D10M15D5M2I7M1D14M4I13M1I16M1D4M1I5M2I5M2I3M1D14M17D6M1D16M6D13M5I1M1I6M1D4M1I2M2D17M1I33M1D4M1I16M1D44M1D19M1D19M1I10M13I13M1D5M2I12M1I4M1D10M1I15M1I5M1D7M1D8M1I30M1I3M1I6M2D30M1I33M2D7M4D8M1I2M1I16M1I20M1D3M1I35M1D5M1I10M4I5M1I3M1I19M2D5M2D8M5D49M1I14M1D15M1D11M1D4M3I5M1I50M1D11M7D2M4D9M1D18M2D11M1D5M2D13M5D3M2I19M2D11M2D47M4D1M2D7M1D26M1I4M1I6M1I6M1D24M2D5M3I9M1I13M1D9M1D22M1I3M1D12M1D4M4I32M1D2M2D15M3I3M1I10M1I7M1I11M1D4M1I3M7D2M1I11M1D4M1D1M2D9M8D15M1D9M1D44M1I4M2I10M1I15M1D23M5D4M2I7M4D14M1I10M2D35M1D5M3I25M1I17M1D18M5I5M2D15M2I21M1I1M1I55M7D11M1I5M1D13M2D13M1D12M1I18M1D9M3D29M1D5M1I11M2D11M1D4M4D13M1I10M3D83M1I24M1I6M2I4M1D5M1I6M1I34M1I4M2I11M1I4M2I47M10D7M1I40M3I11M2D39M1D19M1D2M1D3M1I22M2D17M2D4M1I2M1D7M1D27M1D7M1D17M1D7M1D15M1I8M1D3M1D1M1D44M1D1M3I4M1D2M1D19M1I15M1D6M4I28M1D8M1I13M1D4M1I11M1I19M2D69M1D43M4I24M1I25M2D13M2D16M1I4M1I8M1I42M1D11M1D7M3I1M2I1M5I14M2I2M1D28M1I5M1D25M1I46M7D8M2D30M1D4M1D19M1I22M1D30M1I10M5D7M1D5M1D3M2D12M11I3M1D7M8I2M6I2M3I7M2I4M1D1M2I5M1I18M2D1M1D1M1D4M1D10M3D18M1D27M2I5M1D6M1I7M2D7M22I30M1I31M1I19M2D46M1D3M1D27M6I13M1D37M1D12M2I14M28D3M1D3M1I18M6D25M1D8M1I9M2I17M1I2M4D10M1D44M1D6M1I14M3D10M2I7M1I10M2D9M15D18M1I13M1D15M1I25M1I13M1D1M1D18M5D17M1I16M1I16M1D29M1D24M1I17M1I15M2D10M1D11M3I3M1D2M1I50M11I2M2I2M1I1M2I1M1I9M1I18M2D41M1D26M1D25M1D22M4I6M2I2M13I23M1I11M1I25M1I7M3D9M1D4M1I16M1D4M1I2M1D6M1D20M1I37M2I42M1D3M1I47M1I11M1I3M1I14M1I7M1I19M7I11M3I10M2D7M1D11M1I48M1D2M1D10M4D2M1D18M1I67M2I4M4I6M1I17M1D6M2D23M1I9M1I1M3I8M1I14M2I2M3D6M4I9M1I5M5I22M1I6M2I25M8I1M2I4M1I2M4I31M2D7M1D11M11I16M2I11M2I14M1I8M2I3M1D21M1D6M2D1M1D6M1I27M1I1M1I33M1I21M2I1M1I8M1I5M2I6M1I8M1D34M1I3M4D7M1D2M1D16M1D1M1D46M1I12M1D7M1D31M6D10M1D1M1D1M1D5M11D10M1D19M1I22M1I10M1I11M1D8M1D24M1I6M2D7M3I2M1I17M1D24M1D2M4I19M1D14M2I17M1I9M3D16M1I10M1I25M1D26M11I3M2I5M1I2M8I30M2D15M2D13M1I6M5I5M3I17M2I17M2D18M2I11M1D11M2D3M1I18M1I9M1D8M1D16M1I2M1I13M3I1M1I10M1I11M1D8M3I3M1D26M1I4M2I8M1I3M2I4M1D4M2D11M1I10M1I4M1I8M6I1M1I5M7I2M1I5M8I3M2I13M4D1M1D17M1I21M1I22M1D10M1I41M1D2M1D2M1D5M1I41M1I29M1D5M1I5M1D8M1D15M1I9M1I22M1I29M4I7M1D9M1I8M1D32M2I15M1D15M1D23M1D7M10D19M1I38M1D7M1D4M1D16M28I29M7I28M1I52M2D6M1D1M1D1M1D3M1D25M2I15M1D9M5I6M1I12M1D6M1D4M2D11M5I1M2I1M4I15M3D11M3I4M1D8M1I40M6D12M1I17M1I9M5I1M1I2M1I25M1D23M2I9M1I11M1D3M2I28M1D12M1D17M15D10M1I9M1D2M1D8M4D11M1I9M1D6M1D8M1D40M2I3M2D8M1I11M1I16M1I6M1D7M1D34M2D27M1D5M1I3M2I39M1D30M1I22M1D10M3I61M2D19M2D6M1I7M1D23M1D4M1I3M1I6M2D12M2I11M14D13M1I6M4D9M2I11M1D17M1D4M1I8M1I3M1D4M1D35M1I47M1I17M1D7M1D2M1D25M1D13M1I3M1I18M1D13M2I10M2D19M2D6M1I6M1D7M1D11M1D6M3I2M1I11M1D6M1I17M12D1M1D2M1D9M1I1M1I7M7D4M1D9M8D12M1D37M1D25M4D1M1I7M3I13M1D4M1I2M1I43M1I11M1D4M1D6M1I31M2D38M2I12M2I6M2D39M1D19M6D1M1D12M1I16M1I50M1I40M1I24M1D4M2I5M1I5M2D13M2D4M7I2M2I2M7I1M3I15M1D8M1I10M10I41M1D34M1D10M1I11M1D3M3I7M3D23M9I47M2I19M1D36M42I2M1D3M1I3M1I7M1I5M3I6M1I16M1I13M1I39M14D7M1D16M1I19M1I14M1I8M1D34M2D3M1I6M1I12M2D3M1I10M2D1M1I6M39I2M2I16M2D3M2D3M1I23M1I14M3I3M2I6M3I2M1I1M1I10M1I25M1D17M2D33M2I2M1D7M1D36M2I13M1D9M1I6M3D11M1D2M1I8M1I21M1D34M1I12M2D3M1D8M4D11M1I59M5I18M2D11M1D4M7I26M2D77M5I11M1D16M2I6M5D19M1I13M1I1M2I23M1I6M2D11M1I35M1I10M1D14M1I30M1I12M38I2M1I3M1D2M1D5M2I7M1D1M2D3M1D57M1D31M1D9M1D63M1D40M2D3M1D25M1D4M2D21M15D10M1D30M2I3M2I6M2I15M1D6M1D48M2D27M1I6M1I77M2I3M1D22M3I20M1D14M1D29M1D16M1I20M1I5M30I25M6I7M1D17M1D5M14I16M1D3M1I15M1I41M1I13M1D13M1I5M2I19M2D6M1I29M1D2M2I16M1I6M1I8M1D4M9D13M3I10M1D16M4I27M1I1M3I6M2D9M5D38M1I3M2I1M1I4M2D5M1D24M1I18M1D3M5I2M3I3M1D3M1I1M1I5M1I4M1I11M5I3M8I6M1D3M2I5M1I11M1D19M1D1M1D15M1D3M1I15M1I5M3I1M1I12M1I23M1I1M1I6M4D2M4D9M1D17M1D4M1I18M3D7M1D51M11I11M1I12M3I17M1I14M2D12M4D10M1I26M1D45M1D3M1I15M2D11M1D28M1D4M2I9M1D31M3D15M1D11M1I3M4D10M1D21M1I31M8D23M4D24M1I13M5D19M2I1M1I5M10I10M1D23M1D20M2D32M1I5M1I23M1I9M1D14M1D22M1I6M1I19M3D14M1D18M1I10M1I7M1I14M1I46M1I7M21D5M1I17M3I2M4I7M1I16M1D2M1D14M1D3M1D4M1D16M2D42M1D7M1D17M5I1M1I29M13I24M1D3M8D5M12D9M1D23M1I8M +tctgA 49186 2214 15925 + ctgA 50001 2212 16198 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1I4M2I21M1I10M1I14M1I5M1D29M2D9M1I15M1I27M1I12M1D5M1I11M1D7M2I4M2D9M1D4M6D32M1D13M1I55M1I8M1I1M1I12M1I2M1D22M2I56M1D11M1I5M5I17M3I3M1I13M1D16M1I50M1I2M1I10M1D1M1D42M1D2M2D33M22I3M1I2M1I6M1D8M2D5M1D50M1D6M3D6M2D12M3I13M1D9M5D1M1D10M1I3M1D5M1I3M1I4M1I24M1I5M2D30M1D3M1I15M1D9M1I3M1I18M1I9M1D11M2D6M1I23M4D1M1D22M1I3M1I11M2D1M1D7M1D4M1D18M1I6M1I5M2D5M1I66M2I3M1D8M1I13M1I8M1I3M2D4M1D20M1I5M2I22M1I6M8I14M1I6M1D8M2D5M9D7M2I4M1D11M1I20M2D2M1I33M8I10M2I7M1I18M4I5M1D4M4D1M1D33M3I10M1D20M2D8M1D9M1I10M1D7M1I8M1D6M2I66M1I3M2I2M1I24M1D63M1I14M8I7M1I13M1D31M1I16M4D41M1D3M1D4M23I9M1D2M1D8M1I1M1I12M1I2M1I3M1D33M1I24M2I3M1I4M1I12M122D6M4D2M1D13M1I3M1D35M1I4M1I13M1D32M1D6M1I5M1I5M1D12M1D8M1D48M1I2M1D19M1D9M1I24M1D13M1D8M1I5M7I5M2D10M1I11M3I15M1I6M2I4M1I18M1D14M1D3M1D1M2D17M1D12M4D15M1I3M1D31M1D1M1D1M1D1M1D12M5I2M1D31M2I18M1D5M20D10M1I20M3D11M1I14M1I1M9I4M4I2M4I2M3I4M1D10M1D50M1I14M1I11M8I11M2D9M1I20M3I5M1I27M1D5M3I9M2I9M3D34M1I21M1D15M1I9M1I2M1I2M1I8M1I26M3D4M1D3M1I2M1I25M1I1M1I14M6I45M2I21M1I17M2D23M1D6M2I8M2D20M1I24M1D9M1I1M2D6M1D3M1D9M8I4M2I30M2D8M1D7M1I50M1I3M3I26M3D17M1D17M1D5M1D8M1I29M2D2M1I3M1I6M1D11M3I20M3I19M1I17M2I33M1D35M2D7M2D3M18D1M3D10M5D11M1D8M1D6M1I9M1I4M2D5M1D13M1D22M1D16M14I22M1D3M1I19M1D53M1I13M1I20M8I8M1I6M6D28M3D28M9D23M5D26M1I6M1D5M1D24M1I5M2I13M1I2M4I2M1I4M4I8M1I14M1I12M1I28M1I18M4I10M2D8M1I62M1I14M2I5M1I18M1D1M3I4M1I13M1D4M2I3M1D8M4D2M8D71M1I8M4I23M1I15M5D13M1D6M1D8M7I16M2I13M2D27M1D46M1I20M2D6M1I9M1D4M1I7M1D6M1I2M6I11M4D25M1I22M1D14M2D20M1D30M3I7M3D4M1I22M1D4M1D10M1D20M1I21M3I3M1I8M1D14M1I10M2I45M1D14M1D17M1D27M2D3M1I2M2I4M1D13M1D5M4I6M2I11M1I11M4I6M1I15M1I8M1I6M9I1M1I19M1I4M1I8M2D9M1I7M1D33M1D19M1D3M1D35M3D4M1D6M2D16M3D1M1D30M26D28M1D7M2I12M2D10M1I7M1D16M1D4M1I18M1I33M1I31M1I7M1I12M1D7M1D16M5I3M1I4M1D4M1D28M8D12M1D4M1D7M3D11M1D15M1D12M1I12M3I6M2D4M1D16M1I11M1D5M1D2M2I22M4D14M2I19M1D7M3I17M1I22M5D6M1D14M2D1M1D12M1I11M10I16M1D21M1D24M5D17M1D48M1D3M1D4M1D12M1D13M4D9M1I22M1I21M1I12M1D11M3D2M1D9M1I10M1D4M1I4M1D18M1I3M1D18M2D4M1I21M4D5M3I3M1D21M1I33M1D19M1I38M2I27M1I7M1I15M2I8M5D2M1D15M1I7M2I2M1I11M1D24M1I4M1D14M1I51M1D47M1D3M4D4M3D3M1I3M1D13M1D3M1I13M1I10M3I34M1D3M1I17M1D5M1I8M1D28M1I13M2I2M1I16M1D21M2I22M5I8M1I3M1I9M1D12M2D11M1I7M1I2M2D10M3I26M4D12M1D3M1D12M7I12M1I5M1D5M8D5M1D8M1I31M1D3M1D6M1I12M2D4M1D24M2I10M1I17M1D1M3D11M1D8M2D16M1D18M2D3M6D2M1D6M24D10M2I14M1I11M1I4M1D10M1I34M4I14M1D21M1D6M43D8M4D2M1D12M1D7M5D4M2I15M1D39M1D6M1I9M3D1M3D2M2D4M4D2M3D1M1D2M1D10M1I16M3D17M1I1M1I28M1D10M1D11M1D28M1D11M2I17M1I14M1I7M2D6M1D4M7D3M7D10M1I6M1I57M2D4M1D5M1D18M2I50M5I38M1D6M1D15M1D5M1I58M4I28M1I15M1D14M3I4M2D4M1I11M4D4M1D44M1I25M1I8M2D12M1I7M1D31M1D9M26I5M1I19M1D1M1D9M1D5M1D7M34I1M1I38M1I1M1I21M1D4M11D29M1D11M1D7M3I19M2I36M1D12M1I21M1I2M7I23M2I19M1I6M1I16M2I2M3D10M1D11M10I5M1I15M2D18M1I17M1I7M2D6M2I6M1D27M1I17M1I23M5I29M4D3M1I41M1D33M1D9M1D11M6I25M1D17M3D6M1I8M1I14M1D13M1D12M1I16M1I12M1I3M1D12M1I28M1D32M1D15M1I32M6I2M2I8M1D6M1D23M22I30M1I9M10D58M3I7M1D12M1I10M6I31M1D14M1I38M1I13M3D14M1D23M1I6M1I10M3I22M1I10M1I8M5I67M1I13M4D3M5D6M1I4M1I8M3D8M3I2M1I11M1D11M1I4M2I1M1I2M1I5M3I9M2D1M1D4M1D6M2D5M1D5M1I8M4D8M1I7M2I3M3D15M6D1M1D9M1D4M1D6M1D36M1D7M1D18M1I5M1D3M2I20M1D13M4I7M5I2M2I43M1I5M1D12M1I7M1D31M1I13M1D13M1I6M1D1M1D4M3D7M1D31M2D26M1I7M1I8M1D7M1I17M1D18M1I6M1D4M7D13M1I6M1D7M1I31M1D5M1I15M1D20M1I20M1I26M3I2M3I1M9I5M1I24M2D25M1D14M1D5M3D2M1I7M1I3M1I19M1I17M1I16M2I5M5D8M1I15M1I3M2I5M5I15M1D13M3D7M1D9M5I10M2D5M1I10M2I1M1I2M1I9M8I2M1D5M1I6M6D7M1I13M3I7M1I3M1D15M2D18M1D3M1D2M1D5M1D5M2I9M1I1M1I27M1I11M1D16M8I1M2I8M1I15M1I6M1I10M1D24M1D3M1D19M1I12M1I24M1D8M1D2M1D2M1I6M1D31M2I5M5D16M5I5M1I6M3D11M14D12M3I29M1I12M1I5M23I2M1I4M4I6M1D41M2I21M1D17M1D5M1D25M3I18M1D6M1D5M1D42M1I3M1D31M1I3M1D14M1D21M1I8M3D4M1I19M6D10M2I12M7I32M8I2M1D18M2D31M1D15M1I21M1I6M1I3M1I39M2I1M1D10M1D3M1I36M12D45M1D7M1I4M1I1M3I7M1I3M1D5M1D6M1D14M1D14M1I18M1D1M1D6M1I1M2D1M1D4M2D8M1D27M5I20M12D11M1D9M1D29M3D26M2D4M2D3M1I6M37D1M1D4M5D3M1D3M6D3M4D16M1D27M2D3M1D2M2D60M4D5M4I8M21D26M1D16M1D3M1I8M1D22M1I8M10D3M2D3M3D13M36D4M1D40M1I6M1I5M1I7M2I7M1I13M2I2M1D8M2I6M1I9M1I3M1D4M4I3M1D5M1I11M1D4M4D23M1I21M1I17M1D37M2I10M1D36M1D8M1D1M1D9M1I6M1D1M5D1M7D3M2D2M10D2M2D12M1I27M2I1M1D16M1D18M1D25M1D29M1I12M2I18M1I2M3I3M7I13M1D30M3D2M2D18M1D4M2D36M1I19M1D19M1I6M1I4M3D20M2D13M1I61M1I12M3D1M1D6M2D4M2D3M1I7M1D34M1I9M1D5M5D9M3D11M1D4M1I4M1I3M4D2M3D1M8D22M1I10M1D12M1D57M1D25M1D58M4I26M1I2M1I2M1I7M2I43M1I3M1D6M1D9M2D20M1D5M41D5M1D30M1D32M1D12M2I9M4I17M2D44M1D2M1I29M14I1M1I17M1I8M1D27M4I14M1D9M1D4M1I6M1D12M5D26M3I2M1I2M1I18M +qctgA 50001 2212 16198 + ctgA 49186 2214 15925 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1D4M2D21M1D10M1D14M1D5M1I29M2I9M1D15M1D27M1D12M1I5M1D11M1I7M2D4M2I9M1I4M6I32M1I13M1D55M1D8M1D1M1D12M1D2M1I22M2D56M1I11M1D5M5D17M3D3M1D13M1I16M1D50M1D2M1D10M1I1M1I42M1I2M2I33M22D3M1D2M1D6M1I8M2I5M1I50M1I6M3I6M2I12M3D13M1I9M5I1M1I10M1D3M1I5M1D3M1D4M1D24M1D5M2I30M1I3M1D15M1I9M1D3M1D18M1D9M1I11M2I6M1D23M4I1M1I22M1D3M1D11M2I1M1I7M1I4M1I18M1D6M1D5M2I5M1D66M2D3M1I8M1D13M1D8M1D3M2I4M1I20M1D5M2D22M1D6M8D14M1D6M1I8M2I5M9I7M2D4M1I11M1D20M2I2M1D33M8D10M2D7M1D18M4D5M1I4M4I1M1I33M3D10M1I20M2I8M1I9M1D10M1I7M1D8M1I6M2D66M1D3M2D2M1D24M1I63M1D14M8D7M1D13M1I31M1D16M4I41M1I3M1I4M23D9M1I2M1I8M1D1M1D12M1D2M1D3M1I33M1D24M2D3M1D4M1D12M122I6M4I2M1I13M1D3M1I35M1D4M1D13M1I32M1I6M1D5M1D5M1I12M1I8M1I48M1D2M1I19M1I9M1D24M1I13M1I8M1D5M7D5M2I10M1D11M3D15M1D6M2D4M1D18M1I14M1I3M1I1M2I17M1I12M4I15M1D3M1I31M1I1M1I1M1I1M1I12M5D2M1I31M2D18M1I5M20I10M1D20M3I11M1D14M1D1M9D4M4D2M4D2M3D4M1I10M1I50M1D14M1D11M8D11M2I9M1D20M3D5M1D27M1I5M3D9M2D9M3I34M1D21M1I15M1D9M1D2M1D2M1D8M1D26M3I4M1I3M1D2M1D25M1D1M1D14M6D45M2D21M1D17M2I23M1I6M2D8M2I20M1D24M1I9M1D1M2I6M1I3M1I9M8D4M2D30M2I8M1I7M1D50M1D3M3D26M3I17M1I17M1I5M1I8M1D29M2I2M1D3M1D6M1I11M3D20M3D19M1D17M2D33M1I35M2I7M2I3M18I1M3I10M5I11M1I8M1I6M1D9M1D4M2I5M1I13M1I22M1I16M14D22M1I3M1D19M1I53M1D13M1D20M8D8M1D6M6I28M3I28M9I23M5I26M1D6M1I5M1I24M1D5M2D13M1D2M4D2M1D4M4D8M1D14M1D12M1D28M1D18M4D10M2I8M1D62M1D14M2D5M1D18M1I1M3D4M1D13M1I4M2D3M1I8M4I2M8I71M1D8M4D23M1D15M5I13M1I6M1I8M7D16M2D13M2I27M1I46M1D20M2I6M1D9M1I4M1D7M1I6M1D2M6D11M4I25M1D22M1I14M2I20M1I30M3D7M3I4M1D22M1I4M1I10M1I20M1D21M3D3M1D8M1I14M1D10M2D45M1I14M1I17M1I27M2I3M1D2M2D4M1I13M1I5M4D6M2D11M1D11M4D6M1D15M1D8M1D6M9D1M1D19M1D4M1D8M2I9M1D7M1I33M1I19M1I3M1I35M3I4M1I6M2I16M3I1M1I30M26I28M1I7M2D12M2I10M1D7M1I16M1I4M1D18M1D33M1D31M1D7M1D12M1I7M1I16M5D3M1D4M1I4M1I28M8I12M1I4M1I7M3I11M1I15M1I12M1D12M3D6M2I4M1I16M1D11M1I5M1I2M2D22M4I14M2D19M1I7M3D17M1D22M5I6M1I14M2I1M1I12M1D11M10D16M1I21M1I24M5I17M1I48M1I3M1I4M1I12M1I13M4I9M1D22M1D21M1D12M1I11M3I2M1I9M1D10M1I4M1D4M1I18M1D3M1I18M2I4M1D21M4I5M3D3M1I21M1D33M1I19M1D38M2D27M1D7M1D15M2D8M5I2M1I15M1D7M2D2M1D11M1I24M1D4M1I14M1D51M1I47M1I3M4I4M3I3M1D3M1I13M1I3M1D13M1D10M3D34M1I3M1D17M1I5M1D8M1I28M1D13M2D2M1D16M1I21M2D22M5D8M1D3M1D9M1I12M2I11M1D7M1D2M2I10M3D26M4I12M1I3M1I12M7D12M1D5M1I5M8I5M1I8M1D31M1I3M1I6M1D12M2I4M1I24M2D10M1D17M1I1M3I11M1I8M2I16M1I18M2I3M6I2M1I6M24I10M2D14M1D11M1D4M1I10M1D34M4D14M1I21M1I6M43I8M4I2M1I12M1I7M5I4M2D15M1I39M1I6M1D9M3I1M3I2M2I4M4I2M3I1M1I2M1I10M1D16M3I17M1D1M1D28M1I10M1I11M1I28M1I11M2D17M1D14M1D7M2I6M1I4M7I3M7I10M1D6M1D57M2I4M1I5M1I18M2D50M5D38M1I6M1I15M1I5M1D58M4D28M1D15M1I14M3D4M2I4M1D11M4I4M1I44M1D25M1D8M2I12M1D7M1I31M1I9M26D5M1D19M1I1M1I9M1I5M1I7M34D1M1D38M1D1M1D21M1I4M11I29M1I11M1I7M3D19M2D36M1I12M1D21M1D2M7D23M2D19M1D6M1D16M2D2M3I10M1I11M10D5M1D15M2I18M1D17M1D7M2I6M2D6M1I27M1D17M1D23M5D29M4I3M1D41M1I33M1I9M1I11M6D25M1I17M3I6M1D8M1D14M1I13M1I12M1D16M1D12M1D3M1I12M1D28M1I32M1I15M1D32M6D2M2D8M1I6M1I23M22D30M1D9M10I58M3D7M1I12M1D10M6D31M1I14M1D38M1D13M3I14M1I23M1D6M1D10M3D22M1D10M1D8M5D67M1D13M4I3M5I6M1D4M1D8M3I8M3D2M1D11M1I11M1D4M2D1M1D2M1D5M3D9M2I1M1I4M1I6M2I5M1I5M1D8M4I8M1D7M2D3M3I15M6I1M1I9M1I4M1I6M1I36M1I7M1I18M1D5M1I3M2D20M1I13M4D7M5D2M2D43M1D5M1I12M1D7M1I31M1D13M1I13M1D6M1I1M1I4M3I7M1I31M2I26M1D7M1D8M1I7M1D17M1I18M1D6M1I4M7I13M1D6M1I7M1D31M1I5M1D15M1I20M1D20M1D26M3D2M3D1M9D5M1D24M2I25M1I14M1I5M3I2M1D7M1D3M1D19M1D17M1D16M2D5M5I8M1D15M1D3M2D5M5D15M1I13M3I7M1I9M5D10M2I5M1D10M2D1M1D2M1D9M8D2M1I5M1D6M6I7M1D13M3D7M1D3M1I15M2I18M1I3M1I2M1I5M1I5M2D9M1D1M1D27M1D11M1I16M8D1M2D8M1D15M1D6M1D10M1I24M1I3M1I19M1D12M1D24M1I8M1I2M1I2M1D6M1I31M2D5M5I16M5D5M1D6M3I11M14I12M3D29M1D12M1D5M23D2M1D4M4D6M1I41M2D21M1I17M1I5M1I25M3D18M1I6M1I5M1I42M1D3M1I31M1D3M1I14M1I21M1D8M3I4M1D19M6I10M2D12M7D32M8D2M1I18M2I31M1I15M1D21M1D6M1D3M1D39M2D1M1I10M1I3M1D36M12I45M1I7M1D4M1D1M3D7M1D3M1I5M1I6M1I14M1I14M1D18M1I1M1I6M1D1M2I1M1I4M2I8M1I27M5D20M12I11M1I9M1I29M3I26M2I4M2I3M1D6M37I1M1I4M5I3M1I3M6I3M4I16M1I27M2I3M1I2M2I60M4I5M4D8M21I26M1I16M1I3M1D8M1I22M1D8M10I3M2I3M3I13M36I4M1I40M1D6M1D5M1D7M2D7M1D13M2D2M1I8M2D6M1D9M1D3M1I4M4D3M1I5M1D11M1I4M4I23M1D21M1D17M1I37M2D10M1I36M1I8M1I1M1I9M1D6M1I1M5I1M7I3M2I2M10I2M2I12M1D27M2D1M1I16M1I18M1I25M1I29M1D12M2D18M1D2M3D3M7D13M1I30M3I2M2I18M1I4M2I36M1D19M1I19M1D6M1D4M3I20M2I13M1D61M1D12M3I1M1I6M2I4M2I3M1D7M1I34M1D9M1I5M5I9M3I11M1I4M1D4M1D3M4I2M3I1M8I22M1D10M1I12M1I57M1I25M1I58M4D26M1D2M1D2M1D7M2D43M1D3M1I6M1I9M2I20M1I5M41I5M1I30M1I32M1I12M2D9M4D17M2I44M1I2M1D29M14D1M1D17M1D8M1I27M4D14M1I9M1I4M1D6M1I12M5I26M3D2M1D2M1D18M +tctgA 49186 18755 26306 + ctgA 50001 19011 26774 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1I43M1D4M7D2M7D13M2I3M1I7M1I19M1D5M1D32M1D5M2I63M4D20M5D50M2I12M1I16M3D8M1I19M2D38M1D28M7I2M1I5M4I1M1I3M2I2M1D25M1I10M1D2M1D19M1I5M1D32M1I8M5D4M8D7M1D1M1D26M2D16M2I6M7D14M4I2M1I3M2I4M1D32M6I8M1D12M1D10M1D24M4D2M1D43M1D22M1I11M1I30M2D31M1D19M1D2M1D10M3I48M1I26M4D11M1D4M1D11M2D4M1D18M7I8M1I10M1I2M1D61M1D4M1I18M1D13M3D3M2D5M8D47M1I30M3D6M1I44M2D14M1I40M9D1M2D24M1D16M39I5M1I38M3I22M4D35M1I19M1I19M1I26M1D4M1I10M4D39M1I10M2I10M1I10M1I3M1D1M5D16M1I13M1D11M1D25M1D21M8I22M4D11M1D9M5D17M1D73M1I36M6D4M1D19M1I52M1I15M24I1M1I2M2I15M1I2M6I2M1I28M1D41M4I46M4I14M1D7M21D4M1I20M1D2M1I15M1I3M1I29M1I20M5D37M2I9M1I16M1I24M1I22M3D1M2D47M1I6M1D6M1I19M1D18M1I1M1I18M1I3M1I2M1I5M35D8M1D13M1I7M4I31M1I6M1D83M2D1M1I26M1I15M1I3M2D5M2D12M1D42M1I1M2I12M4D2M4D6M26D8M3D1M1D2M4D9M1D30M2D3M2D28M1I4M1I41M1D18M1I41M1I12M1I19M4I35M5I31M4I31M1I3M1D11M1I25M2D2M3D30M1D5M1I8M1D22M1I7M1D32M1I29M6D1M7D10M3D1M1D5M1I15M7I18M2I10M4D42M1D15M1I13M1D5M1D2M2I38M1I9M2I7M3I20M1D15M1I5M1D3M1D8M2I12M1D10M1D3M1D6M1D30M1D94M1I18M1I4M5D3M1D29M1D2M1D2M1D5M1I4M1D13M1I9M6I10M1D6M1D12M2I5M2D1M1D11M2D1M1D10M5D9M8D17M1D35M1D4M1I16M5I1M1I9M8I21M23I2M1I38M1D1M1D8M1D27M1I42M1I9M2D1M1I5M1D23M2I5M1I28M1D25M1D24M1D5M1I21M1I4M4I7M1D7M1I25M21I5M1I4M1I42M2D26M1D7M1I10M1I1M1I19M10D4M1D14M1D42M8D28M3D2M3D13M1I17M1D11M1I22M1I19M1I1M4I9M2D2M1I14M8I9M2D9M1I13M2D11M3D2M2I5M1I3M1I6M3D10M1I9M1D21M1I5M2I9M2I10M1D3M2I9M1I21M3D23M1I8M1I3M1I26M1I33M8D7M1I9M10D10M1I7M1D52M10D13M1I6M2D39M1D6M1D26M1I4M1D4M32D24M1D21M2D1M1D7M1D1M1D15M1D5M1D24M2I1M1I6M1D2M1D19M35D41M3I6M3I15M2D3M1D14M2I9M3D19M2D26M1D30M1I6M3D32M1I5M1D36M1D8M1D2M2D2M1D6M3I3M7I2M2I17M1D12M1D6M1I40M3D28M2I2M2I21M1D4M1I9M1I4M1I31M2I11M1D31M1D3M2D3M5D7M4D7M1D6M1D6M8D4M1I1M2D19M3I14M1D7M1D12M1I4M3I2M4I11M1I8M1I17M1D11M1D3M1D15M17I8M3D42M1I17M1D25M1I15M1I11M2I7M1D23M4I14M2D20M1I9M3D2M1D17M1D34M1I3M1I4M1D13M1I2M1I6M1I6M1D12M2D1M4D2M4D4M1I16M36D6M1D32M1D27M1D4M1D2M1I11M20D16M3D4M1I16M1D27M1D14M1D21M2I14M1D10M3D5M2D3M3D2M1D1M4D5M1D2M3D7M1D7M1I9M1D5M1D4M1D16M1D9M9D1M1D2M1D4M1D3M2I6M2D5M1I22M1D3M1I8M1D8M3D43M1I4M1D31M1I17M3I8M2I12M6I13M1I16M1D11M2D4M1I5M2D2M2D2M1I29M1I12M2D13M1I7M14D1M1D3M5D10M1D12M5I19M1I10M1I3M7I2M14I3M9I13M2I5M1I13M1D4M1D18M1I3M1D28M1I5M4D35M1D23M3D11M2I8M1D17M1I9M1I23M4D4M1D9M1I3M1I26M1I5M3I1M1I14M1D42M1I5M16I15M1D28M4D5M1I5M1D4M1D11M2D5M1I4M1I3M1I9M +qctgA 50001 19011 26774 + ctgA 49186 18755 26306 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1D43M1I4M7I2M7I13M2D3M1D7M1D19M1I5M1I32M1I5M2D63M4I20M5I50M2D12M1D16M3I8M1D19M2I38M1I28M7D2M1D5M4D1M1D3M2D2M1I25M1D10M1I2M1I19M1D5M1I32M1D8M5I4M8I7M1I1M1I26M2I16M2D6M7I14M4D2M1D3M2D4M1I32M6D8M1I12M1I10M1I24M4I2M1I43M1I22M1D11M1D30M2I31M1I19M1I2M1I10M3D48M1D26M4I11M1I4M1I11M2I4M1I18M7D8M1D10M1D2M1I61M1I4M1D18M1I13M3I3M2I5M8I47M1D30M3I6M1D44M2I14M1D40M9I1M2I24M1I16M39D5M1D38M3D22M4I35M1D19M1D19M1D26M1I4M1D10M4I39M1D10M2D10M1D10M1D3M1I1M5I16M1D13M1I11M1I25M1I21M8D22M4I11M1I9M5I17M1I73M1D36M6I4M1I19M1D52M1D15M24D1M1D2M2D15M1D2M6D2M1D28M1I41M4D46M4D14M1I7M21I4M1D20M1I2M1D15M1D3M1D29M1D20M5I37M2D9M1D16M1D24M1D22M3I1M2I47M1D6M1I6M1D19M1I18M1D1M1D18M1D3M1D2M1D5M35I8M1I13M1D7M4D31M1D6M1I83M2I1M1D26M1D15M1D3M2I5M2I12M1I42M1D1M2D12M4I2M4I6M26I8M3I1M1I2M4I9M1I30M2I3M2I28M1D4M1D41M1I18M1D41M1D12M1D19M4D35M5D31M4D31M1D3M1I11M1D25M2I2M3I30M1I5M1D8M1I22M1D7M1I32M1D29M6I1M7I10M3I1M1I5M1D15M7D18M2D10M4I42M1I15M1D13M1I5M1I2M2D38M1D9M2D7M3D20M1I15M1D5M1I3M1I8M2D12M1I10M1I3M1I6M1I30M1I94M1D18M1D4M5I3M1I29M1I2M1I2M1I5M1D4M1I13M1D9M6D10M1I6M1I12M2D5M2I1M1I11M2I1M1I10M5I9M8I17M1I35M1I4M1D16M5D1M1D9M8D21M23D2M1D38M1I1M1I8M1I27M1D42M1D9M2I1M1D5M1I23M2D5M1D28M1I25M1I24M1I5M1D21M1D4M4D7M1I7M1D25M21D5M1D4M1D42M2I26M1I7M1D10M1D1M1D19M10I4M1I14M1I42M8I28M3I2M3I13M1D17M1I11M1D22M1D19M1D1M4D9M2I2M1D14M8D9M2I9M1D13M2I11M3I2M2D5M1D3M1D6M3I10M1D9M1I21M1D5M2D9M2D10M1I3M2D9M1D21M3I23M1D8M1D3M1D26M1D33M8I7M1D9M10I10M1D7M1I52M10I13M1D6M2I39M1I6M1I26M1D4M1I4M32I24M1I21M2I1M1I7M1I1M1I15M1I5M1I24M2D1M1D6M1I2M1I19M35I41M3D6M3D15M2I3M1I14M2D9M3I19M2I26M1I30M1D6M3I32M1D5M1I36M1I8M1I2M2I2M1I6M3D3M7D2M2D17M1I12M1I6M1D40M3I28M2D2M2D21M1I4M1D9M1D4M1D31M2D11M1I31M1I3M2I3M5I7M4I7M1I6M1I6M8I4M1D1M2I19M3D14M1I7M1I12M1D4M3D2M4D11M1D8M1D17M1I11M1I3M1I15M17D8M3I42M1D17M1I25M1D15M1D11M2D7M1I23M4D14M2I20M1D9M3I2M1I17M1I34M1D3M1D4M1I13M1D2M1D6M1D6M1I12M2I1M4I2M4I4M1D16M36I6M1I32M1I27M1I4M1I2M1D11M20I16M3I4M1D16M1I27M1I14M1I21M2D14M1I10M3I5M2I3M3I2M1I1M4I5M1I2M3I7M1I7M1D9M1I5M1I4M1I16M1I9M9I1M1I2M1I4M1I3M2D6M2I5M1D22M1I3M1D8M1I8M3I43M1D4M1I31M1D17M3D8M2D12M6D13M1D16M1I11M2I4M1D5M2I2M2I2M1D29M1D12M2I13M1D7M14I1M1I3M5I10M1I12M5D19M1D10M1D3M7D2M14D3M9D13M2D5M1D13M1I4M1I18M1D3M1I28M1D5M4I35M1I23M3I11M2D8M1I17M1D9M1D23M4I4M1I9M1D3M1D26M1D5M3D1M1D14M1I42M1D5M16D15M1I28M4I5M1D5M1I4M1I11M2I5M1D4M1D3M1D9M +tctgA 49186 16409 18309 + ctgA 50001 16650 18559 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5D3M3I13M1D9M1D5M2I5M8D39M1I36M2D33M1D22M1D10M2I8M1D5M1D16M6D5M2D11M2I12M1I7M1I3M3I3M1D3M1I13M1D21M1I4M2I1M1D14M1I12M1I2M1D12M6I5M1D19M10D28M1D26M1D41M1I11M1D9M1I9M4D15M6D13M1D25M5D3M1I27M2D7M1D17M7D18M2I16M1I12M1D22M2I5M12D5M7D2M1D13M1I13M2D2M1I15M1I19M1D17M1I58M1I8M11I8M1I6M2D6M1D2M1I8M2D4M15D6M1D1M2I8M3I25M1D21M1I43M1I6M1D12M2I10M14I5M1D19M3D4M1I95M2D16M2I9M3I8M1I3M1D3M4D1M1D5M3D14M1I7M1I6M2I40M1I1M2I5M1D5M1I11M7D25M10I16M1I2M2D21M1D4M1D4M1D15M2D3M1I13M13I28M2D5M1I33M1I11M1D36M1D19M1I22M1D18M1I1M1I12M1D6M9D11M2D4M1I5M10D16M5I21M1D5M1I11M37I13M3I4M1D9M1I3M1I12M1I58M1D14M +qctgA 50001 16650 18559 + ctgA 49186 16409 18309 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5I3M3D13M1I9M1I5M2D5M8I39M1D36M2I33M1I22M1I10M2D8M1I5M1I16M6I5M2I11M2D12M1D7M1D3M3D3M1I3M1D13M1I21M1D4M2D1M1I14M1D12M1D2M1I12M6D5M1I19M10I28M1I26M1I41M1D11M1I9M1D9M4I15M6I13M1I25M5I3M1D27M2I7M1I17M7I18M2D16M1D12M1I22M2D5M12I5M7I2M1I13M1D13M2I2M1D15M1D19M1I17M1D58M1D8M11D8M1D6M2I6M1I2M1D8M2I4M15I6M1I1M2D8M3D25M1I21M1D43M1D6M1I12M2D10M14D5M1I19M3I4M1D95M2I16M2D9M3D8M1D3M1I3M4I1M1I5M3I14M1D7M1D6M2D40M1D1M2D5M1I5M1D11M7I25M10D16M1D2M2I21M1I4M1I4M1I15M2I3M1D13M13D28M2I5M1D33M1D11M1I36M1I19M1D22M1I18M1D1M1D12M1I6M9I11M2I4M1D5M10I16M5D21M1I5M1D11M37D13M3D4M1I9M1D3M1D12M1D58M1I14M +tctgA 49186 3 1851 + ctgA 50001 0 1859 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1I16M1I5M3I33M1D14M3D7M1D25M2I5M2I4M1D17M3D11M1D5M3D3M1I15M3I1M2I6M1I2M6D6M2D24M1I3M2D29M1I2M1I3M1I6M1I10M2D8M19D33M1D23M2D9M1D11M1I6M1D5M1D28M1I13M1D5M1I2M1I49M5D6M2I21M1D1M2D2M2D4M4I4M1I5M1I3M1D2M1I4M37D17M2I16M6D5M3D3M6D16M5I4M8I5M4I1M1I52M2D2M1I5M28D33M1D17M2I2M2D31M42I5M1I9M1I7M1D8M1I40M1I39M1I2M1D3M2I11M2I6M2I10M1D14M1I12M1I16M1D6M3I6M2I4M1I1M1I27M1I3M10I3M2D11M3D3M1I35M1I1M3D3M2D19M3D9M4D23M1I3M1I28M1I52M1I28M1D20M2I66M1I3M2I7M1D7M2D9M1D11M1D11M1D7M1I3M1I30M1D11M1D15M2I7M3D3M1I12M6I35M1D4M1D17M1D15M1I5M1D4M1I5M1I3M5D10M1D2M1D8M7I13M5I9M1D4M1I45M6I4M1I19M2D16M1D1M2I23M7I11M1I19M1D13M +qctgA 50001 0 1859 + ctgA 49186 3 1851 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1D16M1D5M3D33M1I14M3I7M1I25M2D5M2D4M1I17M3I11M1I5M3I3M1D15M3D1M2D6M1D2M6I6M2I24M1D3M2I29M1D2M1D3M1D6M1D10M2I8M19I33M1I23M2I9M1I11M1D6M1I5M1I28M1D13M1I5M1D2M1D49M5I6M2D21M1I1M2I2M2I4M4D4M1D5M1D3M1I2M1D4M37I17M2D16M6I5M3I3M6I16M5D4M8D5M4D1M1D52M2I2M1D5M28I33M1I17M2D2M2I31M42D5M1D9M1D7M1I8M1D40M1D39M1D2M1I3M2D11M2D6M2D10M1I14M1D12M1D16M1I6M3D6M2D4M1D1M1D27M1D3M10D3M2I11M3I3M1D35M1D1M3I3M2I19M3I9M4I23M1D3M1D28M1D52M1D28M1I20M2D66M1D3M2D7M1I7M2I9M1I11M1I11M1I7M1D3M1D30M1I11M1I15M2D7M3I3M1D12M6D35M1I4M1I17M1I15M1D5M1I4M1D5M1D3M5I10M1I2M1I8M7D13M5D9M1I4M1D45M6D4M1D19M2I16M1I1M2D23M7D11M1D19M1I13M +tctgA 49186 18309 18754 - ctgA 50001 18559 19001 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:5M1I15M2I30M1D20M1D13M2D2M1D14M8I11M1D18M1I7M1I56M1D33M1D52M2D7M1I19M7D26M1I9M2I10M1I27M1D18M1I15M2I17M +qctgA 50001 18559 19001 - ctgA 49186 18309 18754 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:17M2D15M1D18M1I27M1D10M2D9M1D26M7I19M1D7M2I52M1I33M1I56M1D7M1D18M1I11M8D14M1I2M2I13M1I20M1I30M2D15M1D5M +tctgA 49186 1860 2214 - ctgA 50001 1859 2192 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:14M1D4M1D3M1D9M1I12M5D20M2I43M1I10M1I7M2D2M1D8M1I30M1I9M1I2M1I6M15I39M2I16M4I2M1I35M1I2M1I6M1D42M +qctgA 50001 1859 2192 - ctgA 49186 1860 2214 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:42M1I6M1D2M1D35M1D2M4D16M2D39M15D6M1D2M1D9M1D30M1D8M1I2M2I7M1D10M1D43M2D20M5I12M1D9M1I3M1I4M1I14M " `; diff --git a/products/jbrowse-cli/src/commands/add-track.ts b/products/jbrowse-cli/src/commands/add-track.ts index 0dc2031f4c..27a5ccbd86 100644 --- a/products/jbrowse-cli/src/commands/add-track.ts +++ b/products/jbrowse-cli/src/commands/add-track.ts @@ -268,6 +268,7 @@ export default class AddTrack extends JBrowseCommand { if ( [ 'PAFAdapter', + 'PairwiseIndexedPAFAdapter', 'DeltaAdapter', 'ChainAdapter', 'MashMapAdapter', @@ -276,6 +277,7 @@ export default class AddTrack extends JBrowseCommand { ].includes(adapter.type) ) { // @ts-expect-error + // this is for the adapter's assembly names adapter.assemblyNames = assemblyNames.split(',').map(a => a.trim()) } @@ -425,7 +427,8 @@ export default class AddTrack extends JBrowseCommand { } else if ( /\.gff3?\.b?gz$/i.test(location) || /\.vcf\.b?gz$/i.test(location) || - /\.bed\.b?gz$/i.test(location) + /\.bed\.b?gz$/i.test(location) || + /\.ppaf\.b?gz$/i.test(location) ) { return { file: location, @@ -543,6 +546,15 @@ export default class AddTrack extends JBrowseCommand { type: 'BedAdapter', bedLocation: makeLocation(location), } + } else if (/\.ppaf\.b?gz$/i.test(location)) { + return { + type: 'PairwiseIndexedPAFAdapter', + ppafGzLocation: makeLocation(location), + index: { + location: makeLocation(index || `${location}.tbi`), + indexType: index?.toUpperCase().endsWith('CSI') ? 'CSI' : 'TBI', + }, + } } else if (/\.bed\.b?gz$/i.test(location)) { return { type: 'BedTabixAdapter', @@ -657,6 +669,7 @@ export default class AddTrack extends JBrowseCommand { DeltaAdapter: 'SyntenyTrack', ChainAdapter: 'SyntenyTrack', MashMapAdapter: 'SyntenyTrack', + PairwiseIndexedPAFAdapter: 'SyntenyTrack', MCScanAnchorsAdapter: 'SyntenyTrack', MCScanSimpleAnchorsAdapter: 'SyntenyTrack', } diff --git a/products/jbrowse-cli/src/commands/process-paf.test.ts b/products/jbrowse-cli/src/commands/process-paf.test.ts index dac2e56686..7c6ab47434 100644 --- a/products/jbrowse-cli/src/commands/process-paf.test.ts +++ b/products/jbrowse-cli/src/commands/process-paf.test.ts @@ -10,12 +10,14 @@ const base = path.join(__dirname, '..', '..', 'test', 'data') const simplePaf = path.join(base, 'volvox_inv_indels.paf') describe('process-paf', () => { - setup.command(['process-paf', simplePaf]).it('processes volvox paf', ctx => { - let res = '' - for (const obj of ctx.stdoutWrite.mock.calls) { - res += obj[0] - } - expect(res.split('\n').length).toMatchSnapshot() - expect(res).toMatchSnapshot() - }) + setup + .command(['process-paf', simplePaf]) + .it('processes volvox paf', async ctx => { + let res = '' + for (const obj of ctx.stdout) { + res += obj[0] + } + expect(res.split('\n').length).toBe(15) + expect(res).toMatchSnapshot() + }) }) diff --git a/products/jbrowse-cli/src/commands/process-paf.ts b/products/jbrowse-cli/src/commands/process-paf.ts index 154011a82f..0d8cef380e 100644 --- a/products/jbrowse-cli/src/commands/process-paf.ts +++ b/products/jbrowse-cli/src/commands/process-paf.ts @@ -3,6 +3,7 @@ import JBrowseCommand from '../base' import readline from 'readline' import { createGunzip } from 'zlib' +import { Args } from '@oclif/core' function getReadline(filename: string) { const stream = fs.createReadStream(filename) @@ -47,27 +48,20 @@ export default class ProcessPAF extends JBrowseCommand { '$ jbrowse process-paf file.paf > output.ppaf', ] - static args = [ - { - name: 'track', + static args = { + track: Args.string({ required: true, description: `Track file or URL`, - }, - ] + }), + } async run() { - const { args: runArgs } = this.parse(ProcessPAF) - + const { args: runArgs } = await this.parse(ProcessPAF) const { track: filename } = runArgs const rl1 = getReadline(filename) for await (const line of rl1) { - this.log(`q${line}`) - } - rl1.close() - - const rl2 = getReadline(filename) - for await (const line of rl2) { + process.stdout.write(`t${line}\n`) const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') const cigarIdx = rest.findIndex(f => f.startsWith('cg:Z')) @@ -80,10 +74,11 @@ export default class ProcessPAF extends JBrowseCommand { }` } - this.log( - [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t'), + process.stdout.write( + [`q${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t') + + '\n', ) } - rl2.close() + rl1.close() } } diff --git a/test_data/hs1_vs_mm39/config.json b/test_data/hs1_vs_mm39/config.json index 8b31c9381c..15b8e1ff2b 100644 --- a/test_data/hs1_vs_mm39/config.json +++ b/test_data/hs1_vs_mm39/config.json @@ -76,10 +76,10 @@ } } }, - { "type": "FeatureTrack", "trackId": "ncbiRefSeq", + "category": ["Annotation"], "name": "ncbiRefSeq", "adapter": { "type": "BigBedAdapter", @@ -92,8 +92,8 @@ }, { "type": "SyntenyTrack", - "trackId": "liftover", - "name": "liftover", + "trackId": "hs1ToMm39.over.chain", + "name": "hs1ToMm39.over.chain", "adapter": { "type": "ChainAdapter", "chainLocation": { @@ -107,23 +107,24 @@ }, { "type": "SyntenyTrack", - "trackId": "liftover_pairwise_paf", - "name": "liftover_pairwise_paf", + "trackId": "hs1ToMm39.over.chain.ppaf", + "name": "hs1ToMm39.over.chain.ppaf", "adapter": { "type": "PairwiseIndexedPAFAdapter", - "pafGzLocation": { - "uri": "https://s3.amazonaws.com/jbrowse.org/genomes/hs1_vs_mm39/hs1_vs_mm39.paf.gz" + "ppafGzLocation": { + "uri": "https://s3.amazonaws.com/jbrowse.org/genomes/hs1_vs_mm39/hs1ToMm39.over.chain.ppaf.gz", + "locationType": "UriLocation" }, "index": { "location": { - "uri": "https://s3.amazonaws.com/jbrowse.org/genomes/hs1_vs_mm39/hs1_vs_mm39.paf.gz.tbi" - } + "uri": "https://s3.amazonaws.com/jbrowse.org/genomes/hs1_vs_mm39/hs1ToMm39.over.chain.ppaf.gz.tbi", + "locationType": "UriLocation" + }, + "indexType": "TBI" }, - - "targetAssembly": "hs1", - "queryAssembly": "mm39" + "assemblyNames": ["mm39", "hs1"] }, - "assemblyNames": ["hs1", "mm39"] + "assemblyNames": ["mm39", "hs1"] } ] } From 3795f733472dfa1c267ef119e758a46825b564e5 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 4 Dec 2023 20:45:42 -0500 Subject: [PATCH 05/12] Misc --- plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts | 6 +++++- .../PairwiseIndexedPAFAdapter.ts | 2 +- products/jbrowse-cli/src/commands/process-paf.ts | 8 ++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts b/plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts index ee76e3462a..f87863e5c8 100644 --- a/plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts +++ b/plugins/comparative-adapters/src/PAFAdapter/PAFAdapter.ts @@ -104,6 +104,9 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { // adapter in the subadapters list const { start: qstart, end: qend, refName: qref, assemblyName } = query const index = assemblyNames.indexOf(assemblyName) + + // if the getFeatures::query is on the query assembly, flip orientation + // of data const flip = index === 0 if (index === -1) { console.warn(`${assemblyName} not found in this adapter`) @@ -118,7 +121,8 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { let mateName = '' let mateStart = 0 let mateEnd = 0 - if (index === 0) { + + if (flip) { start = r.qstart end = r.qend refName = r.qname diff --git a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts index 7d2f23262f..90ec462bbd 100644 --- a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts +++ b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts @@ -84,7 +84,7 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { const assemblyNames = this.getAssemblyNames() const index = assemblyNames.indexOf(assemblyName) const flip = index === 0 - const letter = flip ? 't' : 'q' + const letter = flip ? 'q' : 't' await this.ppaf.getLines(letter + query.refName, query.start, query.end, { lineCallback: (line, fileOffset) => { diff --git a/products/jbrowse-cli/src/commands/process-paf.ts b/products/jbrowse-cli/src/commands/process-paf.ts index 0d8cef380e..a059885301 100644 --- a/products/jbrowse-cli/src/commands/process-paf.ts +++ b/products/jbrowse-cli/src/commands/process-paf.ts @@ -61,8 +61,12 @@ export default class ProcessPAF extends JBrowseCommand { const rl1 = getReadline(filename) for await (const line of rl1) { - process.stdout.write(`t${line}\n`) const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') + + process.stdout.write( + [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t') + + '\n', + ) const cigarIdx = rest.findIndex(f => f.startsWith('cg:Z')) const CIGAR = rest[cigarIdx] @@ -75,7 +79,7 @@ export default class ProcessPAF extends JBrowseCommand { } process.stdout.write( - [`q${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t') + + [`q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...rest].join('\t') + '\n', ) } From d28d55ebc5800e7dbfddb1b6922176230d917a2a Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 4 Dec 2023 20:53:19 -0500 Subject: [PATCH 06/12] Mis --- products/jbrowse-cli/README.md | 36 +++++++++++++++---- .../__snapshots__/process-paf.test.ts.snap | 28 +++++++-------- .../jbrowse-cli/src/commands/process-paf.ts | 31 +++++++++++----- products/jbrowse-cli/src/commands/sort-gff.ts | 6 +++- 4 files changed, 72 insertions(+), 29 deletions(-) diff --git a/products/jbrowse-cli/README.md b/products/jbrowse-cli/README.md index 52e64aad18..a94f22cc53 100644 --- a/products/jbrowse-cli/README.md +++ b/products/jbrowse-cli/README.md @@ -54,7 +54,7 @@ It is likely preferable in most cases to install the tools globally with - [`jbrowse admin-server`](#jbrowse-admin-server) - [`jbrowse create LOCALPATH`](#jbrowse-create-localpath) - [`jbrowse help [COMMANDS]`](#jbrowse-help-commands) -- [`jbrowse process-paf TRACK`](#jbrowse-process-paf-track) +- [`jbrowse process-paf [TRACK]`](#jbrowse-process-paf-track) - [`jbrowse remove-track TRACK`](#jbrowse-remove-track-track) - [`jbrowse set-default-session`](#jbrowse-set-default-session) - [`jbrowse sort-gff FILE`](#jbrowse-sort-gff-file) @@ -479,16 +479,19 @@ DESCRIPTION _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.20/src/commands/help.ts)_ -## `jbrowse process-paf TRACK` +## `jbrowse process-paf [TRACK]` Pairwise index the PAF ``` USAGE - $ jbrowse process-paf TRACK + $ jbrowse process-paf [TRACK] [-h] ARGUMENTS - TRACK Track file or URL + TRACK Track file or URL (optional, stdin if not specified) + +FLAGS + -h, --help Show CLI help. DESCRIPTION Pairwise index the PAF @@ -496,7 +499,25 @@ DESCRIPTION EXAMPLES # processes a local PAF file into our custom format PPAF, which pairwise indexes the PAF - $ jbrowse process-paf file.paf > output.ppaf + + + # read from stdin. could also pipe directly from minimap2 here + + $ cat file.paf | jbrowse process-paf | sort -k1,1 -k3,3n | bgzip > out.ppaf.gz + + $ tabix out.ppaf.gz + + $ jbrowse add-track out.ppaf.gz -a mm39,hg38 + + + + # read from file instead of stdin + + $ jbrowse process-paf file.paf | sort -k1,1 -k3,3n | bgzip > out.ppaf.gz + + $ tabix out.ppaf.gz + + $ jbrowse add-track out.ppaf.gz -a mm39,hg38 ``` _See code: @@ -577,11 +598,14 @@ sort and grep ``` USAGE - $ jbrowse sort-gff FILE + $ jbrowse sort-gff FILE [-h] ARGUMENTS FILE GFF file +FLAGS + -h, --help Show CLI help. + DESCRIPTION Helper utility to sort GFF files for tabix. Moves all lines starting with # to the top of the file, and sort by refname and start position using unix utilities sort and grep diff --git a/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap b/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap index 5c802aaca1..610243d7a6 100644 --- a/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap +++ b/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap @@ -1,19 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`process-paf processes volvox paf 1`] = ` -"tctgA 49186 26805 49184 + ctgA 50001 27258 50001 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3D58M1I4M1I3M2D20M3I2M1D42M15D1M1D15M6D2M4D24M1D10M1D64M1D62M1I11M2D10M4D23M1I25M4I23M1I20M2D3M1I7M10I7M1I4M1I5M1I15M10I21M1D3M3I6M1D12M1I6M1D30M1I5M1I6M9D4M1D33M1D2M1D8M1D3M1I5M5I25M2I10M1I34M1I6M5D4M4D6M1D34M1D13M1I25M2D19M1I25M1D1M2I24M1I3M1I20M1D2M1I7M1I3M2I6M4I14M2D29M1D3M2D7M1D4M1D6M2D8M4I30M1I8M4D18M1I7M1D3M1D1M1D9M1D11M3D21M5I6M1D1M1D2M1I5M4I27M1I19M1D7M1D9M5I50M1D3M7D33M1D5M1D2M1D32M34D1M1D6M3I40M1D21M2I33M1I2M1I14M1D4M2D17M1I30M1D9M1I53M1D22M1I5M1I6M2D13M4I19M2D6M2I3M1I15M3D4M1I15M1I3M1D8M7I1M1I56M3D12M1D17M1D5M1D52M7D13M1D2M1D4M1I2M3D9M1D18M1I9M6D9M1I1M2D5M1I6M2D3M3D1M2D3M2D17M2D11M5D4M4D12M1D6M1D9M2D3M1I12M1I7M1I17M1I6M1I13M1I15M2I19M2D6M2I2M1I9M2D20M12I12M1D35M3D6M1I23M3D7M1I8M2D7M1I10M1I41M2I20M1D34M1I2M1I10M1I12M2D10M1D13M13D18M1I27M2D13M2I26M3D4M1D9M2I5M3D39M1D19M1D9M1I12M2D33M1D22M1I31M1I28M1D11M2I5M1D22M1D3M27D38M1I8M1D8M1I29M5D8M1I46M1I18M1D6M1D61M1D16M6D4M3D13M1D19M5D4M1D5M2D6M6D4M7D7M1D7M1D7M1I41M5I3M1I11M1D17M1I3M1I3M1I5M1D11M2I30M5I4M1I6M1D18M1D10M1D50M1I8M1I16M1D9M26D11M1I44M1D19M1I9M2D2M1I18M1D8M15I19M1D13M1I8M1I6M1I4M3I7M1D4M1D3M1I2M1I3M3D1M1D20M1I15M1D11M1D22M2I41M2D12M1I7M2D6M8D3M7D2M2D27M1D19M1D2M1D41M1I13M1D38M1D11M4D7M1I14M1D1M3D37M1D2M1D4M1D3M4D2M1D21M1D18M1I11M2D13M1I23M25I15M1I2M1I3M7I18M1I35M1D11M1I5M1I45M4D5M1D7M1D6M1D35M1I34M2I9M1D6M1I47M1I10M1I34M1I5M1D6M1I1M1I4M8I28M3D6M1I19M1D18M1I7M5D5M1D22M1D3M2I5M12D8M1I71M2I23M1I6M1D3M2D5M2I12M1D12M1I24M1D14M1I3M1D24M1D26M22D42M1D9M1I1M1I9M1D6M1D12M1I6M3D17M12D7M1I11M2I19M1D17M1D17M2I2M2I9M2D10M1D6M2D29M1D3M1D19M1I4M3I8M1I1M2I55M1I43M3I42M1I33M22I22M1D3M1D24M1I40M1D21M1D2M1I5M1D2M1D18M1D20M2D12M1I22M1I4M4I84M1I21M1I35M1D3M4D13M1I5M1I10M4I11M1D20M1D5M1D16M1I14M1D8M1I58M1I9M1I5M26I6M1D30M2I7M1I9M1D9M1I38M5I1M2I8M2I14M2D1M2D13M1D2M1I12M1D21M1D8M1D17M2I4M4I7M1I12M1I23M1D12M1I8M8D12M1I5M1D18M1I39M1I2M1D9M1I5M2D16M1D23M3D6M2I17M3D1M1D13M1I49M1D25M1I5M1I13M1I9M1D21M1D6M1I13M1I2M2D3M2D3M1D3M3D22M1I1M1I10M4I1M4I3M2I7M2D3M2I15M1I9M1I3M4D6M7D1M1D16M1I9M1D6M9D4M3D7M1D5M1I7M1D5M1D31M1D10M1I29M1D6M5D4M1I3M5D22M1I1M1I4M4D2M1I15M2I4M1I1M1I5M2D5M2D7M1D6M1D1M1D14M4D25M1D30M1I30M6D15M3I12M1I9M1I72M1I9M1D8M1D6M1I5M1D18M5I3M1D4M3I3M7I17M1D5M1D19M2I3M1I14M3I2M1I10M1I2M1I38M4I2M1D25M1D23M2I4M1I8M1I3M19I16M1D21M1I21M2I6M23I9M1I9M11I3M5I17M1I2M8I5M1I5M1D12M1D25M1D20M1D10M3I2M4D3M1I18M3I6M2D35M1D2M3I2M1D9M1I1M1I14M1D2M10D1M2D4M1I6M5D3M6D1M6D18M1D8M1I6M1I49M1D18M1I1M1I7M2D24M1D13M1D1M26D8M2D2M1I19M1D13M1I9M1I5M1I3M10D10M5I1M1I15M1D27M1I15M1I30M2D12M1D10M3D22M5D4M1D9M1I33M1D3M1D12M9I4M1D6M5I3M8I8M1I33M5I13M1D22M1D12M1I17M6I5M3D12M1I12M1D1M1D7M1I44M1D1M1D12M1I47M1D8M2D27M1D1M1D35M1D9M1I6M3D52M3I6M1I27M1I8M1I13M1D13M4I16M3I43M1I13M1D31M1D63M1D30M1I6M1D1M1D15M20D18M2D15M9D8M3D16M11D9M1D18M1I27M8I2M3I1M1I11M2D24M2D27M1D2M1D52M1I50M1I4M1D7M7D23M1I6M1D34M2I15M2D11M1I9M1D21M6D1M1D11M2I2M1I7M27D18M1I2M1D10M4D12M3D1M2D15M5D1M1D6M6D6M1D40M5I8M1I8M35I6M1I27M1D15M2I3M18I5M4I2M1I4M4I8M1I39M2I5M6D9M38D3M1I24M1D2M1D17M1D9M2D7M9I12M1I1M1I15M1I10M2D11M1D10M1D19M3I20M1D43M1D8M1I4M3I1M2I2M3I5M3D13M1I9M5I6M1D6M1I2M2D23M1I8M1I19M1D12M1I20M1D5M1I16M2I10M15I5M2D7M1I14M4D13M1D16M1I4M1D5M2D5M2D3M1I14M17I6M1I16M6I13M5D1M1D6M1I4M1D2M2I17M1D33M1I4M1D16M1I44M1I19M1I19M1D10M13D13M1I5M2D12M1D4M1I10M1D15M1D5M1I7M1I8M1D30M1D3M1D6M2I30M1D33M2I7M4I8M1D2M1D16M1D20M1I3M1D35M1I5M1D10M4D5M1D3M1D19M2I5M2I8M5I49M1D14M1I15M1I11M1I4M3D5M1D50M1I11M7I2M4I9M1I18M2I11M1I5M2I13M5I3M2D19M2I11M2I47M4I1M2I7M1I26M1D4M1D6M1D6M1I24M2I5M3D9M1D13M1I9M1I22M1D3M1I12M1I4M4D32M1I2M2I15M3D3M1D10M1D7M1D11M1I4M1D3M7I2M1D11M1I4M1I1M2I9M8I15M1I9M1I44M1D4M2D10M1D15M1I23M5I4M2D7M4I14M1D10M2I35M1I5M3D25M1D17M1I18M5D5M2I15M2D21M1D1M1D55M7I11M1D5M1I13M2I13M1I12M1D18M1I9M3I29M1I5M1D11M2I11M1I4M4I13M1D10M3I83M1D24M1D6M2D4M1I5M1D6M1D34M1D4M2D11M1D4M2D47M10I7M1D40M3D11M2I39M1I19M1I2M1I3M1D22M2I17M2I4M1D2M1I7M1I27M1I7M1I17M1I7M1I15M1D8M1I3M1I1M1I44M1I1M3D4M1I2M1I19M1D15M1I6M4D28M1I8M1D13M1I4M1D11M1D19M2I69M1I43M4D24M1D25M2I13M2I16M1D4M1D8M1D42M1I11M1I7M3D1M2D1M5D14M2D2M1I28M1D5M1I25M1D46M7I8M2I30M1I4M1I19M1D22M1I30M1D10M5I7M1I5M1I3M2I12M11D3M1I7M8D2M6D2M3D7M2D4M1I1M2D5M1D18M2I1M1I1M1I4M1I10M3I18M1I27M2D5M1I6M1D7M2I7M22D30M1D31M1D19M2I46M1I3M1I27M6D13M1I37M1I12M2D14M28I3M1I3M1D18M6I25M1I8M1D9M2D17M1D2M4I10M1I44M1I6M1D14M3I10M2D7M1D10M2I9M15I18M1D13M1I15M1D25M1D13M1I1M1I18M5I17M1D16M1D16M1I29M1I24M1D17M1D15M2I10M1I11M3D3M1I2M1D50M11D2M2D2M1D1M2D1M1D9M1D18M2I41M1I26M1I25M1I22M4D6M2D2M13D23M1D11M1D25M1D7M3I9M1I4M1D16M1I4M1D2M1I6M1I20M1D37M2D42M1I3M1D47M1D11M1D3M1D14M1D7M1D19M7D11M3D10M2I7M1I11M1D48M1I2M1I10M4I2M1I18M1D67M2D4M4D6M1D17M1I6M2I23M1D9M1D1M3D8M1D14M2D2M3I6M4D9M1D5M5D22M1D6M2D25M8D1M2D4M1D2M4D31M2I7M1I11M11D16M2D11M2D14M1D8M2D3M1I21M1I6M2I1M1I6M1D27M1D1M1D33M1D21M2D1M1D8M1D5M2D6M1D8M1I34M1D3M4I7M1I2M1I16M1I1M1I46M1D12M1I7M1I31M6I10M1I1M1I1M1I5M11I10M1I19M1D22M1D10M1D11M1I8M1I24M1D6M2I7M3D2M1D17M1I24M1I2M4D19M1I14M2D17M1D9M3I16M1D10M1D25M1I26M11D3M2D5M1D2M8D30M2I15M2I13M1D6M5D5M3D17M2D17M2I18M2D11M1I11M2I3M1D18M1D9M1I8M1I16M1D2M1D13M3D1M1D10M1D11M1I8M3D3M1I26M1D4M2D8M1D3M2D4M1I4M2I11M1D10M1D4M1D8M6D1M1D5M7D2M1D5M8D3M2D13M4I1M1I17M1D21M1D22M1I10M1D41M1I2M1I2M1I5M1D41M1D29M1I5M1D5M1I8M1I15M1D9M1D22M1D29M4D7M1I9M1D8M1I32M2D15M1I15M1I23M1I7M10I19M1D38M1I7M1I4M1I16M28D29M7D28M1D52M2I6M1I1M1I1M1I3M1I25M2D15M1I9M5D6M1D12M1I6M1I4M2I11M5D1M2D1M4D15M3I11M3D4M1I8M1D40M6I12M1D17M1D9M5D1M1D2M1D25M1I23M2D9M1D11M1I3M2D28M1I12M1I17M15I10M1D9M1I2M1I8M4I11M1D9M1I6M1I8M1I40M2D3M2I8M1D11M1D16M1D6M1I7M1I34M2I27M1I5M1D3M2D39M1I30M1D22M1I10M3D61M2I19M2I6M1D7M1I23M1I4M1D3M1D6M2I12M2D11M14I13M1D6M4I9M2D11M1I17M1I4M1D8M1D3M1I4M1I35M1D47M1D17M1I7M1I2M1I25M1I13M1D3M1D18M1I13M2D10M2I19M2I6M1D6M1I7M1I11M1I6M3D2M1D11M1I6M1D17M12I1M1I2M1I9M1D1M1D7M7I4M1I9M8I12M1I37M1I25M4I1M1D7M3D13M1I4M1D2M1D43M1D11M1I4M1I6M1D31M2I38M2D12M2D6M2I39M1I19M6I1M1I12M1D16M1D50M1D40M1D24M1I4M2D5M1D5M2I13M2I4M7D2M2D2M7D1M3D15M1I8M1D10M10D41M1I34M1I10M1D11M1I3M3D7M3I23M9D47M2D19M1I36M42D2M1I3M1D3M1D7M1D5M3D6M1D16M1D13M1D39M14I7M1I16M1D19M1D14M1D8M1I34M2I3M1D6M1D12M2I3M1D10M2I1M1D6M39D2M2D16M2I3M2I3M1D23M1D14M3D3M2D6M3D2M1D1M1D10M1D25M1I17M2I33M2D2M1I7M1I36M2D13M1I9M1D6M3I11M1I2M1D8M1D21M1I34M1D12M2I3M1I8M4I11M1D59M5D18M2I11M1I4M7D26M2I77M5D11M1I16M2D6M5I19M1D13M1D1M2D23M1D6M2I11M1D35M1D10M1I14M1D30M1D12M38D2M1D3M1I2M1I5M2D7M1I1M2I3M1I57M1I31M1I9M1I63M1I40M2I3M1I25M1I4M2I21M15I10M1I30M2D3M2D6M2D15M1I6M1I48M2I27M1D6M1D77M2D3M1I22M3D20M1I14M1I29M1I16M1D20M1D5M30D25M6D7M1I17M1I5M14D16M1I3M1D15M1D41M1D13M1I13M1D5M2D19M2I6M1D29M1I2M2D16M1D6M1D8M1I4M9I13M3D10M1I16M4D27M1D1M3D6M2I9M5I38M1D3M2D1M1D4M2I5M1I24M1D18M1I3M5D2M3D3M1I3M1D1M1D5M1D4M1D11M5D3M8D6M1I3M2D5M1D11M1I19M1I1M1I15M1I3M1D15M1D5M3D1M1D12M1D23M1D1M1D6M4I2M4I9M1I17M1I4M1D18M3I7M1I51M11D11M1D12M3D17M1D14M2I12M4I10M1D26M1I45M1I3M1D15M2I11M1I28M1I4M2D9M1I31M3I15M1I11M1D3M4I10M1I21M1D31M8I23M4I24M1D13M5I19M2D1M1D5M10D10M1I23M1I20M2I32M1D5M1D23M1D9M1I14M1I22M1D6M1D19M3I14M1I18M1D10M1D7M1D14M1D46M1D7M21I5M1D17M3D2M4D7M1D16M1I2M1I14M1I3M1I4M1I16M2I42M1I7M1I17M5D1M1D29M13D24M1I3M8I5M12I9M1I23M1D8M -qctgA 50001 27258 50001 + ctgA 49186 26805 49184 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3I58M1D4M1D3M2I20M3D2M1I42M15I1M1I15M6I2M4I24M1I10M1I64M1I62M1D11M2I10M4I23M1D25M4D23M1D20M2I3M1D7M10D7M1D4M1D5M1D15M10D21M1I3M3D6M1I12M1D6M1I30M1D5M1D6M9I4M1I33M1I2M1I8M1I3M1D5M5D25M2D10M1D34M1D6M5I4M4I6M1I34M1I13M1D25M2I19M1D25M1I1M2D24M1D3M1D20M1I2M1D7M1D3M2D6M4D14M2I29M1I3M2I7M1I4M1I6M2I8M4D30M1D8M4I18M1D7M1I3M1I1M1I9M1I11M3I21M5D6M1I1M1I2M1D5M4D27M1D19M1I7M1I9M5D50M1I3M7I33M1I5M1I2M1I32M34I1M1I6M3D40M1I21M2D33M1D2M1D14M1I4M2I17M1D30M1I9M1D53M1I22M1D5M1D6M2I13M4D19M2I6M2D3M1D15M3I4M1D15M1D3M1I8M7D1M1D56M3I12M1I17M1I5M1I52M7I13M1I2M1I4M1D2M3I9M1I18M1D9M6I9M1D1M2I5M1D6M2I3M3I1M2I3M2I17M2I11M5I4M4I12M1I6M1I9M2I3M1D12M1D7M1D17M1D6M1D13M1D15M2D19M2I6M2D2M1D9M2I20M12D12M1I35M3I6M1D23M3I7M1D8M2I7M1D10M1D41M2D20M1I34M1D2M1D10M1D12M2I10M1I13M13I18M1D27M2I13M2D26M3I4M1I9M2D5M3I39M1I19M1I9M1D12M2I33M1I22M1D31M1D28M1I11M2D5M1I22M1I3M27I38M1D8M1I8M1D29M5I8M1D46M1D18M1I6M1I61M1I16M6I4M3I13M1I19M5I4M1I5M2I6M6I4M7I7M1I7M1I7M1D41M5D3M1D11M1I17M1D3M1D3M1D5M1I11M2D30M5D4M1D6M1I18M1I10M1I50M1D8M1D16M1I9M26I11M1D44M1I19M1D9M2I2M1D18M1I8M15D19M1I13M1D8M1D6M1D4M3D7M1I4M1I3M1D2M1D3M3I1M1I20M1D15M1I11M1I22M2D41M2I12M1D7M2I6M8I3M7I2M2I27M1I19M1I2M1I41M1D13M1I38M1I11M4I7M1D14M1I1M3I37M1I2M1I4M1I3M4I2M1I21M1I18M1D11M2I13M1D23M25D15M1D2M1D3M7D18M1D35M1I11M1D5M1D45M4I5M1I7M1I6M1I35M1D34M2D9M1I6M1D47M1D10M1D34M1D5M1I6M1D1M1D4M8D28M3I6M1D19M1I18M1D7M5I5M1I22M1I3M2D5M12I8M1D71M2D23M1D6M1I3M2I5M2D12M1I12M1D24M1I14M1D3M1I24M1I26M22I42M1I9M1D1M1D9M1I6M1I12M1D6M3I17M12I7M1D11M2D19M1I17M1I17M2D2M2D9M2I10M1I6M2I29M1I3M1I19M1D4M3D8M1D1M2D55M1D43M3D42M1D33M22D22M1I3M1I24M1D40M1I21M1I2M1D5M1I2M1I18M1I20M2I12M1D22M1D4M4D84M1D21M1D35M1I3M4I13M1D5M1D10M4D11M1I20M1I5M1I16M1D14M1I8M1D58M1D9M1D5M26D6M1I30M2D7M1D9M1I9M1D38M5D1M2D8M2D14M2I1M2I13M1I2M1D12M1I21M1I8M1I17M2D4M4D7M1D12M1D23M1I12M1D8M8I12M1D5M1I18M1D39M1D2M1I9M1D5M2I16M1I23M3I6M2D17M3I1M1I13M1D49M1I25M1D5M1D13M1D9M1I21M1I6M1D13M1D2M2I3M2I3M1I3M3I22M1D1M1D10M4D1M4D3M2D7M2I3M2D15M1D9M1D3M4I6M7I1M1I16M1D9M1I6M9I4M3I7M1I5M1D7M1I5M1I31M1I10M1D29M1I6M5I4M1D3M5I22M1D1M1D4M4I2M1D15M2D4M1D1M1D5M2I5M2I7M1I6M1I1M1I14M4I25M1I30M1D30M6I15M3D12M1D9M1D72M1D9M1I8M1I6M1D5M1I18M5D3M1I4M3D3M7D17M1I5M1I19M2D3M1D14M3D2M1D10M1D2M1D38M4D2M1I25M1I23M2D4M1D8M1D3M19D16M1I21M1D21M2D6M23D9M1D9M11D3M5D17M1D2M8D5M1D5M1I12M1I25M1I20M1I10M3D2M4I3M1D18M3D6M2I35M1I2M3D2M1I9M1D1M1D14M1I2M10I1M2I4M1D6M5I3M6I1M6I18M1I8M1D6M1D49M1I18M1D1M1D7M2I24M1I13M1I1M26I8M2I2M1D19M1I13M1D9M1D5M1D3M10I10M5D1M1D15M1I27M1D15M1D30M2I12M1I10M3I22M5I4M1I9M1D33M1I3M1I12M9D4M1I6M5D3M8D8M1D33M5D13M1I22M1I12M1D17M6D5M3I12M1D12M1I1M1I7M1D44M1I1M1I12M1D47M1I8M2I27M1I1M1I35M1I9M1D6M3I52M3D6M1D27M1D8M1D13M1I13M4D16M3D43M1D13M1I31M1I63M1I30M1D6M1I1M1I15M20I18M2I15M9I8M3I16M11I9M1I18M1D27M8D2M3D1M1D11M2I24M2I27M1I2M1I52M1D50M1D4M1I7M7I23M1D6M1I34M2D15M2I11M1D9M1I21M6I1M1I11M2D2M1D7M27I18M1D2M1I10M4I12M3I1M2I15M5I1M1I6M6I6M1I40M5D8M1D8M35D6M1D27M1I15M2D3M18D5M4D2M1D4M4D8M1D39M2D5M6I9M38I3M1D24M1I2M1I17M1I9M2I7M9D12M1D1M1D15M1D10M2I11M1I10M1I19M3D20M1I43M1I8M1D4M3D1M2D2M3D5M3I13M1D9M5D6M1I6M1D2M2I23M1D8M1D19M1I12M1D20M1I5M1D16M2D10M15D5M2I7M1D14M4I13M1I16M1D4M1I5M2I5M2I3M1D14M17D6M1D16M6D13M5I1M1I6M1D4M1I2M2D17M1I33M1D4M1I16M1D44M1D19M1D19M1I10M13I13M1D5M2I12M1I4M1D10M1I15M1I5M1D7M1D8M1I30M1I3M1I6M2D30M1I33M2D7M4D8M1I2M1I16M1I20M1D3M1I35M1D5M1I10M4I5M1I3M1I19M2D5M2D8M5D49M1I14M1D15M1D11M1D4M3I5M1I50M1D11M7D2M4D9M1D18M2D11M1D5M2D13M5D3M2I19M2D11M2D47M4D1M2D7M1D26M1I4M1I6M1I6M1D24M2D5M3I9M1I13M1D9M1D22M1I3M1D12M1D4M4I32M1D2M2D15M3I3M1I10M1I7M1I11M1D4M1I3M7D2M1I11M1D4M1D1M2D9M8D15M1D9M1D44M1I4M2I10M1I15M1D23M5D4M2I7M4D14M1I10M2D35M1D5M3I25M1I17M1D18M5I5M2D15M2I21M1I1M1I55M7D11M1I5M1D13M2D13M1D12M1I18M1D9M3D29M1D5M1I11M2D11M1D4M4D13M1I10M3D83M1I24M1I6M2I4M1D5M1I6M1I34M1I4M2I11M1I4M2I47M10D7M1I40M3I11M2D39M1D19M1D2M1D3M1I22M2D17M2D4M1I2M1D7M1D27M1D7M1D17M1D7M1D15M1I8M1D3M1D1M1D44M1D1M3I4M1D2M1D19M1I15M1D6M4I28M1D8M1I13M1D4M1I11M1I19M2D69M1D43M4I24M1I25M2D13M2D16M1I4M1I8M1I42M1D11M1D7M3I1M2I1M5I14M2I2M1D28M1I5M1D25M1I46M7D8M2D30M1D4M1D19M1I22M1D30M1I10M5D7M1D5M1D3M2D12M11I3M1D7M8I2M6I2M3I7M2I4M1D1M2I5M1I18M2D1M1D1M1D4M1D10M3D18M1D27M2I5M1D6M1I7M2D7M22I30M1I31M1I19M2D46M1D3M1D27M6I13M1D37M1D12M2I14M28D3M1D3M1I18M6D25M1D8M1I9M2I17M1I2M4D10M1D44M1D6M1I14M3D10M2I7M1I10M2D9M15D18M1I13M1D15M1I25M1I13M1D1M1D18M5D17M1I16M1I16M1D29M1D24M1I17M1I15M2D10M1D11M3I3M1D2M1I50M11I2M2I2M1I1M2I1M1I9M1I18M2D41M1D26M1D25M1D22M4I6M2I2M13I23M1I11M1I25M1I7M3D9M1D4M1I16M1D4M1I2M1D6M1D20M1I37M2I42M1D3M1I47M1I11M1I3M1I14M1I7M1I19M7I11M3I10M2D7M1D11M1I48M1D2M1D10M4D2M1D18M1I67M2I4M4I6M1I17M1D6M2D23M1I9M1I1M3I8M1I14M2I2M3D6M4I9M1I5M5I22M1I6M2I25M8I1M2I4M1I2M4I31M2D7M1D11M11I16M2I11M2I14M1I8M2I3M1D21M1D6M2D1M1D6M1I27M1I1M1I33M1I21M2I1M1I8M1I5M2I6M1I8M1D34M1I3M4D7M1D2M1D16M1D1M1D46M1I12M1D7M1D31M6D10M1D1M1D1M1D5M11D10M1D19M1I22M1I10M1I11M1D8M1D24M1I6M2D7M3I2M1I17M1D24M1D2M4I19M1D14M2I17M1I9M3D16M1I10M1I25M1D26M11I3M2I5M1I2M8I30M2D15M2D13M1I6M5I5M3I17M2I17M2D18M2I11M1D11M2D3M1I18M1I9M1D8M1D16M1I2M1I13M3I1M1I10M1I11M1D8M3I3M1D26M1I4M2I8M1I3M2I4M1D4M2D11M1I10M1I4M1I8M6I1M1I5M7I2M1I5M8I3M2I13M4D1M1D17M1I21M1I22M1D10M1I41M1D2M1D2M1D5M1I41M1I29M1D5M1I5M1D8M1D15M1I9M1I22M1I29M4I7M1D9M1I8M1D32M2I15M1D15M1D23M1D7M10D19M1I38M1D7M1D4M1D16M28I29M7I28M1I52M2D6M1D1M1D1M1D3M1D25M2I15M1D9M5I6M1I12M1D6M1D4M2D11M5I1M2I1M4I15M3D11M3I4M1D8M1I40M6D12M1I17M1I9M5I1M1I2M1I25M1D23M2I9M1I11M1D3M2I28M1D12M1D17M15D10M1I9M1D2M1D8M4D11M1I9M1D6M1D8M1D40M2I3M2D8M1I11M1I16M1I6M1D7M1D34M2D27M1D5M1I3M2I39M1D30M1I22M1D10M3I61M2D19M2D6M1I7M1D23M1D4M1I3M1I6M2D12M2I11M14D13M1I6M4D9M2I11M1D17M1D4M1I8M1I3M1D4M1D35M1I47M1I17M1D7M1D2M1D25M1D13M1I3M1I18M1D13M2I10M2D19M2D6M1I6M1D7M1D11M1D6M3I2M1I11M1D6M1I17M12D1M1D2M1D9M1I1M1I7M7D4M1D9M8D12M1D37M1D25M4D1M1I7M3I13M1D4M1I2M1I43M1I11M1D4M1D6M1I31M2D38M2I12M2I6M2D39M1D19M6D1M1D12M1I16M1I50M1I40M1I24M1D4M2I5M1I5M2D13M2D4M7I2M2I2M7I1M3I15M1D8M1I10M10I41M1D34M1D10M1I11M1D3M3I7M3D23M9I47M2I19M1D36M42I2M1D3M1I3M1I7M1I5M3I6M1I16M1I13M1I39M14D7M1D16M1I19M1I14M1I8M1D34M2D3M1I6M1I12M2D3M1I10M2D1M1I6M39I2M2I16M2D3M2D3M1I23M1I14M3I3M2I6M3I2M1I1M1I10M1I25M1D17M2D33M2I2M1D7M1D36M2I13M1D9M1I6M3D11M1D2M1I8M1I21M1D34M1I12M2D3M1D8M4D11M1I59M5I18M2D11M1D4M7I26M2D77M5I11M1D16M2I6M5D19M1I13M1I1M2I23M1I6M2D11M1I35M1I10M1D14M1I30M1I12M38I2M1I3M1D2M1D5M2I7M1D1M2D3M1D57M1D31M1D9M1D63M1D40M2D3M1D25M1D4M2D21M15D10M1D30M2I3M2I6M2I15M1D6M1D48M2D27M1I6M1I77M2I3M1D22M3I20M1D14M1D29M1D16M1I20M1I5M30I25M6I7M1D17M1D5M14I16M1D3M1I15M1I41M1I13M1D13M1I5M2I19M2D6M1I29M1D2M2I16M1I6M1I8M1D4M9D13M3I10M1D16M4I27M1I1M3I6M2D9M5D38M1I3M2I1M1I4M2D5M1D24M1I18M1D3M5I2M3I3M1D3M1I1M1I5M1I4M1I11M5I3M8I6M1D3M2I5M1I11M1D19M1D1M1D15M1D3M1I15M1I5M3I1M1I12M1I23M1I1M1I6M4D2M4D9M1D17M1D4M1I18M3D7M1D51M11I11M1I12M3I17M1I14M2D12M4D10M1I26M1D45M1D3M1I15M2D11M1D28M1D4M2I9M1D31M3D15M1D11M1I3M4D10M1D21M1I31M8D23M4D24M1I13M5D19M2I1M1I5M10I10M1D23M1D20M2D32M1I5M1I23M1I9M1D14M1D22M1I6M1I19M3D14M1D18M1I10M1I7M1I14M1I46M1I7M21D5M1I17M3I2M4I7M1I16M1D2M1D14M1D3M1D4M1D16M2D42M1D7M1D17M5I1M1I29M13I24M1D3M8D5M12D9M1D23M1I8M -tctgA 49186 2214 15925 + ctgA 50001 2212 16198 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1I4M2I21M1I10M1I14M1I5M1D29M2D9M1I15M1I27M1I12M1D5M1I11M1D7M2I4M2D9M1D4M6D32M1D13M1I55M1I8M1I1M1I12M1I2M1D22M2I56M1D11M1I5M5I17M3I3M1I13M1D16M1I50M1I2M1I10M1D1M1D42M1D2M2D33M22I3M1I2M1I6M1D8M2D5M1D50M1D6M3D6M2D12M3I13M1D9M5D1M1D10M1I3M1D5M1I3M1I4M1I24M1I5M2D30M1D3M1I15M1D9M1I3M1I18M1I9M1D11M2D6M1I23M4D1M1D22M1I3M1I11M2D1M1D7M1D4M1D18M1I6M1I5M2D5M1I66M2I3M1D8M1I13M1I8M1I3M2D4M1D20M1I5M2I22M1I6M8I14M1I6M1D8M2D5M9D7M2I4M1D11M1I20M2D2M1I33M8I10M2I7M1I18M4I5M1D4M4D1M1D33M3I10M1D20M2D8M1D9M1I10M1D7M1I8M1D6M2I66M1I3M2I2M1I24M1D63M1I14M8I7M1I13M1D31M1I16M4D41M1D3M1D4M23I9M1D2M1D8M1I1M1I12M1I2M1I3M1D33M1I24M2I3M1I4M1I12M122D6M4D2M1D13M1I3M1D35M1I4M1I13M1D32M1D6M1I5M1I5M1D12M1D8M1D48M1I2M1D19M1D9M1I24M1D13M1D8M1I5M7I5M2D10M1I11M3I15M1I6M2I4M1I18M1D14M1D3M1D1M2D17M1D12M4D15M1I3M1D31M1D1M1D1M1D1M1D12M5I2M1D31M2I18M1D5M20D10M1I20M3D11M1I14M1I1M9I4M4I2M4I2M3I4M1D10M1D50M1I14M1I11M8I11M2D9M1I20M3I5M1I27M1D5M3I9M2I9M3D34M1I21M1D15M1I9M1I2M1I2M1I8M1I26M3D4M1D3M1I2M1I25M1I1M1I14M6I45M2I21M1I17M2D23M1D6M2I8M2D20M1I24M1D9M1I1M2D6M1D3M1D9M8I4M2I30M2D8M1D7M1I50M1I3M3I26M3D17M1D17M1D5M1D8M1I29M2D2M1I3M1I6M1D11M3I20M3I19M1I17M2I33M1D35M2D7M2D3M18D1M3D10M5D11M1D8M1D6M1I9M1I4M2D5M1D13M1D22M1D16M14I22M1D3M1I19M1D53M1I13M1I20M8I8M1I6M6D28M3D28M9D23M5D26M1I6M1D5M1D24M1I5M2I13M1I2M4I2M1I4M4I8M1I14M1I12M1I28M1I18M4I10M2D8M1I62M1I14M2I5M1I18M1D1M3I4M1I13M1D4M2I3M1D8M4D2M8D71M1I8M4I23M1I15M5D13M1D6M1D8M7I16M2I13M2D27M1D46M1I20M2D6M1I9M1D4M1I7M1D6M1I2M6I11M4D25M1I22M1D14M2D20M1D30M3I7M3D4M1I22M1D4M1D10M1D20M1I21M3I3M1I8M1D14M1I10M2I45M1D14M1D17M1D27M2D3M1I2M2I4M1D13M1D5M4I6M2I11M1I11M4I6M1I15M1I8M1I6M9I1M1I19M1I4M1I8M2D9M1I7M1D33M1D19M1D3M1D35M3D4M1D6M2D16M3D1M1D30M26D28M1D7M2I12M2D10M1I7M1D16M1D4M1I18M1I33M1I31M1I7M1I12M1D7M1D16M5I3M1I4M1D4M1D28M8D12M1D4M1D7M3D11M1D15M1D12M1I12M3I6M2D4M1D16M1I11M1D5M1D2M2I22M4D14M2I19M1D7M3I17M1I22M5D6M1D14M2D1M1D12M1I11M10I16M1D21M1D24M5D17M1D48M1D3M1D4M1D12M1D13M4D9M1I22M1I21M1I12M1D11M3D2M1D9M1I10M1D4M1I4M1D18M1I3M1D18M2D4M1I21M4D5M3I3M1D21M1I33M1D19M1I38M2I27M1I7M1I15M2I8M5D2M1D15M1I7M2I2M1I11M1D24M1I4M1D14M1I51M1D47M1D3M4D4M3D3M1I3M1D13M1D3M1I13M1I10M3I34M1D3M1I17M1D5M1I8M1D28M1I13M2I2M1I16M1D21M2I22M5I8M1I3M1I9M1D12M2D11M1I7M1I2M2D10M3I26M4D12M1D3M1D12M7I12M1I5M1D5M8D5M1D8M1I31M1D3M1D6M1I12M2D4M1D24M2I10M1I17M1D1M3D11M1D8M2D16M1D18M2D3M6D2M1D6M24D10M2I14M1I11M1I4M1D10M1I34M4I14M1D21M1D6M43D8M4D2M1D12M1D7M5D4M2I15M1D39M1D6M1I9M3D1M3D2M2D4M4D2M3D1M1D2M1D10M1I16M3D17M1I1M1I28M1D10M1D11M1D28M1D11M2I17M1I14M1I7M2D6M1D4M7D3M7D10M1I6M1I57M2D4M1D5M1D18M2I50M5I38M1D6M1D15M1D5M1I58M4I28M1I15M1D14M3I4M2D4M1I11M4D4M1D44M1I25M1I8M2D12M1I7M1D31M1D9M26I5M1I19M1D1M1D9M1D5M1D7M34I1M1I38M1I1M1I21M1D4M11D29M1D11M1D7M3I19M2I36M1D12M1I21M1I2M7I23M2I19M1I6M1I16M2I2M3D10M1D11M10I5M1I15M2D18M1I17M1I7M2D6M2I6M1D27M1I17M1I23M5I29M4D3M1I41M1D33M1D9M1D11M6I25M1D17M3D6M1I8M1I14M1D13M1D12M1I16M1I12M1I3M1D12M1I28M1D32M1D15M1I32M6I2M2I8M1D6M1D23M22I30M1I9M10D58M3I7M1D12M1I10M6I31M1D14M1I38M1I13M3D14M1D23M1I6M1I10M3I22M1I10M1I8M5I67M1I13M4D3M5D6M1I4M1I8M3D8M3I2M1I11M1D11M1I4M2I1M1I2M1I5M3I9M2D1M1D4M1D6M2D5M1D5M1I8M4D8M1I7M2I3M3D15M6D1M1D9M1D4M1D6M1D36M1D7M1D18M1I5M1D3M2I20M1D13M4I7M5I2M2I43M1I5M1D12M1I7M1D31M1I13M1D13M1I6M1D1M1D4M3D7M1D31M2D26M1I7M1I8M1D7M1I17M1D18M1I6M1D4M7D13M1I6M1D7M1I31M1D5M1I15M1D20M1I20M1I26M3I2M3I1M9I5M1I24M2D25M1D14M1D5M3D2M1I7M1I3M1I19M1I17M1I16M2I5M5D8M1I15M1I3M2I5M5I15M1D13M3D7M1D9M5I10M2D5M1I10M2I1M1I2M1I9M8I2M1D5M1I6M6D7M1I13M3I7M1I3M1D15M2D18M1D3M1D2M1D5M1D5M2I9M1I1M1I27M1I11M1D16M8I1M2I8M1I15M1I6M1I10M1D24M1D3M1D19M1I12M1I24M1D8M1D2M1D2M1I6M1D31M2I5M5D16M5I5M1I6M3D11M14D12M3I29M1I12M1I5M23I2M1I4M4I6M1D41M2I21M1D17M1D5M1D25M3I18M1D6M1D5M1D42M1I3M1D31M1I3M1D14M1D21M1I8M3D4M1I19M6D10M2I12M7I32M8I2M1D18M2D31M1D15M1I21M1I6M1I3M1I39M2I1M1D10M1D3M1I36M12D45M1D7M1I4M1I1M3I7M1I3M1D5M1D6M1D14M1D14M1I18M1D1M1D6M1I1M2D1M1D4M2D8M1D27M5I20M12D11M1D9M1D29M3D26M2D4M2D3M1I6M37D1M1D4M5D3M1D3M6D3M4D16M1D27M2D3M1D2M2D60M4D5M4I8M21D26M1D16M1D3M1I8M1D22M1I8M10D3M2D3M3D13M36D4M1D40M1I6M1I5M1I7M2I7M1I13M2I2M1D8M2I6M1I9M1I3M1D4M4I3M1D5M1I11M1D4M4D23M1I21M1I17M1D37M2I10M1D36M1D8M1D1M1D9M1I6M1D1M5D1M7D3M2D2M10D2M2D12M1I27M2I1M1D16M1D18M1D25M1D29M1I12M2I18M1I2M3I3M7I13M1D30M3D2M2D18M1D4M2D36M1I19M1D19M1I6M1I4M3D20M2D13M1I61M1I12M3D1M1D6M2D4M2D3M1I7M1D34M1I9M1D5M5D9M3D11M1D4M1I4M1I3M4D2M3D1M8D22M1I10M1D12M1D57M1D25M1D58M4I26M1I2M1I2M1I7M2I43M1I3M1D6M1D9M2D20M1D5M41D5M1D30M1D32M1D12M2I9M4I17M2D44M1D2M1I29M14I1M1I17M1I8M1D27M4I14M1D9M1D4M1I6M1D12M5D26M3I2M1I2M1I18M -qctgA 50001 2212 16198 + ctgA 49186 2214 15925 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1D4M2D21M1D10M1D14M1D5M1I29M2I9M1D15M1D27M1D12M1I5M1D11M1I7M2D4M2I9M1I4M6I32M1I13M1D55M1D8M1D1M1D12M1D2M1I22M2D56M1I11M1D5M5D17M3D3M1D13M1I16M1D50M1D2M1D10M1I1M1I42M1I2M2I33M22D3M1D2M1D6M1I8M2I5M1I50M1I6M3I6M2I12M3D13M1I9M5I1M1I10M1D3M1I5M1D3M1D4M1D24M1D5M2I30M1I3M1D15M1I9M1D3M1D18M1D9M1I11M2I6M1D23M4I1M1I22M1D3M1D11M2I1M1I7M1I4M1I18M1D6M1D5M2I5M1D66M2D3M1I8M1D13M1D8M1D3M2I4M1I20M1D5M2D22M1D6M8D14M1D6M1I8M2I5M9I7M2D4M1I11M1D20M2I2M1D33M8D10M2D7M1D18M4D5M1I4M4I1M1I33M3D10M1I20M2I8M1I9M1D10M1I7M1D8M1I6M2D66M1D3M2D2M1D24M1I63M1D14M8D7M1D13M1I31M1D16M4I41M1I3M1I4M23D9M1I2M1I8M1D1M1D12M1D2M1D3M1I33M1D24M2D3M1D4M1D12M122I6M4I2M1I13M1D3M1I35M1D4M1D13M1I32M1I6M1D5M1D5M1I12M1I8M1I48M1D2M1I19M1I9M1D24M1I13M1I8M1D5M7D5M2I10M1D11M3D15M1D6M2D4M1D18M1I14M1I3M1I1M2I17M1I12M4I15M1D3M1I31M1I1M1I1M1I1M1I12M5D2M1I31M2D18M1I5M20I10M1D20M3I11M1D14M1D1M9D4M4D2M4D2M3D4M1I10M1I50M1D14M1D11M8D11M2I9M1D20M3D5M1D27M1I5M3D9M2D9M3I34M1D21M1I15M1D9M1D2M1D2M1D8M1D26M3I4M1I3M1D2M1D25M1D1M1D14M6D45M2D21M1D17M2I23M1I6M2D8M2I20M1D24M1I9M1D1M2I6M1I3M1I9M8D4M2D30M2I8M1I7M1D50M1D3M3D26M3I17M1I17M1I5M1I8M1D29M2I2M1D3M1D6M1I11M3D20M3D19M1D17M2D33M1I35M2I7M2I3M18I1M3I10M5I11M1I8M1I6M1D9M1D4M2I5M1I13M1I22M1I16M14D22M1I3M1D19M1I53M1D13M1D20M8D8M1D6M6I28M3I28M9I23M5I26M1D6M1I5M1I24M1D5M2D13M1D2M4D2M1D4M4D8M1D14M1D12M1D28M1D18M4D10M2I8M1D62M1D14M2D5M1D18M1I1M3D4M1D13M1I4M2D3M1I8M4I2M8I71M1D8M4D23M1D15M5I13M1I6M1I8M7D16M2D13M2I27M1I46M1D20M2I6M1D9M1I4M1D7M1I6M1D2M6D11M4I25M1D22M1I14M2I20M1I30M3D7M3I4M1D22M1I4M1I10M1I20M1D21M3D3M1D8M1I14M1D10M2D45M1I14M1I17M1I27M2I3M1D2M2D4M1I13M1I5M4D6M2D11M1D11M4D6M1D15M1D8M1D6M9D1M1D19M1D4M1D8M2I9M1D7M1I33M1I19M1I3M1I35M3I4M1I6M2I16M3I1M1I30M26I28M1I7M2D12M2I10M1D7M1I16M1I4M1D18M1D33M1D31M1D7M1D12M1I7M1I16M5D3M1D4M1I4M1I28M8I12M1I4M1I7M3I11M1I15M1I12M1D12M3D6M2I4M1I16M1D11M1I5M1I2M2D22M4I14M2D19M1I7M3D17M1D22M5I6M1I14M2I1M1I12M1D11M10D16M1I21M1I24M5I17M1I48M1I3M1I4M1I12M1I13M4I9M1D22M1D21M1D12M1I11M3I2M1I9M1D10M1I4M1D4M1I18M1D3M1I18M2I4M1D21M4I5M3D3M1I21M1D33M1I19M1D38M2D27M1D7M1D15M2D8M5I2M1I15M1D7M2D2M1D11M1I24M1D4M1I14M1D51M1I47M1I3M4I4M3I3M1D3M1I13M1I3M1D13M1D10M3D34M1I3M1D17M1I5M1D8M1I28M1D13M2D2M1D16M1I21M2D22M5D8M1D3M1D9M1I12M2I11M1D7M1D2M2I10M3D26M4I12M1I3M1I12M7D12M1D5M1I5M8I5M1I8M1D31M1I3M1I6M1D12M2I4M1I24M2D10M1D17M1I1M3I11M1I8M2I16M1I18M2I3M6I2M1I6M24I10M2D14M1D11M1D4M1I10M1D34M4D14M1I21M1I6M43I8M4I2M1I12M1I7M5I4M2D15M1I39M1I6M1D9M3I1M3I2M2I4M4I2M3I1M1I2M1I10M1D16M3I17M1D1M1D28M1I10M1I11M1I28M1I11M2D17M1D14M1D7M2I6M1I4M7I3M7I10M1D6M1D57M2I4M1I5M1I18M2D50M5D38M1I6M1I15M1I5M1D58M4D28M1D15M1I14M3D4M2I4M1D11M4I4M1I44M1D25M1D8M2I12M1D7M1I31M1I9M26D5M1D19M1I1M1I9M1I5M1I7M34D1M1D38M1D1M1D21M1I4M11I29M1I11M1I7M3D19M2D36M1I12M1D21M1D2M7D23M2D19M1D6M1D16M2D2M3I10M1I11M10D5M1D15M2I18M1D17M1D7M2I6M2D6M1I27M1D17M1D23M5D29M4I3M1D41M1I33M1I9M1I11M6D25M1I17M3I6M1D8M1D14M1I13M1I12M1D16M1D12M1D3M1I12M1D28M1I32M1I15M1D32M6D2M2D8M1I6M1I23M22D30M1D9M10I58M3D7M1I12M1D10M6D31M1I14M1D38M1D13M3I14M1I23M1D6M1D10M3D22M1D10M1D8M5D67M1D13M4I3M5I6M1D4M1D8M3I8M3D2M1D11M1I11M1D4M2D1M1D2M1D5M3D9M2I1M1I4M1I6M2I5M1I5M1D8M4I8M1D7M2D3M3I15M6I1M1I9M1I4M1I6M1I36M1I7M1I18M1D5M1I3M2D20M1I13M4D7M5D2M2D43M1D5M1I12M1D7M1I31M1D13M1I13M1D6M1I1M1I4M3I7M1I31M2I26M1D7M1D8M1I7M1D17M1I18M1D6M1I4M7I13M1D6M1I7M1D31M1I5M1D15M1I20M1D20M1D26M3D2M3D1M9D5M1D24M2I25M1I14M1I5M3I2M1D7M1D3M1D19M1D17M1D16M2D5M5I8M1D15M1D3M2D5M5D15M1I13M3I7M1I9M5D10M2I5M1D10M2D1M1D2M1D9M8D2M1I5M1D6M6I7M1D13M3D7M1D3M1I15M2I18M1I3M1I2M1I5M1I5M2D9M1D1M1D27M1D11M1I16M8D1M2D8M1D15M1D6M1D10M1I24M1I3M1I19M1D12M1D24M1I8M1I2M1I2M1D6M1I31M2D5M5I16M5D5M1D6M3I11M14I12M3D29M1D12M1D5M23D2M1D4M4D6M1I41M2D21M1I17M1I5M1I25M3D18M1I6M1I5M1I42M1D3M1I31M1D3M1I14M1I21M1D8M3I4M1D19M6I10M2D12M7D32M8D2M1I18M2I31M1I15M1D21M1D6M1D3M1D39M2D1M1I10M1I3M1D36M12I45M1I7M1D4M1D1M3D7M1D3M1I5M1I6M1I14M1I14M1D18M1I1M1I6M1D1M2I1M1I4M2I8M1I27M5D20M12I11M1I9M1I29M3I26M2I4M2I3M1D6M37I1M1I4M5I3M1I3M6I3M4I16M1I27M2I3M1I2M2I60M4I5M4D8M21I26M1I16M1I3M1D8M1I22M1D8M10I3M2I3M3I13M36I4M1I40M1D6M1D5M1D7M2D7M1D13M2D2M1I8M2D6M1D9M1D3M1I4M4D3M1I5M1D11M1I4M4I23M1D21M1D17M1I37M2D10M1I36M1I8M1I1M1I9M1D6M1I1M5I1M7I3M2I2M10I2M2I12M1D27M2D1M1I16M1I18M1I25M1I29M1D12M2D18M1D2M3D3M7D13M1I30M3I2M2I18M1I4M2I36M1D19M1I19M1D6M1D4M3I20M2I13M1D61M1D12M3I1M1I6M2I4M2I3M1D7M1I34M1D9M1I5M5I9M3I11M1I4M1D4M1D3M4I2M3I1M8I22M1D10M1I12M1I57M1I25M1I58M4D26M1D2M1D2M1D7M2D43M1D3M1I6M1I9M2I20M1I5M41I5M1I30M1I32M1I12M2D9M4D17M2I44M1I2M1D29M14D1M1D17M1D8M1I27M4D14M1I9M1I4M1D6M1I12M5I26M3D2M1D2M1D18M -tctgA 49186 18755 26306 + ctgA 50001 19011 26774 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1I43M1D4M7D2M7D13M2I3M1I7M1I19M1D5M1D32M1D5M2I63M4D20M5D50M2I12M1I16M3D8M1I19M2D38M1D28M7I2M1I5M4I1M1I3M2I2M1D25M1I10M1D2M1D19M1I5M1D32M1I8M5D4M8D7M1D1M1D26M2D16M2I6M7D14M4I2M1I3M2I4M1D32M6I8M1D12M1D10M1D24M4D2M1D43M1D22M1I11M1I30M2D31M1D19M1D2M1D10M3I48M1I26M4D11M1D4M1D11M2D4M1D18M7I8M1I10M1I2M1D61M1D4M1I18M1D13M3D3M2D5M8D47M1I30M3D6M1I44M2D14M1I40M9D1M2D24M1D16M39I5M1I38M3I22M4D35M1I19M1I19M1I26M1D4M1I10M4D39M1I10M2I10M1I10M1I3M1D1M5D16M1I13M1D11M1D25M1D21M8I22M4D11M1D9M5D17M1D73M1I36M6D4M1D19M1I52M1I15M24I1M1I2M2I15M1I2M6I2M1I28M1D41M4I46M4I14M1D7M21D4M1I20M1D2M1I15M1I3M1I29M1I20M5D37M2I9M1I16M1I24M1I22M3D1M2D47M1I6M1D6M1I19M1D18M1I1M1I18M1I3M1I2M1I5M35D8M1D13M1I7M4I31M1I6M1D83M2D1M1I26M1I15M1I3M2D5M2D12M1D42M1I1M2I12M4D2M4D6M26D8M3D1M1D2M4D9M1D30M2D3M2D28M1I4M1I41M1D18M1I41M1I12M1I19M4I35M5I31M4I31M1I3M1D11M1I25M2D2M3D30M1D5M1I8M1D22M1I7M1D32M1I29M6D1M7D10M3D1M1D5M1I15M7I18M2I10M4D42M1D15M1I13M1D5M1D2M2I38M1I9M2I7M3I20M1D15M1I5M1D3M1D8M2I12M1D10M1D3M1D6M1D30M1D94M1I18M1I4M5D3M1D29M1D2M1D2M1D5M1I4M1D13M1I9M6I10M1D6M1D12M2I5M2D1M1D11M2D1M1D10M5D9M8D17M1D35M1D4M1I16M5I1M1I9M8I21M23I2M1I38M1D1M1D8M1D27M1I42M1I9M2D1M1I5M1D23M2I5M1I28M1D25M1D24M1D5M1I21M1I4M4I7M1D7M1I25M21I5M1I4M1I42M2D26M1D7M1I10M1I1M1I19M10D4M1D14M1D42M8D28M3D2M3D13M1I17M1D11M1I22M1I19M1I1M4I9M2D2M1I14M8I9M2D9M1I13M2D11M3D2M2I5M1I3M1I6M3D10M1I9M1D21M1I5M2I9M2I10M1D3M2I9M1I21M3D23M1I8M1I3M1I26M1I33M8D7M1I9M10D10M1I7M1D52M10D13M1I6M2D39M1D6M1D26M1I4M1D4M32D24M1D21M2D1M1D7M1D1M1D15M1D5M1D24M2I1M1I6M1D2M1D19M35D41M3I6M3I15M2D3M1D14M2I9M3D19M2D26M1D30M1I6M3D32M1I5M1D36M1D8M1D2M2D2M1D6M3I3M7I2M2I17M1D12M1D6M1I40M3D28M2I2M2I21M1D4M1I9M1I4M1I31M2I11M1D31M1D3M2D3M5D7M4D7M1D6M1D6M8D4M1I1M2D19M3I14M1D7M1D12M1I4M3I2M4I11M1I8M1I17M1D11M1D3M1D15M17I8M3D42M1I17M1D25M1I15M1I11M2I7M1D23M4I14M2D20M1I9M3D2M1D17M1D34M1I3M1I4M1D13M1I2M1I6M1I6M1D12M2D1M4D2M4D4M1I16M36D6M1D32M1D27M1D4M1D2M1I11M20D16M3D4M1I16M1D27M1D14M1D21M2I14M1D10M3D5M2D3M3D2M1D1M4D5M1D2M3D7M1D7M1I9M1D5M1D4M1D16M1D9M9D1M1D2M1D4M1D3M2I6M2D5M1I22M1D3M1I8M1D8M3D43M1I4M1D31M1I17M3I8M2I12M6I13M1I16M1D11M2D4M1I5M2D2M2D2M1I29M1I12M2D13M1I7M14D1M1D3M5D10M1D12M5I19M1I10M1I3M7I2M14I3M9I13M2I5M1I13M1D4M1D18M1I3M1D28M1I5M4D35M1D23M3D11M2I8M1D17M1I9M1I23M4D4M1D9M1I3M1I26M1I5M3I1M1I14M1D42M1I5M16I15M1D28M4D5M1I5M1D4M1D11M2D5M1I4M1I3M1I9M -qctgA 50001 19011 26774 + ctgA 49186 18755 26306 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1D43M1I4M7I2M7I13M2D3M1D7M1D19M1I5M1I32M1I5M2D63M4I20M5I50M2D12M1D16M3I8M1D19M2I38M1I28M7D2M1D5M4D1M1D3M2D2M1I25M1D10M1I2M1I19M1D5M1I32M1D8M5I4M8I7M1I1M1I26M2I16M2D6M7I14M4D2M1D3M2D4M1I32M6D8M1I12M1I10M1I24M4I2M1I43M1I22M1D11M1D30M2I31M1I19M1I2M1I10M3D48M1D26M4I11M1I4M1I11M2I4M1I18M7D8M1D10M1D2M1I61M1I4M1D18M1I13M3I3M2I5M8I47M1D30M3I6M1D44M2I14M1D40M9I1M2I24M1I16M39D5M1D38M3D22M4I35M1D19M1D19M1D26M1I4M1D10M4I39M1D10M2D10M1D10M1D3M1I1M5I16M1D13M1I11M1I25M1I21M8D22M4I11M1I9M5I17M1I73M1D36M6I4M1I19M1D52M1D15M24D1M1D2M2D15M1D2M6D2M1D28M1I41M4D46M4D14M1I7M21I4M1D20M1I2M1D15M1D3M1D29M1D20M5I37M2D9M1D16M1D24M1D22M3I1M2I47M1D6M1I6M1D19M1I18M1D1M1D18M1D3M1D2M1D5M35I8M1I13M1D7M4D31M1D6M1I83M2I1M1D26M1D15M1D3M2I5M2I12M1I42M1D1M2D12M4I2M4I6M26I8M3I1M1I2M4I9M1I30M2I3M2I28M1D4M1D41M1I18M1D41M1D12M1D19M4D35M5D31M4D31M1D3M1I11M1D25M2I2M3I30M1I5M1D8M1I22M1D7M1I32M1D29M6I1M7I10M3I1M1I5M1D15M7D18M2D10M4I42M1I15M1D13M1I5M1I2M2D38M1D9M2D7M3D20M1I15M1D5M1I3M1I8M2D12M1I10M1I3M1I6M1I30M1I94M1D18M1D4M5I3M1I29M1I2M1I2M1I5M1D4M1I13M1D9M6D10M1I6M1I12M2D5M2I1M1I11M2I1M1I10M5I9M8I17M1I35M1I4M1D16M5D1M1D9M8D21M23D2M1D38M1I1M1I8M1I27M1D42M1D9M2I1M1D5M1I23M2D5M1D28M1I25M1I24M1I5M1D21M1D4M4D7M1I7M1D25M21D5M1D4M1D42M2I26M1I7M1D10M1D1M1D19M10I4M1I14M1I42M8I28M3I2M3I13M1D17M1I11M1D22M1D19M1D1M4D9M2I2M1D14M8D9M2I9M1D13M2I11M3I2M2D5M1D3M1D6M3I10M1D9M1I21M1D5M2D9M2D10M1I3M2D9M1D21M3I23M1D8M1D3M1D26M1D33M8I7M1D9M10I10M1D7M1I52M10I13M1D6M2I39M1I6M1I26M1D4M1I4M32I24M1I21M2I1M1I7M1I1M1I15M1I5M1I24M2D1M1D6M1I2M1I19M35I41M3D6M3D15M2I3M1I14M2D9M3I19M2I26M1I30M1D6M3I32M1D5M1I36M1I8M1I2M2I2M1I6M3D3M7D2M2D17M1I12M1I6M1D40M3I28M2D2M2D21M1I4M1D9M1D4M1D31M2D11M1I31M1I3M2I3M5I7M4I7M1I6M1I6M8I4M1D1M2I19M3D14M1I7M1I12M1D4M3D2M4D11M1D8M1D17M1I11M1I3M1I15M17D8M3I42M1D17M1I25M1D15M1D11M2D7M1I23M4D14M2I20M1D9M3I2M1I17M1I34M1D3M1D4M1I13M1D2M1D6M1D6M1I12M2I1M4I2M4I4M1D16M36I6M1I32M1I27M1I4M1I2M1D11M20I16M3I4M1D16M1I27M1I14M1I21M2D14M1I10M3I5M2I3M3I2M1I1M4I5M1I2M3I7M1I7M1D9M1I5M1I4M1I16M1I9M9I1M1I2M1I4M1I3M2D6M2I5M1D22M1I3M1D8M1I8M3I43M1D4M1I31M1D17M3D8M2D12M6D13M1D16M1I11M2I4M1D5M2I2M2I2M1D29M1D12M2I13M1D7M14I1M1I3M5I10M1I12M5D19M1D10M1D3M7D2M14D3M9D13M2D5M1D13M1I4M1I18M1D3M1I28M1D5M4I35M1I23M3I11M2D8M1I17M1D9M1D23M4I4M1I9M1D3M1D26M1D5M3D1M1D14M1I42M1D5M16D15M1I28M4I5M1D5M1I4M1I11M2I5M1D4M1D3M1D9M -tctgA 49186 16409 18309 + ctgA 50001 16650 18559 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5D3M3I13M1D9M1D5M2I5M8D39M1I36M2D33M1D22M1D10M2I8M1D5M1D16M6D5M2D11M2I12M1I7M1I3M3I3M1D3M1I13M1D21M1I4M2I1M1D14M1I12M1I2M1D12M6I5M1D19M10D28M1D26M1D41M1I11M1D9M1I9M4D15M6D13M1D25M5D3M1I27M2D7M1D17M7D18M2I16M1I12M1D22M2I5M12D5M7D2M1D13M1I13M2D2M1I15M1I19M1D17M1I58M1I8M11I8M1I6M2D6M1D2M1I8M2D4M15D6M1D1M2I8M3I25M1D21M1I43M1I6M1D12M2I10M14I5M1D19M3D4M1I95M2D16M2I9M3I8M1I3M1D3M4D1M1D5M3D14M1I7M1I6M2I40M1I1M2I5M1D5M1I11M7D25M10I16M1I2M2D21M1D4M1D4M1D15M2D3M1I13M13I28M2D5M1I33M1I11M1D36M1D19M1I22M1D18M1I1M1I12M1D6M9D11M2D4M1I5M10D16M5I21M1D5M1I11M37I13M3I4M1D9M1I3M1I12M1I58M1D14M -qctgA 50001 16650 18559 + ctgA 49186 16409 18309 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5I3M3D13M1I9M1I5M2D5M8I39M1D36M2I33M1I22M1I10M2D8M1I5M1I16M6I5M2I11M2D12M1D7M1D3M3D3M1I3M1D13M1I21M1D4M2D1M1I14M1D12M1D2M1I12M6D5M1I19M10I28M1I26M1I41M1D11M1I9M1D9M4I15M6I13M1I25M5I3M1D27M2I7M1I17M7I18M2D16M1D12M1I22M2D5M12I5M7I2M1I13M1D13M2I2M1D15M1D19M1I17M1D58M1D8M11D8M1D6M2I6M1I2M1D8M2I4M15I6M1I1M2D8M3D25M1I21M1D43M1D6M1I12M2D10M14D5M1I19M3I4M1D95M2I16M2D9M3D8M1D3M1I3M4I1M1I5M3I14M1D7M1D6M2D40M1D1M2D5M1I5M1D11M7I25M10D16M1D2M2I21M1I4M1I4M1I15M2I3M1D13M13D28M2I5M1D33M1D11M1I36M1I19M1D22M1I18M1D1M1D12M1I6M9I11M2I4M1D5M10I16M5D21M1I5M1D11M37D13M3D4M1I9M1D3M1D12M1D58M1I14M -tctgA 49186 3 1851 + ctgA 50001 0 1859 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1I16M1I5M3I33M1D14M3D7M1D25M2I5M2I4M1D17M3D11M1D5M3D3M1I15M3I1M2I6M1I2M6D6M2D24M1I3M2D29M1I2M1I3M1I6M1I10M2D8M19D33M1D23M2D9M1D11M1I6M1D5M1D28M1I13M1D5M1I2M1I49M5D6M2I21M1D1M2D2M2D4M4I4M1I5M1I3M1D2M1I4M37D17M2I16M6D5M3D3M6D16M5I4M8I5M4I1M1I52M2D2M1I5M28D33M1D17M2I2M2D31M42I5M1I9M1I7M1D8M1I40M1I39M1I2M1D3M2I11M2I6M2I10M1D14M1I12M1I16M1D6M3I6M2I4M1I1M1I27M1I3M10I3M2D11M3D3M1I35M1I1M3D3M2D19M3D9M4D23M1I3M1I28M1I52M1I28M1D20M2I66M1I3M2I7M1D7M2D9M1D11M1D11M1D7M1I3M1I30M1D11M1D15M2I7M3D3M1I12M6I35M1D4M1D17M1D15M1I5M1D4M1I5M1I3M5D10M1D2M1D8M7I13M5I9M1D4M1I45M6I4M1I19M2D16M1D1M2I23M7I11M1I19M1D13M -qctgA 50001 0 1859 + ctgA 49186 3 1851 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1D16M1D5M3D33M1I14M3I7M1I25M2D5M2D4M1I17M3I11M1I5M3I3M1D15M3D1M2D6M1D2M6I6M2I24M1D3M2I29M1D2M1D3M1D6M1D10M2I8M19I33M1I23M2I9M1I11M1D6M1I5M1I28M1D13M1I5M1D2M1D49M5I6M2D21M1I1M2I2M2I4M4D4M1D5M1D3M1I2M1D4M37I17M2D16M6I5M3I3M6I16M5D4M8D5M4D1M1D52M2I2M1D5M28I33M1I17M2D2M2I31M42D5M1D9M1D7M1I8M1D40M1D39M1D2M1I3M2D11M2D6M2D10M1I14M1D12M1D16M1I6M3D6M2D4M1D1M1D27M1D3M10D3M2I11M3I3M1D35M1D1M3I3M2I19M3I9M4I23M1D3M1D28M1D52M1D28M1I20M2D66M1D3M2D7M1I7M2I9M1I11M1I11M1I7M1D3M1D30M1I11M1I15M2D7M3I3M1D12M6D35M1I4M1I17M1I15M1D5M1I4M1D5M1D3M5I10M1I2M1I8M7D13M5D9M1I4M1D45M6D4M1D19M2I16M1I1M2D23M7D11M1D19M1I13M -tctgA 49186 18309 18754 - ctgA 50001 18559 19001 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:5M1I15M2I30M1D20M1D13M2D2M1D14M8I11M1D18M1I7M1I56M1D33M1D52M2D7M1I19M7D26M1I9M2I10M1I27M1D18M1I15M2I17M -qctgA 50001 18559 19001 - ctgA 49186 18309 18754 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:17M2D15M1D18M1I27M1D10M2D9M1D26M7I19M1D7M2I52M1I33M1I56M1D7M1D18M1I11M8D14M1I2M2I13M1I20M1I30M2D15M1D5M -tctgA 49186 1860 2214 - ctgA 50001 1859 2192 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:14M1D4M1D3M1D9M1I12M5D20M2I43M1I10M1I7M2D2M1D8M1I30M1I9M1I2M1I6M15I39M2I16M4I2M1I35M1I2M1I6M1D42M -qctgA 50001 1859 2192 - ctgA 49186 1860 2214 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:42M1I6M1D2M1D35M1D2M4D16M2D39M15D6M1D2M1D9M1D30M1D8M1I2M2I7M1D10M1D43M2D20M5I12M1D9M1I3M1I4M1I14M +"tctgA 50001 27258 50001 + ctgA 49186 26805 49184 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3D58M1I4M1I3M2D20M3I2M1D42M15D1M1D15M6D2M4D24M1D10M1D64M1D62M1I11M2D10M4D23M1I25M4I23M1I20M2D3M1I7M10I7M1I4M1I5M1I15M10I21M1D3M3I6M1D12M1I6M1D30M1I5M1I6M9D4M1D33M1D2M1D8M1D3M1I5M5I25M2I10M1I34M1I6M5D4M4D6M1D34M1D13M1I25M2D19M1I25M1D1M2I24M1I3M1I20M1D2M1I7M1I3M2I6M4I14M2D29M1D3M2D7M1D4M1D6M2D8M4I30M1I8M4D18M1I7M1D3M1D1M1D9M1D11M3D21M5I6M1D1M1D2M1I5M4I27M1I19M1D7M1D9M5I50M1D3M7D33M1D5M1D2M1D32M34D1M1D6M3I40M1D21M2I33M1I2M1I14M1D4M2D17M1I30M1D9M1I53M1D22M1I5M1I6M2D13M4I19M2D6M2I3M1I15M3D4M1I15M1I3M1D8M7I1M1I56M3D12M1D17M1D5M1D52M7D13M1D2M1D4M1I2M3D9M1D18M1I9M6D9M1I1M2D5M1I6M2D3M3D1M2D3M2D17M2D11M5D4M4D12M1D6M1D9M2D3M1I12M1I7M1I17M1I6M1I13M1I15M2I19M2D6M2I2M1I9M2D20M12I12M1D35M3D6M1I23M3D7M1I8M2D7M1I10M1I41M2I20M1D34M1I2M1I10M1I12M2D10M1D13M13D18M1I27M2D13M2I26M3D4M1D9M2I5M3D39M1D19M1D9M1I12M2D33M1D22M1I31M1I28M1D11M2I5M1D22M1D3M27D38M1I8M1D8M1I29M5D8M1I46M1I18M1D6M1D61M1D16M6D4M3D13M1D19M5D4M1D5M2D6M6D4M7D7M1D7M1D7M1I41M5I3M1I11M1D17M1I3M1I3M1I5M1D11M2I30M5I4M1I6M1D18M1D10M1D50M1I8M1I16M1D9M26D11M1I44M1D19M1I9M2D2M1I18M1D8M15I19M1D13M1I8M1I6M1I4M3I7M1D4M1D3M1I2M1I3M3D1M1D20M1I15M1D11M1D22M2I41M2D12M1I7M2D6M8D3M7D2M2D27M1D19M1D2M1D41M1I13M1D38M1D11M4D7M1I14M1D1M3D37M1D2M1D4M1D3M4D2M1D21M1D18M1I11M2D13M1I23M25I15M1I2M1I3M7I18M1I35M1D11M1I5M1I45M4D5M1D7M1D6M1D35M1I34M2I9M1D6M1I47M1I10M1I34M1I5M1D6M1I1M1I4M8I28M3D6M1I19M1D18M1I7M5D5M1D22M1D3M2I5M12D8M1I71M2I23M1I6M1D3M2D5M2I12M1D12M1I24M1D14M1I3M1D24M1D26M22D42M1D9M1I1M1I9M1D6M1D12M1I6M3D17M12D7M1I11M2I19M1D17M1D17M2I2M2I9M2D10M1D6M2D29M1D3M1D19M1I4M3I8M1I1M2I55M1I43M3I42M1I33M22I22M1D3M1D24M1I40M1D21M1D2M1I5M1D2M1D18M1D20M2D12M1I22M1I4M4I84M1I21M1I35M1D3M4D13M1I5M1I10M4I11M1D20M1D5M1D16M1I14M1D8M1I58M1I9M1I5M26I6M1D30M2I7M1I9M1D9M1I38M5I1M2I8M2I14M2D1M2D13M1D2M1I12M1D21M1D8M1D17M2I4M4I7M1I12M1I23M1D12M1I8M8D12M1I5M1D18M1I39M1I2M1D9M1I5M2D16M1D23M3D6M2I17M3D1M1D13M1I49M1D25M1I5M1I13M1I9M1D21M1D6M1I13M1I2M2D3M2D3M1D3M3D22M1I1M1I10M4I1M4I3M2I7M2D3M2I15M1I9M1I3M4D6M7D1M1D16M1I9M1D6M9D4M3D7M1D5M1I7M1D5M1D31M1D10M1I29M1D6M5D4M1I3M5D22M1I1M1I4M4D2M1I15M2I4M1I1M1I5M2D5M2D7M1D6M1D1M1D14M4D25M1D30M1I30M6D15M3I12M1I9M1I72M1I9M1D8M1D6M1I5M1D18M5I3M1D4M3I3M7I17M1D5M1D19M2I3M1I14M3I2M1I10M1I2M1I38M4I2M1D25M1D23M2I4M1I8M1I3M19I16M1D21M1I21M2I6M23I9M1I9M11I3M5I17M1I2M8I5M1I5M1D12M1D25M1D20M1D10M3I2M4D3M1I18M3I6M2D35M1D2M3I2M1D9M1I1M1I14M1D2M10D1M2D4M1I6M5D3M6D1M6D18M1D8M1I6M1I49M1D18M1I1M1I7M2D24M1D13M1D1M26D8M2D2M1I19M1D13M1I9M1I5M1I3M10D10M5I1M1I15M1D27M1I15M1I30M2D12M1D10M3D22M5D4M1D9M1I33M1D3M1D12M9I4M1D6M5I3M8I8M1I33M5I13M1D22M1D12M1I17M6I5M3D12M1I12M1D1M1D7M1I44M1D1M1D12M1I47M1D8M2D27M1D1M1D35M1D9M1I6M3D52M3I6M1I27M1I8M1I13M1D13M4I16M3I43M1I13M1D31M1D63M1D30M1I6M1D1M1D15M20D18M2D15M9D8M3D16M11D9M1D18M1I27M8I2M3I1M1I11M2D24M2D27M1D2M1D52M1I50M1I4M1D7M7D23M1I6M1D34M2I15M2D11M1I9M1D21M6D1M1D11M2I2M1I7M27D18M1I2M1D10M4D12M3D1M2D15M5D1M1D6M6D6M1D40M5I8M1I8M35I6M1I27M1D15M2I3M18I5M4I2M1I4M4I8M1I39M2I5M6D9M38D3M1I24M1D2M1D17M1D9M2D7M9I12M1I1M1I15M1I10M2D11M1D10M1D19M3I20M1D43M1D8M1I4M3I1M2I2M3I5M3D13M1I9M5I6M1D6M1I2M2D23M1I8M1I19M1D12M1I20M1D5M1I16M2I10M15I5M2D7M1I14M4D13M1D16M1I4M1D5M2D5M2D3M1I14M17I6M1I16M6I13M5D1M1D6M1I4M1D2M2I17M1D33M1I4M1D16M1I44M1I19M1I19M1D10M13D13M1I5M2D12M1D4M1I10M1D15M1D5M1I7M1I8M1D30M1D3M1D6M2I30M1D33M2I7M4I8M1D2M1D16M1D20M1I3M1D35M1I5M1D10M4D5M1D3M1D19M2I5M2I8M5I49M1D14M1I15M1I11M1I4M3D5M1D50M1I11M7I2M4I9M1I18M2I11M1I5M2I13M5I3M2D19M2I11M2I47M4I1M2I7M1I26M1D4M1D6M1D6M1I24M2I5M3D9M1D13M1I9M1I22M1D3M1I12M1I4M4D32M1I2M2I15M3D3M1D10M1D7M1D11M1I4M1D3M7I2M1D11M1I4M1I1M2I9M8I15M1I9M1I44M1D4M2D10M1D15M1I23M5I4M2D7M4I14M1D10M2I35M1I5M3D25M1D17M1I18M5D5M2I15M2D21M1D1M1D55M7I11M1D5M1I13M2I13M1I12M1D18M1I9M3I29M1I5M1D11M2I11M1I4M4I13M1D10M3I83M1D24M1D6M2D4M1I5M1D6M1D34M1D4M2D11M1D4M2D47M10I7M1D40M3D11M2I39M1I19M1I2M1I3M1D22M2I17M2I4M1D2M1I7M1I27M1I7M1I17M1I7M1I15M1D8M1I3M1I1M1I44M1I1M3D4M1I2M1I19M1D15M1I6M4D28M1I8M1D13M1I4M1D11M1D19M2I69M1I43M4D24M1D25M2I13M2I16M1D4M1D8M1D42M1I11M1I7M3D1M2D1M5D14M2D2M1I28M1D5M1I25M1D46M7I8M2I30M1I4M1I19M1D22M1I30M1D10M5I7M1I5M1I3M2I12M11D3M1I7M8D2M6D2M3D7M2D4M1I1M2D5M1D18M2I1M1I1M1I4M1I10M3I18M1I27M2D5M1I6M1D7M2I7M22D30M1D31M1D19M2I46M1I3M1I27M6D13M1I37M1I12M2D14M28I3M1I3M1D18M6I25M1I8M1D9M2D17M1D2M4I10M1I44M1I6M1D14M3I10M2D7M1D10M2I9M15I18M1D13M1I15M1D25M1D13M1I1M1I18M5I17M1D16M1D16M1I29M1I24M1D17M1D15M2I10M1I11M3D3M1I2M1D50M11D2M2D2M1D1M2D1M1D9M1D18M2I41M1I26M1I25M1I22M4D6M2D2M13D23M1D11M1D25M1D7M3I9M1I4M1D16M1I4M1D2M1I6M1I20M1D37M2D42M1I3M1D47M1D11M1D3M1D14M1D7M1D19M7D11M3D10M2I7M1I11M1D48M1I2M1I10M4I2M1I18M1D67M2D4M4D6M1D17M1I6M2I23M1D9M1D1M3D8M1D14M2D2M3I6M4D9M1D5M5D22M1D6M2D25M8D1M2D4M1D2M4D31M2I7M1I11M11D16M2D11M2D14M1D8M2D3M1I21M1I6M2I1M1I6M1D27M1D1M1D33M1D21M2D1M1D8M1D5M2D6M1D8M1I34M1D3M4I7M1I2M1I16M1I1M1I46M1D12M1I7M1I31M6I10M1I1M1I1M1I5M11I10M1I19M1D22M1D10M1D11M1I8M1I24M1D6M2I7M3D2M1D17M1I24M1I2M4D19M1I14M2D17M1D9M3I16M1D10M1D25M1I26M11D3M2D5M1D2M8D30M2I15M2I13M1D6M5D5M3D17M2D17M2I18M2D11M1I11M2I3M1D18M1D9M1I8M1I16M1D2M1D13M3D1M1D10M1D11M1I8M3D3M1I26M1D4M2D8M1D3M2D4M1I4M2I11M1D10M1D4M1D8M6D1M1D5M7D2M1D5M8D3M2D13M4I1M1I17M1D21M1D22M1I10M1D41M1I2M1I2M1I5M1D41M1D29M1I5M1D5M1I8M1I15M1D9M1D22M1D29M4D7M1I9M1D8M1I32M2D15M1I15M1I23M1I7M10I19M1D38M1I7M1I4M1I16M28D29M7D28M1D52M2I6M1I1M1I1M1I3M1I25M2D15M1I9M5D6M1D12M1I6M1I4M2I11M5D1M2D1M4D15M3I11M3D4M1I8M1D40M6I12M1D17M1D9M5D1M1D2M1D25M1I23M2D9M1D11M1I3M2D28M1I12M1I17M15I10M1D9M1I2M1I8M4I11M1D9M1I6M1I8M1I40M2D3M2I8M1D11M1D16M1D6M1I7M1I34M2I27M1I5M1D3M2D39M1I30M1D22M1I10M3D61M2I19M2I6M1D7M1I23M1I4M1D3M1D6M2I12M2D11M14I13M1D6M4I9M2D11M1I17M1I4M1D8M1D3M1I4M1I35M1D47M1D17M1I7M1I2M1I25M1I13M1D3M1D18M1I13M2D10M2I19M2I6M1D6M1I7M1I11M1I6M3D2M1D11M1I6M1D17M12I1M1I2M1I9M1D1M1D7M7I4M1I9M8I12M1I37M1I25M4I1M1D7M3D13M1I4M1D2M1D43M1D11M1I4M1I6M1D31M2I38M2D12M2D6M2I39M1I19M6I1M1I12M1D16M1D50M1D40M1D24M1I4M2D5M1D5M2I13M2I4M7D2M2D2M7D1M3D15M1I8M1D10M10D41M1I34M1I10M1D11M1I3M3D7M3I23M9D47M2D19M1I36M42D2M1I3M1D3M1D7M1D5M3D6M1D16M1D13M1D39M14I7M1I16M1D19M1D14M1D8M1I34M2I3M1D6M1D12M2I3M1D10M2I1M1D6M39D2M2D16M2I3M2I3M1D23M1D14M3D3M2D6M3D2M1D1M1D10M1D25M1I17M2I33M2D2M1I7M1I36M2D13M1I9M1D6M3I11M1I2M1D8M1D21M1I34M1D12M2I3M1I8M4I11M1D59M5D18M2I11M1I4M7D26M2I77M5D11M1I16M2D6M5I19M1D13M1D1M2D23M1D6M2I11M1D35M1D10M1I14M1D30M1D12M38D2M1D3M1I2M1I5M2D7M1I1M2I3M1I57M1I31M1I9M1I63M1I40M2I3M1I25M1I4M2I21M15I10M1I30M2D3M2D6M2D15M1I6M1I48M2I27M1D6M1D77M2D3M1I22M3D20M1I14M1I29M1I16M1D20M1D5M30D25M6D7M1I17M1I5M14D16M1I3M1D15M1D41M1D13M1I13M1D5M2D19M2I6M1D29M1I2M2D16M1D6M1D8M1I4M9I13M3D10M1I16M4D27M1D1M3D6M2I9M5I38M1D3M2D1M1D4M2I5M1I24M1D18M1I3M5D2M3D3M1I3M1D1M1D5M1D4M1D11M5D3M8D6M1I3M2D5M1D11M1I19M1I1M1I15M1I3M1D15M1D5M3D1M1D12M1D23M1D1M1D6M4I2M4I9M1I17M1I4M1D18M3I7M1I51M11D11M1D12M3D17M1D14M2I12M4I10M1D26M1I45M1I3M1D15M2I11M1I28M1I4M2D9M1I31M3I15M1I11M1D3M4I10M1I21M1D31M8I23M4I24M1D13M5I19M2D1M1D5M10D10M1I23M1I20M2I32M1D5M1D23M1D9M1I14M1I22M1D6M1D19M3I14M1I18M1D10M1D7M1D14M1D46M1D7M21I5M1D17M3D2M4D7M1D16M1I2M1I14M1I3M1I4M1I16M2I42M1I7M1I17M5D1M1D29M13D24M1I3M8I5M12I9M1I23M1D8M +qctgA 49186 26805 49184 + ctgA 50001 27258 50001 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3I58M1D4M1D3M2I20M3D2M1I42M15I1M1I15M6I2M4I24M1I10M1I64M1I62M1D11M2I10M4I23M1D25M4D23M1D20M2I3M1D7M10D7M1D4M1D5M1D15M10D21M1I3M3D6M1I12M1D6M1I30M1D5M1D6M9I4M1I33M1I2M1I8M1I3M1D5M5D25M2D10M1D34M1D6M5I4M4I6M1I34M1I13M1D25M2I19M1D25M1I1M2D24M1D3M1D20M1I2M1D7M1D3M2D6M4D14M2I29M1I3M2I7M1I4M1I6M2I8M4D30M1D8M4I18M1D7M1I3M1I1M1I9M1I11M3I21M5D6M1I1M1I2M1D5M4D27M1D19M1I7M1I9M5D50M1I3M7I33M1I5M1I2M1I32M34I1M1I6M3D40M1I21M2D33M1D2M1D14M1I4M2I17M1D30M1I9M1D53M1I22M1D5M1D6M2I13M4D19M2I6M2D3M1D15M3I4M1D15M1D3M1I8M7D1M1D56M3I12M1I17M1I5M1I52M7I13M1I2M1I4M1D2M3I9M1I18M1D9M6I9M1D1M2I5M1D6M2I3M3I1M2I3M2I17M2I11M5I4M4I12M1I6M1I9M2I3M1D12M1D7M1D17M1D6M1D13M1D15M2D19M2I6M2D2M1D9M2I20M12D12M1I35M3I6M1D23M3I7M1D8M2I7M1D10M1D41M2D20M1I34M1D2M1D10M1D12M2I10M1I13M13I18M1D27M2I13M2D26M3I4M1I9M2D5M3I39M1I19M1I9M1D12M2I33M1I22M1D31M1D28M1I11M2D5M1I22M1I3M27I38M1D8M1I8M1D29M5I8M1D46M1D18M1I6M1I61M1I16M6I4M3I13M1I19M5I4M1I5M2I6M6I4M7I7M1I7M1I7M1D41M5D3M1D11M1I17M1D3M1D3M1D5M1I11M2D30M5D4M1D6M1I18M1I10M1I50M1D8M1D16M1I9M26I11M1D44M1I19M1D9M2I2M1D18M1I8M15D19M1I13M1D8M1D6M1D4M3D7M1I4M1I3M1D2M1D3M3I1M1I20M1D15M1I11M1I22M2D41M2I12M1D7M2I6M8I3M7I2M2I27M1I19M1I2M1I41M1D13M1I38M1I11M4I7M1D14M1I1M3I37M1I2M1I4M1I3M4I2M1I21M1I18M1D11M2I13M1D23M25D15M1D2M1D3M7D18M1D35M1I11M1D5M1D45M4I5M1I7M1I6M1I35M1D34M2D9M1I6M1D47M1D10M1D34M1D5M1I6M1D1M1D4M8D28M3I6M1D19M1I18M1D7M5I5M1I22M1I3M2D5M12I8M1D71M2D23M1D6M1I3M2I5M2D12M1I12M1D24M1I14M1D3M1I24M1I26M22I42M1I9M1D1M1D9M1I6M1I12M1D6M3I17M12I7M1D11M2D19M1I17M1I17M2D2M2D9M2I10M1I6M2I29M1I3M1I19M1D4M3D8M1D1M2D55M1D43M3D42M1D33M22D22M1I3M1I24M1D40M1I21M1I2M1D5M1I2M1I18M1I20M2I12M1D22M1D4M4D84M1D21M1D35M1I3M4I13M1D5M1D10M4D11M1I20M1I5M1I16M1D14M1I8M1D58M1D9M1D5M26D6M1I30M2D7M1D9M1I9M1D38M5D1M2D8M2D14M2I1M2I13M1I2M1D12M1I21M1I8M1I17M2D4M4D7M1D12M1D23M1I12M1D8M8I12M1D5M1I18M1D39M1D2M1I9M1D5M2I16M1I23M3I6M2D17M3I1M1I13M1D49M1I25M1D5M1D13M1D9M1I21M1I6M1D13M1D2M2I3M2I3M1I3M3I22M1D1M1D10M4D1M4D3M2D7M2I3M2D15M1D9M1D3M4I6M7I1M1I16M1D9M1I6M9I4M3I7M1I5M1D7M1I5M1I31M1I10M1D29M1I6M5I4M1D3M5I22M1D1M1D4M4I2M1D15M2D4M1D1M1D5M2I5M2I7M1I6M1I1M1I14M4I25M1I30M1D30M6I15M3D12M1D9M1D72M1D9M1I8M1I6M1D5M1I18M5D3M1I4M3D3M7D17M1I5M1I19M2D3M1D14M3D2M1D10M1D2M1D38M4D2M1I25M1I23M2D4M1D8M1D3M19D16M1I21M1D21M2D6M23D9M1D9M11D3M5D17M1D2M8D5M1D5M1I12M1I25M1I20M1I10M3D2M4I3M1D18M3D6M2I35M1I2M3D2M1I9M1D1M1D14M1I2M10I1M2I4M1D6M5I3M6I1M6I18M1I8M1D6M1D49M1I18M1D1M1D7M2I24M1I13M1I1M26I8M2I2M1D19M1I13M1D9M1D5M1D3M10I10M5D1M1D15M1I27M1D15M1D30M2I12M1I10M3I22M5I4M1I9M1D33M1I3M1I12M9D4M1I6M5D3M8D8M1D33M5D13M1I22M1I12M1D17M6D5M3I12M1D12M1I1M1I7M1D44M1I1M1I12M1D47M1I8M2I27M1I1M1I35M1I9M1D6M3I52M3D6M1D27M1D8M1D13M1I13M4D16M3D43M1D13M1I31M1I63M1I30M1D6M1I1M1I15M20I18M2I15M9I8M3I16M11I9M1I18M1D27M8D2M3D1M1D11M2I24M2I27M1I2M1I52M1D50M1D4M1I7M7I23M1D6M1I34M2D15M2I11M1D9M1I21M6I1M1I11M2D2M1D7M27I18M1D2M1I10M4I12M3I1M2I15M5I1M1I6M6I6M1I40M5D8M1D8M35D6M1D27M1I15M2D3M18D5M4D2M1D4M4D8M1D39M2D5M6I9M38I3M1D24M1I2M1I17M1I9M2I7M9D12M1D1M1D15M1D10M2I11M1I10M1I19M3D20M1I43M1I8M1D4M3D1M2D2M3D5M3I13M1D9M5D6M1I6M1D2M2I23M1D8M1D19M1I12M1D20M1I5M1D16M2D10M15D5M2I7M1D14M4I13M1I16M1D4M1I5M2I5M2I3M1D14M17D6M1D16M6D13M5I1M1I6M1D4M1I2M2D17M1I33M1D4M1I16M1D44M1D19M1D19M1I10M13I13M1D5M2I12M1I4M1D10M1I15M1I5M1D7M1D8M1I30M1I3M1I6M2D30M1I33M2D7M4D8M1I2M1I16M1I20M1D3M1I35M1D5M1I10M4I5M1I3M1I19M2D5M2D8M5D49M1I14M1D15M1D11M1D4M3I5M1I50M1D11M7D2M4D9M1D18M2D11M1D5M2D13M5D3M2I19M2D11M2D47M4D1M2D7M1D26M1I4M1I6M1I6M1D24M2D5M3I9M1I13M1D9M1D22M1I3M1D12M1D4M4I32M1D2M2D15M3I3M1I10M1I7M1I11M1D4M1I3M7D2M1I11M1D4M1D1M2D9M8D15M1D9M1D44M1I4M2I10M1I15M1D23M5D4M2I7M4D14M1I10M2D35M1D5M3I25M1I17M1D18M5I5M2D15M2I21M1I1M1I55M7D11M1I5M1D13M2D13M1D12M1I18M1D9M3D29M1D5M1I11M2D11M1D4M4D13M1I10M3D83M1I24M1I6M2I4M1D5M1I6M1I34M1I4M2I11M1I4M2I47M10D7M1I40M3I11M2D39M1D19M1D2M1D3M1I22M2D17M2D4M1I2M1D7M1D27M1D7M1D17M1D7M1D15M1I8M1D3M1D1M1D44M1D1M3I4M1D2M1D19M1I15M1D6M4I28M1D8M1I13M1D4M1I11M1I19M2D69M1D43M4I24M1I25M2D13M2D16M1I4M1I8M1I42M1D11M1D7M3I1M2I1M5I14M2I2M1D28M1I5M1D25M1I46M7D8M2D30M1D4M1D19M1I22M1D30M1I10M5D7M1D5M1D3M2D12M11I3M1D7M8I2M6I2M3I7M2I4M1D1M2I5M1I18M2D1M1D1M1D4M1D10M3D18M1D27M2I5M1D6M1I7M2D7M22I30M1I31M1I19M2D46M1D3M1D27M6I13M1D37M1D12M2I14M28D3M1D3M1I18M6D25M1D8M1I9M2I17M1I2M4D10M1D44M1D6M1I14M3D10M2I7M1I10M2D9M15D18M1I13M1D15M1I25M1I13M1D1M1D18M5D17M1I16M1I16M1D29M1D24M1I17M1I15M2D10M1D11M3I3M1D2M1I50M11I2M2I2M1I1M2I1M1I9M1I18M2D41M1D26M1D25M1D22M4I6M2I2M13I23M1I11M1I25M1I7M3D9M1D4M1I16M1D4M1I2M1D6M1D20M1I37M2I42M1D3M1I47M1I11M1I3M1I14M1I7M1I19M7I11M3I10M2D7M1D11M1I48M1D2M1D10M4D2M1D18M1I67M2I4M4I6M1I17M1D6M2D23M1I9M1I1M3I8M1I14M2I2M3D6M4I9M1I5M5I22M1I6M2I25M8I1M2I4M1I2M4I31M2D7M1D11M11I16M2I11M2I14M1I8M2I3M1D21M1D6M2D1M1D6M1I27M1I1M1I33M1I21M2I1M1I8M1I5M2I6M1I8M1D34M1I3M4D7M1D2M1D16M1D1M1D46M1I12M1D7M1D31M6D10M1D1M1D1M1D5M11D10M1D19M1I22M1I10M1I11M1D8M1D24M1I6M2D7M3I2M1I17M1D24M1D2M4I19M1D14M2I17M1I9M3D16M1I10M1I25M1D26M11I3M2I5M1I2M8I30M2D15M2D13M1I6M5I5M3I17M2I17M2D18M2I11M1D11M2D3M1I18M1I9M1D8M1D16M1I2M1I13M3I1M1I10M1I11M1D8M3I3M1D26M1I4M2I8M1I3M2I4M1D4M2D11M1I10M1I4M1I8M6I1M1I5M7I2M1I5M8I3M2I13M4D1M1D17M1I21M1I22M1D10M1I41M1D2M1D2M1D5M1I41M1I29M1D5M1I5M1D8M1D15M1I9M1I22M1I29M4I7M1D9M1I8M1D32M2I15M1D15M1D23M1D7M10D19M1I38M1D7M1D4M1D16M28I29M7I28M1I52M2D6M1D1M1D1M1D3M1D25M2I15M1D9M5I6M1I12M1D6M1D4M2D11M5I1M2I1M4I15M3D11M3I4M1D8M1I40M6D12M1I17M1I9M5I1M1I2M1I25M1D23M2I9M1I11M1D3M2I28M1D12M1D17M15D10M1I9M1D2M1D8M4D11M1I9M1D6M1D8M1D40M2I3M2D8M1I11M1I16M1I6M1D7M1D34M2D27M1D5M1I3M2I39M1D30M1I22M1D10M3I61M2D19M2D6M1I7M1D23M1D4M1I3M1I6M2D12M2I11M14D13M1I6M4D9M2I11M1D17M1D4M1I8M1I3M1D4M1D35M1I47M1I17M1D7M1D2M1D25M1D13M1I3M1I18M1D13M2I10M2D19M2D6M1I6M1D7M1D11M1D6M3I2M1I11M1D6M1I17M12D1M1D2M1D9M1I1M1I7M7D4M1D9M8D12M1D37M1D25M4D1M1I7M3I13M1D4M1I2M1I43M1I11M1D4M1D6M1I31M2D38M2I12M2I6M2D39M1D19M6D1M1D12M1I16M1I50M1I40M1I24M1D4M2I5M1I5M2D13M2D4M7I2M2I2M7I1M3I15M1D8M1I10M10I41M1D34M1D10M1I11M1D3M3I7M3D23M9I47M2I19M1D36M42I2M1D3M1I3M1I7M1I5M3I6M1I16M1I13M1I39M14D7M1D16M1I19M1I14M1I8M1D34M2D3M1I6M1I12M2D3M1I10M2D1M1I6M39I2M2I16M2D3M2D3M1I23M1I14M3I3M2I6M3I2M1I1M1I10M1I25M1D17M2D33M2I2M1D7M1D36M2I13M1D9M1I6M3D11M1D2M1I8M1I21M1D34M1I12M2D3M1D8M4D11M1I59M5I18M2D11M1D4M7I26M2D77M5I11M1D16M2I6M5D19M1I13M1I1M2I23M1I6M2D11M1I35M1I10M1D14M1I30M1I12M38I2M1I3M1D2M1D5M2I7M1D1M2D3M1D57M1D31M1D9M1D63M1D40M2D3M1D25M1D4M2D21M15D10M1D30M2I3M2I6M2I15M1D6M1D48M2D27M1I6M1I77M2I3M1D22M3I20M1D14M1D29M1D16M1I20M1I5M30I25M6I7M1D17M1D5M14I16M1D3M1I15M1I41M1I13M1D13M1I5M2I19M2D6M1I29M1D2M2I16M1I6M1I8M1D4M9D13M3I10M1D16M4I27M1I1M3I6M2D9M5D38M1I3M2I1M1I4M2D5M1D24M1I18M1D3M5I2M3I3M1D3M1I1M1I5M1I4M1I11M5I3M8I6M1D3M2I5M1I11M1D19M1D1M1D15M1D3M1I15M1I5M3I1M1I12M1I23M1I1M1I6M4D2M4D9M1D17M1D4M1I18M3D7M1D51M11I11M1I12M3I17M1I14M2D12M4D10M1I26M1D45M1D3M1I15M2D11M1D28M1D4M2I9M1D31M3D15M1D11M1I3M4D10M1D21M1I31M8D23M4D24M1I13M5D19M2I1M1I5M10I10M1D23M1D20M2D32M1I5M1I23M1I9M1D14M1D22M1I6M1I19M3D14M1D18M1I10M1I7M1I14M1I46M1I7M21D5M1I17M3I2M4I7M1I16M1D2M1D14M1D3M1D4M1D16M2D42M1D7M1D17M5I1M1I29M13I24M1D3M8D5M12D9M1D23M1I8M +tctgA 50001 2212 16198 + ctgA 49186 2214 15925 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1I4M2I21M1I10M1I14M1I5M1D29M2D9M1I15M1I27M1I12M1D5M1I11M1D7M2I4M2D9M1D4M6D32M1D13M1I55M1I8M1I1M1I12M1I2M1D22M2I56M1D11M1I5M5I17M3I3M1I13M1D16M1I50M1I2M1I10M1D1M1D42M1D2M2D33M22I3M1I2M1I6M1D8M2D5M1D50M1D6M3D6M2D12M3I13M1D9M5D1M1D10M1I3M1D5M1I3M1I4M1I24M1I5M2D30M1D3M1I15M1D9M1I3M1I18M1I9M1D11M2D6M1I23M4D1M1D22M1I3M1I11M2D1M1D7M1D4M1D18M1I6M1I5M2D5M1I66M2I3M1D8M1I13M1I8M1I3M2D4M1D20M1I5M2I22M1I6M8I14M1I6M1D8M2D5M9D7M2I4M1D11M1I20M2D2M1I33M8I10M2I7M1I18M4I5M1D4M4D1M1D33M3I10M1D20M2D8M1D9M1I10M1D7M1I8M1D6M2I66M1I3M2I2M1I24M1D63M1I14M8I7M1I13M1D31M1I16M4D41M1D3M1D4M23I9M1D2M1D8M1I1M1I12M1I2M1I3M1D33M1I24M2I3M1I4M1I12M122D6M4D2M1D13M1I3M1D35M1I4M1I13M1D32M1D6M1I5M1I5M1D12M1D8M1D48M1I2M1D19M1D9M1I24M1D13M1D8M1I5M7I5M2D10M1I11M3I15M1I6M2I4M1I18M1D14M1D3M1D1M2D17M1D12M4D15M1I3M1D31M1D1M1D1M1D1M1D12M5I2M1D31M2I18M1D5M20D10M1I20M3D11M1I14M1I1M9I4M4I2M4I2M3I4M1D10M1D50M1I14M1I11M8I11M2D9M1I20M3I5M1I27M1D5M3I9M2I9M3D34M1I21M1D15M1I9M1I2M1I2M1I8M1I26M3D4M1D3M1I2M1I25M1I1M1I14M6I45M2I21M1I17M2D23M1D6M2I8M2D20M1I24M1D9M1I1M2D6M1D3M1D9M8I4M2I30M2D8M1D7M1I50M1I3M3I26M3D17M1D17M1D5M1D8M1I29M2D2M1I3M1I6M1D11M3I20M3I19M1I17M2I33M1D35M2D7M2D3M18D1M3D10M5D11M1D8M1D6M1I9M1I4M2D5M1D13M1D22M1D16M14I22M1D3M1I19M1D53M1I13M1I20M8I8M1I6M6D28M3D28M9D23M5D26M1I6M1D5M1D24M1I5M2I13M1I2M4I2M1I4M4I8M1I14M1I12M1I28M1I18M4I10M2D8M1I62M1I14M2I5M1I18M1D1M3I4M1I13M1D4M2I3M1D8M4D2M8D71M1I8M4I23M1I15M5D13M1D6M1D8M7I16M2I13M2D27M1D46M1I20M2D6M1I9M1D4M1I7M1D6M1I2M6I11M4D25M1I22M1D14M2D20M1D30M3I7M3D4M1I22M1D4M1D10M1D20M1I21M3I3M1I8M1D14M1I10M2I45M1D14M1D17M1D27M2D3M1I2M2I4M1D13M1D5M4I6M2I11M1I11M4I6M1I15M1I8M1I6M9I1M1I19M1I4M1I8M2D9M1I7M1D33M1D19M1D3M1D35M3D4M1D6M2D16M3D1M1D30M26D28M1D7M2I12M2D10M1I7M1D16M1D4M1I18M1I33M1I31M1I7M1I12M1D7M1D16M5I3M1I4M1D4M1D28M8D12M1D4M1D7M3D11M1D15M1D12M1I12M3I6M2D4M1D16M1I11M1D5M1D2M2I22M4D14M2I19M1D7M3I17M1I22M5D6M1D14M2D1M1D12M1I11M10I16M1D21M1D24M5D17M1D48M1D3M1D4M1D12M1D13M4D9M1I22M1I21M1I12M1D11M3D2M1D9M1I10M1D4M1I4M1D18M1I3M1D18M2D4M1I21M4D5M3I3M1D21M1I33M1D19M1I38M2I27M1I7M1I15M2I8M5D2M1D15M1I7M2I2M1I11M1D24M1I4M1D14M1I51M1D47M1D3M4D4M3D3M1I3M1D13M1D3M1I13M1I10M3I34M1D3M1I17M1D5M1I8M1D28M1I13M2I2M1I16M1D21M2I22M5I8M1I3M1I9M1D12M2D11M1I7M1I2M2D10M3I26M4D12M1D3M1D12M7I12M1I5M1D5M8D5M1D8M1I31M1D3M1D6M1I12M2D4M1D24M2I10M1I17M1D1M3D11M1D8M2D16M1D18M2D3M6D2M1D6M24D10M2I14M1I11M1I4M1D10M1I34M4I14M1D21M1D6M43D8M4D2M1D12M1D7M5D4M2I15M1D39M1D6M1I9M3D1M3D2M2D4M4D2M3D1M1D2M1D10M1I16M3D17M1I1M1I28M1D10M1D11M1D28M1D11M2I17M1I14M1I7M2D6M1D4M7D3M7D10M1I6M1I57M2D4M1D5M1D18M2I50M5I38M1D6M1D15M1D5M1I58M4I28M1I15M1D14M3I4M2D4M1I11M4D4M1D44M1I25M1I8M2D12M1I7M1D31M1D9M26I5M1I19M1D1M1D9M1D5M1D7M34I1M1I38M1I1M1I21M1D4M11D29M1D11M1D7M3I19M2I36M1D12M1I21M1I2M7I23M2I19M1I6M1I16M2I2M3D10M1D11M10I5M1I15M2D18M1I17M1I7M2D6M2I6M1D27M1I17M1I23M5I29M4D3M1I41M1D33M1D9M1D11M6I25M1D17M3D6M1I8M1I14M1D13M1D12M1I16M1I12M1I3M1D12M1I28M1D32M1D15M1I32M6I2M2I8M1D6M1D23M22I30M1I9M10D58M3I7M1D12M1I10M6I31M1D14M1I38M1I13M3D14M1D23M1I6M1I10M3I22M1I10M1I8M5I67M1I13M4D3M5D6M1I4M1I8M3D8M3I2M1I11M1D11M1I4M2I1M1I2M1I5M3I9M2D1M1D4M1D6M2D5M1D5M1I8M4D8M1I7M2I3M3D15M6D1M1D9M1D4M1D6M1D36M1D7M1D18M1I5M1D3M2I20M1D13M4I7M5I2M2I43M1I5M1D12M1I7M1D31M1I13M1D13M1I6M1D1M1D4M3D7M1D31M2D26M1I7M1I8M1D7M1I17M1D18M1I6M1D4M7D13M1I6M1D7M1I31M1D5M1I15M1D20M1I20M1I26M3I2M3I1M9I5M1I24M2D25M1D14M1D5M3D2M1I7M1I3M1I19M1I17M1I16M2I5M5D8M1I15M1I3M2I5M5I15M1D13M3D7M1D9M5I10M2D5M1I10M2I1M1I2M1I9M8I2M1D5M1I6M6D7M1I13M3I7M1I3M1D15M2D18M1D3M1D2M1D5M1D5M2I9M1I1M1I27M1I11M1D16M8I1M2I8M1I15M1I6M1I10M1D24M1D3M1D19M1I12M1I24M1D8M1D2M1D2M1I6M1D31M2I5M5D16M5I5M1I6M3D11M14D12M3I29M1I12M1I5M23I2M1I4M4I6M1D41M2I21M1D17M1D5M1D25M3I18M1D6M1D5M1D42M1I3M1D31M1I3M1D14M1D21M1I8M3D4M1I19M6D10M2I12M7I32M8I2M1D18M2D31M1D15M1I21M1I6M1I3M1I39M2I1M1D10M1D3M1I36M12D45M1D7M1I4M1I1M3I7M1I3M1D5M1D6M1D14M1D14M1I18M1D1M1D6M1I1M2D1M1D4M2D8M1D27M5I20M12D11M1D9M1D29M3D26M2D4M2D3M1I6M37D1M1D4M5D3M1D3M6D3M4D16M1D27M2D3M1D2M2D60M4D5M4I8M21D26M1D16M1D3M1I8M1D22M1I8M10D3M2D3M3D13M36D4M1D40M1I6M1I5M1I7M2I7M1I13M2I2M1D8M2I6M1I9M1I3M1D4M4I3M1D5M1I11M1D4M4D23M1I21M1I17M1D37M2I10M1D36M1D8M1D1M1D9M1I6M1D1M5D1M7D3M2D2M10D2M2D12M1I27M2I1M1D16M1D18M1D25M1D29M1I12M2I18M1I2M3I3M7I13M1D30M3D2M2D18M1D4M2D36M1I19M1D19M1I6M1I4M3D20M2D13M1I61M1I12M3D1M1D6M2D4M2D3M1I7M1D34M1I9M1D5M5D9M3D11M1D4M1I4M1I3M4D2M3D1M8D22M1I10M1D12M1D57M1D25M1D58M4I26M1I2M1I2M1I7M2I43M1I3M1D6M1D9M2D20M1D5M41D5M1D30M1D32M1D12M2I9M4I17M2D44M1D2M1I29M14I1M1I17M1I8M1D27M4I14M1D9M1D4M1I6M1D12M5D26M3I2M1I2M1I18M +qctgA 49186 2214 15925 + ctgA 50001 2212 16198 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1D4M2D21M1D10M1D14M1D5M1I29M2I9M1D15M1D27M1D12M1I5M1D11M1I7M2D4M2I9M1I4M6I32M1I13M1D55M1D8M1D1M1D12M1D2M1I22M2D56M1I11M1D5M5D17M3D3M1D13M1I16M1D50M1D2M1D10M1I1M1I42M1I2M2I33M22D3M1D2M1D6M1I8M2I5M1I50M1I6M3I6M2I12M3D13M1I9M5I1M1I10M1D3M1I5M1D3M1D4M1D24M1D5M2I30M1I3M1D15M1I9M1D3M1D18M1D9M1I11M2I6M1D23M4I1M1I22M1D3M1D11M2I1M1I7M1I4M1I18M1D6M1D5M2I5M1D66M2D3M1I8M1D13M1D8M1D3M2I4M1I20M1D5M2D22M1D6M8D14M1D6M1I8M2I5M9I7M2D4M1I11M1D20M2I2M1D33M8D10M2D7M1D18M4D5M1I4M4I1M1I33M3D10M1I20M2I8M1I9M1D10M1I7M1D8M1I6M2D66M1D3M2D2M1D24M1I63M1D14M8D7M1D13M1I31M1D16M4I41M1I3M1I4M23D9M1I2M1I8M1D1M1D12M1D2M1D3M1I33M1D24M2D3M1D4M1D12M122I6M4I2M1I13M1D3M1I35M1D4M1D13M1I32M1I6M1D5M1D5M1I12M1I8M1I48M1D2M1I19M1I9M1D24M1I13M1I8M1D5M7D5M2I10M1D11M3D15M1D6M2D4M1D18M1I14M1I3M1I1M2I17M1I12M4I15M1D3M1I31M1I1M1I1M1I1M1I12M5D2M1I31M2D18M1I5M20I10M1D20M3I11M1D14M1D1M9D4M4D2M4D2M3D4M1I10M1I50M1D14M1D11M8D11M2I9M1D20M3D5M1D27M1I5M3D9M2D9M3I34M1D21M1I15M1D9M1D2M1D2M1D8M1D26M3I4M1I3M1D2M1D25M1D1M1D14M6D45M2D21M1D17M2I23M1I6M2D8M2I20M1D24M1I9M1D1M2I6M1I3M1I9M8D4M2D30M2I8M1I7M1D50M1D3M3D26M3I17M1I17M1I5M1I8M1D29M2I2M1D3M1D6M1I11M3D20M3D19M1D17M2D33M1I35M2I7M2I3M18I1M3I10M5I11M1I8M1I6M1D9M1D4M2I5M1I13M1I22M1I16M14D22M1I3M1D19M1I53M1D13M1D20M8D8M1D6M6I28M3I28M9I23M5I26M1D6M1I5M1I24M1D5M2D13M1D2M4D2M1D4M4D8M1D14M1D12M1D28M1D18M4D10M2I8M1D62M1D14M2D5M1D18M1I1M3D4M1D13M1I4M2D3M1I8M4I2M8I71M1D8M4D23M1D15M5I13M1I6M1I8M7D16M2D13M2I27M1I46M1D20M2I6M1D9M1I4M1D7M1I6M1D2M6D11M4I25M1D22M1I14M2I20M1I30M3D7M3I4M1D22M1I4M1I10M1I20M1D21M3D3M1D8M1I14M1D10M2D45M1I14M1I17M1I27M2I3M1D2M2D4M1I13M1I5M4D6M2D11M1D11M4D6M1D15M1D8M1D6M9D1M1D19M1D4M1D8M2I9M1D7M1I33M1I19M1I3M1I35M3I4M1I6M2I16M3I1M1I30M26I28M1I7M2D12M2I10M1D7M1I16M1I4M1D18M1D33M1D31M1D7M1D12M1I7M1I16M5D3M1D4M1I4M1I28M8I12M1I4M1I7M3I11M1I15M1I12M1D12M3D6M2I4M1I16M1D11M1I5M1I2M2D22M4I14M2D19M1I7M3D17M1D22M5I6M1I14M2I1M1I12M1D11M10D16M1I21M1I24M5I17M1I48M1I3M1I4M1I12M1I13M4I9M1D22M1D21M1D12M1I11M3I2M1I9M1D10M1I4M1D4M1I18M1D3M1I18M2I4M1D21M4I5M3D3M1I21M1D33M1I19M1D38M2D27M1D7M1D15M2D8M5I2M1I15M1D7M2D2M1D11M1I24M1D4M1I14M1D51M1I47M1I3M4I4M3I3M1D3M1I13M1I3M1D13M1D10M3D34M1I3M1D17M1I5M1D8M1I28M1D13M2D2M1D16M1I21M2D22M5D8M1D3M1D9M1I12M2I11M1D7M1D2M2I10M3D26M4I12M1I3M1I12M7D12M1D5M1I5M8I5M1I8M1D31M1I3M1I6M1D12M2I4M1I24M2D10M1D17M1I1M3I11M1I8M2I16M1I18M2I3M6I2M1I6M24I10M2D14M1D11M1D4M1I10M1D34M4D14M1I21M1I6M43I8M4I2M1I12M1I7M5I4M2D15M1I39M1I6M1D9M3I1M3I2M2I4M4I2M3I1M1I2M1I10M1D16M3I17M1D1M1D28M1I10M1I11M1I28M1I11M2D17M1D14M1D7M2I6M1I4M7I3M7I10M1D6M1D57M2I4M1I5M1I18M2D50M5D38M1I6M1I15M1I5M1D58M4D28M1D15M1I14M3D4M2I4M1D11M4I4M1I44M1D25M1D8M2I12M1D7M1I31M1I9M26D5M1D19M1I1M1I9M1I5M1I7M34D1M1D38M1D1M1D21M1I4M11I29M1I11M1I7M3D19M2D36M1I12M1D21M1D2M7D23M2D19M1D6M1D16M2D2M3I10M1I11M10D5M1D15M2I18M1D17M1D7M2I6M2D6M1I27M1D17M1D23M5D29M4I3M1D41M1I33M1I9M1I11M6D25M1I17M3I6M1D8M1D14M1I13M1I12M1D16M1D12M1D3M1I12M1D28M1I32M1I15M1D32M6D2M2D8M1I6M1I23M22D30M1D9M10I58M3D7M1I12M1D10M6D31M1I14M1D38M1D13M3I14M1I23M1D6M1D10M3D22M1D10M1D8M5D67M1D13M4I3M5I6M1D4M1D8M3I8M3D2M1D11M1I11M1D4M2D1M1D2M1D5M3D9M2I1M1I4M1I6M2I5M1I5M1D8M4I8M1D7M2D3M3I15M6I1M1I9M1I4M1I6M1I36M1I7M1I18M1D5M1I3M2D20M1I13M4D7M5D2M2D43M1D5M1I12M1D7M1I31M1D13M1I13M1D6M1I1M1I4M3I7M1I31M2I26M1D7M1D8M1I7M1D17M1I18M1D6M1I4M7I13M1D6M1I7M1D31M1I5M1D15M1I20M1D20M1D26M3D2M3D1M9D5M1D24M2I25M1I14M1I5M3I2M1D7M1D3M1D19M1D17M1D16M2D5M5I8M1D15M1D3M2D5M5D15M1I13M3I7M1I9M5D10M2I5M1D10M2D1M1D2M1D9M8D2M1I5M1D6M6I7M1D13M3D7M1D3M1I15M2I18M1I3M1I2M1I5M1I5M2D9M1D1M1D27M1D11M1I16M8D1M2D8M1D15M1D6M1D10M1I24M1I3M1I19M1D12M1D24M1I8M1I2M1I2M1D6M1I31M2D5M5I16M5D5M1D6M3I11M14I12M3D29M1D12M1D5M23D2M1D4M4D6M1I41M2D21M1I17M1I5M1I25M3D18M1I6M1I5M1I42M1D3M1I31M1D3M1I14M1I21M1D8M3I4M1D19M6I10M2D12M7D32M8D2M1I18M2I31M1I15M1D21M1D6M1D3M1D39M2D1M1I10M1I3M1D36M12I45M1I7M1D4M1D1M3D7M1D3M1I5M1I6M1I14M1I14M1D18M1I1M1I6M1D1M2I1M1I4M2I8M1I27M5D20M12I11M1I9M1I29M3I26M2I4M2I3M1D6M37I1M1I4M5I3M1I3M6I3M4I16M1I27M2I3M1I2M2I60M4I5M4D8M21I26M1I16M1I3M1D8M1I22M1D8M10I3M2I3M3I13M36I4M1I40M1D6M1D5M1D7M2D7M1D13M2D2M1I8M2D6M1D9M1D3M1I4M4D3M1I5M1D11M1I4M4I23M1D21M1D17M1I37M2D10M1I36M1I8M1I1M1I9M1D6M1I1M5I1M7I3M2I2M10I2M2I12M1D27M2D1M1I16M1I18M1I25M1I29M1D12M2D18M1D2M3D3M7D13M1I30M3I2M2I18M1I4M2I36M1D19M1I19M1D6M1D4M3I20M2I13M1D61M1D12M3I1M1I6M2I4M2I3M1D7M1I34M1D9M1I5M5I9M3I11M1I4M1D4M1D3M4I2M3I1M8I22M1D10M1I12M1I57M1I25M1I58M4D26M1D2M1D2M1D7M2D43M1D3M1I6M1I9M2I20M1I5M41I5M1I30M1I32M1I12M2D9M4D17M2I44M1I2M1D29M14D1M1D17M1D8M1I27M4D14M1I9M1I4M1D6M1I12M5I26M3D2M1D2M1D18M +tctgA 50001 19011 26774 + ctgA 49186 18755 26306 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1I43M1D4M7D2M7D13M2I3M1I7M1I19M1D5M1D32M1D5M2I63M4D20M5D50M2I12M1I16M3D8M1I19M2D38M1D28M7I2M1I5M4I1M1I3M2I2M1D25M1I10M1D2M1D19M1I5M1D32M1I8M5D4M8D7M1D1M1D26M2D16M2I6M7D14M4I2M1I3M2I4M1D32M6I8M1D12M1D10M1D24M4D2M1D43M1D22M1I11M1I30M2D31M1D19M1D2M1D10M3I48M1I26M4D11M1D4M1D11M2D4M1D18M7I8M1I10M1I2M1D61M1D4M1I18M1D13M3D3M2D5M8D47M1I30M3D6M1I44M2D14M1I40M9D1M2D24M1D16M39I5M1I38M3I22M4D35M1I19M1I19M1I26M1D4M1I10M4D39M1I10M2I10M1I10M1I3M1D1M5D16M1I13M1D11M1D25M1D21M8I22M4D11M1D9M5D17M1D73M1I36M6D4M1D19M1I52M1I15M24I1M1I2M2I15M1I2M6I2M1I28M1D41M4I46M4I14M1D7M21D4M1I20M1D2M1I15M1I3M1I29M1I20M5D37M2I9M1I16M1I24M1I22M3D1M2D47M1I6M1D6M1I19M1D18M1I1M1I18M1I3M1I2M1I5M35D8M1D13M1I7M4I31M1I6M1D83M2D1M1I26M1I15M1I3M2D5M2D12M1D42M1I1M2I12M4D2M4D6M26D8M3D1M1D2M4D9M1D30M2D3M2D28M1I4M1I41M1D18M1I41M1I12M1I19M4I35M5I31M4I31M1I3M1D11M1I25M2D2M3D30M1D5M1I8M1D22M1I7M1D32M1I29M6D1M7D10M3D1M1D5M1I15M7I18M2I10M4D42M1D15M1I13M1D5M1D2M2I38M1I9M2I7M3I20M1D15M1I5M1D3M1D8M2I12M1D10M1D3M1D6M1D30M1D94M1I18M1I4M5D3M1D29M1D2M1D2M1D5M1I4M1D13M1I9M6I10M1D6M1D12M2I5M2D1M1D11M2D1M1D10M5D9M8D17M1D35M1D4M1I16M5I1M1I9M8I21M23I2M1I38M1D1M1D8M1D27M1I42M1I9M2D1M1I5M1D23M2I5M1I28M1D25M1D24M1D5M1I21M1I4M4I7M1D7M1I25M21I5M1I4M1I42M2D26M1D7M1I10M1I1M1I19M10D4M1D14M1D42M8D28M3D2M3D13M1I17M1D11M1I22M1I19M1I1M4I9M2D2M1I14M8I9M2D9M1I13M2D11M3D2M2I5M1I3M1I6M3D10M1I9M1D21M1I5M2I9M2I10M1D3M2I9M1I21M3D23M1I8M1I3M1I26M1I33M8D7M1I9M10D10M1I7M1D52M10D13M1I6M2D39M1D6M1D26M1I4M1D4M32D24M1D21M2D1M1D7M1D1M1D15M1D5M1D24M2I1M1I6M1D2M1D19M35D41M3I6M3I15M2D3M1D14M2I9M3D19M2D26M1D30M1I6M3D32M1I5M1D36M1D8M1D2M2D2M1D6M3I3M7I2M2I17M1D12M1D6M1I40M3D28M2I2M2I21M1D4M1I9M1I4M1I31M2I11M1D31M1D3M2D3M5D7M4D7M1D6M1D6M8D4M1I1M2D19M3I14M1D7M1D12M1I4M3I2M4I11M1I8M1I17M1D11M1D3M1D15M17I8M3D42M1I17M1D25M1I15M1I11M2I7M1D23M4I14M2D20M1I9M3D2M1D17M1D34M1I3M1I4M1D13M1I2M1I6M1I6M1D12M2D1M4D2M4D4M1I16M36D6M1D32M1D27M1D4M1D2M1I11M20D16M3D4M1I16M1D27M1D14M1D21M2I14M1D10M3D5M2D3M3D2M1D1M4D5M1D2M3D7M1D7M1I9M1D5M1D4M1D16M1D9M9D1M1D2M1D4M1D3M2I6M2D5M1I22M1D3M1I8M1D8M3D43M1I4M1D31M1I17M3I8M2I12M6I13M1I16M1D11M2D4M1I5M2D2M2D2M1I29M1I12M2D13M1I7M14D1M1D3M5D10M1D12M5I19M1I10M1I3M7I2M14I3M9I13M2I5M1I13M1D4M1D18M1I3M1D28M1I5M4D35M1D23M3D11M2I8M1D17M1I9M1I23M4D4M1D9M1I3M1I26M1I5M3I1M1I14M1D42M1I5M16I15M1D28M4D5M1I5M1D4M1D11M2D5M1I4M1I3M1I9M +qctgA 49186 18755 26306 + ctgA 50001 19011 26774 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1D43M1I4M7I2M7I13M2D3M1D7M1D19M1I5M1I32M1I5M2D63M4I20M5I50M2D12M1D16M3I8M1D19M2I38M1I28M7D2M1D5M4D1M1D3M2D2M1I25M1D10M1I2M1I19M1D5M1I32M1D8M5I4M8I7M1I1M1I26M2I16M2D6M7I14M4D2M1D3M2D4M1I32M6D8M1I12M1I10M1I24M4I2M1I43M1I22M1D11M1D30M2I31M1I19M1I2M1I10M3D48M1D26M4I11M1I4M1I11M2I4M1I18M7D8M1D10M1D2M1I61M1I4M1D18M1I13M3I3M2I5M8I47M1D30M3I6M1D44M2I14M1D40M9I1M2I24M1I16M39D5M1D38M3D22M4I35M1D19M1D19M1D26M1I4M1D10M4I39M1D10M2D10M1D10M1D3M1I1M5I16M1D13M1I11M1I25M1I21M8D22M4I11M1I9M5I17M1I73M1D36M6I4M1I19M1D52M1D15M24D1M1D2M2D15M1D2M6D2M1D28M1I41M4D46M4D14M1I7M21I4M1D20M1I2M1D15M1D3M1D29M1D20M5I37M2D9M1D16M1D24M1D22M3I1M2I47M1D6M1I6M1D19M1I18M1D1M1D18M1D3M1D2M1D5M35I8M1I13M1D7M4D31M1D6M1I83M2I1M1D26M1D15M1D3M2I5M2I12M1I42M1D1M2D12M4I2M4I6M26I8M3I1M1I2M4I9M1I30M2I3M2I28M1D4M1D41M1I18M1D41M1D12M1D19M4D35M5D31M4D31M1D3M1I11M1D25M2I2M3I30M1I5M1D8M1I22M1D7M1I32M1D29M6I1M7I10M3I1M1I5M1D15M7D18M2D10M4I42M1I15M1D13M1I5M1I2M2D38M1D9M2D7M3D20M1I15M1D5M1I3M1I8M2D12M1I10M1I3M1I6M1I30M1I94M1D18M1D4M5I3M1I29M1I2M1I2M1I5M1D4M1I13M1D9M6D10M1I6M1I12M2D5M2I1M1I11M2I1M1I10M5I9M8I17M1I35M1I4M1D16M5D1M1D9M8D21M23D2M1D38M1I1M1I8M1I27M1D42M1D9M2I1M1D5M1I23M2D5M1D28M1I25M1I24M1I5M1D21M1D4M4D7M1I7M1D25M21D5M1D4M1D42M2I26M1I7M1D10M1D1M1D19M10I4M1I14M1I42M8I28M3I2M3I13M1D17M1I11M1D22M1D19M1D1M4D9M2I2M1D14M8D9M2I9M1D13M2I11M3I2M2D5M1D3M1D6M3I10M1D9M1I21M1D5M2D9M2D10M1I3M2D9M1D21M3I23M1D8M1D3M1D26M1D33M8I7M1D9M10I10M1D7M1I52M10I13M1D6M2I39M1I6M1I26M1D4M1I4M32I24M1I21M2I1M1I7M1I1M1I15M1I5M1I24M2D1M1D6M1I2M1I19M35I41M3D6M3D15M2I3M1I14M2D9M3I19M2I26M1I30M1D6M3I32M1D5M1I36M1I8M1I2M2I2M1I6M3D3M7D2M2D17M1I12M1I6M1D40M3I28M2D2M2D21M1I4M1D9M1D4M1D31M2D11M1I31M1I3M2I3M5I7M4I7M1I6M1I6M8I4M1D1M2I19M3D14M1I7M1I12M1D4M3D2M4D11M1D8M1D17M1I11M1I3M1I15M17D8M3I42M1D17M1I25M1D15M1D11M2D7M1I23M4D14M2I20M1D9M3I2M1I17M1I34M1D3M1D4M1I13M1D2M1D6M1D6M1I12M2I1M4I2M4I4M1D16M36I6M1I32M1I27M1I4M1I2M1D11M20I16M3I4M1D16M1I27M1I14M1I21M2D14M1I10M3I5M2I3M3I2M1I1M4I5M1I2M3I7M1I7M1D9M1I5M1I4M1I16M1I9M9I1M1I2M1I4M1I3M2D6M2I5M1D22M1I3M1D8M1I8M3I43M1D4M1I31M1D17M3D8M2D12M6D13M1D16M1I11M2I4M1D5M2I2M2I2M1D29M1D12M2I13M1D7M14I1M1I3M5I10M1I12M5D19M1D10M1D3M7D2M14D3M9D13M2D5M1D13M1I4M1I18M1D3M1I28M1D5M4I35M1I23M3I11M2D8M1I17M1D9M1D23M4I4M1I9M1D3M1D26M1D5M3D1M1D14M1I42M1D5M16D15M1I28M4I5M1D5M1I4M1I11M2I5M1D4M1D3M1D9M +tctgA 50001 16650 18559 + ctgA 49186 16409 18309 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5D3M3I13M1D9M1D5M2I5M8D39M1I36M2D33M1D22M1D10M2I8M1D5M1D16M6D5M2D11M2I12M1I7M1I3M3I3M1D3M1I13M1D21M1I4M2I1M1D14M1I12M1I2M1D12M6I5M1D19M10D28M1D26M1D41M1I11M1D9M1I9M4D15M6D13M1D25M5D3M1I27M2D7M1D17M7D18M2I16M1I12M1D22M2I5M12D5M7D2M1D13M1I13M2D2M1I15M1I19M1D17M1I58M1I8M11I8M1I6M2D6M1D2M1I8M2D4M15D6M1D1M2I8M3I25M1D21M1I43M1I6M1D12M2I10M14I5M1D19M3D4M1I95M2D16M2I9M3I8M1I3M1D3M4D1M1D5M3D14M1I7M1I6M2I40M1I1M2I5M1D5M1I11M7D25M10I16M1I2M2D21M1D4M1D4M1D15M2D3M1I13M13I28M2D5M1I33M1I11M1D36M1D19M1I22M1D18M1I1M1I12M1D6M9D11M2D4M1I5M10D16M5I21M1D5M1I11M37I13M3I4M1D9M1I3M1I12M1I58M1D14M +qctgA 49186 16409 18309 + ctgA 50001 16650 18559 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5I3M3D13M1I9M1I5M2D5M8I39M1D36M2I33M1I22M1I10M2D8M1I5M1I16M6I5M2I11M2D12M1D7M1D3M3D3M1I3M1D13M1I21M1D4M2D1M1I14M1D12M1D2M1I12M6D5M1I19M10I28M1I26M1I41M1D11M1I9M1D9M4I15M6I13M1I25M5I3M1D27M2I7M1I17M7I18M2D16M1D12M1I22M2D5M12I5M7I2M1I13M1D13M2I2M1D15M1D19M1I17M1D58M1D8M11D8M1D6M2I6M1I2M1D8M2I4M15I6M1I1M2D8M3D25M1I21M1D43M1D6M1I12M2D10M14D5M1I19M3I4M1D95M2I16M2D9M3D8M1D3M1I3M4I1M1I5M3I14M1D7M1D6M2D40M1D1M2D5M1I5M1D11M7I25M10D16M1D2M2I21M1I4M1I4M1I15M2I3M1D13M13D28M2I5M1D33M1D11M1I36M1I19M1D22M1I18M1D1M1D12M1I6M9I11M2I4M1D5M10I16M5D21M1I5M1D11M37D13M3D4M1I9M1D3M1D12M1D58M1I14M +tctgA 50001 0 1859 + ctgA 49186 3 1851 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1I16M1I5M3I33M1D14M3D7M1D25M2I5M2I4M1D17M3D11M1D5M3D3M1I15M3I1M2I6M1I2M6D6M2D24M1I3M2D29M1I2M1I3M1I6M1I10M2D8M19D33M1D23M2D9M1D11M1I6M1D5M1D28M1I13M1D5M1I2M1I49M5D6M2I21M1D1M2D2M2D4M4I4M1I5M1I3M1D2M1I4M37D17M2I16M6D5M3D3M6D16M5I4M8I5M4I1M1I52M2D2M1I5M28D33M1D17M2I2M2D31M42I5M1I9M1I7M1D8M1I40M1I39M1I2M1D3M2I11M2I6M2I10M1D14M1I12M1I16M1D6M3I6M2I4M1I1M1I27M1I3M10I3M2D11M3D3M1I35M1I1M3D3M2D19M3D9M4D23M1I3M1I28M1I52M1I28M1D20M2I66M1I3M2I7M1D7M2D9M1D11M1D11M1D7M1I3M1I30M1D11M1D15M2I7M3D3M1I12M6I35M1D4M1D17M1D15M1I5M1D4M1I5M1I3M5D10M1D2M1D8M7I13M5I9M1D4M1I45M6I4M1I19M2D16M1D1M2I23M7I11M1I19M1D13M +qctgA 49186 3 1851 + ctgA 50001 0 1859 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1D16M1D5M3D33M1I14M3I7M1I25M2D5M2D4M1I17M3I11M1I5M3I3M1D15M3D1M2D6M1D2M6I6M2I24M1D3M2I29M1D2M1D3M1D6M1D10M2I8M19I33M1I23M2I9M1I11M1D6M1I5M1I28M1D13M1I5M1D2M1D49M5I6M2D21M1I1M2I2M2I4M4D4M1D5M1D3M1I2M1D4M37I17M2D16M6I5M3I3M6I16M5D4M8D5M4D1M1D52M2I2M1D5M28I33M1I17M2D2M2I31M42D5M1D9M1D7M1I8M1D40M1D39M1D2M1I3M2D11M2D6M2D10M1I14M1D12M1D16M1I6M3D6M2D4M1D1M1D27M1D3M10D3M2I11M3I3M1D35M1D1M3I3M2I19M3I9M4I23M1D3M1D28M1D52M1D28M1I20M2D66M1D3M2D7M1I7M2I9M1I11M1I11M1I7M1D3M1D30M1I11M1I15M2D7M3I3M1D12M6D35M1I4M1I17M1I15M1D5M1I4M1D5M1D3M5I10M1I2M1I8M7D13M5D9M1I4M1D45M6D4M1D19M2I16M1I1M2D23M7D11M1D19M1I13M +tctgA 50001 18559 19001 - ctgA 49186 18309 18754 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:5M1I15M2I30M1D20M1D13M2D2M1D14M8I11M1D18M1I7M1I56M1D33M1D52M2D7M1I19M7D26M1I9M2I10M1I27M1D18M1I15M2I17M +qctgA 49186 18309 18754 - ctgA 50001 18559 19001 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:17M2D15M1D18M1I27M1D10M2D9M1D26M7I19M1D7M2I52M1I33M1I56M1D7M1D18M1I11M8D14M1I2M2I13M1I20M1I30M2D15M1D5M +tctgA 50001 1859 2192 - ctgA 49186 1860 2214 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:14M1D4M1D3M1D9M1I12M5D20M2I43M1I10M1I7M2D2M1D8M1I30M1I9M1I2M1I6M15I39M2I16M4I2M1I35M1I2M1I6M1D42M +qctgA 49186 1860 2214 - ctgA 50001 1859 2192 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:42M1I6M1D2M1D35M1D2M4D16M2D39M15D6M1D2M1D9M1D30M1D8M1I2M2I7M1D10M1D43M2D20M5I12M1D9M1I3M1I4M1I14M " `; diff --git a/products/jbrowse-cli/src/commands/process-paf.ts b/products/jbrowse-cli/src/commands/process-paf.ts index a059885301..49c9581921 100644 --- a/products/jbrowse-cli/src/commands/process-paf.ts +++ b/products/jbrowse-cli/src/commands/process-paf.ts @@ -3,7 +3,7 @@ import JBrowseCommand from '../base' import readline from 'readline' import { createGunzip } from 'zlib' -import { Args } from '@oclif/core' +import { Args, Flags } from '@oclif/core' function getReadline(filename: string) { const stream = fs.createReadStream(filename) @@ -12,6 +12,12 @@ function getReadline(filename: string) { }) } +function getStdReadline() { + return readline.createInterface({ + input: process.stdin, + }) +} + const cigarRegex = new RegExp(/([MIDNSHPX=])/) export function parseCigar(cigar = '') { @@ -38,28 +44,37 @@ export function swapIndelCigar(cigar: string) { } export default class ProcessPAF extends JBrowseCommand { - // @ts-expect-error - target: string - static description = 'Pairwise index the PAF' static examples = [ '# processes a local PAF file into our custom format PPAF, which pairwise indexes the PAF', - '$ jbrowse process-paf file.paf > output.ppaf', + '', + '# read from stdin. could also pipe directly from minimap2 here', + '$ cat file.paf | jbrowse process-paf | sort -k1,1 -k3,3n | bgzip > out.ppaf.gz', + '$ tabix out.ppaf.gz', + '$ jbrowse add-track out.ppaf.gz -a mm39,hg38', + '', + '# read from file instead of stdin', + '$ jbrowse process-paf file.paf | sort -k1,1 -k3,3n | bgzip > out.ppaf.gz', + '$ tabix out.ppaf.gz', + '$ jbrowse add-track out.ppaf.gz -a mm39,hg38', ] static args = { track: Args.string({ - required: true, - description: `Track file or URL`, + description: `Track file or URL (optional, stdin if not specified)`, }), } + static flags = { + help: Flags.help({ char: 'h' }), + } + async run() { const { args: runArgs } = await this.parse(ProcessPAF) const { track: filename } = runArgs - const rl1 = getReadline(filename) + const rl1 = filename ? getReadline(filename) : getStdReadline() for await (const line of rl1) { const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') diff --git a/products/jbrowse-cli/src/commands/sort-gff.ts b/products/jbrowse-cli/src/commands/sort-gff.ts index 34746a7d3f..15a5c0a8c3 100644 --- a/products/jbrowse-cli/src/commands/sort-gff.ts +++ b/products/jbrowse-cli/src/commands/sort-gff.ts @@ -1,4 +1,4 @@ -import { Args } from '@oclif/core' +import { Args, Flags } from '@oclif/core' import { sync as commandExistsSync } from 'command-exists' import { spawn } from 'child_process' @@ -21,6 +21,10 @@ export default class SortGff extends JBrowseCommand { }), } + static flags = { + help: Flags.help({ char: 'h' }), + } + async run() { const { args: { file }, From 5bd7de7dd25a2cc0c98b4471092e8e8baf9c80d1 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 11 Dec 2023 08:39:01 -0500 Subject: [PATCH 07/12] Rename ppaf->pif, rename process-paf to create-pif, add new create-pifgz --- .gitignore | 1 + .../PairwiseIndexedPAFAdapter.ts | 14 +-- .../PairwiseIndexedPAFAdapter/configSchema.ts | 6 +- products/jbrowse-cli/README.md | 85 +++++++++++++------ products/jbrowse-cli/createppaf.sh | 4 - ...f.test.ts.snap => create-pif.test.ts.snap} | 2 +- .../jbrowse-cli/src/commands/add-track.ts | 6 +- ...process-paf.test.ts => create-pif.test.ts} | 4 +- .../{process-paf.ts => create-pif.ts} | 22 ++--- .../src/commands/create-pifgz.test.ts | 20 +++++ .../jbrowse-cli/src/commands/create-pifgz.ts | 64 ++++++++++++++ test_data/hs1_vs_mm39/config.json | 6 +- 12 files changed, 174 insertions(+), 60 deletions(-) delete mode 100755 products/jbrowse-cli/createppaf.sh rename products/jbrowse-cli/src/commands/__snapshots__/{process-paf.test.ts.snap => create-pif.test.ts.snap} (99%) rename products/jbrowse-cli/src/commands/{process-paf.test.ts => create-pif.test.ts} (86%) rename products/jbrowse-cli/src/commands/{process-paf.ts => create-pif.ts} (81%) create mode 100644 products/jbrowse-cli/src/commands/create-pifgz.test.ts create mode 100644 products/jbrowse-cli/src/commands/create-pifgz.ts diff --git a/.gitignore b/.gitignore index 5a3a883bc7..7322edaaad 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ lerna-debug.log .yarn .yarnrc *.tsbuildinfo +products/jbrowse-cli/test/data/volvox_inv_indels.paf.pif.gz* diff --git a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts index 90ec462bbd..8ccc4ecc66 100644 --- a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts +++ b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/PairwiseIndexedPAFAdapter.ts @@ -22,7 +22,7 @@ interface PAFOptions extends BaseOptions { export default class PAFAdapter extends BaseFeatureDataAdapter { public static capabilities = ['getFeatures', 'getRefNames'] - protected ppaf: TabixIndexedFile + protected pif: TabixIndexedFile public constructor( config: AnyConfigurationModel, @@ -30,20 +30,20 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { pluginManager?: PluginManager, ) { super(config, getSubAdapter, pluginManager) - const ppafGzLoc = this.getConf('ppafGzLocation') as FileLocation + const pifGzLoc = this.getConf('pifGzLocation') as FileLocation const type = this.getConf(['index', 'indexType']) const loc = this.getConf(['index', 'location']) const pm = this.pluginManager - this.ppaf = new TabixIndexedFile({ - filehandle: openLocation(ppafGzLoc, pm), + this.pif = new TabixIndexedFile({ + filehandle: openLocation(pifGzLoc, pm), csiFilehandle: type === 'CSI' ? openLocation(loc, pm) : undefined, tbiFilehandle: type !== 'CSI' ? openLocation(loc, pm) : undefined, chunkCacheSize: 50 * 2 ** 20, }) } async getHeader() { - return this.ppaf.getHeader() + return this.pif.getHeader() } getAssemblyNames(): string[] { @@ -68,7 +68,7 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { } const idx = this.getAssemblyNames().indexOf(r1) - const names = await this.ppaf.getReferenceSequenceNames(opts) + const names = await this.pif.getReferenceSequenceNames(opts) if (idx === 0) { return names.filter(n => n.startsWith('q')).map(n => n.slice(1)) } else if (idx === 1) { @@ -86,7 +86,7 @@ export default class PAFAdapter extends BaseFeatureDataAdapter { const flip = index === 0 const letter = flip ? 'q' : 't' - await this.ppaf.getLines(letter + query.refName, query.start, query.end, { + await this.pif.getLines(letter + query.refName, query.start, query.end, { lineCallback: (line, fileOffset) => { const r = parsePAFLine(line) const refName = r.qname.slice(1) diff --git a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts index 20b6cb9e38..6c9009291d 100644 --- a/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts +++ b/plugins/comparative-adapters/src/PairwiseIndexedPAFAdapter/configSchema.ts @@ -37,11 +37,11 @@ const PairwiseIndexedPAFAdapter = ConfigurationSchema( /** * #slot */ - ppafGzLocation: { + pifGzLocation: { type: 'fileLocation', - description: 'location of pairwise tabix indexed PAF (ppaf)', + description: 'location of pairwise tabix indexed PAF (pif)', defaultValue: { - uri: '/path/to/data/file.ppaf.gz', + uri: '/path/to/data/file.pif.gz', locationType: 'UriLocation', }, }, diff --git a/products/jbrowse-cli/README.md b/products/jbrowse-cli/README.md index a94f22cc53..0f88a79d58 100644 --- a/products/jbrowse-cli/README.md +++ b/products/jbrowse-cli/README.md @@ -53,8 +53,9 @@ It is likely preferable in most cases to install the tools globally with - [`jbrowse add-track-json TRACK`](#jbrowse-add-track-json-track) - [`jbrowse admin-server`](#jbrowse-admin-server) - [`jbrowse create LOCALPATH`](#jbrowse-create-localpath) +- [`jbrowse create-pif [TRACK]`](#jbrowse-create-pif-track) +- [`jbrowse create-pifgz FILE [OUTPUT]`](#jbrowse-create-pifgz-file-output) - [`jbrowse help [COMMANDS]`](#jbrowse-help-commands) -- [`jbrowse process-paf [TRACK]`](#jbrowse-process-paf-track) - [`jbrowse remove-track TRACK`](#jbrowse-remove-track-track) - [`jbrowse set-default-session`](#jbrowse-set-default-session) - [`jbrowse sort-gff FILE`](#jbrowse-sort-gff-file) @@ -458,70 +459,102 @@ EXAMPLES _See code: [src/commands/create.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create.ts)_ -## `jbrowse help [COMMANDS]` +## `jbrowse create-pif [TRACK]` -Display help for jbrowse. +Create pairwise indexed PAF file (PIF) ``` USAGE - $ jbrowse help [COMMANDS] [-n] + $ jbrowse create-pif [TRACK] [-h] ARGUMENTS - COMMANDS Command to show help for. + TRACK Track file (optional, reads from stdin if not specified) FLAGS - -n, --nested-commands Include all nested commands in the output. + -h, --help Show CLI help. DESCRIPTION - Display help for jbrowse. + Create pairwise indexed PAF file (PIF) + +EXAMPLES + # processes a local PAF file into our custom format, PIF (pairwise indexed PAF) + + + + # read from stdin. could also pipe directly from minimap2 here + + $ cat file.paf | jbrowse process-paf | sort -k1,1 -k3,3n | bgzip > out.pif.gz + + $ tabix out.pif.gz + + $ jbrowse add-track out.pif.gz -a mm39,hg38 + + + + # read from file instead of stdin + + $ jbrowse process-paf file.paf | sort -k1,1 -k3,3n | bgzip > out.pif.gz + + $ tabix out.pif.gz + + $ jbrowse add-track out.pif.gz -a mm39,hg38 ``` _See code: -[@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.20/src/commands/help.ts)_ +[src/commands/create-pif.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create-pif.ts)_ -## `jbrowse process-paf [TRACK]` +## `jbrowse create-pifgz FILE [OUTPUT]` -Pairwise index the PAF +Helper utility to sort GFF files for tabix. Moves all lines starting with # to +the top of the file, and sort by refname and start position using unix utilities +sort and grep ``` USAGE - $ jbrowse process-paf [TRACK] [-h] + $ jbrowse create-pifgz FILE [OUTPUT] [-h] ARGUMENTS - TRACK Track file or URL (optional, stdin if not specified) + FILE GFF file + OUTPUT Where to write the output file. If unspecified, will be ${file}.pif.gz FLAGS -h, --help Show CLI help. DESCRIPTION - Pairwise index the PAF + Helper utility to sort GFF files for tabix. Moves all lines starting with # to the top of the file, and sort by + refname and start position using unix utilities sort and grep EXAMPLES - # processes a local PAF file into our custom format PPAF, which pairwise indexes the PAF - - - - # read from stdin. could also pipe directly from minimap2 here + # sort gff and pipe to bgzip - $ cat file.paf | jbrowse process-paf | sort -k1,1 -k3,3n | bgzip > out.ppaf.gz + $ jbrowse sort-gff input.gff | bgzip > sorted.gff.gz - $ tabix out.ppaf.gz + $ tabix sorted.gff.gz +``` - $ jbrowse add-track out.ppaf.gz -a mm39,hg38 +_See code: +[src/commands/create-pifgz.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create-pifgz.ts)_ +## `jbrowse help [COMMANDS]` +Display help for jbrowse. - # read from file instead of stdin +``` +USAGE + $ jbrowse help [COMMANDS] [-n] - $ jbrowse process-paf file.paf | sort -k1,1 -k3,3n | bgzip > out.ppaf.gz +ARGUMENTS + COMMANDS Command to show help for. - $ tabix out.ppaf.gz +FLAGS + -n, --nested-commands Include all nested commands in the output. - $ jbrowse add-track out.ppaf.gz -a mm39,hg38 +DESCRIPTION + Display help for jbrowse. ``` _See code: -[src/commands/process-paf.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/process-paf.ts)_ +[@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.20/src/commands/help.ts)_ ## `jbrowse remove-track TRACK` diff --git a/products/jbrowse-cli/createppaf.sh b/products/jbrowse-cli/createppaf.sh deleted file mode 100755 index fed4f2765d..0000000000 --- a/products/jbrowse-cli/createppaf.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# Usage: createppaf.sh input.paf out.ppaf -bin/dev process-paf $1 | sort -t$'\t' -k1,1 -k3,3n | bgzip > $2 -tabix -s1 -b3 -e4 $2 diff --git a/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap b/products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap similarity index 99% rename from products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap rename to products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap index 610243d7a6..bb837cbf18 100644 --- a/products/jbrowse-cli/src/commands/__snapshots__/process-paf.test.ts.snap +++ b/products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`process-paf processes volvox paf 1`] = ` +exports[`create-pif processes volvox paf 1`] = ` "tctgA 50001 27258 50001 + ctgA 49186 26805 49184 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3D58M1I4M1I3M2D20M3I2M1D42M15D1M1D15M6D2M4D24M1D10M1D64M1D62M1I11M2D10M4D23M1I25M4I23M1I20M2D3M1I7M10I7M1I4M1I5M1I15M10I21M1D3M3I6M1D12M1I6M1D30M1I5M1I6M9D4M1D33M1D2M1D8M1D3M1I5M5I25M2I10M1I34M1I6M5D4M4D6M1D34M1D13M1I25M2D19M1I25M1D1M2I24M1I3M1I20M1D2M1I7M1I3M2I6M4I14M2D29M1D3M2D7M1D4M1D6M2D8M4I30M1I8M4D18M1I7M1D3M1D1M1D9M1D11M3D21M5I6M1D1M1D2M1I5M4I27M1I19M1D7M1D9M5I50M1D3M7D33M1D5M1D2M1D32M34D1M1D6M3I40M1D21M2I33M1I2M1I14M1D4M2D17M1I30M1D9M1I53M1D22M1I5M1I6M2D13M4I19M2D6M2I3M1I15M3D4M1I15M1I3M1D8M7I1M1I56M3D12M1D17M1D5M1D52M7D13M1D2M1D4M1I2M3D9M1D18M1I9M6D9M1I1M2D5M1I6M2D3M3D1M2D3M2D17M2D11M5D4M4D12M1D6M1D9M2D3M1I12M1I7M1I17M1I6M1I13M1I15M2I19M2D6M2I2M1I9M2D20M12I12M1D35M3D6M1I23M3D7M1I8M2D7M1I10M1I41M2I20M1D34M1I2M1I10M1I12M2D10M1D13M13D18M1I27M2D13M2I26M3D4M1D9M2I5M3D39M1D19M1D9M1I12M2D33M1D22M1I31M1I28M1D11M2I5M1D22M1D3M27D38M1I8M1D8M1I29M5D8M1I46M1I18M1D6M1D61M1D16M6D4M3D13M1D19M5D4M1D5M2D6M6D4M7D7M1D7M1D7M1I41M5I3M1I11M1D17M1I3M1I3M1I5M1D11M2I30M5I4M1I6M1D18M1D10M1D50M1I8M1I16M1D9M26D11M1I44M1D19M1I9M2D2M1I18M1D8M15I19M1D13M1I8M1I6M1I4M3I7M1D4M1D3M1I2M1I3M3D1M1D20M1I15M1D11M1D22M2I41M2D12M1I7M2D6M8D3M7D2M2D27M1D19M1D2M1D41M1I13M1D38M1D11M4D7M1I14M1D1M3D37M1D2M1D4M1D3M4D2M1D21M1D18M1I11M2D13M1I23M25I15M1I2M1I3M7I18M1I35M1D11M1I5M1I45M4D5M1D7M1D6M1D35M1I34M2I9M1D6M1I47M1I10M1I34M1I5M1D6M1I1M1I4M8I28M3D6M1I19M1D18M1I7M5D5M1D22M1D3M2I5M12D8M1I71M2I23M1I6M1D3M2D5M2I12M1D12M1I24M1D14M1I3M1D24M1D26M22D42M1D9M1I1M1I9M1D6M1D12M1I6M3D17M12D7M1I11M2I19M1D17M1D17M2I2M2I9M2D10M1D6M2D29M1D3M1D19M1I4M3I8M1I1M2I55M1I43M3I42M1I33M22I22M1D3M1D24M1I40M1D21M1D2M1I5M1D2M1D18M1D20M2D12M1I22M1I4M4I84M1I21M1I35M1D3M4D13M1I5M1I10M4I11M1D20M1D5M1D16M1I14M1D8M1I58M1I9M1I5M26I6M1D30M2I7M1I9M1D9M1I38M5I1M2I8M2I14M2D1M2D13M1D2M1I12M1D21M1D8M1D17M2I4M4I7M1I12M1I23M1D12M1I8M8D12M1I5M1D18M1I39M1I2M1D9M1I5M2D16M1D23M3D6M2I17M3D1M1D13M1I49M1D25M1I5M1I13M1I9M1D21M1D6M1I13M1I2M2D3M2D3M1D3M3D22M1I1M1I10M4I1M4I3M2I7M2D3M2I15M1I9M1I3M4D6M7D1M1D16M1I9M1D6M9D4M3D7M1D5M1I7M1D5M1D31M1D10M1I29M1D6M5D4M1I3M5D22M1I1M1I4M4D2M1I15M2I4M1I1M1I5M2D5M2D7M1D6M1D1M1D14M4D25M1D30M1I30M6D15M3I12M1I9M1I72M1I9M1D8M1D6M1I5M1D18M5I3M1D4M3I3M7I17M1D5M1D19M2I3M1I14M3I2M1I10M1I2M1I38M4I2M1D25M1D23M2I4M1I8M1I3M19I16M1D21M1I21M2I6M23I9M1I9M11I3M5I17M1I2M8I5M1I5M1D12M1D25M1D20M1D10M3I2M4D3M1I18M3I6M2D35M1D2M3I2M1D9M1I1M1I14M1D2M10D1M2D4M1I6M5D3M6D1M6D18M1D8M1I6M1I49M1D18M1I1M1I7M2D24M1D13M1D1M26D8M2D2M1I19M1D13M1I9M1I5M1I3M10D10M5I1M1I15M1D27M1I15M1I30M2D12M1D10M3D22M5D4M1D9M1I33M1D3M1D12M9I4M1D6M5I3M8I8M1I33M5I13M1D22M1D12M1I17M6I5M3D12M1I12M1D1M1D7M1I44M1D1M1D12M1I47M1D8M2D27M1D1M1D35M1D9M1I6M3D52M3I6M1I27M1I8M1I13M1D13M4I16M3I43M1I13M1D31M1D63M1D30M1I6M1D1M1D15M20D18M2D15M9D8M3D16M11D9M1D18M1I27M8I2M3I1M1I11M2D24M2D27M1D2M1D52M1I50M1I4M1D7M7D23M1I6M1D34M2I15M2D11M1I9M1D21M6D1M1D11M2I2M1I7M27D18M1I2M1D10M4D12M3D1M2D15M5D1M1D6M6D6M1D40M5I8M1I8M35I6M1I27M1D15M2I3M18I5M4I2M1I4M4I8M1I39M2I5M6D9M38D3M1I24M1D2M1D17M1D9M2D7M9I12M1I1M1I15M1I10M2D11M1D10M1D19M3I20M1D43M1D8M1I4M3I1M2I2M3I5M3D13M1I9M5I6M1D6M1I2M2D23M1I8M1I19M1D12M1I20M1D5M1I16M2I10M15I5M2D7M1I14M4D13M1D16M1I4M1D5M2D5M2D3M1I14M17I6M1I16M6I13M5D1M1D6M1I4M1D2M2I17M1D33M1I4M1D16M1I44M1I19M1I19M1D10M13D13M1I5M2D12M1D4M1I10M1D15M1D5M1I7M1I8M1D30M1D3M1D6M2I30M1D33M2I7M4I8M1D2M1D16M1D20M1I3M1D35M1I5M1D10M4D5M1D3M1D19M2I5M2I8M5I49M1D14M1I15M1I11M1I4M3D5M1D50M1I11M7I2M4I9M1I18M2I11M1I5M2I13M5I3M2D19M2I11M2I47M4I1M2I7M1I26M1D4M1D6M1D6M1I24M2I5M3D9M1D13M1I9M1I22M1D3M1I12M1I4M4D32M1I2M2I15M3D3M1D10M1D7M1D11M1I4M1D3M7I2M1D11M1I4M1I1M2I9M8I15M1I9M1I44M1D4M2D10M1D15M1I23M5I4M2D7M4I14M1D10M2I35M1I5M3D25M1D17M1I18M5D5M2I15M2D21M1D1M1D55M7I11M1D5M1I13M2I13M1I12M1D18M1I9M3I29M1I5M1D11M2I11M1I4M4I13M1D10M3I83M1D24M1D6M2D4M1I5M1D6M1D34M1D4M2D11M1D4M2D47M10I7M1D40M3D11M2I39M1I19M1I2M1I3M1D22M2I17M2I4M1D2M1I7M1I27M1I7M1I17M1I7M1I15M1D8M1I3M1I1M1I44M1I1M3D4M1I2M1I19M1D15M1I6M4D28M1I8M1D13M1I4M1D11M1D19M2I69M1I43M4D24M1D25M2I13M2I16M1D4M1D8M1D42M1I11M1I7M3D1M2D1M5D14M2D2M1I28M1D5M1I25M1D46M7I8M2I30M1I4M1I19M1D22M1I30M1D10M5I7M1I5M1I3M2I12M11D3M1I7M8D2M6D2M3D7M2D4M1I1M2D5M1D18M2I1M1I1M1I4M1I10M3I18M1I27M2D5M1I6M1D7M2I7M22D30M1D31M1D19M2I46M1I3M1I27M6D13M1I37M1I12M2D14M28I3M1I3M1D18M6I25M1I8M1D9M2D17M1D2M4I10M1I44M1I6M1D14M3I10M2D7M1D10M2I9M15I18M1D13M1I15M1D25M1D13M1I1M1I18M5I17M1D16M1D16M1I29M1I24M1D17M1D15M2I10M1I11M3D3M1I2M1D50M11D2M2D2M1D1M2D1M1D9M1D18M2I41M1I26M1I25M1I22M4D6M2D2M13D23M1D11M1D25M1D7M3I9M1I4M1D16M1I4M1D2M1I6M1I20M1D37M2D42M1I3M1D47M1D11M1D3M1D14M1D7M1D19M7D11M3D10M2I7M1I11M1D48M1I2M1I10M4I2M1I18M1D67M2D4M4D6M1D17M1I6M2I23M1D9M1D1M3D8M1D14M2D2M3I6M4D9M1D5M5D22M1D6M2D25M8D1M2D4M1D2M4D31M2I7M1I11M11D16M2D11M2D14M1D8M2D3M1I21M1I6M2I1M1I6M1D27M1D1M1D33M1D21M2D1M1D8M1D5M2D6M1D8M1I34M1D3M4I7M1I2M1I16M1I1M1I46M1D12M1I7M1I31M6I10M1I1M1I1M1I5M11I10M1I19M1D22M1D10M1D11M1I8M1I24M1D6M2I7M3D2M1D17M1I24M1I2M4D19M1I14M2D17M1D9M3I16M1D10M1D25M1I26M11D3M2D5M1D2M8D30M2I15M2I13M1D6M5D5M3D17M2D17M2I18M2D11M1I11M2I3M1D18M1D9M1I8M1I16M1D2M1D13M3D1M1D10M1D11M1I8M3D3M1I26M1D4M2D8M1D3M2D4M1I4M2I11M1D10M1D4M1D8M6D1M1D5M7D2M1D5M8D3M2D13M4I1M1I17M1D21M1D22M1I10M1D41M1I2M1I2M1I5M1D41M1D29M1I5M1D5M1I8M1I15M1D9M1D22M1D29M4D7M1I9M1D8M1I32M2D15M1I15M1I23M1I7M10I19M1D38M1I7M1I4M1I16M28D29M7D28M1D52M2I6M1I1M1I1M1I3M1I25M2D15M1I9M5D6M1D12M1I6M1I4M2I11M5D1M2D1M4D15M3I11M3D4M1I8M1D40M6I12M1D17M1D9M5D1M1D2M1D25M1I23M2D9M1D11M1I3M2D28M1I12M1I17M15I10M1D9M1I2M1I8M4I11M1D9M1I6M1I8M1I40M2D3M2I8M1D11M1D16M1D6M1I7M1I34M2I27M1I5M1D3M2D39M1I30M1D22M1I10M3D61M2I19M2I6M1D7M1I23M1I4M1D3M1D6M2I12M2D11M14I13M1D6M4I9M2D11M1I17M1I4M1D8M1D3M1I4M1I35M1D47M1D17M1I7M1I2M1I25M1I13M1D3M1D18M1I13M2D10M2I19M2I6M1D6M1I7M1I11M1I6M3D2M1D11M1I6M1D17M12I1M1I2M1I9M1D1M1D7M7I4M1I9M8I12M1I37M1I25M4I1M1D7M3D13M1I4M1D2M1D43M1D11M1I4M1I6M1D31M2I38M2D12M2D6M2I39M1I19M6I1M1I12M1D16M1D50M1D40M1D24M1I4M2D5M1D5M2I13M2I4M7D2M2D2M7D1M3D15M1I8M1D10M10D41M1I34M1I10M1D11M1I3M3D7M3I23M9D47M2D19M1I36M42D2M1I3M1D3M1D7M1D5M3D6M1D16M1D13M1D39M14I7M1I16M1D19M1D14M1D8M1I34M2I3M1D6M1D12M2I3M1D10M2I1M1D6M39D2M2D16M2I3M2I3M1D23M1D14M3D3M2D6M3D2M1D1M1D10M1D25M1I17M2I33M2D2M1I7M1I36M2D13M1I9M1D6M3I11M1I2M1D8M1D21M1I34M1D12M2I3M1I8M4I11M1D59M5D18M2I11M1I4M7D26M2I77M5D11M1I16M2D6M5I19M1D13M1D1M2D23M1D6M2I11M1D35M1D10M1I14M1D30M1D12M38D2M1D3M1I2M1I5M2D7M1I1M2I3M1I57M1I31M1I9M1I63M1I40M2I3M1I25M1I4M2I21M15I10M1I30M2D3M2D6M2D15M1I6M1I48M2I27M1D6M1D77M2D3M1I22M3D20M1I14M1I29M1I16M1D20M1D5M30D25M6D7M1I17M1I5M14D16M1I3M1D15M1D41M1D13M1I13M1D5M2D19M2I6M1D29M1I2M2D16M1D6M1D8M1I4M9I13M3D10M1I16M4D27M1D1M3D6M2I9M5I38M1D3M2D1M1D4M2I5M1I24M1D18M1I3M5D2M3D3M1I3M1D1M1D5M1D4M1D11M5D3M8D6M1I3M2D5M1D11M1I19M1I1M1I15M1I3M1D15M1D5M3D1M1D12M1D23M1D1M1D6M4I2M4I9M1I17M1I4M1D18M3I7M1I51M11D11M1D12M3D17M1D14M2I12M4I10M1D26M1I45M1I3M1D15M2I11M1I28M1I4M2D9M1I31M3I15M1I11M1D3M4I10M1I21M1D31M8I23M4I24M1D13M5I19M2D1M1D5M10D10M1I23M1I20M2I32M1D5M1D23M1D9M1I14M1I22M1D6M1D19M3I14M1I18M1D10M1D7M1D14M1D46M1D7M21I5M1D17M3D2M4D7M1D16M1I2M1I14M1I3M1I4M1I16M2I42M1I7M1I17M5D1M1D29M13D24M1I3M8I5M12I9M1I23M1D8M qctgA 49186 26805 49184 + ctgA 50001 27258 50001 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3I58M1D4M1D3M2I20M3D2M1I42M15I1M1I15M6I2M4I24M1I10M1I64M1I62M1D11M2I10M4I23M1D25M4D23M1D20M2I3M1D7M10D7M1D4M1D5M1D15M10D21M1I3M3D6M1I12M1D6M1I30M1D5M1D6M9I4M1I33M1I2M1I8M1I3M1D5M5D25M2D10M1D34M1D6M5I4M4I6M1I34M1I13M1D25M2I19M1D25M1I1M2D24M1D3M1D20M1I2M1D7M1D3M2D6M4D14M2I29M1I3M2I7M1I4M1I6M2I8M4D30M1D8M4I18M1D7M1I3M1I1M1I9M1I11M3I21M5D6M1I1M1I2M1D5M4D27M1D19M1I7M1I9M5D50M1I3M7I33M1I5M1I2M1I32M34I1M1I6M3D40M1I21M2D33M1D2M1D14M1I4M2I17M1D30M1I9M1D53M1I22M1D5M1D6M2I13M4D19M2I6M2D3M1D15M3I4M1D15M1D3M1I8M7D1M1D56M3I12M1I17M1I5M1I52M7I13M1I2M1I4M1D2M3I9M1I18M1D9M6I9M1D1M2I5M1D6M2I3M3I1M2I3M2I17M2I11M5I4M4I12M1I6M1I9M2I3M1D12M1D7M1D17M1D6M1D13M1D15M2D19M2I6M2D2M1D9M2I20M12D12M1I35M3I6M1D23M3I7M1D8M2I7M1D10M1D41M2D20M1I34M1D2M1D10M1D12M2I10M1I13M13I18M1D27M2I13M2D26M3I4M1I9M2D5M3I39M1I19M1I9M1D12M2I33M1I22M1D31M1D28M1I11M2D5M1I22M1I3M27I38M1D8M1I8M1D29M5I8M1D46M1D18M1I6M1I61M1I16M6I4M3I13M1I19M5I4M1I5M2I6M6I4M7I7M1I7M1I7M1D41M5D3M1D11M1I17M1D3M1D3M1D5M1I11M2D30M5D4M1D6M1I18M1I10M1I50M1D8M1D16M1I9M26I11M1D44M1I19M1D9M2I2M1D18M1I8M15D19M1I13M1D8M1D6M1D4M3D7M1I4M1I3M1D2M1D3M3I1M1I20M1D15M1I11M1I22M2D41M2I12M1D7M2I6M8I3M7I2M2I27M1I19M1I2M1I41M1D13M1I38M1I11M4I7M1D14M1I1M3I37M1I2M1I4M1I3M4I2M1I21M1I18M1D11M2I13M1D23M25D15M1D2M1D3M7D18M1D35M1I11M1D5M1D45M4I5M1I7M1I6M1I35M1D34M2D9M1I6M1D47M1D10M1D34M1D5M1I6M1D1M1D4M8D28M3I6M1D19M1I18M1D7M5I5M1I22M1I3M2D5M12I8M1D71M2D23M1D6M1I3M2I5M2D12M1I12M1D24M1I14M1D3M1I24M1I26M22I42M1I9M1D1M1D9M1I6M1I12M1D6M3I17M12I7M1D11M2D19M1I17M1I17M2D2M2D9M2I10M1I6M2I29M1I3M1I19M1D4M3D8M1D1M2D55M1D43M3D42M1D33M22D22M1I3M1I24M1D40M1I21M1I2M1D5M1I2M1I18M1I20M2I12M1D22M1D4M4D84M1D21M1D35M1I3M4I13M1D5M1D10M4D11M1I20M1I5M1I16M1D14M1I8M1D58M1D9M1D5M26D6M1I30M2D7M1D9M1I9M1D38M5D1M2D8M2D14M2I1M2I13M1I2M1D12M1I21M1I8M1I17M2D4M4D7M1D12M1D23M1I12M1D8M8I12M1D5M1I18M1D39M1D2M1I9M1D5M2I16M1I23M3I6M2D17M3I1M1I13M1D49M1I25M1D5M1D13M1D9M1I21M1I6M1D13M1D2M2I3M2I3M1I3M3I22M1D1M1D10M4D1M4D3M2D7M2I3M2D15M1D9M1D3M4I6M7I1M1I16M1D9M1I6M9I4M3I7M1I5M1D7M1I5M1I31M1I10M1D29M1I6M5I4M1D3M5I22M1D1M1D4M4I2M1D15M2D4M1D1M1D5M2I5M2I7M1I6M1I1M1I14M4I25M1I30M1D30M6I15M3D12M1D9M1D72M1D9M1I8M1I6M1D5M1I18M5D3M1I4M3D3M7D17M1I5M1I19M2D3M1D14M3D2M1D10M1D2M1D38M4D2M1I25M1I23M2D4M1D8M1D3M19D16M1I21M1D21M2D6M23D9M1D9M11D3M5D17M1D2M8D5M1D5M1I12M1I25M1I20M1I10M3D2M4I3M1D18M3D6M2I35M1I2M3D2M1I9M1D1M1D14M1I2M10I1M2I4M1D6M5I3M6I1M6I18M1I8M1D6M1D49M1I18M1D1M1D7M2I24M1I13M1I1M26I8M2I2M1D19M1I13M1D9M1D5M1D3M10I10M5D1M1D15M1I27M1D15M1D30M2I12M1I10M3I22M5I4M1I9M1D33M1I3M1I12M9D4M1I6M5D3M8D8M1D33M5D13M1I22M1I12M1D17M6D5M3I12M1D12M1I1M1I7M1D44M1I1M1I12M1D47M1I8M2I27M1I1M1I35M1I9M1D6M3I52M3D6M1D27M1D8M1D13M1I13M4D16M3D43M1D13M1I31M1I63M1I30M1D6M1I1M1I15M20I18M2I15M9I8M3I16M11I9M1I18M1D27M8D2M3D1M1D11M2I24M2I27M1I2M1I52M1D50M1D4M1I7M7I23M1D6M1I34M2D15M2I11M1D9M1I21M6I1M1I11M2D2M1D7M27I18M1D2M1I10M4I12M3I1M2I15M5I1M1I6M6I6M1I40M5D8M1D8M35D6M1D27M1I15M2D3M18D5M4D2M1D4M4D8M1D39M2D5M6I9M38I3M1D24M1I2M1I17M1I9M2I7M9D12M1D1M1D15M1D10M2I11M1I10M1I19M3D20M1I43M1I8M1D4M3D1M2D2M3D5M3I13M1D9M5D6M1I6M1D2M2I23M1D8M1D19M1I12M1D20M1I5M1D16M2D10M15D5M2I7M1D14M4I13M1I16M1D4M1I5M2I5M2I3M1D14M17D6M1D16M6D13M5I1M1I6M1D4M1I2M2D17M1I33M1D4M1I16M1D44M1D19M1D19M1I10M13I13M1D5M2I12M1I4M1D10M1I15M1I5M1D7M1D8M1I30M1I3M1I6M2D30M1I33M2D7M4D8M1I2M1I16M1I20M1D3M1I35M1D5M1I10M4I5M1I3M1I19M2D5M2D8M5D49M1I14M1D15M1D11M1D4M3I5M1I50M1D11M7D2M4D9M1D18M2D11M1D5M2D13M5D3M2I19M2D11M2D47M4D1M2D7M1D26M1I4M1I6M1I6M1D24M2D5M3I9M1I13M1D9M1D22M1I3M1D12M1D4M4I32M1D2M2D15M3I3M1I10M1I7M1I11M1D4M1I3M7D2M1I11M1D4M1D1M2D9M8D15M1D9M1D44M1I4M2I10M1I15M1D23M5D4M2I7M4D14M1I10M2D35M1D5M3I25M1I17M1D18M5I5M2D15M2I21M1I1M1I55M7D11M1I5M1D13M2D13M1D12M1I18M1D9M3D29M1D5M1I11M2D11M1D4M4D13M1I10M3D83M1I24M1I6M2I4M1D5M1I6M1I34M1I4M2I11M1I4M2I47M10D7M1I40M3I11M2D39M1D19M1D2M1D3M1I22M2D17M2D4M1I2M1D7M1D27M1D7M1D17M1D7M1D15M1I8M1D3M1D1M1D44M1D1M3I4M1D2M1D19M1I15M1D6M4I28M1D8M1I13M1D4M1I11M1I19M2D69M1D43M4I24M1I25M2D13M2D16M1I4M1I8M1I42M1D11M1D7M3I1M2I1M5I14M2I2M1D28M1I5M1D25M1I46M7D8M2D30M1D4M1D19M1I22M1D30M1I10M5D7M1D5M1D3M2D12M11I3M1D7M8I2M6I2M3I7M2I4M1D1M2I5M1I18M2D1M1D1M1D4M1D10M3D18M1D27M2I5M1D6M1I7M2D7M22I30M1I31M1I19M2D46M1D3M1D27M6I13M1D37M1D12M2I14M28D3M1D3M1I18M6D25M1D8M1I9M2I17M1I2M4D10M1D44M1D6M1I14M3D10M2I7M1I10M2D9M15D18M1I13M1D15M1I25M1I13M1D1M1D18M5D17M1I16M1I16M1D29M1D24M1I17M1I15M2D10M1D11M3I3M1D2M1I50M11I2M2I2M1I1M2I1M1I9M1I18M2D41M1D26M1D25M1D22M4I6M2I2M13I23M1I11M1I25M1I7M3D9M1D4M1I16M1D4M1I2M1D6M1D20M1I37M2I42M1D3M1I47M1I11M1I3M1I14M1I7M1I19M7I11M3I10M2D7M1D11M1I48M1D2M1D10M4D2M1D18M1I67M2I4M4I6M1I17M1D6M2D23M1I9M1I1M3I8M1I14M2I2M3D6M4I9M1I5M5I22M1I6M2I25M8I1M2I4M1I2M4I31M2D7M1D11M11I16M2I11M2I14M1I8M2I3M1D21M1D6M2D1M1D6M1I27M1I1M1I33M1I21M2I1M1I8M1I5M2I6M1I8M1D34M1I3M4D7M1D2M1D16M1D1M1D46M1I12M1D7M1D31M6D10M1D1M1D1M1D5M11D10M1D19M1I22M1I10M1I11M1D8M1D24M1I6M2D7M3I2M1I17M1D24M1D2M4I19M1D14M2I17M1I9M3D16M1I10M1I25M1D26M11I3M2I5M1I2M8I30M2D15M2D13M1I6M5I5M3I17M2I17M2D18M2I11M1D11M2D3M1I18M1I9M1D8M1D16M1I2M1I13M3I1M1I10M1I11M1D8M3I3M1D26M1I4M2I8M1I3M2I4M1D4M2D11M1I10M1I4M1I8M6I1M1I5M7I2M1I5M8I3M2I13M4D1M1D17M1I21M1I22M1D10M1I41M1D2M1D2M1D5M1I41M1I29M1D5M1I5M1D8M1D15M1I9M1I22M1I29M4I7M1D9M1I8M1D32M2I15M1D15M1D23M1D7M10D19M1I38M1D7M1D4M1D16M28I29M7I28M1I52M2D6M1D1M1D1M1D3M1D25M2I15M1D9M5I6M1I12M1D6M1D4M2D11M5I1M2I1M4I15M3D11M3I4M1D8M1I40M6D12M1I17M1I9M5I1M1I2M1I25M1D23M2I9M1I11M1D3M2I28M1D12M1D17M15D10M1I9M1D2M1D8M4D11M1I9M1D6M1D8M1D40M2I3M2D8M1I11M1I16M1I6M1D7M1D34M2D27M1D5M1I3M2I39M1D30M1I22M1D10M3I61M2D19M2D6M1I7M1D23M1D4M1I3M1I6M2D12M2I11M14D13M1I6M4D9M2I11M1D17M1D4M1I8M1I3M1D4M1D35M1I47M1I17M1D7M1D2M1D25M1D13M1I3M1I18M1D13M2I10M2D19M2D6M1I6M1D7M1D11M1D6M3I2M1I11M1D6M1I17M12D1M1D2M1D9M1I1M1I7M7D4M1D9M8D12M1D37M1D25M4D1M1I7M3I13M1D4M1I2M1I43M1I11M1D4M1D6M1I31M2D38M2I12M2I6M2D39M1D19M6D1M1D12M1I16M1I50M1I40M1I24M1D4M2I5M1I5M2D13M2D4M7I2M2I2M7I1M3I15M1D8M1I10M10I41M1D34M1D10M1I11M1D3M3I7M3D23M9I47M2I19M1D36M42I2M1D3M1I3M1I7M1I5M3I6M1I16M1I13M1I39M14D7M1D16M1I19M1I14M1I8M1D34M2D3M1I6M1I12M2D3M1I10M2D1M1I6M39I2M2I16M2D3M2D3M1I23M1I14M3I3M2I6M3I2M1I1M1I10M1I25M1D17M2D33M2I2M1D7M1D36M2I13M1D9M1I6M3D11M1D2M1I8M1I21M1D34M1I12M2D3M1D8M4D11M1I59M5I18M2D11M1D4M7I26M2D77M5I11M1D16M2I6M5D19M1I13M1I1M2I23M1I6M2D11M1I35M1I10M1D14M1I30M1I12M38I2M1I3M1D2M1D5M2I7M1D1M2D3M1D57M1D31M1D9M1D63M1D40M2D3M1D25M1D4M2D21M15D10M1D30M2I3M2I6M2I15M1D6M1D48M2D27M1I6M1I77M2I3M1D22M3I20M1D14M1D29M1D16M1I20M1I5M30I25M6I7M1D17M1D5M14I16M1D3M1I15M1I41M1I13M1D13M1I5M2I19M2D6M1I29M1D2M2I16M1I6M1I8M1D4M9D13M3I10M1D16M4I27M1I1M3I6M2D9M5D38M1I3M2I1M1I4M2D5M1D24M1I18M1D3M5I2M3I3M1D3M1I1M1I5M1I4M1I11M5I3M8I6M1D3M2I5M1I11M1D19M1D1M1D15M1D3M1I15M1I5M3I1M1I12M1I23M1I1M1I6M4D2M4D9M1D17M1D4M1I18M3D7M1D51M11I11M1I12M3I17M1I14M2D12M4D10M1I26M1D45M1D3M1I15M2D11M1D28M1D4M2I9M1D31M3D15M1D11M1I3M4D10M1D21M1I31M8D23M4D24M1I13M5D19M2I1M1I5M10I10M1D23M1D20M2D32M1I5M1I23M1I9M1D14M1D22M1I6M1I19M3D14M1D18M1I10M1I7M1I14M1I46M1I7M21D5M1I17M3I2M4I7M1I16M1D2M1D14M1D3M1D4M1D16M2D42M1D7M1D17M5I1M1I29M13I24M1D3M8D5M12D9M1D23M1I8M tctgA 50001 2212 16198 + ctgA 49186 2214 15925 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1I4M2I21M1I10M1I14M1I5M1D29M2D9M1I15M1I27M1I12M1D5M1I11M1D7M2I4M2D9M1D4M6D32M1D13M1I55M1I8M1I1M1I12M1I2M1D22M2I56M1D11M1I5M5I17M3I3M1I13M1D16M1I50M1I2M1I10M1D1M1D42M1D2M2D33M22I3M1I2M1I6M1D8M2D5M1D50M1D6M3D6M2D12M3I13M1D9M5D1M1D10M1I3M1D5M1I3M1I4M1I24M1I5M2D30M1D3M1I15M1D9M1I3M1I18M1I9M1D11M2D6M1I23M4D1M1D22M1I3M1I11M2D1M1D7M1D4M1D18M1I6M1I5M2D5M1I66M2I3M1D8M1I13M1I8M1I3M2D4M1D20M1I5M2I22M1I6M8I14M1I6M1D8M2D5M9D7M2I4M1D11M1I20M2D2M1I33M8I10M2I7M1I18M4I5M1D4M4D1M1D33M3I10M1D20M2D8M1D9M1I10M1D7M1I8M1D6M2I66M1I3M2I2M1I24M1D63M1I14M8I7M1I13M1D31M1I16M4D41M1D3M1D4M23I9M1D2M1D8M1I1M1I12M1I2M1I3M1D33M1I24M2I3M1I4M1I12M122D6M4D2M1D13M1I3M1D35M1I4M1I13M1D32M1D6M1I5M1I5M1D12M1D8M1D48M1I2M1D19M1D9M1I24M1D13M1D8M1I5M7I5M2D10M1I11M3I15M1I6M2I4M1I18M1D14M1D3M1D1M2D17M1D12M4D15M1I3M1D31M1D1M1D1M1D1M1D12M5I2M1D31M2I18M1D5M20D10M1I20M3D11M1I14M1I1M9I4M4I2M4I2M3I4M1D10M1D50M1I14M1I11M8I11M2D9M1I20M3I5M1I27M1D5M3I9M2I9M3D34M1I21M1D15M1I9M1I2M1I2M1I8M1I26M3D4M1D3M1I2M1I25M1I1M1I14M6I45M2I21M1I17M2D23M1D6M2I8M2D20M1I24M1D9M1I1M2D6M1D3M1D9M8I4M2I30M2D8M1D7M1I50M1I3M3I26M3D17M1D17M1D5M1D8M1I29M2D2M1I3M1I6M1D11M3I20M3I19M1I17M2I33M1D35M2D7M2D3M18D1M3D10M5D11M1D8M1D6M1I9M1I4M2D5M1D13M1D22M1D16M14I22M1D3M1I19M1D53M1I13M1I20M8I8M1I6M6D28M3D28M9D23M5D26M1I6M1D5M1D24M1I5M2I13M1I2M4I2M1I4M4I8M1I14M1I12M1I28M1I18M4I10M2D8M1I62M1I14M2I5M1I18M1D1M3I4M1I13M1D4M2I3M1D8M4D2M8D71M1I8M4I23M1I15M5D13M1D6M1D8M7I16M2I13M2D27M1D46M1I20M2D6M1I9M1D4M1I7M1D6M1I2M6I11M4D25M1I22M1D14M2D20M1D30M3I7M3D4M1I22M1D4M1D10M1D20M1I21M3I3M1I8M1D14M1I10M2I45M1D14M1D17M1D27M2D3M1I2M2I4M1D13M1D5M4I6M2I11M1I11M4I6M1I15M1I8M1I6M9I1M1I19M1I4M1I8M2D9M1I7M1D33M1D19M1D3M1D35M3D4M1D6M2D16M3D1M1D30M26D28M1D7M2I12M2D10M1I7M1D16M1D4M1I18M1I33M1I31M1I7M1I12M1D7M1D16M5I3M1I4M1D4M1D28M8D12M1D4M1D7M3D11M1D15M1D12M1I12M3I6M2D4M1D16M1I11M1D5M1D2M2I22M4D14M2I19M1D7M3I17M1I22M5D6M1D14M2D1M1D12M1I11M10I16M1D21M1D24M5D17M1D48M1D3M1D4M1D12M1D13M4D9M1I22M1I21M1I12M1D11M3D2M1D9M1I10M1D4M1I4M1D18M1I3M1D18M2D4M1I21M4D5M3I3M1D21M1I33M1D19M1I38M2I27M1I7M1I15M2I8M5D2M1D15M1I7M2I2M1I11M1D24M1I4M1D14M1I51M1D47M1D3M4D4M3D3M1I3M1D13M1D3M1I13M1I10M3I34M1D3M1I17M1D5M1I8M1D28M1I13M2I2M1I16M1D21M2I22M5I8M1I3M1I9M1D12M2D11M1I7M1I2M2D10M3I26M4D12M1D3M1D12M7I12M1I5M1D5M8D5M1D8M1I31M1D3M1D6M1I12M2D4M1D24M2I10M1I17M1D1M3D11M1D8M2D16M1D18M2D3M6D2M1D6M24D10M2I14M1I11M1I4M1D10M1I34M4I14M1D21M1D6M43D8M4D2M1D12M1D7M5D4M2I15M1D39M1D6M1I9M3D1M3D2M2D4M4D2M3D1M1D2M1D10M1I16M3D17M1I1M1I28M1D10M1D11M1D28M1D11M2I17M1I14M1I7M2D6M1D4M7D3M7D10M1I6M1I57M2D4M1D5M1D18M2I50M5I38M1D6M1D15M1D5M1I58M4I28M1I15M1D14M3I4M2D4M1I11M4D4M1D44M1I25M1I8M2D12M1I7M1D31M1D9M26I5M1I19M1D1M1D9M1D5M1D7M34I1M1I38M1I1M1I21M1D4M11D29M1D11M1D7M3I19M2I36M1D12M1I21M1I2M7I23M2I19M1I6M1I16M2I2M3D10M1D11M10I5M1I15M2D18M1I17M1I7M2D6M2I6M1D27M1I17M1I23M5I29M4D3M1I41M1D33M1D9M1D11M6I25M1D17M3D6M1I8M1I14M1D13M1D12M1I16M1I12M1I3M1D12M1I28M1D32M1D15M1I32M6I2M2I8M1D6M1D23M22I30M1I9M10D58M3I7M1D12M1I10M6I31M1D14M1I38M1I13M3D14M1D23M1I6M1I10M3I22M1I10M1I8M5I67M1I13M4D3M5D6M1I4M1I8M3D8M3I2M1I11M1D11M1I4M2I1M1I2M1I5M3I9M2D1M1D4M1D6M2D5M1D5M1I8M4D8M1I7M2I3M3D15M6D1M1D9M1D4M1D6M1D36M1D7M1D18M1I5M1D3M2I20M1D13M4I7M5I2M2I43M1I5M1D12M1I7M1D31M1I13M1D13M1I6M1D1M1D4M3D7M1D31M2D26M1I7M1I8M1D7M1I17M1D18M1I6M1D4M7D13M1I6M1D7M1I31M1D5M1I15M1D20M1I20M1I26M3I2M3I1M9I5M1I24M2D25M1D14M1D5M3D2M1I7M1I3M1I19M1I17M1I16M2I5M5D8M1I15M1I3M2I5M5I15M1D13M3D7M1D9M5I10M2D5M1I10M2I1M1I2M1I9M8I2M1D5M1I6M6D7M1I13M3I7M1I3M1D15M2D18M1D3M1D2M1D5M1D5M2I9M1I1M1I27M1I11M1D16M8I1M2I8M1I15M1I6M1I10M1D24M1D3M1D19M1I12M1I24M1D8M1D2M1D2M1I6M1D31M2I5M5D16M5I5M1I6M3D11M14D12M3I29M1I12M1I5M23I2M1I4M4I6M1D41M2I21M1D17M1D5M1D25M3I18M1D6M1D5M1D42M1I3M1D31M1I3M1D14M1D21M1I8M3D4M1I19M6D10M2I12M7I32M8I2M1D18M2D31M1D15M1I21M1I6M1I3M1I39M2I1M1D10M1D3M1I36M12D45M1D7M1I4M1I1M3I7M1I3M1D5M1D6M1D14M1D14M1I18M1D1M1D6M1I1M2D1M1D4M2D8M1D27M5I20M12D11M1D9M1D29M3D26M2D4M2D3M1I6M37D1M1D4M5D3M1D3M6D3M4D16M1D27M2D3M1D2M2D60M4D5M4I8M21D26M1D16M1D3M1I8M1D22M1I8M10D3M2D3M3D13M36D4M1D40M1I6M1I5M1I7M2I7M1I13M2I2M1D8M2I6M1I9M1I3M1D4M4I3M1D5M1I11M1D4M4D23M1I21M1I17M1D37M2I10M1D36M1D8M1D1M1D9M1I6M1D1M5D1M7D3M2D2M10D2M2D12M1I27M2I1M1D16M1D18M1D25M1D29M1I12M2I18M1I2M3I3M7I13M1D30M3D2M2D18M1D4M2D36M1I19M1D19M1I6M1I4M3D20M2D13M1I61M1I12M3D1M1D6M2D4M2D3M1I7M1D34M1I9M1D5M5D9M3D11M1D4M1I4M1I3M4D2M3D1M8D22M1I10M1D12M1D57M1D25M1D58M4I26M1I2M1I2M1I7M2I43M1I3M1D6M1D9M2D20M1D5M41D5M1D30M1D32M1D12M2I9M4I17M2D44M1D2M1I29M14I1M1I17M1I8M1D27M4I14M1D9M1D4M1I6M1D12M5D26M3I2M1I2M1I18M diff --git a/products/jbrowse-cli/src/commands/add-track.ts b/products/jbrowse-cli/src/commands/add-track.ts index 27a5ccbd86..43f6779990 100644 --- a/products/jbrowse-cli/src/commands/add-track.ts +++ b/products/jbrowse-cli/src/commands/add-track.ts @@ -428,7 +428,7 @@ export default class AddTrack extends JBrowseCommand { /\.gff3?\.b?gz$/i.test(location) || /\.vcf\.b?gz$/i.test(location) || /\.bed\.b?gz$/i.test(location) || - /\.ppaf\.b?gz$/i.test(location) + /\.pif\.b?gz$/i.test(location) ) { return { file: location, @@ -546,10 +546,10 @@ export default class AddTrack extends JBrowseCommand { type: 'BedAdapter', bedLocation: makeLocation(location), } - } else if (/\.ppaf\.b?gz$/i.test(location)) { + } else if (/\.pif\.b?gz$/i.test(location)) { return { type: 'PairwiseIndexedPAFAdapter', - ppafGzLocation: makeLocation(location), + pifGzLocation: makeLocation(location), index: { location: makeLocation(index || `${location}.tbi`), indexType: index?.toUpperCase().endsWith('CSI') ? 'CSI' : 'TBI', diff --git a/products/jbrowse-cli/src/commands/process-paf.test.ts b/products/jbrowse-cli/src/commands/create-pif.test.ts similarity index 86% rename from products/jbrowse-cli/src/commands/process-paf.test.ts rename to products/jbrowse-cli/src/commands/create-pif.test.ts index 7c6ab47434..fb3e26fe35 100644 --- a/products/jbrowse-cli/src/commands/process-paf.test.ts +++ b/products/jbrowse-cli/src/commands/create-pif.test.ts @@ -9,9 +9,9 @@ import { setup } from '../testUtil' const base = path.join(__dirname, '..', '..', 'test', 'data') const simplePaf = path.join(base, 'volvox_inv_indels.paf') -describe('process-paf', () => { +describe('create-pif', () => { setup - .command(['process-paf', simplePaf]) + .command(['create-pif', simplePaf]) .it('processes volvox paf', async ctx => { let res = '' for (const obj of ctx.stdout) { diff --git a/products/jbrowse-cli/src/commands/process-paf.ts b/products/jbrowse-cli/src/commands/create-pif.ts similarity index 81% rename from products/jbrowse-cli/src/commands/process-paf.ts rename to products/jbrowse-cli/src/commands/create-pif.ts index 49c9581921..dd6f3fd6db 100644 --- a/products/jbrowse-cli/src/commands/process-paf.ts +++ b/products/jbrowse-cli/src/commands/create-pif.ts @@ -43,26 +43,26 @@ export function swapIndelCigar(cigar: string) { return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I') } -export default class ProcessPAF extends JBrowseCommand { - static description = 'Pairwise index the PAF' +export default class CreatePIF extends JBrowseCommand { + static description = 'Create pairwise indexed PAF file (PIF)' static examples = [ - '# processes a local PAF file into our custom format PPAF, which pairwise indexes the PAF', + '# processes a local PAF file into our custom format, PIF (pairwise indexed PAF)', '', '# read from stdin. could also pipe directly from minimap2 here', - '$ cat file.paf | jbrowse process-paf | sort -k1,1 -k3,3n | bgzip > out.ppaf.gz', - '$ tabix out.ppaf.gz', - '$ jbrowse add-track out.ppaf.gz -a mm39,hg38', + '$ cat file.paf | jbrowse process-paf | sort -k1,1 -k3,3n | bgzip > out.pif.gz', + '$ tabix out.pif.gz', + '$ jbrowse add-track out.pif.gz -a mm39,hg38', '', '# read from file instead of stdin', - '$ jbrowse process-paf file.paf | sort -k1,1 -k3,3n | bgzip > out.ppaf.gz', - '$ tabix out.ppaf.gz', - '$ jbrowse add-track out.ppaf.gz -a mm39,hg38', + '$ jbrowse process-paf file.paf | sort -k1,1 -k3,3n | bgzip > out.pif.gz', + '$ tabix out.pif.gz', + '$ jbrowse add-track out.pif.gz -a mm39,hg38', ] static args = { track: Args.string({ - description: `Track file or URL (optional, stdin if not specified)`, + description: `Track file (optional, reads from stdin if not specified)`, }), } @@ -71,7 +71,7 @@ export default class ProcessPAF extends JBrowseCommand { } async run() { - const { args: runArgs } = await this.parse(ProcessPAF) + const { args: runArgs } = await this.parse(CreatePIF) const { track: filename } = runArgs const rl1 = filename ? getReadline(filename) : getStdReadline() diff --git a/products/jbrowse-cli/src/commands/create-pifgz.test.ts b/products/jbrowse-cli/src/commands/create-pifgz.test.ts new file mode 100644 index 0000000000..b5661ed115 --- /dev/null +++ b/products/jbrowse-cli/src/commands/create-pifgz.test.ts @@ -0,0 +1,20 @@ +/** + * @jest-environment node + */ + +import path, { basename } from 'path' +import fs from 'fs' +import { setup } from '../testUtil' + +const base = path.join(__dirname, '..', '..', 'test', 'data') +const simplePaf = path.join(base, 'volvox_inv_indels.paf') + +const exists = (p: string) => fs.existsSync(p) + +describe('create-pif', () => { + setup + .command(['create-pifgz', simplePaf]) + .it('processes volvox paf', async ctx => { + expect(exists(basename(simplePaf, '.paf') + '.pif.gz')).toBeTruthy() + }) +}) diff --git a/products/jbrowse-cli/src/commands/create-pifgz.ts b/products/jbrowse-cli/src/commands/create-pifgz.ts new file mode 100644 index 0000000000..84b83ad0e2 --- /dev/null +++ b/products/jbrowse-cli/src/commands/create-pifgz.ts @@ -0,0 +1,64 @@ +import { Args, Flags } from '@oclif/core' +import { sync as commandExistsSync } from 'command-exists' + +import { spawn } from 'child_process' +import path from 'path' + +import JBrowseCommand from '../base' + +export default class CreatePifGz extends JBrowseCommand { + static description = + 'Helper utility to sort GFF files for tabix. Moves all lines starting with # to the top of the file, and sort by refname and start position using unix utilities sort and grep' + + static examples = [ + '# sort gff and pipe to bgzip', + '$ jbrowse sort-gff input.gff | bgzip > sorted.gff.gz', + '$ tabix sorted.gff.gz', + ] + + static args = { + file: Args.string({ + required: true, + description: `GFF file`, + }), + out: Args.string({ + description: + 'Where to write the output file. If unspecified, will be ${file}.pif.gz', + }), + } + + static flags = { + help: Flags.help({ char: 'h' }), + } + + async run() { + const { + args: { file, out }, + } = await this.parse(CreatePifGz) + + if ( + commandExistsSync('sh') && + commandExistsSync('sort') && + commandExistsSync('grep') && + commandExistsSync('tabix') && + commandExistsSync('bgzip') + ) { + const fn = out || `${path.basename(file, '.paf')}.pif.gz` + spawn( + 'sh', + [ + '-c', + `sort -t"\`printf '\t'\`" -k1,1 -k3,3n ${fn} | bgzip > ${fn}; tabix -s1 -b3 -e4 ${fn}`, + ], + { + env: { ...process.env, LC_ALL: 'C' }, + stdio: 'inherit', + }, + ) + } else { + throw new Error( + 'Unable to sort, requires unix type environment with sort, grep, bgzip, tabix', + ) + } + } +} diff --git a/test_data/hs1_vs_mm39/config.json b/test_data/hs1_vs_mm39/config.json index 15b8e1ff2b..2ec8f875c1 100644 --- a/test_data/hs1_vs_mm39/config.json +++ b/test_data/hs1_vs_mm39/config.json @@ -107,11 +107,11 @@ }, { "type": "SyntenyTrack", - "trackId": "hs1ToMm39.over.chain.ppaf", - "name": "hs1ToMm39.over.chain.ppaf", + "trackId": "hs1ToMm39.over.chain.pif", + "name": "hs1ToMm39.over.chain.pif", "adapter": { "type": "PairwiseIndexedPAFAdapter", - "ppafGzLocation": { + "pifGzLocation": { "uri": "https://s3.amazonaws.com/jbrowse.org/genomes/hs1_vs_mm39/hs1ToMm39.over.chain.ppaf.gz", "locationType": "UriLocation" }, From b03f81eaac58a45dae01f1d7437cb3e0ff73646a Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 11 Dec 2023 09:18:27 -0500 Subject: [PATCH 08/12] Remove separation between create-pif and create-pifgz --- products/jbrowse-cli/README.md | 10 +- .../src/commands/create-pif.test.ts | 16 +-- .../jbrowse-cli/src/commands/create-pif.ts | 130 +++++++----------- .../src/commands/create-pifgz.test.ts | 20 --- .../jbrowse-cli/src/commands/create-pifgz.ts | 64 --------- .../jbrowse-cli/src/commands/pif-utils.ts | 64 +++++++++ 6 files changed, 123 insertions(+), 181 deletions(-) delete mode 100644 products/jbrowse-cli/src/commands/create-pifgz.test.ts delete mode 100644 products/jbrowse-cli/src/commands/create-pifgz.ts create mode 100644 products/jbrowse-cli/src/commands/pif-utils.ts diff --git a/products/jbrowse-cli/README.md b/products/jbrowse-cli/README.md index 0f88a79d58..1e5ee371e7 100644 --- a/products/jbrowse-cli/README.md +++ b/products/jbrowse-cli/README.md @@ -54,7 +54,7 @@ It is likely preferable in most cases to install the tools globally with - [`jbrowse admin-server`](#jbrowse-admin-server) - [`jbrowse create LOCALPATH`](#jbrowse-create-localpath) - [`jbrowse create-pif [TRACK]`](#jbrowse-create-pif-track) -- [`jbrowse create-pifgz FILE [OUTPUT]`](#jbrowse-create-pifgz-file-output) +- [`jbrowse create-pifgz FILE [OUT]`](#jbrowse-create-pifgz-file-out) - [`jbrowse help [COMMANDS]`](#jbrowse-help-commands) - [`jbrowse remove-track TRACK`](#jbrowse-remove-track-track) - [`jbrowse set-default-session`](#jbrowse-set-default-session) @@ -503,7 +503,7 @@ EXAMPLES _See code: [src/commands/create-pif.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create-pif.ts)_ -## `jbrowse create-pifgz FILE [OUTPUT]` +## `jbrowse create-pifgz FILE [OUT]` Helper utility to sort GFF files for tabix. Moves all lines starting with # to the top of the file, and sort by refname and start position using unix utilities @@ -511,11 +511,11 @@ sort and grep ``` USAGE - $ jbrowse create-pifgz FILE [OUTPUT] [-h] + $ jbrowse create-pifgz FILE [OUT] [-h] ARGUMENTS - FILE GFF file - OUTPUT Where to write the output file. If unspecified, will be ${file}.pif.gz + FILE GFF file + OUT Where to write the output file. If unspecified, will be ${file}.pif.gz FLAGS -h, --help Show CLI help. diff --git a/products/jbrowse-cli/src/commands/create-pif.test.ts b/products/jbrowse-cli/src/commands/create-pif.test.ts index fb3e26fe35..ae731c97bf 100644 --- a/products/jbrowse-cli/src/commands/create-pif.test.ts +++ b/products/jbrowse-cli/src/commands/create-pif.test.ts @@ -3,21 +3,19 @@ */ import path from 'path' - +import fs from 'fs' import { setup } from '../testUtil' const base = path.join(__dirname, '..', '..', 'test', 'data') const simplePaf = path.join(base, 'volvox_inv_indels.paf') +const exists = (p: string) => fs.existsSync(p) + describe('create-pif', () => { + const fn = path.basename(simplePaf, '.paf') + '.pif.gz' setup - .command(['create-pif', simplePaf]) - .it('processes volvox paf', async ctx => { - let res = '' - for (const obj of ctx.stdout) { - res += obj[0] - } - expect(res.split('\n').length).toBe(15) - expect(res).toMatchSnapshot() + .command(['create-pifgz', simplePaf, '--out', fn]) + .it('processes volvox paf', () => { + expect(exists(fn)).toBeTruthy() }) }) diff --git a/products/jbrowse-cli/src/commands/create-pif.ts b/products/jbrowse-cli/src/commands/create-pif.ts index dd6f3fd6db..5980e92e25 100644 --- a/products/jbrowse-cli/src/commands/create-pif.ts +++ b/products/jbrowse-cli/src/commands/create-pif.ts @@ -1,103 +1,67 @@ -import fs from 'fs' -import JBrowseCommand from '../base' - -import readline from 'readline' -import { createGunzip } from 'zlib' import { Args, Flags } from '@oclif/core' +import { sync as commandExistsSync } from 'command-exists' -function getReadline(filename: string) { - const stream = fs.createReadStream(filename) - return readline.createInterface({ - input: filename.match(/.b?gz$/) ? stream.pipe(createGunzip()) : stream, - }) -} - -function getStdReadline() { - return readline.createInterface({ - input: process.stdin, - }) -} - -const cigarRegex = new RegExp(/([MIDNSHPX=])/) - -export function parseCigar(cigar = '') { - return cigar.split(cigarRegex).slice(0, -1) -} -export function flipCigar(cigar: string[]) { - const arr = [] - for (let i = cigar.length - 2; i >= 0; i -= 2) { - arr.push(cigar[i]) - const op = cigar[i + 1] - if (op === 'D') { - arr.push('I') - } else if (op === 'I') { - arr.push('D') - } else { - arr.push(op) - } - } - return arr -} +import { spawn } from 'child_process' +import path from 'path' -export function swapIndelCigar(cigar: string) { - return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I') -} +import JBrowseCommand from '../base' -export default class CreatePIF extends JBrowseCommand { - static description = 'Create pairwise indexed PAF file (PIF)' +export default class CreatePif extends JBrowseCommand { + static description = + 'creates pairwise indexed PAF (PIF), with bgzip and tabix' static examples = [ - '# processes a local PAF file into our custom format, PIF (pairwise indexed PAF)', + '$ jbrowse create-pifgz input.paf # creates input.pif.gz in same directory', '', - '# read from stdin. could also pipe directly from minimap2 here', - '$ cat file.paf | jbrowse process-paf | sort -k1,1 -k3,3n | bgzip > out.pif.gz', - '$ tabix out.pif.gz', - '$ jbrowse add-track out.pif.gz -a mm39,hg38', - '', - '# read from file instead of stdin', - '$ jbrowse process-paf file.paf | sort -k1,1 -k3,3n | bgzip > out.pif.gz', - '$ tabix out.pif.gz', - '$ jbrowse add-track out.pif.gz -a mm39,hg38', + '$ jbrowse create-pifgz input.paf --out output.pif.gz # specify output file, creates output.pif.gz.tbi also', ] - static args = { - track: Args.string({ - description: `Track file (optional, reads from stdin if not specified)`, - }), - } - static flags = { + out: Flags.string({ + description: + 'Where to write the output file. If unspecified, will be ${file}.pif.gz', + }), + csi: Flags.string({ + description: 'Create a CSI index for the PIF file instead of TBI', + }), help: Flags.help({ char: 'h' }), } + static args = { + file: Args.string({ + required: true, + description: `PAF file as input`, + }), + } async run() { - const { args: runArgs } = await this.parse(CreatePIF) - const { track: filename } = runArgs - - const rl1 = filename ? getReadline(filename) : getStdReadline() - for await (const line of rl1) { - const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') + const { + args: { file }, + flags: { out }, + } = await this.parse(CreatePif) - process.stdout.write( - [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t') + - '\n', + if ( + commandExistsSync('sh') && + commandExistsSync('sort') && + commandExistsSync('grep') && + commandExistsSync('tabix') && + commandExistsSync('bgzip') + ) { + const fn = out || `${path.basename(file, '.paf')}.pif.gz` + spawn( + 'sh', + [ + '-c', + `sort -t"\`printf '\t'\`" -k1,1 -k3,3n ${fn} | bgzip > ${fn}; tabix -s1 -b3 -e4 ${fn}`, + ], + { + env: { ...process.env, LC_ALL: 'C' }, + stdio: 'inherit', + }, ) - const cigarIdx = rest.findIndex(f => f.startsWith('cg:Z')) - - const CIGAR = rest[cigarIdx] - if (CIGAR) { - rest[cigarIdx] = `cg:Z:${ - strand === '-' - ? flipCigar(parseCigar(CIGAR.slice(5))).join('') - : swapIndelCigar(CIGAR.slice(5)) - }` - } - - process.stdout.write( - [`q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...rest].join('\t') + - '\n', + } else { + throw new Error( + 'Unable to sort, requires unix type environment with sort, grep, bgzip, tabix', ) } - rl1.close() } } diff --git a/products/jbrowse-cli/src/commands/create-pifgz.test.ts b/products/jbrowse-cli/src/commands/create-pifgz.test.ts deleted file mode 100644 index b5661ed115..0000000000 --- a/products/jbrowse-cli/src/commands/create-pifgz.test.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @jest-environment node - */ - -import path, { basename } from 'path' -import fs from 'fs' -import { setup } from '../testUtil' - -const base = path.join(__dirname, '..', '..', 'test', 'data') -const simplePaf = path.join(base, 'volvox_inv_indels.paf') - -const exists = (p: string) => fs.existsSync(p) - -describe('create-pif', () => { - setup - .command(['create-pifgz', simplePaf]) - .it('processes volvox paf', async ctx => { - expect(exists(basename(simplePaf, '.paf') + '.pif.gz')).toBeTruthy() - }) -}) diff --git a/products/jbrowse-cli/src/commands/create-pifgz.ts b/products/jbrowse-cli/src/commands/create-pifgz.ts deleted file mode 100644 index 84b83ad0e2..0000000000 --- a/products/jbrowse-cli/src/commands/create-pifgz.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { Args, Flags } from '@oclif/core' -import { sync as commandExistsSync } from 'command-exists' - -import { spawn } from 'child_process' -import path from 'path' - -import JBrowseCommand from '../base' - -export default class CreatePifGz extends JBrowseCommand { - static description = - 'Helper utility to sort GFF files for tabix. Moves all lines starting with # to the top of the file, and sort by refname and start position using unix utilities sort and grep' - - static examples = [ - '# sort gff and pipe to bgzip', - '$ jbrowse sort-gff input.gff | bgzip > sorted.gff.gz', - '$ tabix sorted.gff.gz', - ] - - static args = { - file: Args.string({ - required: true, - description: `GFF file`, - }), - out: Args.string({ - description: - 'Where to write the output file. If unspecified, will be ${file}.pif.gz', - }), - } - - static flags = { - help: Flags.help({ char: 'h' }), - } - - async run() { - const { - args: { file, out }, - } = await this.parse(CreatePifGz) - - if ( - commandExistsSync('sh') && - commandExistsSync('sort') && - commandExistsSync('grep') && - commandExistsSync('tabix') && - commandExistsSync('bgzip') - ) { - const fn = out || `${path.basename(file, '.paf')}.pif.gz` - spawn( - 'sh', - [ - '-c', - `sort -t"\`printf '\t'\`" -k1,1 -k3,3n ${fn} | bgzip > ${fn}; tabix -s1 -b3 -e4 ${fn}`, - ], - { - env: { ...process.env, LC_ALL: 'C' }, - stdio: 'inherit', - }, - ) - } else { - throw new Error( - 'Unable to sort, requires unix type environment with sort, grep, bgzip, tabix', - ) - } - } -} diff --git a/products/jbrowse-cli/src/commands/pif-utils.ts b/products/jbrowse-cli/src/commands/pif-utils.ts new file mode 100644 index 0000000000..b9afcc725b --- /dev/null +++ b/products/jbrowse-cli/src/commands/pif-utils.ts @@ -0,0 +1,64 @@ +import fs from 'fs' + +import readline from 'readline' +import { createGunzip } from 'zlib' + +function getReadline(filename: string) { + const stream = fs.createReadStream(filename) + return readline.createInterface({ + input: filename.match(/.b?gz$/) ? stream.pipe(createGunzip()) : stream, + }) +} + +function getStdReadline() { + return readline.createInterface({ + input: process.stdin, + }) +} + +const cigarRegex = new RegExp(/([MIDNSHPX=])/) + +export function parseCigar(cigar = '') { + return cigar.split(cigarRegex).slice(0, -1) +} +export function flipCigar(cigar: string[]) { + const arr = [] + for (let i = cigar.length - 2; i >= 0; i -= 2) { + arr.push(cigar[i]) + const op = cigar[i + 1] + if (op === 'D') { + arr.push('I') + } else if (op === 'I') { + arr.push('D') + } else { + arr.push(op) + } + } + return arr +} + +export async function createPIF(filename?: string) { + const rl1 = filename ? getReadline(filename) : getStdReadline() + for await (const line of rl1) { + const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') + + process.stdout.write( + [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t') + '\n', + ) + const cigarIdx = rest.findIndex(f => f.startsWith('cg:Z')) + + const CIGAR = rest[cigarIdx] + if (CIGAR) { + rest[cigarIdx] = `cg:Z:${ + strand === '-' + ? flipCigar(parseCigar(CIGAR.slice(5))).join('') + : swapIndelCigar(CIGAR.slice(5)) + }` + } + + process.stdout.write( + [`q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...rest].join('\t') + '\n', + ) + } + rl1.close() +} From 522851fb8b376adcc18af6d35ea3deb22436ce20 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 11 Dec 2023 09:22:45 -0500 Subject: [PATCH 09/12] Misc --- .gitignore | 1 - products/jbrowse-cli/README.md | 69 ++------- .../src/commands/create-pif.test.ts | 2 +- .../jbrowse-cli/src/commands/create-pif.ts | 137 ++++++++++++++---- .../jbrowse-cli/src/commands/pif-utils.ts | 64 -------- 5 files changed, 117 insertions(+), 156 deletions(-) delete mode 100644 products/jbrowse-cli/src/commands/pif-utils.ts diff --git a/.gitignore b/.gitignore index 7322edaaad..5a3a883bc7 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,3 @@ lerna-debug.log .yarn .yarnrc *.tsbuildinfo -products/jbrowse-cli/test/data/volvox_inv_indels.paf.pif.gz* diff --git a/products/jbrowse-cli/README.md b/products/jbrowse-cli/README.md index 1e5ee371e7..af57958da3 100644 --- a/products/jbrowse-cli/README.md +++ b/products/jbrowse-cli/README.md @@ -53,8 +53,7 @@ It is likely preferable in most cases to install the tools globally with - [`jbrowse add-track-json TRACK`](#jbrowse-add-track-json-track) - [`jbrowse admin-server`](#jbrowse-admin-server) - [`jbrowse create LOCALPATH`](#jbrowse-create-localpath) -- [`jbrowse create-pif [TRACK]`](#jbrowse-create-pif-track) -- [`jbrowse create-pifgz FILE [OUT]`](#jbrowse-create-pifgz-file-out) +- [`jbrowse create-pif FILE`](#jbrowse-create-pif-file) - [`jbrowse help [COMMANDS]`](#jbrowse-help-commands) - [`jbrowse remove-track TRACK`](#jbrowse-remove-track-track) - [`jbrowse set-default-session`](#jbrowse-set-default-session) @@ -459,82 +458,36 @@ EXAMPLES _See code: [src/commands/create.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create.ts)_ -## `jbrowse create-pif [TRACK]` +## `jbrowse create-pif FILE` -Create pairwise indexed PAF file (PIF) +creates pairwise indexed PAF (PIF), with bgzip and tabix ``` USAGE - $ jbrowse create-pif [TRACK] [-h] + $ jbrowse create-pif FILE [--out ] [--csi ] [-h] ARGUMENTS - TRACK Track file (optional, reads from stdin if not specified) + FILE PAF file as input FLAGS - -h, --help Show CLI help. + -h, --help Show CLI help. + --csi= Create a CSI index for the PIF file instead of TBI + --out= Where to write the output file. If unspecified, will be ${file}.pif.gz DESCRIPTION - Create pairwise indexed PAF file (PIF) + creates pairwise indexed PAF (PIF), with bgzip and tabix EXAMPLES - # processes a local PAF file into our custom format, PIF (pairwise indexed PAF) - - - - # read from stdin. could also pipe directly from minimap2 here - - $ cat file.paf | jbrowse process-paf | sort -k1,1 -k3,3n | bgzip > out.pif.gz - - $ tabix out.pif.gz - - $ jbrowse add-track out.pif.gz -a mm39,hg38 - - - - # read from file instead of stdin + $ jbrowse create-pif input.paf # creates input.pif.gz in same directory - $ jbrowse process-paf file.paf | sort -k1,1 -k3,3n | bgzip > out.pif.gz - $ tabix out.pif.gz - $ jbrowse add-track out.pif.gz -a mm39,hg38 + $ jbrowse create-pif input.paf --out output.pif.gz # specify output file, creates output.pif.gz.tbi also ``` _See code: [src/commands/create-pif.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create-pif.ts)_ -## `jbrowse create-pifgz FILE [OUT]` - -Helper utility to sort GFF files for tabix. Moves all lines starting with # to -the top of the file, and sort by refname and start position using unix utilities -sort and grep - -``` -USAGE - $ jbrowse create-pifgz FILE [OUT] [-h] - -ARGUMENTS - FILE GFF file - OUT Where to write the output file. If unspecified, will be ${file}.pif.gz - -FLAGS - -h, --help Show CLI help. - -DESCRIPTION - Helper utility to sort GFF files for tabix. Moves all lines starting with # to the top of the file, and sort by - refname and start position using unix utilities sort and grep - -EXAMPLES - # sort gff and pipe to bgzip - - $ jbrowse sort-gff input.gff | bgzip > sorted.gff.gz - - $ tabix sorted.gff.gz -``` - -_See code: -[src/commands/create-pifgz.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create-pifgz.ts)_ - ## `jbrowse help [COMMANDS]` Display help for jbrowse. diff --git a/products/jbrowse-cli/src/commands/create-pif.test.ts b/products/jbrowse-cli/src/commands/create-pif.test.ts index ae731c97bf..6de1367302 100644 --- a/products/jbrowse-cli/src/commands/create-pif.test.ts +++ b/products/jbrowse-cli/src/commands/create-pif.test.ts @@ -14,7 +14,7 @@ const exists = (p: string) => fs.existsSync(p) describe('create-pif', () => { const fn = path.basename(simplePaf, '.paf') + '.pif.gz' setup - .command(['create-pifgz', simplePaf, '--out', fn]) + .command(['create-pif', simplePaf, '--out', fn]) .it('processes volvox paf', () => { expect(exists(fn)).toBeTruthy() }) diff --git a/products/jbrowse-cli/src/commands/create-pif.ts b/products/jbrowse-cli/src/commands/create-pif.ts index 5980e92e25..7287b9e87d 100644 --- a/products/jbrowse-cli/src/commands/create-pif.ts +++ b/products/jbrowse-cli/src/commands/create-pif.ts @@ -1,19 +1,86 @@ +import fs from 'fs' +import readline from 'readline' +import { createGunzip } from 'zlib' import { Args, Flags } from '@oclif/core' import { sync as commandExistsSync } from 'command-exists' - import { spawn } from 'child_process' import path from 'path' import JBrowseCommand from '../base' -export default class CreatePif extends JBrowseCommand { +const cigarRegex = new RegExp(/([MIDNSHPX=])/) + +function getReadline(filename: string) { + const stream = fs.createReadStream(filename) + return readline.createInterface({ + input: filename.match(/.b?gz$/) ? stream.pipe(createGunzip()) : stream, + }) +} + +function getStdReadline() { + return readline.createInterface({ + input: process.stdin, + }) +} + +function parseCigar(cigar = '') { + return cigar.split(cigarRegex).slice(0, -1) +} + +export function flipCigar(cigar: string[]) { + const arr = [] + for (let i = cigar.length - 2; i >= 0; i -= 2) { + arr.push(cigar[i]) + const op = cigar[i + 1] + if (op === 'D') { + arr.push('I') + } else if (op === 'I') { + arr.push('D') + } else { + arr.push(op) + } + } + return arr +} + +export function swapIndelCigar(cigar: string) { + return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I') +} + +export async function createPIF(filename?: string, child: { stdin: any }) { + const rl1 = filename ? getReadline(filename) : getStdReadline() + for await (const line of rl1) { + const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') + + child.stdin.write( + [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t') + '\n', + ) + const cigarIdx = rest.findIndex(f => f.startsWith('cg:Z')) + + const CIGAR = rest[cigarIdx] + if (CIGAR) { + rest[cigarIdx] = `cg:Z:${ + strand === '-' + ? flipCigar(parseCigar(CIGAR.slice(5))).join('') + : swapIndelCigar(CIGAR.slice(5)) + }` + } + + child.stdin.write( + [`q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...rest].join('\t') + '\n', + ) + } + rl1.close() +} + +export default class CreatePIF extends JBrowseCommand { static description = 'creates pairwise indexed PAF (PIF), with bgzip and tabix' static examples = [ - '$ jbrowse create-pifgz input.paf # creates input.pif.gz in same directory', + '$ jbrowse create-pif input.paf # creates input.pif.gz in same directory', '', - '$ jbrowse create-pifgz input.paf --out output.pif.gz # specify output file, creates output.pif.gz.tbi also', + '$ jbrowse create-pif input.paf --out output.pif.gz # specify output file, creates output.pif.gz.tbi also', ] static flags = { @@ -34,34 +101,40 @@ export default class CreatePif extends JBrowseCommand { } async run() { - const { - args: { file }, - flags: { out }, - } = await this.parse(CreatePif) - - if ( - commandExistsSync('sh') && - commandExistsSync('sort') && - commandExistsSync('grep') && - commandExistsSync('tabix') && - commandExistsSync('bgzip') - ) { - const fn = out || `${path.basename(file, '.paf')}.pif.gz` - spawn( - 'sh', - [ - '-c', - `sort -t"\`printf '\t'\`" -k1,1 -k3,3n ${fn} | bgzip > ${fn}; tabix -s1 -b3 -e4 ${fn}`, - ], - { - env: { ...process.env, LC_ALL: 'C' }, - stdio: 'inherit', - }, - ) - } else { - throw new Error( - 'Unable to sort, requires unix type environment with sort, grep, bgzip, tabix', - ) + try { + const { + args: { file }, + flags: { out, csi }, + } = await this.parse(CreatePIF) + + if ( + commandExistsSync('sh') && + commandExistsSync('sort') && + commandExistsSync('grep') && + commandExistsSync('tabix') && + commandExistsSync('bgzip') + ) { + const fn = out || `${path.basename(file, '.paf')}.pif.gz` + console.error('start') + const child = spawn( + 'sh', + [ + '-c', + `sort -t"\`printf '\t'\`" -k1,1 -k3,3n ${fn} | bgzip > ${fn}; tabix -s1 -b3 -e4 ${fn}`, + ], + { + env: { ...process.env, LC_ALL: 'C' }, + stdio: 'inherit', + }, + ) + await createPIF(fn, child) + } else { + throw new Error( + 'Unable to sort, requires unix type environment with sort, grep, bgzip, tabix', + ) + } + } catch (e) { + console.error(e) } } } diff --git a/products/jbrowse-cli/src/commands/pif-utils.ts b/products/jbrowse-cli/src/commands/pif-utils.ts deleted file mode 100644 index b9afcc725b..0000000000 --- a/products/jbrowse-cli/src/commands/pif-utils.ts +++ /dev/null @@ -1,64 +0,0 @@ -import fs from 'fs' - -import readline from 'readline' -import { createGunzip } from 'zlib' - -function getReadline(filename: string) { - const stream = fs.createReadStream(filename) - return readline.createInterface({ - input: filename.match(/.b?gz$/) ? stream.pipe(createGunzip()) : stream, - }) -} - -function getStdReadline() { - return readline.createInterface({ - input: process.stdin, - }) -} - -const cigarRegex = new RegExp(/([MIDNSHPX=])/) - -export function parseCigar(cigar = '') { - return cigar.split(cigarRegex).slice(0, -1) -} -export function flipCigar(cigar: string[]) { - const arr = [] - for (let i = cigar.length - 2; i >= 0; i -= 2) { - arr.push(cigar[i]) - const op = cigar[i + 1] - if (op === 'D') { - arr.push('I') - } else if (op === 'I') { - arr.push('D') - } else { - arr.push(op) - } - } - return arr -} - -export async function createPIF(filename?: string) { - const rl1 = filename ? getReadline(filename) : getStdReadline() - for await (const line of rl1) { - const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') - - process.stdout.write( - [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t') + '\n', - ) - const cigarIdx = rest.findIndex(f => f.startsWith('cg:Z')) - - const CIGAR = rest[cigarIdx] - if (CIGAR) { - rest[cigarIdx] = `cg:Z:${ - strand === '-' - ? flipCigar(parseCigar(CIGAR.slice(5))).join('') - : swapIndelCigar(CIGAR.slice(5)) - }` - } - - process.stdout.write( - [`q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...rest].join('\t') + '\n', - ) - } - rl1.close() -} From 1f3ca2d337aec396f06ee0ee5efc9d09280ec015 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 11 Dec 2023 09:41:15 -0500 Subject: [PATCH 10/12] Misc --- .../__snapshots__/create-pif.test.ts.snap | 20 ++--- .../src/commands/create-pif.test.ts | 2 + .../jbrowse-cli/src/commands/create-pif.ts | 78 ++++++++++--------- 3 files changed, 53 insertions(+), 47 deletions(-) diff --git a/products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap b/products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap index bb837cbf18..da66ddcf40 100644 --- a/products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap +++ b/products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap @@ -1,19 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`create-pif processes volvox paf 1`] = ` -"tctgA 50001 27258 50001 + ctgA 49186 26805 49184 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3D58M1I4M1I3M2D20M3I2M1D42M15D1M1D15M6D2M4D24M1D10M1D64M1D62M1I11M2D10M4D23M1I25M4I23M1I20M2D3M1I7M10I7M1I4M1I5M1I15M10I21M1D3M3I6M1D12M1I6M1D30M1I5M1I6M9D4M1D33M1D2M1D8M1D3M1I5M5I25M2I10M1I34M1I6M5D4M4D6M1D34M1D13M1I25M2D19M1I25M1D1M2I24M1I3M1I20M1D2M1I7M1I3M2I6M4I14M2D29M1D3M2D7M1D4M1D6M2D8M4I30M1I8M4D18M1I7M1D3M1D1M1D9M1D11M3D21M5I6M1D1M1D2M1I5M4I27M1I19M1D7M1D9M5I50M1D3M7D33M1D5M1D2M1D32M34D1M1D6M3I40M1D21M2I33M1I2M1I14M1D4M2D17M1I30M1D9M1I53M1D22M1I5M1I6M2D13M4I19M2D6M2I3M1I15M3D4M1I15M1I3M1D8M7I1M1I56M3D12M1D17M1D5M1D52M7D13M1D2M1D4M1I2M3D9M1D18M1I9M6D9M1I1M2D5M1I6M2D3M3D1M2D3M2D17M2D11M5D4M4D12M1D6M1D9M2D3M1I12M1I7M1I17M1I6M1I13M1I15M2I19M2D6M2I2M1I9M2D20M12I12M1D35M3D6M1I23M3D7M1I8M2D7M1I10M1I41M2I20M1D34M1I2M1I10M1I12M2D10M1D13M13D18M1I27M2D13M2I26M3D4M1D9M2I5M3D39M1D19M1D9M1I12M2D33M1D22M1I31M1I28M1D11M2I5M1D22M1D3M27D38M1I8M1D8M1I29M5D8M1I46M1I18M1D6M1D61M1D16M6D4M3D13M1D19M5D4M1D5M2D6M6D4M7D7M1D7M1D7M1I41M5I3M1I11M1D17M1I3M1I3M1I5M1D11M2I30M5I4M1I6M1D18M1D10M1D50M1I8M1I16M1D9M26D11M1I44M1D19M1I9M2D2M1I18M1D8M15I19M1D13M1I8M1I6M1I4M3I7M1D4M1D3M1I2M1I3M3D1M1D20M1I15M1D11M1D22M2I41M2D12M1I7M2D6M8D3M7D2M2D27M1D19M1D2M1D41M1I13M1D38M1D11M4D7M1I14M1D1M3D37M1D2M1D4M1D3M4D2M1D21M1D18M1I11M2D13M1I23M25I15M1I2M1I3M7I18M1I35M1D11M1I5M1I45M4D5M1D7M1D6M1D35M1I34M2I9M1D6M1I47M1I10M1I34M1I5M1D6M1I1M1I4M8I28M3D6M1I19M1D18M1I7M5D5M1D22M1D3M2I5M12D8M1I71M2I23M1I6M1D3M2D5M2I12M1D12M1I24M1D14M1I3M1D24M1D26M22D42M1D9M1I1M1I9M1D6M1D12M1I6M3D17M12D7M1I11M2I19M1D17M1D17M2I2M2I9M2D10M1D6M2D29M1D3M1D19M1I4M3I8M1I1M2I55M1I43M3I42M1I33M22I22M1D3M1D24M1I40M1D21M1D2M1I5M1D2M1D18M1D20M2D12M1I22M1I4M4I84M1I21M1I35M1D3M4D13M1I5M1I10M4I11M1D20M1D5M1D16M1I14M1D8M1I58M1I9M1I5M26I6M1D30M2I7M1I9M1D9M1I38M5I1M2I8M2I14M2D1M2D13M1D2M1I12M1D21M1D8M1D17M2I4M4I7M1I12M1I23M1D12M1I8M8D12M1I5M1D18M1I39M1I2M1D9M1I5M2D16M1D23M3D6M2I17M3D1M1D13M1I49M1D25M1I5M1I13M1I9M1D21M1D6M1I13M1I2M2D3M2D3M1D3M3D22M1I1M1I10M4I1M4I3M2I7M2D3M2I15M1I9M1I3M4D6M7D1M1D16M1I9M1D6M9D4M3D7M1D5M1I7M1D5M1D31M1D10M1I29M1D6M5D4M1I3M5D22M1I1M1I4M4D2M1I15M2I4M1I1M1I5M2D5M2D7M1D6M1D1M1D14M4D25M1D30M1I30M6D15M3I12M1I9M1I72M1I9M1D8M1D6M1I5M1D18M5I3M1D4M3I3M7I17M1D5M1D19M2I3M1I14M3I2M1I10M1I2M1I38M4I2M1D25M1D23M2I4M1I8M1I3M19I16M1D21M1I21M2I6M23I9M1I9M11I3M5I17M1I2M8I5M1I5M1D12M1D25M1D20M1D10M3I2M4D3M1I18M3I6M2D35M1D2M3I2M1D9M1I1M1I14M1D2M10D1M2D4M1I6M5D3M6D1M6D18M1D8M1I6M1I49M1D18M1I1M1I7M2D24M1D13M1D1M26D8M2D2M1I19M1D13M1I9M1I5M1I3M10D10M5I1M1I15M1D27M1I15M1I30M2D12M1D10M3D22M5D4M1D9M1I33M1D3M1D12M9I4M1D6M5I3M8I8M1I33M5I13M1D22M1D12M1I17M6I5M3D12M1I12M1D1M1D7M1I44M1D1M1D12M1I47M1D8M2D27M1D1M1D35M1D9M1I6M3D52M3I6M1I27M1I8M1I13M1D13M4I16M3I43M1I13M1D31M1D63M1D30M1I6M1D1M1D15M20D18M2D15M9D8M3D16M11D9M1D18M1I27M8I2M3I1M1I11M2D24M2D27M1D2M1D52M1I50M1I4M1D7M7D23M1I6M1D34M2I15M2D11M1I9M1D21M6D1M1D11M2I2M1I7M27D18M1I2M1D10M4D12M3D1M2D15M5D1M1D6M6D6M1D40M5I8M1I8M35I6M1I27M1D15M2I3M18I5M4I2M1I4M4I8M1I39M2I5M6D9M38D3M1I24M1D2M1D17M1D9M2D7M9I12M1I1M1I15M1I10M2D11M1D10M1D19M3I20M1D43M1D8M1I4M3I1M2I2M3I5M3D13M1I9M5I6M1D6M1I2M2D23M1I8M1I19M1D12M1I20M1D5M1I16M2I10M15I5M2D7M1I14M4D13M1D16M1I4M1D5M2D5M2D3M1I14M17I6M1I16M6I13M5D1M1D6M1I4M1D2M2I17M1D33M1I4M1D16M1I44M1I19M1I19M1D10M13D13M1I5M2D12M1D4M1I10M1D15M1D5M1I7M1I8M1D30M1D3M1D6M2I30M1D33M2I7M4I8M1D2M1D16M1D20M1I3M1D35M1I5M1D10M4D5M1D3M1D19M2I5M2I8M5I49M1D14M1I15M1I11M1I4M3D5M1D50M1I11M7I2M4I9M1I18M2I11M1I5M2I13M5I3M2D19M2I11M2I47M4I1M2I7M1I26M1D4M1D6M1D6M1I24M2I5M3D9M1D13M1I9M1I22M1D3M1I12M1I4M4D32M1I2M2I15M3D3M1D10M1D7M1D11M1I4M1D3M7I2M1D11M1I4M1I1M2I9M8I15M1I9M1I44M1D4M2D10M1D15M1I23M5I4M2D7M4I14M1D10M2I35M1I5M3D25M1D17M1I18M5D5M2I15M2D21M1D1M1D55M7I11M1D5M1I13M2I13M1I12M1D18M1I9M3I29M1I5M1D11M2I11M1I4M4I13M1D10M3I83M1D24M1D6M2D4M1I5M1D6M1D34M1D4M2D11M1D4M2D47M10I7M1D40M3D11M2I39M1I19M1I2M1I3M1D22M2I17M2I4M1D2M1I7M1I27M1I7M1I17M1I7M1I15M1D8M1I3M1I1M1I44M1I1M3D4M1I2M1I19M1D15M1I6M4D28M1I8M1D13M1I4M1D11M1D19M2I69M1I43M4D24M1D25M2I13M2I16M1D4M1D8M1D42M1I11M1I7M3D1M2D1M5D14M2D2M1I28M1D5M1I25M1D46M7I8M2I30M1I4M1I19M1D22M1I30M1D10M5I7M1I5M1I3M2I12M11D3M1I7M8D2M6D2M3D7M2D4M1I1M2D5M1D18M2I1M1I1M1I4M1I10M3I18M1I27M2D5M1I6M1D7M2I7M22D30M1D31M1D19M2I46M1I3M1I27M6D13M1I37M1I12M2D14M28I3M1I3M1D18M6I25M1I8M1D9M2D17M1D2M4I10M1I44M1I6M1D14M3I10M2D7M1D10M2I9M15I18M1D13M1I15M1D25M1D13M1I1M1I18M5I17M1D16M1D16M1I29M1I24M1D17M1D15M2I10M1I11M3D3M1I2M1D50M11D2M2D2M1D1M2D1M1D9M1D18M2I41M1I26M1I25M1I22M4D6M2D2M13D23M1D11M1D25M1D7M3I9M1I4M1D16M1I4M1D2M1I6M1I20M1D37M2D42M1I3M1D47M1D11M1D3M1D14M1D7M1D19M7D11M3D10M2I7M1I11M1D48M1I2M1I10M4I2M1I18M1D67M2D4M4D6M1D17M1I6M2I23M1D9M1D1M3D8M1D14M2D2M3I6M4D9M1D5M5D22M1D6M2D25M8D1M2D4M1D2M4D31M2I7M1I11M11D16M2D11M2D14M1D8M2D3M1I21M1I6M2I1M1I6M1D27M1D1M1D33M1D21M2D1M1D8M1D5M2D6M1D8M1I34M1D3M4I7M1I2M1I16M1I1M1I46M1D12M1I7M1I31M6I10M1I1M1I1M1I5M11I10M1I19M1D22M1D10M1D11M1I8M1I24M1D6M2I7M3D2M1D17M1I24M1I2M4D19M1I14M2D17M1D9M3I16M1D10M1D25M1I26M11D3M2D5M1D2M8D30M2I15M2I13M1D6M5D5M3D17M2D17M2I18M2D11M1I11M2I3M1D18M1D9M1I8M1I16M1D2M1D13M3D1M1D10M1D11M1I8M3D3M1I26M1D4M2D8M1D3M2D4M1I4M2I11M1D10M1D4M1D8M6D1M1D5M7D2M1D5M8D3M2D13M4I1M1I17M1D21M1D22M1I10M1D41M1I2M1I2M1I5M1D41M1D29M1I5M1D5M1I8M1I15M1D9M1D22M1D29M4D7M1I9M1D8M1I32M2D15M1I15M1I23M1I7M10I19M1D38M1I7M1I4M1I16M28D29M7D28M1D52M2I6M1I1M1I1M1I3M1I25M2D15M1I9M5D6M1D12M1I6M1I4M2I11M5D1M2D1M4D15M3I11M3D4M1I8M1D40M6I12M1D17M1D9M5D1M1D2M1D25M1I23M2D9M1D11M1I3M2D28M1I12M1I17M15I10M1D9M1I2M1I8M4I11M1D9M1I6M1I8M1I40M2D3M2I8M1D11M1D16M1D6M1I7M1I34M2I27M1I5M1D3M2D39M1I30M1D22M1I10M3D61M2I19M2I6M1D7M1I23M1I4M1D3M1D6M2I12M2D11M14I13M1D6M4I9M2D11M1I17M1I4M1D8M1D3M1I4M1I35M1D47M1D17M1I7M1I2M1I25M1I13M1D3M1D18M1I13M2D10M2I19M2I6M1D6M1I7M1I11M1I6M3D2M1D11M1I6M1D17M12I1M1I2M1I9M1D1M1D7M7I4M1I9M8I12M1I37M1I25M4I1M1D7M3D13M1I4M1D2M1D43M1D11M1I4M1I6M1D31M2I38M2D12M2D6M2I39M1I19M6I1M1I12M1D16M1D50M1D40M1D24M1I4M2D5M1D5M2I13M2I4M7D2M2D2M7D1M3D15M1I8M1D10M10D41M1I34M1I10M1D11M1I3M3D7M3I23M9D47M2D19M1I36M42D2M1I3M1D3M1D7M1D5M3D6M1D16M1D13M1D39M14I7M1I16M1D19M1D14M1D8M1I34M2I3M1D6M1D12M2I3M1D10M2I1M1D6M39D2M2D16M2I3M2I3M1D23M1D14M3D3M2D6M3D2M1D1M1D10M1D25M1I17M2I33M2D2M1I7M1I36M2D13M1I9M1D6M3I11M1I2M1D8M1D21M1I34M1D12M2I3M1I8M4I11M1D59M5D18M2I11M1I4M7D26M2I77M5D11M1I16M2D6M5I19M1D13M1D1M2D23M1D6M2I11M1D35M1D10M1I14M1D30M1D12M38D2M1D3M1I2M1I5M2D7M1I1M2I3M1I57M1I31M1I9M1I63M1I40M2I3M1I25M1I4M2I21M15I10M1I30M2D3M2D6M2D15M1I6M1I48M2I27M1D6M1D77M2D3M1I22M3D20M1I14M1I29M1I16M1D20M1D5M30D25M6D7M1I17M1I5M14D16M1I3M1D15M1D41M1D13M1I13M1D5M2D19M2I6M1D29M1I2M2D16M1D6M1D8M1I4M9I13M3D10M1I16M4D27M1D1M3D6M2I9M5I38M1D3M2D1M1D4M2I5M1I24M1D18M1I3M5D2M3D3M1I3M1D1M1D5M1D4M1D11M5D3M8D6M1I3M2D5M1D11M1I19M1I1M1I15M1I3M1D15M1D5M3D1M1D12M1D23M1D1M1D6M4I2M4I9M1I17M1I4M1D18M3I7M1I51M11D11M1D12M3D17M1D14M2I12M4I10M1D26M1I45M1I3M1D15M2I11M1I28M1I4M2D9M1I31M3I15M1I11M1D3M4I10M1I21M1D31M8I23M4I24M1D13M5I19M2D1M1D5M10D10M1I23M1I20M2I32M1D5M1D23M1D9M1I14M1I22M1D6M1D19M3I14M1I18M1D10M1D7M1D14M1D46M1D7M21I5M1D17M3D2M4D7M1D16M1I2M1I14M1I3M1I4M1I16M2I42M1I7M1I17M5D1M1D29M13D24M1I3M8I5M12I9M1I23M1D8M -qctgA 49186 26805 49184 + ctgA 50001 27258 50001 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3I58M1D4M1D3M2I20M3D2M1I42M15I1M1I15M6I2M4I24M1I10M1I64M1I62M1D11M2I10M4I23M1D25M4D23M1D20M2I3M1D7M10D7M1D4M1D5M1D15M10D21M1I3M3D6M1I12M1D6M1I30M1D5M1D6M9I4M1I33M1I2M1I8M1I3M1D5M5D25M2D10M1D34M1D6M5I4M4I6M1I34M1I13M1D25M2I19M1D25M1I1M2D24M1D3M1D20M1I2M1D7M1D3M2D6M4D14M2I29M1I3M2I7M1I4M1I6M2I8M4D30M1D8M4I18M1D7M1I3M1I1M1I9M1I11M3I21M5D6M1I1M1I2M1D5M4D27M1D19M1I7M1I9M5D50M1I3M7I33M1I5M1I2M1I32M34I1M1I6M3D40M1I21M2D33M1D2M1D14M1I4M2I17M1D30M1I9M1D53M1I22M1D5M1D6M2I13M4D19M2I6M2D3M1D15M3I4M1D15M1D3M1I8M7D1M1D56M3I12M1I17M1I5M1I52M7I13M1I2M1I4M1D2M3I9M1I18M1D9M6I9M1D1M2I5M1D6M2I3M3I1M2I3M2I17M2I11M5I4M4I12M1I6M1I9M2I3M1D12M1D7M1D17M1D6M1D13M1D15M2D19M2I6M2D2M1D9M2I20M12D12M1I35M3I6M1D23M3I7M1D8M2I7M1D10M1D41M2D20M1I34M1D2M1D10M1D12M2I10M1I13M13I18M1D27M2I13M2D26M3I4M1I9M2D5M3I39M1I19M1I9M1D12M2I33M1I22M1D31M1D28M1I11M2D5M1I22M1I3M27I38M1D8M1I8M1D29M5I8M1D46M1D18M1I6M1I61M1I16M6I4M3I13M1I19M5I4M1I5M2I6M6I4M7I7M1I7M1I7M1D41M5D3M1D11M1I17M1D3M1D3M1D5M1I11M2D30M5D4M1D6M1I18M1I10M1I50M1D8M1D16M1I9M26I11M1D44M1I19M1D9M2I2M1D18M1I8M15D19M1I13M1D8M1D6M1D4M3D7M1I4M1I3M1D2M1D3M3I1M1I20M1D15M1I11M1I22M2D41M2I12M1D7M2I6M8I3M7I2M2I27M1I19M1I2M1I41M1D13M1I38M1I11M4I7M1D14M1I1M3I37M1I2M1I4M1I3M4I2M1I21M1I18M1D11M2I13M1D23M25D15M1D2M1D3M7D18M1D35M1I11M1D5M1D45M4I5M1I7M1I6M1I35M1D34M2D9M1I6M1D47M1D10M1D34M1D5M1I6M1D1M1D4M8D28M3I6M1D19M1I18M1D7M5I5M1I22M1I3M2D5M12I8M1D71M2D23M1D6M1I3M2I5M2D12M1I12M1D24M1I14M1D3M1I24M1I26M22I42M1I9M1D1M1D9M1I6M1I12M1D6M3I17M12I7M1D11M2D19M1I17M1I17M2D2M2D9M2I10M1I6M2I29M1I3M1I19M1D4M3D8M1D1M2D55M1D43M3D42M1D33M22D22M1I3M1I24M1D40M1I21M1I2M1D5M1I2M1I18M1I20M2I12M1D22M1D4M4D84M1D21M1D35M1I3M4I13M1D5M1D10M4D11M1I20M1I5M1I16M1D14M1I8M1D58M1D9M1D5M26D6M1I30M2D7M1D9M1I9M1D38M5D1M2D8M2D14M2I1M2I13M1I2M1D12M1I21M1I8M1I17M2D4M4D7M1D12M1D23M1I12M1D8M8I12M1D5M1I18M1D39M1D2M1I9M1D5M2I16M1I23M3I6M2D17M3I1M1I13M1D49M1I25M1D5M1D13M1D9M1I21M1I6M1D13M1D2M2I3M2I3M1I3M3I22M1D1M1D10M4D1M4D3M2D7M2I3M2D15M1D9M1D3M4I6M7I1M1I16M1D9M1I6M9I4M3I7M1I5M1D7M1I5M1I31M1I10M1D29M1I6M5I4M1D3M5I22M1D1M1D4M4I2M1D15M2D4M1D1M1D5M2I5M2I7M1I6M1I1M1I14M4I25M1I30M1D30M6I15M3D12M1D9M1D72M1D9M1I8M1I6M1D5M1I18M5D3M1I4M3D3M7D17M1I5M1I19M2D3M1D14M3D2M1D10M1D2M1D38M4D2M1I25M1I23M2D4M1D8M1D3M19D16M1I21M1D21M2D6M23D9M1D9M11D3M5D17M1D2M8D5M1D5M1I12M1I25M1I20M1I10M3D2M4I3M1D18M3D6M2I35M1I2M3D2M1I9M1D1M1D14M1I2M10I1M2I4M1D6M5I3M6I1M6I18M1I8M1D6M1D49M1I18M1D1M1D7M2I24M1I13M1I1M26I8M2I2M1D19M1I13M1D9M1D5M1D3M10I10M5D1M1D15M1I27M1D15M1D30M2I12M1I10M3I22M5I4M1I9M1D33M1I3M1I12M9D4M1I6M5D3M8D8M1D33M5D13M1I22M1I12M1D17M6D5M3I12M1D12M1I1M1I7M1D44M1I1M1I12M1D47M1I8M2I27M1I1M1I35M1I9M1D6M3I52M3D6M1D27M1D8M1D13M1I13M4D16M3D43M1D13M1I31M1I63M1I30M1D6M1I1M1I15M20I18M2I15M9I8M3I16M11I9M1I18M1D27M8D2M3D1M1D11M2I24M2I27M1I2M1I52M1D50M1D4M1I7M7I23M1D6M1I34M2D15M2I11M1D9M1I21M6I1M1I11M2D2M1D7M27I18M1D2M1I10M4I12M3I1M2I15M5I1M1I6M6I6M1I40M5D8M1D8M35D6M1D27M1I15M2D3M18D5M4D2M1D4M4D8M1D39M2D5M6I9M38I3M1D24M1I2M1I17M1I9M2I7M9D12M1D1M1D15M1D10M2I11M1I10M1I19M3D20M1I43M1I8M1D4M3D1M2D2M3D5M3I13M1D9M5D6M1I6M1D2M2I23M1D8M1D19M1I12M1D20M1I5M1D16M2D10M15D5M2I7M1D14M4I13M1I16M1D4M1I5M2I5M2I3M1D14M17D6M1D16M6D13M5I1M1I6M1D4M1I2M2D17M1I33M1D4M1I16M1D44M1D19M1D19M1I10M13I13M1D5M2I12M1I4M1D10M1I15M1I5M1D7M1D8M1I30M1I3M1I6M2D30M1I33M2D7M4D8M1I2M1I16M1I20M1D3M1I35M1D5M1I10M4I5M1I3M1I19M2D5M2D8M5D49M1I14M1D15M1D11M1D4M3I5M1I50M1D11M7D2M4D9M1D18M2D11M1D5M2D13M5D3M2I19M2D11M2D47M4D1M2D7M1D26M1I4M1I6M1I6M1D24M2D5M3I9M1I13M1D9M1D22M1I3M1D12M1D4M4I32M1D2M2D15M3I3M1I10M1I7M1I11M1D4M1I3M7D2M1I11M1D4M1D1M2D9M8D15M1D9M1D44M1I4M2I10M1I15M1D23M5D4M2I7M4D14M1I10M2D35M1D5M3I25M1I17M1D18M5I5M2D15M2I21M1I1M1I55M7D11M1I5M1D13M2D13M1D12M1I18M1D9M3D29M1D5M1I11M2D11M1D4M4D13M1I10M3D83M1I24M1I6M2I4M1D5M1I6M1I34M1I4M2I11M1I4M2I47M10D7M1I40M3I11M2D39M1D19M1D2M1D3M1I22M2D17M2D4M1I2M1D7M1D27M1D7M1D17M1D7M1D15M1I8M1D3M1D1M1D44M1D1M3I4M1D2M1D19M1I15M1D6M4I28M1D8M1I13M1D4M1I11M1I19M2D69M1D43M4I24M1I25M2D13M2D16M1I4M1I8M1I42M1D11M1D7M3I1M2I1M5I14M2I2M1D28M1I5M1D25M1I46M7D8M2D30M1D4M1D19M1I22M1D30M1I10M5D7M1D5M1D3M2D12M11I3M1D7M8I2M6I2M3I7M2I4M1D1M2I5M1I18M2D1M1D1M1D4M1D10M3D18M1D27M2I5M1D6M1I7M2D7M22I30M1I31M1I19M2D46M1D3M1D27M6I13M1D37M1D12M2I14M28D3M1D3M1I18M6D25M1D8M1I9M2I17M1I2M4D10M1D44M1D6M1I14M3D10M2I7M1I10M2D9M15D18M1I13M1D15M1I25M1I13M1D1M1D18M5D17M1I16M1I16M1D29M1D24M1I17M1I15M2D10M1D11M3I3M1D2M1I50M11I2M2I2M1I1M2I1M1I9M1I18M2D41M1D26M1D25M1D22M4I6M2I2M13I23M1I11M1I25M1I7M3D9M1D4M1I16M1D4M1I2M1D6M1D20M1I37M2I42M1D3M1I47M1I11M1I3M1I14M1I7M1I19M7I11M3I10M2D7M1D11M1I48M1D2M1D10M4D2M1D18M1I67M2I4M4I6M1I17M1D6M2D23M1I9M1I1M3I8M1I14M2I2M3D6M4I9M1I5M5I22M1I6M2I25M8I1M2I4M1I2M4I31M2D7M1D11M11I16M2I11M2I14M1I8M2I3M1D21M1D6M2D1M1D6M1I27M1I1M1I33M1I21M2I1M1I8M1I5M2I6M1I8M1D34M1I3M4D7M1D2M1D16M1D1M1D46M1I12M1D7M1D31M6D10M1D1M1D1M1D5M11D10M1D19M1I22M1I10M1I11M1D8M1D24M1I6M2D7M3I2M1I17M1D24M1D2M4I19M1D14M2I17M1I9M3D16M1I10M1I25M1D26M11I3M2I5M1I2M8I30M2D15M2D13M1I6M5I5M3I17M2I17M2D18M2I11M1D11M2D3M1I18M1I9M1D8M1D16M1I2M1I13M3I1M1I10M1I11M1D8M3I3M1D26M1I4M2I8M1I3M2I4M1D4M2D11M1I10M1I4M1I8M6I1M1I5M7I2M1I5M8I3M2I13M4D1M1D17M1I21M1I22M1D10M1I41M1D2M1D2M1D5M1I41M1I29M1D5M1I5M1D8M1D15M1I9M1I22M1I29M4I7M1D9M1I8M1D32M2I15M1D15M1D23M1D7M10D19M1I38M1D7M1D4M1D16M28I29M7I28M1I52M2D6M1D1M1D1M1D3M1D25M2I15M1D9M5I6M1I12M1D6M1D4M2D11M5I1M2I1M4I15M3D11M3I4M1D8M1I40M6D12M1I17M1I9M5I1M1I2M1I25M1D23M2I9M1I11M1D3M2I28M1D12M1D17M15D10M1I9M1D2M1D8M4D11M1I9M1D6M1D8M1D40M2I3M2D8M1I11M1I16M1I6M1D7M1D34M2D27M1D5M1I3M2I39M1D30M1I22M1D10M3I61M2D19M2D6M1I7M1D23M1D4M1I3M1I6M2D12M2I11M14D13M1I6M4D9M2I11M1D17M1D4M1I8M1I3M1D4M1D35M1I47M1I17M1D7M1D2M1D25M1D13M1I3M1I18M1D13M2I10M2D19M2D6M1I6M1D7M1D11M1D6M3I2M1I11M1D6M1I17M12D1M1D2M1D9M1I1M1I7M7D4M1D9M8D12M1D37M1D25M4D1M1I7M3I13M1D4M1I2M1I43M1I11M1D4M1D6M1I31M2D38M2I12M2I6M2D39M1D19M6D1M1D12M1I16M1I50M1I40M1I24M1D4M2I5M1I5M2D13M2D4M7I2M2I2M7I1M3I15M1D8M1I10M10I41M1D34M1D10M1I11M1D3M3I7M3D23M9I47M2I19M1D36M42I2M1D3M1I3M1I7M1I5M3I6M1I16M1I13M1I39M14D7M1D16M1I19M1I14M1I8M1D34M2D3M1I6M1I12M2D3M1I10M2D1M1I6M39I2M2I16M2D3M2D3M1I23M1I14M3I3M2I6M3I2M1I1M1I10M1I25M1D17M2D33M2I2M1D7M1D36M2I13M1D9M1I6M3D11M1D2M1I8M1I21M1D34M1I12M2D3M1D8M4D11M1I59M5I18M2D11M1D4M7I26M2D77M5I11M1D16M2I6M5D19M1I13M1I1M2I23M1I6M2D11M1I35M1I10M1D14M1I30M1I12M38I2M1I3M1D2M1D5M2I7M1D1M2D3M1D57M1D31M1D9M1D63M1D40M2D3M1D25M1D4M2D21M15D10M1D30M2I3M2I6M2I15M1D6M1D48M2D27M1I6M1I77M2I3M1D22M3I20M1D14M1D29M1D16M1I20M1I5M30I25M6I7M1D17M1D5M14I16M1D3M1I15M1I41M1I13M1D13M1I5M2I19M2D6M1I29M1D2M2I16M1I6M1I8M1D4M9D13M3I10M1D16M4I27M1I1M3I6M2D9M5D38M1I3M2I1M1I4M2D5M1D24M1I18M1D3M5I2M3I3M1D3M1I1M1I5M1I4M1I11M5I3M8I6M1D3M2I5M1I11M1D19M1D1M1D15M1D3M1I15M1I5M3I1M1I12M1I23M1I1M1I6M4D2M4D9M1D17M1D4M1I18M3D7M1D51M11I11M1I12M3I17M1I14M2D12M4D10M1I26M1D45M1D3M1I15M2D11M1D28M1D4M2I9M1D31M3D15M1D11M1I3M4D10M1D21M1I31M8D23M4D24M1I13M5D19M2I1M1I5M10I10M1D23M1D20M2D32M1I5M1I23M1I9M1D14M1D22M1I6M1I19M3D14M1D18M1I10M1I7M1I14M1I46M1I7M21D5M1I17M3I2M4I7M1I16M1D2M1D14M1D3M1D4M1D16M2D42M1D7M1D17M5I1M1I29M13I24M1D3M8D5M12D9M1D23M1I8M -tctgA 50001 2212 16198 + ctgA 49186 2214 15925 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1I4M2I21M1I10M1I14M1I5M1D29M2D9M1I15M1I27M1I12M1D5M1I11M1D7M2I4M2D9M1D4M6D32M1D13M1I55M1I8M1I1M1I12M1I2M1D22M2I56M1D11M1I5M5I17M3I3M1I13M1D16M1I50M1I2M1I10M1D1M1D42M1D2M2D33M22I3M1I2M1I6M1D8M2D5M1D50M1D6M3D6M2D12M3I13M1D9M5D1M1D10M1I3M1D5M1I3M1I4M1I24M1I5M2D30M1D3M1I15M1D9M1I3M1I18M1I9M1D11M2D6M1I23M4D1M1D22M1I3M1I11M2D1M1D7M1D4M1D18M1I6M1I5M2D5M1I66M2I3M1D8M1I13M1I8M1I3M2D4M1D20M1I5M2I22M1I6M8I14M1I6M1D8M2D5M9D7M2I4M1D11M1I20M2D2M1I33M8I10M2I7M1I18M4I5M1D4M4D1M1D33M3I10M1D20M2D8M1D9M1I10M1D7M1I8M1D6M2I66M1I3M2I2M1I24M1D63M1I14M8I7M1I13M1D31M1I16M4D41M1D3M1D4M23I9M1D2M1D8M1I1M1I12M1I2M1I3M1D33M1I24M2I3M1I4M1I12M122D6M4D2M1D13M1I3M1D35M1I4M1I13M1D32M1D6M1I5M1I5M1D12M1D8M1D48M1I2M1D19M1D9M1I24M1D13M1D8M1I5M7I5M2D10M1I11M3I15M1I6M2I4M1I18M1D14M1D3M1D1M2D17M1D12M4D15M1I3M1D31M1D1M1D1M1D1M1D12M5I2M1D31M2I18M1D5M20D10M1I20M3D11M1I14M1I1M9I4M4I2M4I2M3I4M1D10M1D50M1I14M1I11M8I11M2D9M1I20M3I5M1I27M1D5M3I9M2I9M3D34M1I21M1D15M1I9M1I2M1I2M1I8M1I26M3D4M1D3M1I2M1I25M1I1M1I14M6I45M2I21M1I17M2D23M1D6M2I8M2D20M1I24M1D9M1I1M2D6M1D3M1D9M8I4M2I30M2D8M1D7M1I50M1I3M3I26M3D17M1D17M1D5M1D8M1I29M2D2M1I3M1I6M1D11M3I20M3I19M1I17M2I33M1D35M2D7M2D3M18D1M3D10M5D11M1D8M1D6M1I9M1I4M2D5M1D13M1D22M1D16M14I22M1D3M1I19M1D53M1I13M1I20M8I8M1I6M6D28M3D28M9D23M5D26M1I6M1D5M1D24M1I5M2I13M1I2M4I2M1I4M4I8M1I14M1I12M1I28M1I18M4I10M2D8M1I62M1I14M2I5M1I18M1D1M3I4M1I13M1D4M2I3M1D8M4D2M8D71M1I8M4I23M1I15M5D13M1D6M1D8M7I16M2I13M2D27M1D46M1I20M2D6M1I9M1D4M1I7M1D6M1I2M6I11M4D25M1I22M1D14M2D20M1D30M3I7M3D4M1I22M1D4M1D10M1D20M1I21M3I3M1I8M1D14M1I10M2I45M1D14M1D17M1D27M2D3M1I2M2I4M1D13M1D5M4I6M2I11M1I11M4I6M1I15M1I8M1I6M9I1M1I19M1I4M1I8M2D9M1I7M1D33M1D19M1D3M1D35M3D4M1D6M2D16M3D1M1D30M26D28M1D7M2I12M2D10M1I7M1D16M1D4M1I18M1I33M1I31M1I7M1I12M1D7M1D16M5I3M1I4M1D4M1D28M8D12M1D4M1D7M3D11M1D15M1D12M1I12M3I6M2D4M1D16M1I11M1D5M1D2M2I22M4D14M2I19M1D7M3I17M1I22M5D6M1D14M2D1M1D12M1I11M10I16M1D21M1D24M5D17M1D48M1D3M1D4M1D12M1D13M4D9M1I22M1I21M1I12M1D11M3D2M1D9M1I10M1D4M1I4M1D18M1I3M1D18M2D4M1I21M4D5M3I3M1D21M1I33M1D19M1I38M2I27M1I7M1I15M2I8M5D2M1D15M1I7M2I2M1I11M1D24M1I4M1D14M1I51M1D47M1D3M4D4M3D3M1I3M1D13M1D3M1I13M1I10M3I34M1D3M1I17M1D5M1I8M1D28M1I13M2I2M1I16M1D21M2I22M5I8M1I3M1I9M1D12M2D11M1I7M1I2M2D10M3I26M4D12M1D3M1D12M7I12M1I5M1D5M8D5M1D8M1I31M1D3M1D6M1I12M2D4M1D24M2I10M1I17M1D1M3D11M1D8M2D16M1D18M2D3M6D2M1D6M24D10M2I14M1I11M1I4M1D10M1I34M4I14M1D21M1D6M43D8M4D2M1D12M1D7M5D4M2I15M1D39M1D6M1I9M3D1M3D2M2D4M4D2M3D1M1D2M1D10M1I16M3D17M1I1M1I28M1D10M1D11M1D28M1D11M2I17M1I14M1I7M2D6M1D4M7D3M7D10M1I6M1I57M2D4M1D5M1D18M2I50M5I38M1D6M1D15M1D5M1I58M4I28M1I15M1D14M3I4M2D4M1I11M4D4M1D44M1I25M1I8M2D12M1I7M1D31M1D9M26I5M1I19M1D1M1D9M1D5M1D7M34I1M1I38M1I1M1I21M1D4M11D29M1D11M1D7M3I19M2I36M1D12M1I21M1I2M7I23M2I19M1I6M1I16M2I2M3D10M1D11M10I5M1I15M2D18M1I17M1I7M2D6M2I6M1D27M1I17M1I23M5I29M4D3M1I41M1D33M1D9M1D11M6I25M1D17M3D6M1I8M1I14M1D13M1D12M1I16M1I12M1I3M1D12M1I28M1D32M1D15M1I32M6I2M2I8M1D6M1D23M22I30M1I9M10D58M3I7M1D12M1I10M6I31M1D14M1I38M1I13M3D14M1D23M1I6M1I10M3I22M1I10M1I8M5I67M1I13M4D3M5D6M1I4M1I8M3D8M3I2M1I11M1D11M1I4M2I1M1I2M1I5M3I9M2D1M1D4M1D6M2D5M1D5M1I8M4D8M1I7M2I3M3D15M6D1M1D9M1D4M1D6M1D36M1D7M1D18M1I5M1D3M2I20M1D13M4I7M5I2M2I43M1I5M1D12M1I7M1D31M1I13M1D13M1I6M1D1M1D4M3D7M1D31M2D26M1I7M1I8M1D7M1I17M1D18M1I6M1D4M7D13M1I6M1D7M1I31M1D5M1I15M1D20M1I20M1I26M3I2M3I1M9I5M1I24M2D25M1D14M1D5M3D2M1I7M1I3M1I19M1I17M1I16M2I5M5D8M1I15M1I3M2I5M5I15M1D13M3D7M1D9M5I10M2D5M1I10M2I1M1I2M1I9M8I2M1D5M1I6M6D7M1I13M3I7M1I3M1D15M2D18M1D3M1D2M1D5M1D5M2I9M1I1M1I27M1I11M1D16M8I1M2I8M1I15M1I6M1I10M1D24M1D3M1D19M1I12M1I24M1D8M1D2M1D2M1I6M1D31M2I5M5D16M5I5M1I6M3D11M14D12M3I29M1I12M1I5M23I2M1I4M4I6M1D41M2I21M1D17M1D5M1D25M3I18M1D6M1D5M1D42M1I3M1D31M1I3M1D14M1D21M1I8M3D4M1I19M6D10M2I12M7I32M8I2M1D18M2D31M1D15M1I21M1I6M1I3M1I39M2I1M1D10M1D3M1I36M12D45M1D7M1I4M1I1M3I7M1I3M1D5M1D6M1D14M1D14M1I18M1D1M1D6M1I1M2D1M1D4M2D8M1D27M5I20M12D11M1D9M1D29M3D26M2D4M2D3M1I6M37D1M1D4M5D3M1D3M6D3M4D16M1D27M2D3M1D2M2D60M4D5M4I8M21D26M1D16M1D3M1I8M1D22M1I8M10D3M2D3M3D13M36D4M1D40M1I6M1I5M1I7M2I7M1I13M2I2M1D8M2I6M1I9M1I3M1D4M4I3M1D5M1I11M1D4M4D23M1I21M1I17M1D37M2I10M1D36M1D8M1D1M1D9M1I6M1D1M5D1M7D3M2D2M10D2M2D12M1I27M2I1M1D16M1D18M1D25M1D29M1I12M2I18M1I2M3I3M7I13M1D30M3D2M2D18M1D4M2D36M1I19M1D19M1I6M1I4M3D20M2D13M1I61M1I12M3D1M1D6M2D4M2D3M1I7M1D34M1I9M1D5M5D9M3D11M1D4M1I4M1I3M4D2M3D1M8D22M1I10M1D12M1D57M1D25M1D58M4I26M1I2M1I2M1I7M2I43M1I3M1D6M1D9M2D20M1D5M41D5M1D30M1D32M1D12M2I9M4I17M2D44M1D2M1I29M14I1M1I17M1I8M1D27M4I14M1D9M1D4M1I6M1D12M5D26M3I2M1I2M1I18M +"qctgA 49186 3 1851 + ctgA 50001 0 1859 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1D16M1D5M3D33M1I14M3I7M1I25M2D5M2D4M1I17M3I11M1I5M3I3M1D15M3D1M2D6M1D2M6I6M2I24M1D3M2I29M1D2M1D3M1D6M1D10M2I8M19I33M1I23M2I9M1I11M1D6M1I5M1I28M1D13M1I5M1D2M1D49M5I6M2D21M1I1M2I2M2I4M4D4M1D5M1D3M1I2M1D4M37I17M2D16M6I5M3I3M6I16M5D4M8D5M4D1M1D52M2I2M1D5M28I33M1I17M2D2M2I31M42D5M1D9M1D7M1I8M1D40M1D39M1D2M1I3M2D11M2D6M2D10M1I14M1D12M1D16M1I6M3D6M2D4M1D1M1D27M1D3M10D3M2I11M3I3M1D35M1D1M3I3M2I19M3I9M4I23M1D3M1D28M1D52M1D28M1I20M2D66M1D3M2D7M1I7M2I9M1I11M1I11M1I7M1D3M1D30M1I11M1I15M2D7M3I3M1D12M6D35M1I4M1I17M1I15M1D5M1I4M1D5M1D3M5I10M1I2M1I8M7D13M5D9M1I4M1D45M6D4M1D19M2I16M1I1M2D23M7D11M1D19M1I13M +qctgA 49186 1860 2214 - ctgA 50001 1859 2192 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:42M1I6M1D2M1D35M1D2M4D16M2D39M15D6M1D2M1D9M1D30M1D8M1I2M2I7M1D10M1D43M2D20M5I12M1D9M1I3M1I4M1I14M qctgA 49186 2214 15925 + ctgA 50001 2212 16198 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1D4M2D21M1D10M1D14M1D5M1I29M2I9M1D15M1D27M1D12M1I5M1D11M1I7M2D4M2I9M1I4M6I32M1I13M1D55M1D8M1D1M1D12M1D2M1I22M2D56M1I11M1D5M5D17M3D3M1D13M1I16M1D50M1D2M1D10M1I1M1I42M1I2M2I33M22D3M1D2M1D6M1I8M2I5M1I50M1I6M3I6M2I12M3D13M1I9M5I1M1I10M1D3M1I5M1D3M1D4M1D24M1D5M2I30M1I3M1D15M1I9M1D3M1D18M1D9M1I11M2I6M1D23M4I1M1I22M1D3M1D11M2I1M1I7M1I4M1I18M1D6M1D5M2I5M1D66M2D3M1I8M1D13M1D8M1D3M2I4M1I20M1D5M2D22M1D6M8D14M1D6M1I8M2I5M9I7M2D4M1I11M1D20M2I2M1D33M8D10M2D7M1D18M4D5M1I4M4I1M1I33M3D10M1I20M2I8M1I9M1D10M1I7M1D8M1I6M2D66M1D3M2D2M1D24M1I63M1D14M8D7M1D13M1I31M1D16M4I41M1I3M1I4M23D9M1I2M1I8M1D1M1D12M1D2M1D3M1I33M1D24M2D3M1D4M1D12M122I6M4I2M1I13M1D3M1I35M1D4M1D13M1I32M1I6M1D5M1D5M1I12M1I8M1I48M1D2M1I19M1I9M1D24M1I13M1I8M1D5M7D5M2I10M1D11M3D15M1D6M2D4M1D18M1I14M1I3M1I1M2I17M1I12M4I15M1D3M1I31M1I1M1I1M1I1M1I12M5D2M1I31M2D18M1I5M20I10M1D20M3I11M1D14M1D1M9D4M4D2M4D2M3D4M1I10M1I50M1D14M1D11M8D11M2I9M1D20M3D5M1D27M1I5M3D9M2D9M3I34M1D21M1I15M1D9M1D2M1D2M1D8M1D26M3I4M1I3M1D2M1D25M1D1M1D14M6D45M2D21M1D17M2I23M1I6M2D8M2I20M1D24M1I9M1D1M2I6M1I3M1I9M8D4M2D30M2I8M1I7M1D50M1D3M3D26M3I17M1I17M1I5M1I8M1D29M2I2M1D3M1D6M1I11M3D20M3D19M1D17M2D33M1I35M2I7M2I3M18I1M3I10M5I11M1I8M1I6M1D9M1D4M2I5M1I13M1I22M1I16M14D22M1I3M1D19M1I53M1D13M1D20M8D8M1D6M6I28M3I28M9I23M5I26M1D6M1I5M1I24M1D5M2D13M1D2M4D2M1D4M4D8M1D14M1D12M1D28M1D18M4D10M2I8M1D62M1D14M2D5M1D18M1I1M3D4M1D13M1I4M2D3M1I8M4I2M8I71M1D8M4D23M1D15M5I13M1I6M1I8M7D16M2D13M2I27M1I46M1D20M2I6M1D9M1I4M1D7M1I6M1D2M6D11M4I25M1D22M1I14M2I20M1I30M3D7M3I4M1D22M1I4M1I10M1I20M1D21M3D3M1D8M1I14M1D10M2D45M1I14M1I17M1I27M2I3M1D2M2D4M1I13M1I5M4D6M2D11M1D11M4D6M1D15M1D8M1D6M9D1M1D19M1D4M1D8M2I9M1D7M1I33M1I19M1I3M1I35M3I4M1I6M2I16M3I1M1I30M26I28M1I7M2D12M2I10M1D7M1I16M1I4M1D18M1D33M1D31M1D7M1D12M1I7M1I16M5D3M1D4M1I4M1I28M8I12M1I4M1I7M3I11M1I15M1I12M1D12M3D6M2I4M1I16M1D11M1I5M1I2M2D22M4I14M2D19M1I7M3D17M1D22M5I6M1I14M2I1M1I12M1D11M10D16M1I21M1I24M5I17M1I48M1I3M1I4M1I12M1I13M4I9M1D22M1D21M1D12M1I11M3I2M1I9M1D10M1I4M1D4M1I18M1D3M1I18M2I4M1D21M4I5M3D3M1I21M1D33M1I19M1D38M2D27M1D7M1D15M2D8M5I2M1I15M1D7M2D2M1D11M1I24M1D4M1I14M1D51M1I47M1I3M4I4M3I3M1D3M1I13M1I3M1D13M1D10M3D34M1I3M1D17M1I5M1D8M1I28M1D13M2D2M1D16M1I21M2D22M5D8M1D3M1D9M1I12M2I11M1D7M1D2M2I10M3D26M4I12M1I3M1I12M7D12M1D5M1I5M8I5M1I8M1D31M1I3M1I6M1D12M2I4M1I24M2D10M1D17M1I1M3I11M1I8M2I16M1I18M2I3M6I2M1I6M24I10M2D14M1D11M1D4M1I10M1D34M4D14M1I21M1I6M43I8M4I2M1I12M1I7M5I4M2D15M1I39M1I6M1D9M3I1M3I2M2I4M4I2M3I1M1I2M1I10M1D16M3I17M1D1M1D28M1I10M1I11M1I28M1I11M2D17M1D14M1D7M2I6M1I4M7I3M7I10M1D6M1D57M2I4M1I5M1I18M2D50M5D38M1I6M1I15M1I5M1D58M4D28M1D15M1I14M3D4M2I4M1D11M4I4M1I44M1D25M1D8M2I12M1D7M1I31M1I9M26D5M1D19M1I1M1I9M1I5M1I7M34D1M1D38M1D1M1D21M1I4M11I29M1I11M1I7M3D19M2D36M1I12M1D21M1D2M7D23M2D19M1D6M1D16M2D2M3I10M1I11M10D5M1D15M2I18M1D17M1D7M2I6M2D6M1I27M1D17M1D23M5D29M4I3M1D41M1I33M1I9M1I11M6D25M1I17M3I6M1D8M1D14M1I13M1I12M1D16M1D12M1D3M1I12M1D28M1I32M1I15M1D32M6D2M2D8M1I6M1I23M22D30M1D9M10I58M3D7M1I12M1D10M6D31M1I14M1D38M1D13M3I14M1I23M1D6M1D10M3D22M1D10M1D8M5D67M1D13M4I3M5I6M1D4M1D8M3I8M3D2M1D11M1I11M1D4M2D1M1D2M1D5M3D9M2I1M1I4M1I6M2I5M1I5M1D8M4I8M1D7M2D3M3I15M6I1M1I9M1I4M1I6M1I36M1I7M1I18M1D5M1I3M2D20M1I13M4D7M5D2M2D43M1D5M1I12M1D7M1I31M1D13M1I13M1D6M1I1M1I4M3I7M1I31M2I26M1D7M1D8M1I7M1D17M1I18M1D6M1I4M7I13M1D6M1I7M1D31M1I5M1D15M1I20M1D20M1D26M3D2M3D1M9D5M1D24M2I25M1I14M1I5M3I2M1D7M1D3M1D19M1D17M1D16M2D5M5I8M1D15M1D3M2D5M5D15M1I13M3I7M1I9M5D10M2I5M1D10M2D1M1D2M1D9M8D2M1I5M1D6M6I7M1D13M3D7M1D3M1I15M2I18M1I3M1I2M1I5M1I5M2D9M1D1M1D27M1D11M1I16M8D1M2D8M1D15M1D6M1D10M1I24M1I3M1I19M1D12M1D24M1I8M1I2M1I2M1D6M1I31M2D5M5I16M5D5M1D6M3I11M14I12M3D29M1D12M1D5M23D2M1D4M4D6M1I41M2D21M1I17M1I5M1I25M3D18M1I6M1I5M1I42M1D3M1I31M1D3M1I14M1I21M1D8M3I4M1D19M6I10M2D12M7D32M8D2M1I18M2I31M1I15M1D21M1D6M1D3M1D39M2D1M1I10M1I3M1D36M12I45M1I7M1D4M1D1M3D7M1D3M1I5M1I6M1I14M1I14M1D18M1I1M1I6M1D1M2I1M1I4M2I8M1I27M5D20M12I11M1I9M1I29M3I26M2I4M2I3M1D6M37I1M1I4M5I3M1I3M6I3M4I16M1I27M2I3M1I2M2I60M4I5M4D8M21I26M1I16M1I3M1D8M1I22M1D8M10I3M2I3M3I13M36I4M1I40M1D6M1D5M1D7M2D7M1D13M2D2M1I8M2D6M1D9M1D3M1I4M4D3M1I5M1D11M1I4M4I23M1D21M1D17M1I37M2D10M1I36M1I8M1I1M1I9M1D6M1I1M5I1M7I3M2I2M10I2M2I12M1D27M2D1M1I16M1I18M1I25M1I29M1D12M2D18M1D2M3D3M7D13M1I30M3I2M2I18M1I4M2I36M1D19M1I19M1D6M1D4M3I20M2I13M1D61M1D12M3I1M1I6M2I4M2I3M1D7M1I34M1D9M1I5M5I9M3I11M1I4M1D4M1D3M4I2M3I1M8I22M1D10M1I12M1I57M1I25M1I58M4D26M1D2M1D2M1D7M2D43M1D3M1I6M1I9M2I20M1I5M41I5M1I30M1I32M1I12M2D9M4D17M2I44M1I2M1D29M14D1M1D17M1D8M1I27M4D14M1I9M1I4M1D6M1I12M5I26M3D2M1D2M1D18M -tctgA 50001 19011 26774 + ctgA 49186 18755 26306 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1I43M1D4M7D2M7D13M2I3M1I7M1I19M1D5M1D32M1D5M2I63M4D20M5D50M2I12M1I16M3D8M1I19M2D38M1D28M7I2M1I5M4I1M1I3M2I2M1D25M1I10M1D2M1D19M1I5M1D32M1I8M5D4M8D7M1D1M1D26M2D16M2I6M7D14M4I2M1I3M2I4M1D32M6I8M1D12M1D10M1D24M4D2M1D43M1D22M1I11M1I30M2D31M1D19M1D2M1D10M3I48M1I26M4D11M1D4M1D11M2D4M1D18M7I8M1I10M1I2M1D61M1D4M1I18M1D13M3D3M2D5M8D47M1I30M3D6M1I44M2D14M1I40M9D1M2D24M1D16M39I5M1I38M3I22M4D35M1I19M1I19M1I26M1D4M1I10M4D39M1I10M2I10M1I10M1I3M1D1M5D16M1I13M1D11M1D25M1D21M8I22M4D11M1D9M5D17M1D73M1I36M6D4M1D19M1I52M1I15M24I1M1I2M2I15M1I2M6I2M1I28M1D41M4I46M4I14M1D7M21D4M1I20M1D2M1I15M1I3M1I29M1I20M5D37M2I9M1I16M1I24M1I22M3D1M2D47M1I6M1D6M1I19M1D18M1I1M1I18M1I3M1I2M1I5M35D8M1D13M1I7M4I31M1I6M1D83M2D1M1I26M1I15M1I3M2D5M2D12M1D42M1I1M2I12M4D2M4D6M26D8M3D1M1D2M4D9M1D30M2D3M2D28M1I4M1I41M1D18M1I41M1I12M1I19M4I35M5I31M4I31M1I3M1D11M1I25M2D2M3D30M1D5M1I8M1D22M1I7M1D32M1I29M6D1M7D10M3D1M1D5M1I15M7I18M2I10M4D42M1D15M1I13M1D5M1D2M2I38M1I9M2I7M3I20M1D15M1I5M1D3M1D8M2I12M1D10M1D3M1D6M1D30M1D94M1I18M1I4M5D3M1D29M1D2M1D2M1D5M1I4M1D13M1I9M6I10M1D6M1D12M2I5M2D1M1D11M2D1M1D10M5D9M8D17M1D35M1D4M1I16M5I1M1I9M8I21M23I2M1I38M1D1M1D8M1D27M1I42M1I9M2D1M1I5M1D23M2I5M1I28M1D25M1D24M1D5M1I21M1I4M4I7M1D7M1I25M21I5M1I4M1I42M2D26M1D7M1I10M1I1M1I19M10D4M1D14M1D42M8D28M3D2M3D13M1I17M1D11M1I22M1I19M1I1M4I9M2D2M1I14M8I9M2D9M1I13M2D11M3D2M2I5M1I3M1I6M3D10M1I9M1D21M1I5M2I9M2I10M1D3M2I9M1I21M3D23M1I8M1I3M1I26M1I33M8D7M1I9M10D10M1I7M1D52M10D13M1I6M2D39M1D6M1D26M1I4M1D4M32D24M1D21M2D1M1D7M1D1M1D15M1D5M1D24M2I1M1I6M1D2M1D19M35D41M3I6M3I15M2D3M1D14M2I9M3D19M2D26M1D30M1I6M3D32M1I5M1D36M1D8M1D2M2D2M1D6M3I3M7I2M2I17M1D12M1D6M1I40M3D28M2I2M2I21M1D4M1I9M1I4M1I31M2I11M1D31M1D3M2D3M5D7M4D7M1D6M1D6M8D4M1I1M2D19M3I14M1D7M1D12M1I4M3I2M4I11M1I8M1I17M1D11M1D3M1D15M17I8M3D42M1I17M1D25M1I15M1I11M2I7M1D23M4I14M2D20M1I9M3D2M1D17M1D34M1I3M1I4M1D13M1I2M1I6M1I6M1D12M2D1M4D2M4D4M1I16M36D6M1D32M1D27M1D4M1D2M1I11M20D16M3D4M1I16M1D27M1D14M1D21M2I14M1D10M3D5M2D3M3D2M1D1M4D5M1D2M3D7M1D7M1I9M1D5M1D4M1D16M1D9M9D1M1D2M1D4M1D3M2I6M2D5M1I22M1D3M1I8M1D8M3D43M1I4M1D31M1I17M3I8M2I12M6I13M1I16M1D11M2D4M1I5M2D2M2D2M1I29M1I12M2D13M1I7M14D1M1D3M5D10M1D12M5I19M1I10M1I3M7I2M14I3M9I13M2I5M1I13M1D4M1D18M1I3M1D28M1I5M4D35M1D23M3D11M2I8M1D17M1I9M1I23M4D4M1D9M1I3M1I26M1I5M3I1M1I14M1D42M1I5M16I15M1D28M4D5M1I5M1D4M1D11M2D5M1I4M1I3M1I9M -qctgA 49186 18755 26306 + ctgA 50001 19011 26774 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1D43M1I4M7I2M7I13M2D3M1D7M1D19M1I5M1I32M1I5M2D63M4I20M5I50M2D12M1D16M3I8M1D19M2I38M1I28M7D2M1D5M4D1M1D3M2D2M1I25M1D10M1I2M1I19M1D5M1I32M1D8M5I4M8I7M1I1M1I26M2I16M2D6M7I14M4D2M1D3M2D4M1I32M6D8M1I12M1I10M1I24M4I2M1I43M1I22M1D11M1D30M2I31M1I19M1I2M1I10M3D48M1D26M4I11M1I4M1I11M2I4M1I18M7D8M1D10M1D2M1I61M1I4M1D18M1I13M3I3M2I5M8I47M1D30M3I6M1D44M2I14M1D40M9I1M2I24M1I16M39D5M1D38M3D22M4I35M1D19M1D19M1D26M1I4M1D10M4I39M1D10M2D10M1D10M1D3M1I1M5I16M1D13M1I11M1I25M1I21M8D22M4I11M1I9M5I17M1I73M1D36M6I4M1I19M1D52M1D15M24D1M1D2M2D15M1D2M6D2M1D28M1I41M4D46M4D14M1I7M21I4M1D20M1I2M1D15M1D3M1D29M1D20M5I37M2D9M1D16M1D24M1D22M3I1M2I47M1D6M1I6M1D19M1I18M1D1M1D18M1D3M1D2M1D5M35I8M1I13M1D7M4D31M1D6M1I83M2I1M1D26M1D15M1D3M2I5M2I12M1I42M1D1M2D12M4I2M4I6M26I8M3I1M1I2M4I9M1I30M2I3M2I28M1D4M1D41M1I18M1D41M1D12M1D19M4D35M5D31M4D31M1D3M1I11M1D25M2I2M3I30M1I5M1D8M1I22M1D7M1I32M1D29M6I1M7I10M3I1M1I5M1D15M7D18M2D10M4I42M1I15M1D13M1I5M1I2M2D38M1D9M2D7M3D20M1I15M1D5M1I3M1I8M2D12M1I10M1I3M1I6M1I30M1I94M1D18M1D4M5I3M1I29M1I2M1I2M1I5M1D4M1I13M1D9M6D10M1I6M1I12M2D5M2I1M1I11M2I1M1I10M5I9M8I17M1I35M1I4M1D16M5D1M1D9M8D21M23D2M1D38M1I1M1I8M1I27M1D42M1D9M2I1M1D5M1I23M2D5M1D28M1I25M1I24M1I5M1D21M1D4M4D7M1I7M1D25M21D5M1D4M1D42M2I26M1I7M1D10M1D1M1D19M10I4M1I14M1I42M8I28M3I2M3I13M1D17M1I11M1D22M1D19M1D1M4D9M2I2M1D14M8D9M2I9M1D13M2I11M3I2M2D5M1D3M1D6M3I10M1D9M1I21M1D5M2D9M2D10M1I3M2D9M1D21M3I23M1D8M1D3M1D26M1D33M8I7M1D9M10I10M1D7M1I52M10I13M1D6M2I39M1I6M1I26M1D4M1I4M32I24M1I21M2I1M1I7M1I1M1I15M1I5M1I24M2D1M1D6M1I2M1I19M35I41M3D6M3D15M2I3M1I14M2D9M3I19M2I26M1I30M1D6M3I32M1D5M1I36M1I8M1I2M2I2M1I6M3D3M7D2M2D17M1I12M1I6M1D40M3I28M2D2M2D21M1I4M1D9M1D4M1D31M2D11M1I31M1I3M2I3M5I7M4I7M1I6M1I6M8I4M1D1M2I19M3D14M1I7M1I12M1D4M3D2M4D11M1D8M1D17M1I11M1I3M1I15M17D8M3I42M1D17M1I25M1D15M1D11M2D7M1I23M4D14M2I20M1D9M3I2M1I17M1I34M1D3M1D4M1I13M1D2M1D6M1D6M1I12M2I1M4I2M4I4M1D16M36I6M1I32M1I27M1I4M1I2M1D11M20I16M3I4M1D16M1I27M1I14M1I21M2D14M1I10M3I5M2I3M3I2M1I1M4I5M1I2M3I7M1I7M1D9M1I5M1I4M1I16M1I9M9I1M1I2M1I4M1I3M2D6M2I5M1D22M1I3M1D8M1I8M3I43M1D4M1I31M1D17M3D8M2D12M6D13M1D16M1I11M2I4M1D5M2I2M2I2M1D29M1D12M2I13M1D7M14I1M1I3M5I10M1I12M5D19M1D10M1D3M7D2M14D3M9D13M2D5M1D13M1I4M1I18M1D3M1I28M1D5M4I35M1I23M3I11M2D8M1I17M1D9M1D23M4I4M1I9M1D3M1D26M1D5M3D1M1D14M1I42M1D5M16D15M1I28M4I5M1D5M1I4M1I11M2I5M1D4M1D3M1D9M -tctgA 50001 16650 18559 + ctgA 49186 16409 18309 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5D3M3I13M1D9M1D5M2I5M8D39M1I36M2D33M1D22M1D10M2I8M1D5M1D16M6D5M2D11M2I12M1I7M1I3M3I3M1D3M1I13M1D21M1I4M2I1M1D14M1I12M1I2M1D12M6I5M1D19M10D28M1D26M1D41M1I11M1D9M1I9M4D15M6D13M1D25M5D3M1I27M2D7M1D17M7D18M2I16M1I12M1D22M2I5M12D5M7D2M1D13M1I13M2D2M1I15M1I19M1D17M1I58M1I8M11I8M1I6M2D6M1D2M1I8M2D4M15D6M1D1M2I8M3I25M1D21M1I43M1I6M1D12M2I10M14I5M1D19M3D4M1I95M2D16M2I9M3I8M1I3M1D3M4D1M1D5M3D14M1I7M1I6M2I40M1I1M2I5M1D5M1I11M7D25M10I16M1I2M2D21M1D4M1D4M1D15M2D3M1I13M13I28M2D5M1I33M1I11M1D36M1D19M1I22M1D18M1I1M1I12M1D6M9D11M2D4M1I5M10D16M5I21M1D5M1I11M37I13M3I4M1D9M1I3M1I12M1I58M1D14M qctgA 49186 16409 18309 + ctgA 50001 16650 18559 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5I3M3D13M1I9M1I5M2D5M8I39M1D36M2I33M1I22M1I10M2D8M1I5M1I16M6I5M2I11M2D12M1D7M1D3M3D3M1I3M1D13M1I21M1D4M2D1M1I14M1D12M1D2M1I12M6D5M1I19M10I28M1I26M1I41M1D11M1I9M1D9M4I15M6I13M1I25M5I3M1D27M2I7M1I17M7I18M2D16M1D12M1I22M2D5M12I5M7I2M1I13M1D13M2I2M1D15M1D19M1I17M1D58M1D8M11D8M1D6M2I6M1I2M1D8M2I4M15I6M1I1M2D8M3D25M1I21M1D43M1D6M1I12M2D10M14D5M1I19M3I4M1D95M2I16M2D9M3D8M1D3M1I3M4I1M1I5M3I14M1D7M1D6M2D40M1D1M2D5M1I5M1D11M7I25M10D16M1D2M2I21M1I4M1I4M1I15M2I3M1D13M13D28M2I5M1D33M1D11M1I36M1I19M1D22M1I18M1D1M1D12M1I6M9I11M2I4M1D5M10I16M5D21M1I5M1D11M37D13M3D4M1I9M1D3M1D12M1D58M1I14M -tctgA 50001 0 1859 + ctgA 49186 3 1851 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1I16M1I5M3I33M1D14M3D7M1D25M2I5M2I4M1D17M3D11M1D5M3D3M1I15M3I1M2I6M1I2M6D6M2D24M1I3M2D29M1I2M1I3M1I6M1I10M2D8M19D33M1D23M2D9M1D11M1I6M1D5M1D28M1I13M1D5M1I2M1I49M5D6M2I21M1D1M2D2M2D4M4I4M1I5M1I3M1D2M1I4M37D17M2I16M6D5M3D3M6D16M5I4M8I5M4I1M1I52M2D2M1I5M28D33M1D17M2I2M2D31M42I5M1I9M1I7M1D8M1I40M1I39M1I2M1D3M2I11M2I6M2I10M1D14M1I12M1I16M1D6M3I6M2I4M1I1M1I27M1I3M10I3M2D11M3D3M1I35M1I1M3D3M2D19M3D9M4D23M1I3M1I28M1I52M1I28M1D20M2I66M1I3M2I7M1D7M2D9M1D11M1D11M1D7M1I3M1I30M1D11M1D15M2I7M3D3M1I12M6I35M1D4M1D17M1D15M1I5M1D4M1I5M1I3M5D10M1D2M1D8M7I13M5I9M1D4M1I45M6I4M1I19M2D16M1D1M2I23M7I11M1I19M1D13M -qctgA 49186 3 1851 + ctgA 50001 0 1859 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1D16M1D5M3D33M1I14M3I7M1I25M2D5M2D4M1I17M3I11M1I5M3I3M1D15M3D1M2D6M1D2M6I6M2I24M1D3M2I29M1D2M1D3M1D6M1D10M2I8M19I33M1I23M2I9M1I11M1D6M1I5M1I28M1D13M1I5M1D2M1D49M5I6M2D21M1I1M2I2M2I4M4D4M1D5M1D3M1I2M1D4M37I17M2D16M6I5M3I3M6I16M5D4M8D5M4D1M1D52M2I2M1D5M28I33M1I17M2D2M2I31M42D5M1D9M1D7M1I8M1D40M1D39M1D2M1I3M2D11M2D6M2D10M1I14M1D12M1D16M1I6M3D6M2D4M1D1M1D27M1D3M10D3M2I11M3I3M1D35M1D1M3I3M2I19M3I9M4I23M1D3M1D28M1D52M1D28M1I20M2D66M1D3M2D7M1I7M2I9M1I11M1I11M1I7M1D3M1D30M1I11M1I15M2D7M3I3M1D12M6D35M1I4M1I17M1I15M1D5M1I4M1D5M1D3M5I10M1I2M1I8M7D13M5D9M1I4M1D45M6D4M1D19M2I16M1I1M2D23M7D11M1D19M1I13M -tctgA 50001 18559 19001 - ctgA 49186 18309 18754 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:5M1I15M2I30M1D20M1D13M2D2M1D14M8I11M1D18M1I7M1I56M1D33M1D52M2D7M1I19M7D26M1I9M2I10M1I27M1D18M1I15M2I17M qctgA 49186 18309 18754 - ctgA 50001 18559 19001 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:17M2D15M1D18M1I27M1D10M2D9M1D26M7I19M1D7M2I52M1I33M1I56M1D7M1D18M1I11M8D14M1I2M2I13M1I20M1I30M2D15M1D5M +qctgA 49186 18755 26306 + ctgA 50001 19011 26774 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1D43M1I4M7I2M7I13M2D3M1D7M1D19M1I5M1I32M1I5M2D63M4I20M5I50M2D12M1D16M3I8M1D19M2I38M1I28M7D2M1D5M4D1M1D3M2D2M1I25M1D10M1I2M1I19M1D5M1I32M1D8M5I4M8I7M1I1M1I26M2I16M2D6M7I14M4D2M1D3M2D4M1I32M6D8M1I12M1I10M1I24M4I2M1I43M1I22M1D11M1D30M2I31M1I19M1I2M1I10M3D48M1D26M4I11M1I4M1I11M2I4M1I18M7D8M1D10M1D2M1I61M1I4M1D18M1I13M3I3M2I5M8I47M1D30M3I6M1D44M2I14M1D40M9I1M2I24M1I16M39D5M1D38M3D22M4I35M1D19M1D19M1D26M1I4M1D10M4I39M1D10M2D10M1D10M1D3M1I1M5I16M1D13M1I11M1I25M1I21M8D22M4I11M1I9M5I17M1I73M1D36M6I4M1I19M1D52M1D15M24D1M1D2M2D15M1D2M6D2M1D28M1I41M4D46M4D14M1I7M21I4M1D20M1I2M1D15M1D3M1D29M1D20M5I37M2D9M1D16M1D24M1D22M3I1M2I47M1D6M1I6M1D19M1I18M1D1M1D18M1D3M1D2M1D5M35I8M1I13M1D7M4D31M1D6M1I83M2I1M1D26M1D15M1D3M2I5M2I12M1I42M1D1M2D12M4I2M4I6M26I8M3I1M1I2M4I9M1I30M2I3M2I28M1D4M1D41M1I18M1D41M1D12M1D19M4D35M5D31M4D31M1D3M1I11M1D25M2I2M3I30M1I5M1D8M1I22M1D7M1I32M1D29M6I1M7I10M3I1M1I5M1D15M7D18M2D10M4I42M1I15M1D13M1I5M1I2M2D38M1D9M2D7M3D20M1I15M1D5M1I3M1I8M2D12M1I10M1I3M1I6M1I30M1I94M1D18M1D4M5I3M1I29M1I2M1I2M1I5M1D4M1I13M1D9M6D10M1I6M1I12M2D5M2I1M1I11M2I1M1I10M5I9M8I17M1I35M1I4M1D16M5D1M1D9M8D21M23D2M1D38M1I1M1I8M1I27M1D42M1D9M2I1M1D5M1I23M2D5M1D28M1I25M1I24M1I5M1D21M1D4M4D7M1I7M1D25M21D5M1D4M1D42M2I26M1I7M1D10M1D1M1D19M10I4M1I14M1I42M8I28M3I2M3I13M1D17M1I11M1D22M1D19M1D1M4D9M2I2M1D14M8D9M2I9M1D13M2I11M3I2M2D5M1D3M1D6M3I10M1D9M1I21M1D5M2D9M2D10M1I3M2D9M1D21M3I23M1D8M1D3M1D26M1D33M8I7M1D9M10I10M1D7M1I52M10I13M1D6M2I39M1I6M1I26M1D4M1I4M32I24M1I21M2I1M1I7M1I1M1I15M1I5M1I24M2D1M1D6M1I2M1I19M35I41M3D6M3D15M2I3M1I14M2D9M3I19M2I26M1I30M1D6M3I32M1D5M1I36M1I8M1I2M2I2M1I6M3D3M7D2M2D17M1I12M1I6M1D40M3I28M2D2M2D21M1I4M1D9M1D4M1D31M2D11M1I31M1I3M2I3M5I7M4I7M1I6M1I6M8I4M1D1M2I19M3D14M1I7M1I12M1D4M3D2M4D11M1D8M1D17M1I11M1I3M1I15M17D8M3I42M1D17M1I25M1D15M1D11M2D7M1I23M4D14M2I20M1D9M3I2M1I17M1I34M1D3M1D4M1I13M1D2M1D6M1D6M1I12M2I1M4I2M4I4M1D16M36I6M1I32M1I27M1I4M1I2M1D11M20I16M3I4M1D16M1I27M1I14M1I21M2D14M1I10M3I5M2I3M3I2M1I1M4I5M1I2M3I7M1I7M1D9M1I5M1I4M1I16M1I9M9I1M1I2M1I4M1I3M2D6M2I5M1D22M1I3M1D8M1I8M3I43M1D4M1I31M1D17M3D8M2D12M6D13M1D16M1I11M2I4M1D5M2I2M2I2M1D29M1D12M2I13M1D7M14I1M1I3M5I10M1I12M5D19M1D10M1D3M7D2M14D3M9D13M2D5M1D13M1I4M1I18M1D3M1I28M1D5M4I35M1I23M3I11M2D8M1I17M1D9M1D23M4I4M1I9M1D3M1D26M1D5M3D1M1D14M1I42M1D5M16D15M1I28M4I5M1D5M1I4M1I11M2I5M1D4M1D3M1D9M +qctgA 49186 26805 49184 + ctgA 50001 27258 50001 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3I58M1D4M1D3M2I20M3D2M1I42M15I1M1I15M6I2M4I24M1I10M1I64M1I62M1D11M2I10M4I23M1D25M4D23M1D20M2I3M1D7M10D7M1D4M1D5M1D15M10D21M1I3M3D6M1I12M1D6M1I30M1D5M1D6M9I4M1I33M1I2M1I8M1I3M1D5M5D25M2D10M1D34M1D6M5I4M4I6M1I34M1I13M1D25M2I19M1D25M1I1M2D24M1D3M1D20M1I2M1D7M1D3M2D6M4D14M2I29M1I3M2I7M1I4M1I6M2I8M4D30M1D8M4I18M1D7M1I3M1I1M1I9M1I11M3I21M5D6M1I1M1I2M1D5M4D27M1D19M1I7M1I9M5D50M1I3M7I33M1I5M1I2M1I32M34I1M1I6M3D40M1I21M2D33M1D2M1D14M1I4M2I17M1D30M1I9M1D53M1I22M1D5M1D6M2I13M4D19M2I6M2D3M1D15M3I4M1D15M1D3M1I8M7D1M1D56M3I12M1I17M1I5M1I52M7I13M1I2M1I4M1D2M3I9M1I18M1D9M6I9M1D1M2I5M1D6M2I3M3I1M2I3M2I17M2I11M5I4M4I12M1I6M1I9M2I3M1D12M1D7M1D17M1D6M1D13M1D15M2D19M2I6M2D2M1D9M2I20M12D12M1I35M3I6M1D23M3I7M1D8M2I7M1D10M1D41M2D20M1I34M1D2M1D10M1D12M2I10M1I13M13I18M1D27M2I13M2D26M3I4M1I9M2D5M3I39M1I19M1I9M1D12M2I33M1I22M1D31M1D28M1I11M2D5M1I22M1I3M27I38M1D8M1I8M1D29M5I8M1D46M1D18M1I6M1I61M1I16M6I4M3I13M1I19M5I4M1I5M2I6M6I4M7I7M1I7M1I7M1D41M5D3M1D11M1I17M1D3M1D3M1D5M1I11M2D30M5D4M1D6M1I18M1I10M1I50M1D8M1D16M1I9M26I11M1D44M1I19M1D9M2I2M1D18M1I8M15D19M1I13M1D8M1D6M1D4M3D7M1I4M1I3M1D2M1D3M3I1M1I20M1D15M1I11M1I22M2D41M2I12M1D7M2I6M8I3M7I2M2I27M1I19M1I2M1I41M1D13M1I38M1I11M4I7M1D14M1I1M3I37M1I2M1I4M1I3M4I2M1I21M1I18M1D11M2I13M1D23M25D15M1D2M1D3M7D18M1D35M1I11M1D5M1D45M4I5M1I7M1I6M1I35M1D34M2D9M1I6M1D47M1D10M1D34M1D5M1I6M1D1M1D4M8D28M3I6M1D19M1I18M1D7M5I5M1I22M1I3M2D5M12I8M1D71M2D23M1D6M1I3M2I5M2D12M1I12M1D24M1I14M1D3M1I24M1I26M22I42M1I9M1D1M1D9M1I6M1I12M1D6M3I17M12I7M1D11M2D19M1I17M1I17M2D2M2D9M2I10M1I6M2I29M1I3M1I19M1D4M3D8M1D1M2D55M1D43M3D42M1D33M22D22M1I3M1I24M1D40M1I21M1I2M1D5M1I2M1I18M1I20M2I12M1D22M1D4M4D84M1D21M1D35M1I3M4I13M1D5M1D10M4D11M1I20M1I5M1I16M1D14M1I8M1D58M1D9M1D5M26D6M1I30M2D7M1D9M1I9M1D38M5D1M2D8M2D14M2I1M2I13M1I2M1D12M1I21M1I8M1I17M2D4M4D7M1D12M1D23M1I12M1D8M8I12M1D5M1I18M1D39M1D2M1I9M1D5M2I16M1I23M3I6M2D17M3I1M1I13M1D49M1I25M1D5M1D13M1D9M1I21M1I6M1D13M1D2M2I3M2I3M1I3M3I22M1D1M1D10M4D1M4D3M2D7M2I3M2D15M1D9M1D3M4I6M7I1M1I16M1D9M1I6M9I4M3I7M1I5M1D7M1I5M1I31M1I10M1D29M1I6M5I4M1D3M5I22M1D1M1D4M4I2M1D15M2D4M1D1M1D5M2I5M2I7M1I6M1I1M1I14M4I25M1I30M1D30M6I15M3D12M1D9M1D72M1D9M1I8M1I6M1D5M1I18M5D3M1I4M3D3M7D17M1I5M1I19M2D3M1D14M3D2M1D10M1D2M1D38M4D2M1I25M1I23M2D4M1D8M1D3M19D16M1I21M1D21M2D6M23D9M1D9M11D3M5D17M1D2M8D5M1D5M1I12M1I25M1I20M1I10M3D2M4I3M1D18M3D6M2I35M1I2M3D2M1I9M1D1M1D14M1I2M10I1M2I4M1D6M5I3M6I1M6I18M1I8M1D6M1D49M1I18M1D1M1D7M2I24M1I13M1I1M26I8M2I2M1D19M1I13M1D9M1D5M1D3M10I10M5D1M1D15M1I27M1D15M1D30M2I12M1I10M3I22M5I4M1I9M1D33M1I3M1I12M9D4M1I6M5D3M8D8M1D33M5D13M1I22M1I12M1D17M6D5M3I12M1D12M1I1M1I7M1D44M1I1M1I12M1D47M1I8M2I27M1I1M1I35M1I9M1D6M3I52M3D6M1D27M1D8M1D13M1I13M4D16M3D43M1D13M1I31M1I63M1I30M1D6M1I1M1I15M20I18M2I15M9I8M3I16M11I9M1I18M1D27M8D2M3D1M1D11M2I24M2I27M1I2M1I52M1D50M1D4M1I7M7I23M1D6M1I34M2D15M2I11M1D9M1I21M6I1M1I11M2D2M1D7M27I18M1D2M1I10M4I12M3I1M2I15M5I1M1I6M6I6M1I40M5D8M1D8M35D6M1D27M1I15M2D3M18D5M4D2M1D4M4D8M1D39M2D5M6I9M38I3M1D24M1I2M1I17M1I9M2I7M9D12M1D1M1D15M1D10M2I11M1I10M1I19M3D20M1I43M1I8M1D4M3D1M2D2M3D5M3I13M1D9M5D6M1I6M1D2M2I23M1D8M1D19M1I12M1D20M1I5M1D16M2D10M15D5M2I7M1D14M4I13M1I16M1D4M1I5M2I5M2I3M1D14M17D6M1D16M6D13M5I1M1I6M1D4M1I2M2D17M1I33M1D4M1I16M1D44M1D19M1D19M1I10M13I13M1D5M2I12M1I4M1D10M1I15M1I5M1D7M1D8M1I30M1I3M1I6M2D30M1I33M2D7M4D8M1I2M1I16M1I20M1D3M1I35M1D5M1I10M4I5M1I3M1I19M2D5M2D8M5D49M1I14M1D15M1D11M1D4M3I5M1I50M1D11M7D2M4D9M1D18M2D11M1D5M2D13M5D3M2I19M2D11M2D47M4D1M2D7M1D26M1I4M1I6M1I6M1D24M2D5M3I9M1I13M1D9M1D22M1I3M1D12M1D4M4I32M1D2M2D15M3I3M1I10M1I7M1I11M1D4M1I3M7D2M1I11M1D4M1D1M2D9M8D15M1D9M1D44M1I4M2I10M1I15M1D23M5D4M2I7M4D14M1I10M2D35M1D5M3I25M1I17M1D18M5I5M2D15M2I21M1I1M1I55M7D11M1I5M1D13M2D13M1D12M1I18M1D9M3D29M1D5M1I11M2D11M1D4M4D13M1I10M3D83M1I24M1I6M2I4M1D5M1I6M1I34M1I4M2I11M1I4M2I47M10D7M1I40M3I11M2D39M1D19M1D2M1D3M1I22M2D17M2D4M1I2M1D7M1D27M1D7M1D17M1D7M1D15M1I8M1D3M1D1M1D44M1D1M3I4M1D2M1D19M1I15M1D6M4I28M1D8M1I13M1D4M1I11M1I19M2D69M1D43M4I24M1I25M2D13M2D16M1I4M1I8M1I42M1D11M1D7M3I1M2I1M5I14M2I2M1D28M1I5M1D25M1I46M7D8M2D30M1D4M1D19M1I22M1D30M1I10M5D7M1D5M1D3M2D12M11I3M1D7M8I2M6I2M3I7M2I4M1D1M2I5M1I18M2D1M1D1M1D4M1D10M3D18M1D27M2I5M1D6M1I7M2D7M22I30M1I31M1I19M2D46M1D3M1D27M6I13M1D37M1D12M2I14M28D3M1D3M1I18M6D25M1D8M1I9M2I17M1I2M4D10M1D44M1D6M1I14M3D10M2I7M1I10M2D9M15D18M1I13M1D15M1I25M1I13M1D1M1D18M5D17M1I16M1I16M1D29M1D24M1I17M1I15M2D10M1D11M3I3M1D2M1I50M11I2M2I2M1I1M2I1M1I9M1I18M2D41M1D26M1D25M1D22M4I6M2I2M13I23M1I11M1I25M1I7M3D9M1D4M1I16M1D4M1I2M1D6M1D20M1I37M2I42M1D3M1I47M1I11M1I3M1I14M1I7M1I19M7I11M3I10M2D7M1D11M1I48M1D2M1D10M4D2M1D18M1I67M2I4M4I6M1I17M1D6M2D23M1I9M1I1M3I8M1I14M2I2M3D6M4I9M1I5M5I22M1I6M2I25M8I1M2I4M1I2M4I31M2D7M1D11M11I16M2I11M2I14M1I8M2I3M1D21M1D6M2D1M1D6M1I27M1I1M1I33M1I21M2I1M1I8M1I5M2I6M1I8M1D34M1I3M4D7M1D2M1D16M1D1M1D46M1I12M1D7M1D31M6D10M1D1M1D1M1D5M11D10M1D19M1I22M1I10M1I11M1D8M1D24M1I6M2D7M3I2M1I17M1D24M1D2M4I19M1D14M2I17M1I9M3D16M1I10M1I25M1D26M11I3M2I5M1I2M8I30M2D15M2D13M1I6M5I5M3I17M2I17M2D18M2I11M1D11M2D3M1I18M1I9M1D8M1D16M1I2M1I13M3I1M1I10M1I11M1D8M3I3M1D26M1I4M2I8M1I3M2I4M1D4M2D11M1I10M1I4M1I8M6I1M1I5M7I2M1I5M8I3M2I13M4D1M1D17M1I21M1I22M1D10M1I41M1D2M1D2M1D5M1I41M1I29M1D5M1I5M1D8M1D15M1I9M1I22M1I29M4I7M1D9M1I8M1D32M2I15M1D15M1D23M1D7M10D19M1I38M1D7M1D4M1D16M28I29M7I28M1I52M2D6M1D1M1D1M1D3M1D25M2I15M1D9M5I6M1I12M1D6M1D4M2D11M5I1M2I1M4I15M3D11M3I4M1D8M1I40M6D12M1I17M1I9M5I1M1I2M1I25M1D23M2I9M1I11M1D3M2I28M1D12M1D17M15D10M1I9M1D2M1D8M4D11M1I9M1D6M1D8M1D40M2I3M2D8M1I11M1I16M1I6M1D7M1D34M2D27M1D5M1I3M2I39M1D30M1I22M1D10M3I61M2D19M2D6M1I7M1D23M1D4M1I3M1I6M2D12M2I11M14D13M1I6M4D9M2I11M1D17M1D4M1I8M1I3M1D4M1D35M1I47M1I17M1D7M1D2M1D25M1D13M1I3M1I18M1D13M2I10M2D19M2D6M1I6M1D7M1D11M1D6M3I2M1I11M1D6M1I17M12D1M1D2M1D9M1I1M1I7M7D4M1D9M8D12M1D37M1D25M4D1M1I7M3I13M1D4M1I2M1I43M1I11M1D4M1D6M1I31M2D38M2I12M2I6M2D39M1D19M6D1M1D12M1I16M1I50M1I40M1I24M1D4M2I5M1I5M2D13M2D4M7I2M2I2M7I1M3I15M1D8M1I10M10I41M1D34M1D10M1I11M1D3M3I7M3D23M9I47M2I19M1D36M42I2M1D3M1I3M1I7M1I5M3I6M1I16M1I13M1I39M14D7M1D16M1I19M1I14M1I8M1D34M2D3M1I6M1I12M2D3M1I10M2D1M1I6M39I2M2I16M2D3M2D3M1I23M1I14M3I3M2I6M3I2M1I1M1I10M1I25M1D17M2D33M2I2M1D7M1D36M2I13M1D9M1I6M3D11M1D2M1I8M1I21M1D34M1I12M2D3M1D8M4D11M1I59M5I18M2D11M1D4M7I26M2D77M5I11M1D16M2I6M5D19M1I13M1I1M2I23M1I6M2D11M1I35M1I10M1D14M1I30M1I12M38I2M1I3M1D2M1D5M2I7M1D1M2D3M1D57M1D31M1D9M1D63M1D40M2D3M1D25M1D4M2D21M15D10M1D30M2I3M2I6M2I15M1D6M1D48M2D27M1I6M1I77M2I3M1D22M3I20M1D14M1D29M1D16M1I20M1I5M30I25M6I7M1D17M1D5M14I16M1D3M1I15M1I41M1I13M1D13M1I5M2I19M2D6M1I29M1D2M2I16M1I6M1I8M1D4M9D13M3I10M1D16M4I27M1I1M3I6M2D9M5D38M1I3M2I1M1I4M2D5M1D24M1I18M1D3M5I2M3I3M1D3M1I1M1I5M1I4M1I11M5I3M8I6M1D3M2I5M1I11M1D19M1D1M1D15M1D3M1I15M1I5M3I1M1I12M1I23M1I1M1I6M4D2M4D9M1D17M1D4M1I18M3D7M1D51M11I11M1I12M3I17M1I14M2D12M4D10M1I26M1D45M1D3M1I15M2D11M1D28M1D4M2I9M1D31M3D15M1D11M1I3M4D10M1D21M1I31M8D23M4D24M1I13M5D19M2I1M1I5M10I10M1D23M1D20M2D32M1I5M1I23M1I9M1D14M1D22M1I6M1I19M3D14M1D18M1I10M1I7M1I14M1I46M1I7M21D5M1I17M3I2M4I7M1I16M1D2M1D14M1D3M1D4M1D16M2D42M1D7M1D17M5I1M1I29M13I24M1D3M8D5M12D9M1D23M1I8M +tctgA 50001 0 1859 + ctgA 49186 3 1851 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1I16M1I5M3I33M1D14M3D7M1D25M2I5M2I4M1D17M3D11M1D5M3D3M1I15M3I1M2I6M1I2M6D6M2D24M1I3M2D29M1I2M1I3M1I6M1I10M2D8M19D33M1D23M2D9M1D11M1I6M1D5M1D28M1I13M1D5M1I2M1I49M5D6M2I21M1D1M2D2M2D4M4I4M1I5M1I3M1D2M1I4M37D17M2I16M6D5M3D3M6D16M5I4M8I5M4I1M1I52M2D2M1I5M28D33M1D17M2I2M2D31M42I5M1I9M1I7M1D8M1I40M1I39M1I2M1D3M2I11M2I6M2I10M1D14M1I12M1I16M1D6M3I6M2I4M1I1M1I27M1I3M10I3M2D11M3D3M1I35M1I1M3D3M2D19M3D9M4D23M1I3M1I28M1I52M1I28M1D20M2I66M1I3M2I7M1D7M2D9M1D11M1D11M1D7M1I3M1I30M1D11M1D15M2I7M3D3M1I12M6I35M1D4M1D17M1D15M1I5M1D4M1I5M1I3M5D10M1D2M1D8M7I13M5I9M1D4M1I45M6I4M1I19M2D16M1D1M2I23M7I11M1I19M1D13M tctgA 50001 1859 2192 - ctgA 49186 1860 2214 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:14M1D4M1D3M1D9M1I12M5D20M2I43M1I10M1I7M2D2M1D8M1I30M1I9M1I2M1I6M15I39M2I16M4I2M1I35M1I2M1I6M1D42M -qctgA 49186 1860 2214 - ctgA 50001 1859 2192 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:42M1I6M1D2M1D35M1D2M4D16M2D39M15D6M1D2M1D9M1D30M1D8M1I2M2I7M1D10M1D43M2D20M5I12M1D9M1I3M1I4M1I14M +tctgA 50001 2212 16198 + ctgA 49186 2214 15925 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1I4M2I21M1I10M1I14M1I5M1D29M2D9M1I15M1I27M1I12M1D5M1I11M1D7M2I4M2D9M1D4M6D32M1D13M1I55M1I8M1I1M1I12M1I2M1D22M2I56M1D11M1I5M5I17M3I3M1I13M1D16M1I50M1I2M1I10M1D1M1D42M1D2M2D33M22I3M1I2M1I6M1D8M2D5M1D50M1D6M3D6M2D12M3I13M1D9M5D1M1D10M1I3M1D5M1I3M1I4M1I24M1I5M2D30M1D3M1I15M1D9M1I3M1I18M1I9M1D11M2D6M1I23M4D1M1D22M1I3M1I11M2D1M1D7M1D4M1D18M1I6M1I5M2D5M1I66M2I3M1D8M1I13M1I8M1I3M2D4M1D20M1I5M2I22M1I6M8I14M1I6M1D8M2D5M9D7M2I4M1D11M1I20M2D2M1I33M8I10M2I7M1I18M4I5M1D4M4D1M1D33M3I10M1D20M2D8M1D9M1I10M1D7M1I8M1D6M2I66M1I3M2I2M1I24M1D63M1I14M8I7M1I13M1D31M1I16M4D41M1D3M1D4M23I9M1D2M1D8M1I1M1I12M1I2M1I3M1D33M1I24M2I3M1I4M1I12M122D6M4D2M1D13M1I3M1D35M1I4M1I13M1D32M1D6M1I5M1I5M1D12M1D8M1D48M1I2M1D19M1D9M1I24M1D13M1D8M1I5M7I5M2D10M1I11M3I15M1I6M2I4M1I18M1D14M1D3M1D1M2D17M1D12M4D15M1I3M1D31M1D1M1D1M1D1M1D12M5I2M1D31M2I18M1D5M20D10M1I20M3D11M1I14M1I1M9I4M4I2M4I2M3I4M1D10M1D50M1I14M1I11M8I11M2D9M1I20M3I5M1I27M1D5M3I9M2I9M3D34M1I21M1D15M1I9M1I2M1I2M1I8M1I26M3D4M1D3M1I2M1I25M1I1M1I14M6I45M2I21M1I17M2D23M1D6M2I8M2D20M1I24M1D9M1I1M2D6M1D3M1D9M8I4M2I30M2D8M1D7M1I50M1I3M3I26M3D17M1D17M1D5M1D8M1I29M2D2M1I3M1I6M1D11M3I20M3I19M1I17M2I33M1D35M2D7M2D3M18D1M3D10M5D11M1D8M1D6M1I9M1I4M2D5M1D13M1D22M1D16M14I22M1D3M1I19M1D53M1I13M1I20M8I8M1I6M6D28M3D28M9D23M5D26M1I6M1D5M1D24M1I5M2I13M1I2M4I2M1I4M4I8M1I14M1I12M1I28M1I18M4I10M2D8M1I62M1I14M2I5M1I18M1D1M3I4M1I13M1D4M2I3M1D8M4D2M8D71M1I8M4I23M1I15M5D13M1D6M1D8M7I16M2I13M2D27M1D46M1I20M2D6M1I9M1D4M1I7M1D6M1I2M6I11M4D25M1I22M1D14M2D20M1D30M3I7M3D4M1I22M1D4M1D10M1D20M1I21M3I3M1I8M1D14M1I10M2I45M1D14M1D17M1D27M2D3M1I2M2I4M1D13M1D5M4I6M2I11M1I11M4I6M1I15M1I8M1I6M9I1M1I19M1I4M1I8M2D9M1I7M1D33M1D19M1D3M1D35M3D4M1D6M2D16M3D1M1D30M26D28M1D7M2I12M2D10M1I7M1D16M1D4M1I18M1I33M1I31M1I7M1I12M1D7M1D16M5I3M1I4M1D4M1D28M8D12M1D4M1D7M3D11M1D15M1D12M1I12M3I6M2D4M1D16M1I11M1D5M1D2M2I22M4D14M2I19M1D7M3I17M1I22M5D6M1D14M2D1M1D12M1I11M10I16M1D21M1D24M5D17M1D48M1D3M1D4M1D12M1D13M4D9M1I22M1I21M1I12M1D11M3D2M1D9M1I10M1D4M1I4M1D18M1I3M1D18M2D4M1I21M4D5M3I3M1D21M1I33M1D19M1I38M2I27M1I7M1I15M2I8M5D2M1D15M1I7M2I2M1I11M1D24M1I4M1D14M1I51M1D47M1D3M4D4M3D3M1I3M1D13M1D3M1I13M1I10M3I34M1D3M1I17M1D5M1I8M1D28M1I13M2I2M1I16M1D21M2I22M5I8M1I3M1I9M1D12M2D11M1I7M1I2M2D10M3I26M4D12M1D3M1D12M7I12M1I5M1D5M8D5M1D8M1I31M1D3M1D6M1I12M2D4M1D24M2I10M1I17M1D1M3D11M1D8M2D16M1D18M2D3M6D2M1D6M24D10M2I14M1I11M1I4M1D10M1I34M4I14M1D21M1D6M43D8M4D2M1D12M1D7M5D4M2I15M1D39M1D6M1I9M3D1M3D2M2D4M4D2M3D1M1D2M1D10M1I16M3D17M1I1M1I28M1D10M1D11M1D28M1D11M2I17M1I14M1I7M2D6M1D4M7D3M7D10M1I6M1I57M2D4M1D5M1D18M2I50M5I38M1D6M1D15M1D5M1I58M4I28M1I15M1D14M3I4M2D4M1I11M4D4M1D44M1I25M1I8M2D12M1I7M1D31M1D9M26I5M1I19M1D1M1D9M1D5M1D7M34I1M1I38M1I1M1I21M1D4M11D29M1D11M1D7M3I19M2I36M1D12M1I21M1I2M7I23M2I19M1I6M1I16M2I2M3D10M1D11M10I5M1I15M2D18M1I17M1I7M2D6M2I6M1D27M1I17M1I23M5I29M4D3M1I41M1D33M1D9M1D11M6I25M1D17M3D6M1I8M1I14M1D13M1D12M1I16M1I12M1I3M1D12M1I28M1D32M1D15M1I32M6I2M2I8M1D6M1D23M22I30M1I9M10D58M3I7M1D12M1I10M6I31M1D14M1I38M1I13M3D14M1D23M1I6M1I10M3I22M1I10M1I8M5I67M1I13M4D3M5D6M1I4M1I8M3D8M3I2M1I11M1D11M1I4M2I1M1I2M1I5M3I9M2D1M1D4M1D6M2D5M1D5M1I8M4D8M1I7M2I3M3D15M6D1M1D9M1D4M1D6M1D36M1D7M1D18M1I5M1D3M2I20M1D13M4I7M5I2M2I43M1I5M1D12M1I7M1D31M1I13M1D13M1I6M1D1M1D4M3D7M1D31M2D26M1I7M1I8M1D7M1I17M1D18M1I6M1D4M7D13M1I6M1D7M1I31M1D5M1I15M1D20M1I20M1I26M3I2M3I1M9I5M1I24M2D25M1D14M1D5M3D2M1I7M1I3M1I19M1I17M1I16M2I5M5D8M1I15M1I3M2I5M5I15M1D13M3D7M1D9M5I10M2D5M1I10M2I1M1I2M1I9M8I2M1D5M1I6M6D7M1I13M3I7M1I3M1D15M2D18M1D3M1D2M1D5M1D5M2I9M1I1M1I27M1I11M1D16M8I1M2I8M1I15M1I6M1I10M1D24M1D3M1D19M1I12M1I24M1D8M1D2M1D2M1I6M1D31M2I5M5D16M5I5M1I6M3D11M14D12M3I29M1I12M1I5M23I2M1I4M4I6M1D41M2I21M1D17M1D5M1D25M3I18M1D6M1D5M1D42M1I3M1D31M1I3M1D14M1D21M1I8M3D4M1I19M6D10M2I12M7I32M8I2M1D18M2D31M1D15M1I21M1I6M1I3M1I39M2I1M1D10M1D3M1I36M12D45M1D7M1I4M1I1M3I7M1I3M1D5M1D6M1D14M1D14M1I18M1D1M1D6M1I1M2D1M1D4M2D8M1D27M5I20M12D11M1D9M1D29M3D26M2D4M2D3M1I6M37D1M1D4M5D3M1D3M6D3M4D16M1D27M2D3M1D2M2D60M4D5M4I8M21D26M1D16M1D3M1I8M1D22M1I8M10D3M2D3M3D13M36D4M1D40M1I6M1I5M1I7M2I7M1I13M2I2M1D8M2I6M1I9M1I3M1D4M4I3M1D5M1I11M1D4M4D23M1I21M1I17M1D37M2I10M1D36M1D8M1D1M1D9M1I6M1D1M5D1M7D3M2D2M10D2M2D12M1I27M2I1M1D16M1D18M1D25M1D29M1I12M2I18M1I2M3I3M7I13M1D30M3D2M2D18M1D4M2D36M1I19M1D19M1I6M1I4M3D20M2D13M1I61M1I12M3D1M1D6M2D4M2D3M1I7M1D34M1I9M1D5M5D9M3D11M1D4M1I4M1I3M4D2M3D1M8D22M1I10M1D12M1D57M1D25M1D58M4I26M1I2M1I2M1I7M2I43M1I3M1D6M1D9M2D20M1D5M41D5M1D30M1D32M1D12M2I9M4I17M2D44M1D2M1I29M14I1M1I17M1I8M1D27M4I14M1D9M1D4M1I6M1D12M5D26M3I2M1I2M1I18M +tctgA 50001 16650 18559 + ctgA 49186 16409 18309 1708 2080 60 NM:i:372 ms:i:2437 AS:i:2143 nn:i:0 tp:A:P cm:i:95 s1:i:761 s2:i:212 de:f:0.0792 zd:i:3 rl:i:0 cg:Z:19M5D3M3I13M1D9M1D5M2I5M8D39M1I36M2D33M1D22M1D10M2I8M1D5M1D16M6D5M2D11M2I12M1I7M1I3M3I3M1D3M1I13M1D21M1I4M2I1M1D14M1I12M1I2M1D12M6I5M1D19M10D28M1D26M1D41M1I11M1D9M1I9M4D15M6D13M1D25M5D3M1I27M2D7M1D17M7D18M2I16M1I12M1D22M2I5M12D5M7D2M1D13M1I13M2D2M1I15M1I19M1D17M1I58M1I8M11I8M1I6M2D6M1D2M1I8M2D4M15D6M1D1M2I8M3I25M1D21M1I43M1I6M1D12M2I10M14I5M1D19M3D4M1I95M2D16M2I9M3I8M1I3M1D3M4D1M1D5M3D14M1I7M1I6M2I40M1I1M2I5M1D5M1I11M7D25M10I16M1I2M2D21M1D4M1D4M1D15M2D3M1I13M13I28M2D5M1I33M1I11M1D36M1D19M1I22M1D18M1I1M1I12M1D6M9D11M2D4M1I5M10D16M5I21M1D5M1I11M37I13M3I4M1D9M1I3M1I12M1I58M1D14M +tctgA 50001 18559 19001 - ctgA 49186 18309 18754 421 463 60 NM:i:42 ms:i:690 AS:i:668 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0539 rl:i:0 cg:Z:5M1I15M2I30M1D20M1D13M2D2M1D14M8I11M1D18M1I7M1I56M1D33M1D52M2D7M1I19M7D26M1I9M2I10M1I27M1D18M1I15M2I17M +tctgA 50001 19011 26774 + ctgA 49186 18755 26306 6872 8319 60 NM:i:1447 ms:i:9750 AS:i:8692 nn:i:0 tp:A:P cm:i:376 s1:i:3010 s2:i:212 de:f:0.0832 zd:i:3 rl:i:0 cg:Z:17M1I43M1D4M7D2M7D13M2I3M1I7M1I19M1D5M1D32M1D5M2I63M4D20M5D50M2I12M1I16M3D8M1I19M2D38M1D28M7I2M1I5M4I1M1I3M2I2M1D25M1I10M1D2M1D19M1I5M1D32M1I8M5D4M8D7M1D1M1D26M2D16M2I6M7D14M4I2M1I3M2I4M1D32M6I8M1D12M1D10M1D24M4D2M1D43M1D22M1I11M1I30M2D31M1D19M1D2M1D10M3I48M1I26M4D11M1D4M1D11M2D4M1D18M7I8M1I10M1I2M1D61M1D4M1I18M1D13M3D3M2D5M8D47M1I30M3D6M1I44M2D14M1I40M9D1M2D24M1D16M39I5M1I38M3I22M4D35M1I19M1I19M1I26M1D4M1I10M4D39M1I10M2I10M1I10M1I3M1D1M5D16M1I13M1D11M1D25M1D21M8I22M4D11M1D9M5D17M1D73M1I36M6D4M1D19M1I52M1I15M24I1M1I2M2I15M1I2M6I2M1I28M1D41M4I46M4I14M1D7M21D4M1I20M1D2M1I15M1I3M1I29M1I20M5D37M2I9M1I16M1I24M1I22M3D1M2D47M1I6M1D6M1I19M1D18M1I1M1I18M1I3M1I2M1I5M35D8M1D13M1I7M4I31M1I6M1D83M2D1M1I26M1I15M1I3M2D5M2D12M1D42M1I1M2I12M4D2M4D6M26D8M3D1M1D2M4D9M1D30M2D3M2D28M1I4M1I41M1D18M1I41M1I12M1I19M4I35M5I31M4I31M1I3M1D11M1I25M2D2M3D30M1D5M1I8M1D22M1I7M1D32M1I29M6D1M7D10M3D1M1D5M1I15M7I18M2I10M4D42M1D15M1I13M1D5M1D2M2I38M1I9M2I7M3I20M1D15M1I5M1D3M1D8M2I12M1D10M1D3M1D6M1D30M1D94M1I18M1I4M5D3M1D29M1D2M1D2M1D5M1I4M1D13M1I9M6I10M1D6M1D12M2I5M2D1M1D11M2D1M1D10M5D9M8D17M1D35M1D4M1I16M5I1M1I9M8I21M23I2M1I38M1D1M1D8M1D27M1I42M1I9M2D1M1I5M1D23M2I5M1I28M1D25M1D24M1D5M1I21M1I4M4I7M1D7M1I25M21I5M1I4M1I42M2D26M1D7M1I10M1I1M1I19M10D4M1D14M1D42M8D28M3D2M3D13M1I17M1D11M1I22M1I19M1I1M4I9M2D2M1I14M8I9M2D9M1I13M2D11M3D2M2I5M1I3M1I6M3D10M1I9M1D21M1I5M2I9M2I10M1D3M2I9M1I21M3D23M1I8M1I3M1I26M1I33M8D7M1I9M10D10M1I7M1D52M10D13M1I6M2D39M1D6M1D26M1I4M1D4M32D24M1D21M2D1M1D7M1D1M1D15M1D5M1D24M2I1M1I6M1D2M1D19M35D41M3I6M3I15M2D3M1D14M2I9M3D19M2D26M1D30M1I6M3D32M1I5M1D36M1D8M1D2M2D2M1D6M3I3M7I2M2I17M1D12M1D6M1I40M3D28M2I2M2I21M1D4M1I9M1I4M1I31M2I11M1D31M1D3M2D3M5D7M4D7M1D6M1D6M8D4M1I1M2D19M3I14M1D7M1D12M1I4M3I2M4I11M1I8M1I17M1D11M1D3M1D15M17I8M3D42M1I17M1D25M1I15M1I11M2I7M1D23M4I14M2D20M1I9M3D2M1D17M1D34M1I3M1I4M1D13M1I2M1I6M1I6M1D12M2D1M4D2M4D4M1I16M36D6M1D32M1D27M1D4M1D2M1I11M20D16M3D4M1I16M1D27M1D14M1D21M2I14M1D10M3D5M2D3M3D2M1D1M4D5M1D2M3D7M1D7M1I9M1D5M1D4M1D16M1D9M9D1M1D2M1D4M1D3M2I6M2D5M1I22M1D3M1I8M1D8M3D43M1I4M1D31M1I17M3I8M2I12M6I13M1I16M1D11M2D4M1I5M2D2M2D2M1I29M1I12M2D13M1I7M14D1M1D3M5D10M1D12M5I19M1I10M1I3M7I2M14I3M9I13M2I5M1I13M1D4M1D18M1I3M1D28M1I5M4D35M1D23M3D11M2I8M1D17M1I9M1I23M4D4M1D9M1I3M1I26M1I5M3I1M1I14M1D42M1I5M16I15M1D28M4D5M1I5M1D4M1D11M2D5M1I4M1I3M1I9M +tctgA 50001 27258 50001 + ctgA 49186 26805 49184 20447 24398 60 NM:i:3951 ms:i:29302 AS:i:26545 nn:i:0 tp:A:P cm:i:1101 s1:i:8814 s2:i:212 de:f:0.0807 zd:i:2 rl:i:0 cg:Z:39M3D58M1I4M1I3M2D20M3I2M1D42M15D1M1D15M6D2M4D24M1D10M1D64M1D62M1I11M2D10M4D23M1I25M4I23M1I20M2D3M1I7M10I7M1I4M1I5M1I15M10I21M1D3M3I6M1D12M1I6M1D30M1I5M1I6M9D4M1D33M1D2M1D8M1D3M1I5M5I25M2I10M1I34M1I6M5D4M4D6M1D34M1D13M1I25M2D19M1I25M1D1M2I24M1I3M1I20M1D2M1I7M1I3M2I6M4I14M2D29M1D3M2D7M1D4M1D6M2D8M4I30M1I8M4D18M1I7M1D3M1D1M1D9M1D11M3D21M5I6M1D1M1D2M1I5M4I27M1I19M1D7M1D9M5I50M1D3M7D33M1D5M1D2M1D32M34D1M1D6M3I40M1D21M2I33M1I2M1I14M1D4M2D17M1I30M1D9M1I53M1D22M1I5M1I6M2D13M4I19M2D6M2I3M1I15M3D4M1I15M1I3M1D8M7I1M1I56M3D12M1D17M1D5M1D52M7D13M1D2M1D4M1I2M3D9M1D18M1I9M6D9M1I1M2D5M1I6M2D3M3D1M2D3M2D17M2D11M5D4M4D12M1D6M1D9M2D3M1I12M1I7M1I17M1I6M1I13M1I15M2I19M2D6M2I2M1I9M2D20M12I12M1D35M3D6M1I23M3D7M1I8M2D7M1I10M1I41M2I20M1D34M1I2M1I10M1I12M2D10M1D13M13D18M1I27M2D13M2I26M3D4M1D9M2I5M3D39M1D19M1D9M1I12M2D33M1D22M1I31M1I28M1D11M2I5M1D22M1D3M27D38M1I8M1D8M1I29M5D8M1I46M1I18M1D6M1D61M1D16M6D4M3D13M1D19M5D4M1D5M2D6M6D4M7D7M1D7M1D7M1I41M5I3M1I11M1D17M1I3M1I3M1I5M1D11M2I30M5I4M1I6M1D18M1D10M1D50M1I8M1I16M1D9M26D11M1I44M1D19M1I9M2D2M1I18M1D8M15I19M1D13M1I8M1I6M1I4M3I7M1D4M1D3M1I2M1I3M3D1M1D20M1I15M1D11M1D22M2I41M2D12M1I7M2D6M8D3M7D2M2D27M1D19M1D2M1D41M1I13M1D38M1D11M4D7M1I14M1D1M3D37M1D2M1D4M1D3M4D2M1D21M1D18M1I11M2D13M1I23M25I15M1I2M1I3M7I18M1I35M1D11M1I5M1I45M4D5M1D7M1D6M1D35M1I34M2I9M1D6M1I47M1I10M1I34M1I5M1D6M1I1M1I4M8I28M3D6M1I19M1D18M1I7M5D5M1D22M1D3M2I5M12D8M1I71M2I23M1I6M1D3M2D5M2I12M1D12M1I24M1D14M1I3M1D24M1D26M22D42M1D9M1I1M1I9M1D6M1D12M1I6M3D17M12D7M1I11M2I19M1D17M1D17M2I2M2I9M2D10M1D6M2D29M1D3M1D19M1I4M3I8M1I1M2I55M1I43M3I42M1I33M22I22M1D3M1D24M1I40M1D21M1D2M1I5M1D2M1D18M1D20M2D12M1I22M1I4M4I84M1I21M1I35M1D3M4D13M1I5M1I10M4I11M1D20M1D5M1D16M1I14M1D8M1I58M1I9M1I5M26I6M1D30M2I7M1I9M1D9M1I38M5I1M2I8M2I14M2D1M2D13M1D2M1I12M1D21M1D8M1D17M2I4M4I7M1I12M1I23M1D12M1I8M8D12M1I5M1D18M1I39M1I2M1D9M1I5M2D16M1D23M3D6M2I17M3D1M1D13M1I49M1D25M1I5M1I13M1I9M1D21M1D6M1I13M1I2M2D3M2D3M1D3M3D22M1I1M1I10M4I1M4I3M2I7M2D3M2I15M1I9M1I3M4D6M7D1M1D16M1I9M1D6M9D4M3D7M1D5M1I7M1D5M1D31M1D10M1I29M1D6M5D4M1I3M5D22M1I1M1I4M4D2M1I15M2I4M1I1M1I5M2D5M2D7M1D6M1D1M1D14M4D25M1D30M1I30M6D15M3I12M1I9M1I72M1I9M1D8M1D6M1I5M1D18M5I3M1D4M3I3M7I17M1D5M1D19M2I3M1I14M3I2M1I10M1I2M1I38M4I2M1D25M1D23M2I4M1I8M1I3M19I16M1D21M1I21M2I6M23I9M1I9M11I3M5I17M1I2M8I5M1I5M1D12M1D25M1D20M1D10M3I2M4D3M1I18M3I6M2D35M1D2M3I2M1D9M1I1M1I14M1D2M10D1M2D4M1I6M5D3M6D1M6D18M1D8M1I6M1I49M1D18M1I1M1I7M2D24M1D13M1D1M26D8M2D2M1I19M1D13M1I9M1I5M1I3M10D10M5I1M1I15M1D27M1I15M1I30M2D12M1D10M3D22M5D4M1D9M1I33M1D3M1D12M9I4M1D6M5I3M8I8M1I33M5I13M1D22M1D12M1I17M6I5M3D12M1I12M1D1M1D7M1I44M1D1M1D12M1I47M1D8M2D27M1D1M1D35M1D9M1I6M3D52M3I6M1I27M1I8M1I13M1D13M4I16M3I43M1I13M1D31M1D63M1D30M1I6M1D1M1D15M20D18M2D15M9D8M3D16M11D9M1D18M1I27M8I2M3I1M1I11M2D24M2D27M1D2M1D52M1I50M1I4M1D7M7D23M1I6M1D34M2I15M2D11M1I9M1D21M6D1M1D11M2I2M1I7M27D18M1I2M1D10M4D12M3D1M2D15M5D1M1D6M6D6M1D40M5I8M1I8M35I6M1I27M1D15M2I3M18I5M4I2M1I4M4I8M1I39M2I5M6D9M38D3M1I24M1D2M1D17M1D9M2D7M9I12M1I1M1I15M1I10M2D11M1D10M1D19M3I20M1D43M1D8M1I4M3I1M2I2M3I5M3D13M1I9M5I6M1D6M1I2M2D23M1I8M1I19M1D12M1I20M1D5M1I16M2I10M15I5M2D7M1I14M4D13M1D16M1I4M1D5M2D5M2D3M1I14M17I6M1I16M6I13M5D1M1D6M1I4M1D2M2I17M1D33M1I4M1D16M1I44M1I19M1I19M1D10M13D13M1I5M2D12M1D4M1I10M1D15M1D5M1I7M1I8M1D30M1D3M1D6M2I30M1D33M2I7M4I8M1D2M1D16M1D20M1I3M1D35M1I5M1D10M4D5M1D3M1D19M2I5M2I8M5I49M1D14M1I15M1I11M1I4M3D5M1D50M1I11M7I2M4I9M1I18M2I11M1I5M2I13M5I3M2D19M2I11M2I47M4I1M2I7M1I26M1D4M1D6M1D6M1I24M2I5M3D9M1D13M1I9M1I22M1D3M1I12M1I4M4D32M1I2M2I15M3D3M1D10M1D7M1D11M1I4M1D3M7I2M1D11M1I4M1I1M2I9M8I15M1I9M1I44M1D4M2D10M1D15M1I23M5I4M2D7M4I14M1D10M2I35M1I5M3D25M1D17M1I18M5D5M2I15M2D21M1D1M1D55M7I11M1D5M1I13M2I13M1I12M1D18M1I9M3I29M1I5M1D11M2I11M1I4M4I13M1D10M3I83M1D24M1D6M2D4M1I5M1D6M1D34M1D4M2D11M1D4M2D47M10I7M1D40M3D11M2I39M1I19M1I2M1I3M1D22M2I17M2I4M1D2M1I7M1I27M1I7M1I17M1I7M1I15M1D8M1I3M1I1M1I44M1I1M3D4M1I2M1I19M1D15M1I6M4D28M1I8M1D13M1I4M1D11M1D19M2I69M1I43M4D24M1D25M2I13M2I16M1D4M1D8M1D42M1I11M1I7M3D1M2D1M5D14M2D2M1I28M1D5M1I25M1D46M7I8M2I30M1I4M1I19M1D22M1I30M1D10M5I7M1I5M1I3M2I12M11D3M1I7M8D2M6D2M3D7M2D4M1I1M2D5M1D18M2I1M1I1M1I4M1I10M3I18M1I27M2D5M1I6M1D7M2I7M22D30M1D31M1D19M2I46M1I3M1I27M6D13M1I37M1I12M2D14M28I3M1I3M1D18M6I25M1I8M1D9M2D17M1D2M4I10M1I44M1I6M1D14M3I10M2D7M1D10M2I9M15I18M1D13M1I15M1D25M1D13M1I1M1I18M5I17M1D16M1D16M1I29M1I24M1D17M1D15M2I10M1I11M3D3M1I2M1D50M11D2M2D2M1D1M2D1M1D9M1D18M2I41M1I26M1I25M1I22M4D6M2D2M13D23M1D11M1D25M1D7M3I9M1I4M1D16M1I4M1D2M1I6M1I20M1D37M2D42M1I3M1D47M1D11M1D3M1D14M1D7M1D19M7D11M3D10M2I7M1I11M1D48M1I2M1I10M4I2M1I18M1D67M2D4M4D6M1D17M1I6M2I23M1D9M1D1M3D8M1D14M2D2M3I6M4D9M1D5M5D22M1D6M2D25M8D1M2D4M1D2M4D31M2I7M1I11M11D16M2D11M2D14M1D8M2D3M1I21M1I6M2I1M1I6M1D27M1D1M1D33M1D21M2D1M1D8M1D5M2D6M1D8M1I34M1D3M4I7M1I2M1I16M1I1M1I46M1D12M1I7M1I31M6I10M1I1M1I1M1I5M11I10M1I19M1D22M1D10M1D11M1I8M1I24M1D6M2I7M3D2M1D17M1I24M1I2M4D19M1I14M2D17M1D9M3I16M1D10M1D25M1I26M11D3M2D5M1D2M8D30M2I15M2I13M1D6M5D5M3D17M2D17M2I18M2D11M1I11M2I3M1D18M1D9M1I8M1I16M1D2M1D13M3D1M1D10M1D11M1I8M3D3M1I26M1D4M2D8M1D3M2D4M1I4M2I11M1D10M1D4M1D8M6D1M1D5M7D2M1D5M8D3M2D13M4I1M1I17M1D21M1D22M1I10M1D41M1I2M1I2M1I5M1D41M1D29M1I5M1D5M1I8M1I15M1D9M1D22M1D29M4D7M1I9M1D8M1I32M2D15M1I15M1I23M1I7M10I19M1D38M1I7M1I4M1I16M28D29M7D28M1D52M2I6M1I1M1I1M1I3M1I25M2D15M1I9M5D6M1D12M1I6M1I4M2I11M5D1M2D1M4D15M3I11M3D4M1I8M1D40M6I12M1D17M1D9M5D1M1D2M1D25M1I23M2D9M1D11M1I3M2D28M1I12M1I17M15I10M1D9M1I2M1I8M4I11M1D9M1I6M1I8M1I40M2D3M2I8M1D11M1D16M1D6M1I7M1I34M2I27M1I5M1D3M2D39M1I30M1D22M1I10M3D61M2I19M2I6M1D7M1I23M1I4M1D3M1D6M2I12M2D11M14I13M1D6M4I9M2D11M1I17M1I4M1D8M1D3M1I4M1I35M1D47M1D17M1I7M1I2M1I25M1I13M1D3M1D18M1I13M2D10M2I19M2I6M1D6M1I7M1I11M1I6M3D2M1D11M1I6M1D17M12I1M1I2M1I9M1D1M1D7M7I4M1I9M8I12M1I37M1I25M4I1M1D7M3D13M1I4M1D2M1D43M1D11M1I4M1I6M1D31M2I38M2D12M2D6M2I39M1I19M6I1M1I12M1D16M1D50M1D40M1D24M1I4M2D5M1D5M2I13M2I4M7D2M2D2M7D1M3D15M1I8M1D10M10D41M1I34M1I10M1D11M1I3M3D7M3I23M9D47M2D19M1I36M42D2M1I3M1D3M1D7M1D5M3D6M1D16M1D13M1D39M14I7M1I16M1D19M1D14M1D8M1I34M2I3M1D6M1D12M2I3M1D10M2I1M1D6M39D2M2D16M2I3M2I3M1D23M1D14M3D3M2D6M3D2M1D1M1D10M1D25M1I17M2I33M2D2M1I7M1I36M2D13M1I9M1D6M3I11M1I2M1D8M1D21M1I34M1D12M2I3M1I8M4I11M1D59M5D18M2I11M1I4M7D26M2I77M5D11M1I16M2D6M5I19M1D13M1D1M2D23M1D6M2I11M1D35M1D10M1I14M1D30M1D12M38D2M1D3M1I2M1I5M2D7M1I1M2I3M1I57M1I31M1I9M1I63M1I40M2I3M1I25M1I4M2I21M15I10M1I30M2D3M2D6M2D15M1I6M1I48M2I27M1D6M1D77M2D3M1I22M3D20M1I14M1I29M1I16M1D20M1D5M30D25M6D7M1I17M1I5M14D16M1I3M1D15M1D41M1D13M1I13M1D5M2D19M2I6M1D29M1I2M2D16M1D6M1D8M1I4M9I13M3D10M1I16M4D27M1D1M3D6M2I9M5I38M1D3M2D1M1D4M2I5M1I24M1D18M1I3M5D2M3D3M1I3M1D1M1D5M1D4M1D11M5D3M8D6M1I3M2D5M1D11M1I19M1I1M1I15M1I3M1D15M1D5M3D1M1D12M1D23M1D1M1D6M4I2M4I9M1I17M1I4M1D18M3I7M1I51M11D11M1D12M3D17M1D14M2I12M4I10M1D26M1I45M1I3M1D15M2I11M1I28M1I4M2D9M1I31M3I15M1I11M1D3M4I10M1I21M1D31M8I23M4I24M1D13M5I19M2D1M1D5M10D10M1I23M1I20M2I32M1D5M1D23M1D9M1I14M1I22M1D6M1D19M3I14M1I18M1D10M1D7M1D14M1D46M1D7M21I5M1D17M3D2M4D7M1D16M1I2M1I14M1I3M1I4M1I16M2I42M1I7M1I17M5D1M1D29M13D24M1I3M8I5M12I9M1I23M1D8M " `; diff --git a/products/jbrowse-cli/src/commands/create-pif.test.ts b/products/jbrowse-cli/src/commands/create-pif.test.ts index 6de1367302..59630f979f 100644 --- a/products/jbrowse-cli/src/commands/create-pif.test.ts +++ b/products/jbrowse-cli/src/commands/create-pif.test.ts @@ -5,6 +5,7 @@ import path from 'path' import fs from 'fs' import { setup } from '../testUtil' +import { gunzipSync } from 'zlib' const base = path.join(__dirname, '..', '..', 'test', 'data') const simplePaf = path.join(base, 'volvox_inv_indels.paf') @@ -17,5 +18,6 @@ describe('create-pif', () => { .command(['create-pif', simplePaf, '--out', fn]) .it('processes volvox paf', () => { expect(exists(fn)).toBeTruthy() + expect(gunzipSync(fs.readFileSync(fn)).toString()).toMatchSnapshot() }) }) diff --git a/products/jbrowse-cli/src/commands/create-pif.ts b/products/jbrowse-cli/src/commands/create-pif.ts index 7287b9e87d..e63ee543ac 100644 --- a/products/jbrowse-cli/src/commands/create-pif.ts +++ b/products/jbrowse-cli/src/commands/create-pif.ts @@ -47,12 +47,15 @@ export function swapIndelCigar(cigar: string) { return cigar.replaceAll('D', 'K').replaceAll('I', 'D').replaceAll('K', 'I') } -export async function createPIF(filename?: string, child: { stdin: any }) { +export async function createPIF( + filename: string | undefined, + stream: { write: any }, +) { const rl1 = filename ? getReadline(filename) : getStdReadline() for await (const line of rl1) { const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = line.split('\t') - child.stdin.write( + stream.write( [`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...rest].join('\t') + '\n', ) const cigarIdx = rest.findIndex(f => f.startsWith('cg:Z')) @@ -66,7 +69,7 @@ export async function createPIF(filename?: string, child: { stdin: any }) { }` } - child.stdin.write( + stream.write( [`q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...rest].join('\t') + '\n', ) } @@ -101,40 +104,41 @@ export default class CreatePIF extends JBrowseCommand { } async run() { - try { - const { - args: { file }, - flags: { out, csi }, - } = await this.parse(CreatePIF) - - if ( - commandExistsSync('sh') && - commandExistsSync('sort') && - commandExistsSync('grep') && - commandExistsSync('tabix') && - commandExistsSync('bgzip') - ) { - const fn = out || `${path.basename(file, '.paf')}.pif.gz` - console.error('start') - const child = spawn( - 'sh', - [ - '-c', - `sort -t"\`printf '\t'\`" -k1,1 -k3,3n ${fn} | bgzip > ${fn}; tabix -s1 -b3 -e4 ${fn}`, - ], - { - env: { ...process.env, LC_ALL: 'C' }, - stdio: 'inherit', - }, - ) - await createPIF(fn, child) - } else { - throw new Error( - 'Unable to sort, requires unix type environment with sort, grep, bgzip, tabix', - ) - } - } catch (e) { - console.error(e) + const { + args: { file }, + flags: { out, csi }, + } = await this.parse(CreatePIF) + console.error('wtf') + + if ( + commandExistsSync('sh') && + commandExistsSync('sort') && + commandExistsSync('grep') && + commandExistsSync('tabix') && + commandExistsSync('bgzip') + ) { + console.error('wtf') + const fn = out || `${path.basename(file, '.paf')}.pif.gz` + const child = spawn( + 'sh', + [ + '-c', + `sort -t"\`printf '\t'\`" -k1,1 -k3,3n | bgzip > ${fn}; tabix -s1 -b3 -e4 ${fn}`, + ], + { + env: { ...process.env, LC_ALL: 'C' }, + stdio: ['pipe', process.stdout, process.stderr], + }, + ) + await createPIF(file, child.stdin) + child.stdin.end() + await new Promise(resolve => { + child.on('close', resolve) + }) + } else { + throw new Error( + 'Unable to sort, requires unix type environment with sort, grep, bgzip, tabix', + ) } } } From 87209ca22a03fa67f53a11bda8324f6808fcdcb6 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 11 Dec 2023 10:09:56 -0500 Subject: [PATCH 11/12] Create the jbrowse pif command --- products/jbrowse-cli/README.md | 48 +++++++++--------- products/jbrowse-cli/out.paf | 7 +++ products/jbrowse-cli/out.pif.gz | Bin 0 -> 295 bytes products/jbrowse-cli/out.pif.gz.tbi | Bin 0 -> 169 bytes .../{create-pif.test.ts => make-pif.test.ts} | 8 ++- .../commands/{create-pif.ts => make-pif.ts} | 22 ++++---- 6 files changed, 48 insertions(+), 37 deletions(-) create mode 100644 products/jbrowse-cli/out.paf create mode 100644 products/jbrowse-cli/out.pif.gz create mode 100644 products/jbrowse-cli/out.pif.gz.tbi rename products/jbrowse-cli/src/commands/{create-pif.test.ts => make-pif.test.ts} (68%) rename products/jbrowse-cli/src/commands/{create-pif.ts => make-pif.ts} (84%) diff --git a/products/jbrowse-cli/README.md b/products/jbrowse-cli/README.md index af57958da3..f0b3dc0a74 100644 --- a/products/jbrowse-cli/README.md +++ b/products/jbrowse-cli/README.md @@ -53,8 +53,8 @@ It is likely preferable in most cases to install the tools globally with - [`jbrowse add-track-json TRACK`](#jbrowse-add-track-json-track) - [`jbrowse admin-server`](#jbrowse-admin-server) - [`jbrowse create LOCALPATH`](#jbrowse-create-localpath) -- [`jbrowse create-pif FILE`](#jbrowse-create-pif-file) - [`jbrowse help [COMMANDS]`](#jbrowse-help-commands) +- [`jbrowse make-pif FILE`](#jbrowse-make-pif-file) - [`jbrowse remove-track TRACK`](#jbrowse-remove-track-track) - [`jbrowse set-default-session`](#jbrowse-set-default-session) - [`jbrowse sort-gff FILE`](#jbrowse-sort-gff-file) @@ -458,56 +458,56 @@ EXAMPLES _See code: [src/commands/create.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create.ts)_ -## `jbrowse create-pif FILE` +## `jbrowse help [COMMANDS]` -creates pairwise indexed PAF (PIF), with bgzip and tabix +Display help for jbrowse. ``` USAGE - $ jbrowse create-pif FILE [--out ] [--csi ] [-h] + $ jbrowse help [COMMANDS] [-n] ARGUMENTS - FILE PAF file as input + COMMANDS Command to show help for. FLAGS - -h, --help Show CLI help. - --csi= Create a CSI index for the PIF file instead of TBI - --out= Where to write the output file. If unspecified, will be ${file}.pif.gz + -n, --nested-commands Include all nested commands in the output. DESCRIPTION - creates pairwise indexed PAF (PIF), with bgzip and tabix - -EXAMPLES - $ jbrowse create-pif input.paf # creates input.pif.gz in same directory - - - - $ jbrowse create-pif input.paf --out output.pif.gz # specify output file, creates output.pif.gz.tbi also + Display help for jbrowse. ``` _See code: -[src/commands/create-pif.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/create-pif.ts)_ +[@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.20/src/commands/help.ts)_ -## `jbrowse help [COMMANDS]` +## `jbrowse make-pif FILE` -Display help for jbrowse. +creates pairwise indexed PAF (PIF), with bgzip and tabix ``` USAGE - $ jbrowse help [COMMANDS] [-n] + $ jbrowse make-pif FILE [--out ] [--csi] [-h] ARGUMENTS - COMMANDS Command to show help for. + FILE PAF file as input FLAGS - -n, --nested-commands Include all nested commands in the output. + -h, --help Show CLI help. + --csi Create a CSI index for the PIF file instead of TBI + --out= Where to write the output file. will write ${file}.pif.gz and ${file}.pif.gz.tbi DESCRIPTION - Display help for jbrowse. + creates pairwise indexed PAF (PIF), with bgzip and tabix + +EXAMPLES + $ jbrowse pif input.paf # creates input.pif.gz in same directory + + + + $ jbrowse pif input.paf --out output.pif.gz # specify output file, creates output.pif.gz.tbi also ``` _See code: -[@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.20/src/commands/help.ts)_ +[src/commands/make-pif.ts](https://github.com/GMOD/jbrowse-components/blob/v2.9.0/products/jbrowse-cli/src/commands/make-pif.ts)_ ## `jbrowse remove-track TRACK` diff --git a/products/jbrowse-cli/out.paf b/products/jbrowse-cli/out.paf new file mode 100644 index 0000000000..56c2b2cbe8 --- /dev/null +++ b/products/jbrowse-cli/out.paf @@ -0,0 +1,7 @@ +ctgA 45141 1 45141 + ctgA 50001 1 50001 45135 50000 60 tp:A:P cm:i:8494 s1:i:44546 s2:i:0 dv:f:0 rl:i:0 +ctgB 6079 2 6079 + ctgB 6079 2 6079 6077 6077 2 tp:A:P cm:i:1213 s1:i:6077 s2:i:6027 dv:f:0 rl:i:0 +ctgB 6079 52 6079 + ctgB 6079 2 6029 6027 6027 0 tp:A:S cm:i:1203 s1:i:6027 dv:f:0.0001 rl:i:0 +ctgB 6079 2 6029 + ctgB 6079 52 6079 6027 6027 0 tp:A:S cm:i:1203 s1:i:6027 dv:f:0 rl:i:0 +ctgB 6079 102 6079 + ctgB 6079 2 5979 5977 5977 0 tp:A:S cm:i:1193 s1:i:5977 dv:f:0.0001 rl:i:0 +ctgB 6079 2 5979 + ctgB 6079 102 6079 5977 5977 0 tp:A:S cm:i:1193 s1:i:5977 dv:f:0 rl:i:0 +ctgB 6079 2 5929 + ctgB 6079 152 6079 5927 5927 0 tp:A:S cm:i:1183 s1:i:5927 dv:f:0 rl:i:0 diff --git a/products/jbrowse-cli/out.pif.gz b/products/jbrowse-cli/out.pif.gz new file mode 100644 index 0000000000000000000000000000000000000000..d191af2e6a06222b93757c3d2bdd3e6753387390 GIT binary patch literal 295 zcmb2|=3rp}f&Xj_PR>jWT#Q?%-0fmA=RPbR~4epgesfP z&RKUO;>H=NtZn)^d7G@)Jlof=%X=+gA#Ykqmf6LtH(JlEIrwFoUmI8Ctjy=Ryx(1p z?6LT#^Yh`v_-}W_J^nvldi6WYqXzNKj=$Iay|UmVw_4SYNfYN@c~pPYudv3NcY%BH jC4uUScO}YuOMm`hc8)hubz)^;kVgv&X$EF+$bbj{Wd(oc literal 0 HcmV?d00001 diff --git a/products/jbrowse-cli/out.pif.gz.tbi b/products/jbrowse-cli/out.pif.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..f4afa1cf54a7afdbd61fbbd6f244c1a14fc38cb5 GIT binary patch literal 169 zcmb2|=3rp}f&Xj_PR>jWJq+B1pHfm18yMUa(%6y&;w81z7>~4`RDIc(aH(@4%Nae! z%`+Q{=J^QJ8cg6^x>wDx;pxSr6R#RMygkf%;2F2$mjhq)Q=ClYW9RUm? z=Sgm+{IN23_v(0L6=?pagygxP{O3-aT{TmSM<_u`6A}$iN_v<``)PX0Y2p F1OU4`J4gTk literal 0 HcmV?d00001 diff --git a/products/jbrowse-cli/src/commands/create-pif.test.ts b/products/jbrowse-cli/src/commands/make-pif.test.ts similarity index 68% rename from products/jbrowse-cli/src/commands/create-pif.test.ts rename to products/jbrowse-cli/src/commands/make-pif.test.ts index 59630f979f..3f2cce0a0f 100644 --- a/products/jbrowse-cli/src/commands/create-pif.test.ts +++ b/products/jbrowse-cli/src/commands/make-pif.test.ts @@ -12,12 +12,16 @@ const simplePaf = path.join(base, 'volvox_inv_indels.paf') const exists = (p: string) => fs.existsSync(p) -describe('create-pif', () => { +describe('make-pif', () => { const fn = path.basename(simplePaf, '.paf') + '.pif.gz' setup - .command(['create-pif', simplePaf, '--out', fn]) + .command(['make-pif', simplePaf, '--out', fn]) .it('processes volvox paf', () => { expect(exists(fn)).toBeTruthy() expect(gunzipSync(fs.readFileSync(fn)).toString()).toMatchSnapshot() }) + setup.command(['make-pif', simplePaf, '--out', fn, '--csi']).it('csi', () => { + expect(exists(fn)).toBeTruthy() + expect(exists(fn + '.csi')).toBeTruthy() + }) }) diff --git a/products/jbrowse-cli/src/commands/create-pif.ts b/products/jbrowse-cli/src/commands/make-pif.ts similarity index 84% rename from products/jbrowse-cli/src/commands/create-pif.ts rename to products/jbrowse-cli/src/commands/make-pif.ts index e63ee543ac..77a4719bf4 100644 --- a/products/jbrowse-cli/src/commands/create-pif.ts +++ b/products/jbrowse-cli/src/commands/make-pif.ts @@ -49,7 +49,7 @@ export function swapIndelCigar(cigar: string) { export async function createPIF( filename: string | undefined, - stream: { write: any }, + stream: { write: (arg: string) => void }, ) { const rl1 = filename ? getReadline(filename) : getStdReadline() for await (const line of rl1) { @@ -76,22 +76,22 @@ export async function createPIF( rl1.close() } -export default class CreatePIF extends JBrowseCommand { +export default class MakePIF extends JBrowseCommand { static description = 'creates pairwise indexed PAF (PIF), with bgzip and tabix' static examples = [ - '$ jbrowse create-pif input.paf # creates input.pif.gz in same directory', + '$ jbrowse pif input.paf # creates input.pif.gz in same directory', '', - '$ jbrowse create-pif input.paf --out output.pif.gz # specify output file, creates output.pif.gz.tbi also', + '$ jbrowse pif input.paf --out output.pif.gz # specify output file, creates output.pif.gz.tbi also', ] static flags = { out: Flags.string({ description: - 'Where to write the output file. If unspecified, will be ${file}.pif.gz', + 'Where to write the output file. will write ${file}.pif.gz and ${file}.pif.gz.tbi', }), - csi: Flags.string({ + csi: Flags.boolean({ description: 'Create a CSI index for the PIF file instead of TBI', }), help: Flags.help({ char: 'h' }), @@ -107,8 +107,7 @@ export default class CreatePIF extends JBrowseCommand { const { args: { file }, flags: { out, csi }, - } = await this.parse(CreatePIF) - console.error('wtf') + } = await this.parse(MakePIF) if ( commandExistsSync('sh') && @@ -117,13 +116,14 @@ export default class CreatePIF extends JBrowseCommand { commandExistsSync('tabix') && commandExistsSync('bgzip') ) { - console.error('wtf') - const fn = out || `${path.basename(file, '.paf')}.pif.gz` + const fn = out || `${path.basename(file || 'output', '.paf')}.pif.gz` const child = spawn( 'sh', [ '-c', - `sort -t"\`printf '\t'\`" -k1,1 -k3,3n | bgzip > ${fn}; tabix -s1 -b3 -e4 ${fn}`, + `sort -t"\`printf '\t'\`" -k1,1 -k3,3n | bgzip > ${fn}; tabix ${ + csi ? '-C ' : '' + }-s1 -b3 -e4 ${fn}`, ], { env: { ...process.env, LC_ALL: 'C' }, From 31d04e5b8bc1418c929c1210e82587b6f80ff45e Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 11 Dec 2023 10:59:12 -0500 Subject: [PATCH 12/12] Add bgzip and tabix to testing --- .github/workflows/push.yml | 5 +++-- .github/workflows/website.yml | 2 +- .../{create-pif.test.ts.snap => make-pif.test.ts.snap} | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) rename products/jbrowse-cli/src/commands/__snapshots__/{create-pif.test.ts.snap => make-pif.test.ts.snap} (99%) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 7b0aa3d5c5..ed12da25f7 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -7,11 +7,12 @@ jobs: name: Test and typecheck on node 20.x and ubuntu-latest runs-on: ubuntu-latest steps: + - run: sudo apt-get -y install tabix - uses: actions/checkout@v4 - name: Use Node.js 20.x uses: actions/setup-node@v4 with: - node-version: '20.5.1' + node-version: '20' - name: Install deps (with cache) uses: bahmutov/npm-install@v1 - name: Test codebase @@ -29,7 +30,7 @@ jobs: - name: Use Node.js 20 uses: actions/setup-node@v4 with: - node-version: '20.5.1' + node-version: '20' - name: Install website deps (with cache) uses: bahmutov/npm-install@v1 with: diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 5c26ce5fb1..a6c917e8f8 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: '20.5.1' + node-version: '20' - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v2 with: diff --git a/products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap b/products/jbrowse-cli/src/commands/__snapshots__/make-pif.test.ts.snap similarity index 99% rename from products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap rename to products/jbrowse-cli/src/commands/__snapshots__/make-pif.test.ts.snap index da66ddcf40..4f8b5d1696 100644 --- a/products/jbrowse-cli/src/commands/__snapshots__/create-pif.test.ts.snap +++ b/products/jbrowse-cli/src/commands/__snapshots__/make-pif.test.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`create-pif processes volvox paf 1`] = ` +exports[`make-pif processes volvox paf 1`] = ` "qctgA 49186 3 1851 + ctgA 50001 0 1859 1633 2044 60 NM:i:411 ms:i:2207 AS:i:1899 nn:i:0 tp:A:P cm:i:87 s1:i:696 s2:i:212 de:f:0.0908 zd:i:1 rl:i:0 cg:Z:4M1D16M1D5M3D33M1I14M3I7M1I25M2D5M2D4M1I17M3I11M1I5M3I3M1D15M3D1M2D6M1D2M6I6M2I24M1D3M2I29M1D2M1D3M1D6M1D10M2I8M19I33M1I23M2I9M1I11M1D6M1I5M1I28M1D13M1I5M1D2M1D49M5I6M2D21M1I1M2I2M2I4M4D4M1D5M1D3M1I2M1D4M37I17M2D16M6I5M3I3M6I16M5D4M8D5M4D1M1D52M2I2M1D5M28I33M1I17M2D2M2I31M42D5M1D9M1D7M1I8M1D40M1D39M1D2M1I3M2D11M2D6M2D10M1I14M1D12M1D16M1I6M3D6M2D4M1D1M1D27M1D3M10D3M2I11M3I3M1D35M1D1M3I3M2I19M3I9M4I23M1D3M1D28M1D52M1D28M1I20M2D66M1D3M2D7M1I7M2I9M1I11M1I11M1I7M1D3M1D30M1I11M1I15M2D7M3I3M1D12M6D35M1I4M1I17M1I15M1D5M1I4M1D5M1D3M5I10M1I2M1I8M7D13M5D9M1I4M1D45M6D4M1D19M2I16M1I1M2D23M7D11M1D19M1I13M qctgA 49186 1860 2214 - ctgA 50001 1859 2192 321 366 60 NM:i:45 ms:i:501 AS:i:468 nn:i:0 tp:A:I cm:i:0 s1:i:0 s2:i:0 de:f:0.0614 rl:i:0 cg:Z:42M1I6M1D2M1D35M1D2M4D16M2D39M15D6M1D2M1D9M1D30M1D8M1I2M2I7M1D10M1D43M2D20M5I12M1D9M1I3M1I4M1I14M qctgA 49186 2214 15925 + ctgA 50001 2212 16198 12504 15030 60 NM:i:2526 ms:i:17647 AS:i:15934 nn:i:0 tp:A:P cm:i:637 s1:i:5099 s2:i:212 de:f:0.0837 zd:i:3 rl:i:0 cg:Z:10M1D4M2D21M1D10M1D14M1D5M1I29M2I9M1D15M1D27M1D12M1I5M1D11M1I7M2D4M2I9M1I4M6I32M1I13M1D55M1D8M1D1M1D12M1D2M1I22M2D56M1I11M1D5M5D17M3D3M1D13M1I16M1D50M1D2M1D10M1I1M1I42M1I2M2I33M22D3M1D2M1D6M1I8M2I5M1I50M1I6M3I6M2I12M3D13M1I9M5I1M1I10M1D3M1I5M1D3M1D4M1D24M1D5M2I30M1I3M1D15M1I9M1D3M1D18M1D9M1I11M2I6M1D23M4I1M1I22M1D3M1D11M2I1M1I7M1I4M1I18M1D6M1D5M2I5M1D66M2D3M1I8M1D13M1D8M1D3M2I4M1I20M1D5M2D22M1D6M8D14M1D6M1I8M2I5M9I7M2D4M1I11M1D20M2I2M1D33M8D10M2D7M1D18M4D5M1I4M4I1M1I33M3D10M1I20M2I8M1I9M1D10M1I7M1D8M1I6M2D66M1D3M2D2M1D24M1I63M1D14M8D7M1D13M1I31M1D16M4I41M1I3M1I4M23D9M1I2M1I8M1D1M1D12M1D2M1D3M1I33M1D24M2D3M1D4M1D12M122I6M4I2M1I13M1D3M1I35M1D4M1D13M1I32M1I6M1D5M1D5M1I12M1I8M1I48M1D2M1I19M1I9M1D24M1I13M1I8M1D5M7D5M2I10M1D11M3D15M1D6M2D4M1D18M1I14M1I3M1I1M2I17M1I12M4I15M1D3M1I31M1I1M1I1M1I1M1I12M5D2M1I31M2D18M1I5M20I10M1D20M3I11M1D14M1D1M9D4M4D2M4D2M3D4M1I10M1I50M1D14M1D11M8D11M2I9M1D20M3D5M1D27M1I5M3D9M2D9M3I34M1D21M1I15M1D9M1D2M1D2M1D8M1D26M3I4M1I3M1D2M1D25M1D1M1D14M6D45M2D21M1D17M2I23M1I6M2D8M2I20M1D24M1I9M1D1M2I6M1I3M1I9M8D4M2D30M2I8M1I7M1D50M1D3M3D26M3I17M1I17M1I5M1I8M1D29M2I2M1D3M1D6M1I11M3D20M3D19M1D17M2D33M1I35M2I7M2I3M18I1M3I10M5I11M1I8M1I6M1D9M1D4M2I5M1I13M1I22M1I16M14D22M1I3M1D19M1I53M1D13M1D20M8D8M1D6M6I28M3I28M9I23M5I26M1D6M1I5M1I24M1D5M2D13M1D2M4D2M1D4M4D8M1D14M1D12M1D28M1D18M4D10M2I8M1D62M1D14M2D5M1D18M1I1M3D4M1D13M1I4M2D3M1I8M4I2M8I71M1D8M4D23M1D15M5I13M1I6M1I8M7D16M2D13M2I27M1I46M1D20M2I6M1D9M1I4M1D7M1I6M1D2M6D11M4I25M1D22M1I14M2I20M1I30M3D7M3I4M1D22M1I4M1I10M1I20M1D21M3D3M1D8M1I14M1D10M2D45M1I14M1I17M1I27M2I3M1D2M2D4M1I13M1I5M4D6M2D11M1D11M4D6M1D15M1D8M1D6M9D1M1D19M1D4M1D8M2I9M1D7M1I33M1I19M1I3M1I35M3I4M1I6M2I16M3I1M1I30M26I28M1I7M2D12M2I10M1D7M1I16M1I4M1D18M1D33M1D31M1D7M1D12M1I7M1I16M5D3M1D4M1I4M1I28M8I12M1I4M1I7M3I11M1I15M1I12M1D12M3D6M2I4M1I16M1D11M1I5M1I2M2D22M4I14M2D19M1I7M3D17M1D22M5I6M1I14M2I1M1I12M1D11M10D16M1I21M1I24M5I17M1I48M1I3M1I4M1I12M1I13M4I9M1D22M1D21M1D12M1I11M3I2M1I9M1D10M1I4M1D4M1I18M1D3M1I18M2I4M1D21M4I5M3D3M1I21M1D33M1I19M1D38M2D27M1D7M1D15M2D8M5I2M1I15M1D7M2D2M1D11M1I24M1D4M1I14M1D51M1I47M1I3M4I4M3I3M1D3M1I13M1I3M1D13M1D10M3D34M1I3M1D17M1I5M1D8M1I28M1D13M2D2M1D16M1I21M2D22M5D8M1D3M1D9M1I12M2I11M1D7M1D2M2I10M3D26M4I12M1I3M1I12M7D12M1D5M1I5M8I5M1I8M1D31M1I3M1I6M1D12M2I4M1I24M2D10M1D17M1I1M3I11M1I8M2I16M1I18M2I3M6I2M1I6M24I10M2D14M1D11M1D4M1I10M1D34M4D14M1I21M1I6M43I8M4I2M1I12M1I7M5I4M2D15M1I39M1I6M1D9M3I1M3I2M2I4M4I2M3I1M1I2M1I10M1D16M3I17M1D1M1D28M1I10M1I11M1I28M1I11M2D17M1D14M1D7M2I6M1I4M7I3M7I10M1D6M1D57M2I4M1I5M1I18M2D50M5D38M1I6M1I15M1I5M1D58M4D28M1D15M1I14M3D4M2I4M1D11M4I4M1I44M1D25M1D8M2I12M1D7M1I31M1I9M26D5M1D19M1I1M1I9M1I5M1I7M34D1M1D38M1D1M1D21M1I4M11I29M1I11M1I7M3D19M2D36M1I12M1D21M1D2M7D23M2D19M1D6M1D16M2D2M3I10M1I11M10D5M1D15M2I18M1D17M1D7M2I6M2D6M1I27M1D17M1D23M5D29M4I3M1D41M1I33M1I9M1I11M6D25M1I17M3I6M1D8M1D14M1I13M1I12M1D16M1D12M1D3M1I12M1D28M1I32M1I15M1D32M6D2M2D8M1I6M1I23M22D30M1D9M10I58M3D7M1I12M1D10M6D31M1I14M1D38M1D13M3I14M1I23M1D6M1D10M3D22M1D10M1D8M5D67M1D13M4I3M5I6M1D4M1D8M3I8M3D2M1D11M1I11M1D4M2D1M1D2M1D5M3D9M2I1M1I4M1I6M2I5M1I5M1D8M4I8M1D7M2D3M3I15M6I1M1I9M1I4M1I6M1I36M1I7M1I18M1D5M1I3M2D20M1I13M4D7M5D2M2D43M1D5M1I12M1D7M1I31M1D13M1I13M1D6M1I1M1I4M3I7M1I31M2I26M1D7M1D8M1I7M1D17M1I18M1D6M1I4M7I13M1D6M1I7M1D31M1I5M1D15M1I20M1D20M1D26M3D2M3D1M9D5M1D24M2I25M1I14M1I5M3I2M1D7M1D3M1D19M1D17M1D16M2D5M5I8M1D15M1D3M2D5M5D15M1I13M3I7M1I9M5D10M2I5M1D10M2D1M1D2M1D9M8D2M1I5M1D6M6I7M1D13M3D7M1D3M1I15M2I18M1I3M1I2M1I5M1I5M2D9M1D1M1D27M1D11M1I16M8D1M2D8M1D15M1D6M1D10M1I24M1I3M1I19M1D12M1D24M1I8M1I2M1I2M1D6M1I31M2D5M5I16M5D5M1D6M3I11M14I12M3D29M1D12M1D5M23D2M1D4M4D6M1I41M2D21M1I17M1I5M1I25M3D18M1I6M1I5M1I42M1D3M1I31M1D3M1I14M1I21M1D8M3I4M1D19M6I10M2D12M7D32M8D2M1I18M2I31M1I15M1D21M1D6M1D3M1D39M2D1M1I10M1I3M1D36M12I45M1I7M1D4M1D1M3D7M1D3M1I5M1I6M1I14M1I14M1D18M1I1M1I6M1D1M2I1M1I4M2I8M1I27M5D20M12I11M1I9M1I29M3I26M2I4M2I3M1D6M37I1M1I4M5I3M1I3M6I3M4I16M1I27M2I3M1I2M2I60M4I5M4D8M21I26M1I16M1I3M1D8M1I22M1D8M10I3M2I3M3I13M36I4M1I40M1D6M1D5M1D7M2D7M1D13M2D2M1I8M2D6M1D9M1D3M1I4M4D3M1I5M1D11M1I4M4I23M1D21M1D17M1I37M2D10M1I36M1I8M1I1M1I9M1D6M1I1M5I1M7I3M2I2M10I2M2I12M1D27M2D1M1I16M1I18M1I25M1I29M1D12M2D18M1D2M3D3M7D13M1I30M3I2M2I18M1I4M2I36M1D19M1I19M1D6M1D4M3I20M2I13M1D61M1D12M3I1M1I6M2I4M2I3M1D7M1I34M1D9M1I5M5I9M3I11M1I4M1D4M1D3M4I2M3I1M8I22M1D10M1I12M1I57M1I25M1I58M4D26M1D2M1D2M1D7M2D43M1D3M1I6M1I9M2I20M1I5M41I5M1I30M1I32M1I12M2D9M4D17M2I44M1I2M1D29M14D1M1D17M1D8M1I27M4D14M1I9M1I4M1D6M1I12M5I26M3D2M1D2M1D18M