[med-svn] [Git][med-team/last-align][master] 3 commits: New upstream version 1250
Nilesh Patra (@nilesh)
gitlab at salsa.debian.org
Sat Jul 10 21:45:45 BST 2021
Nilesh Patra pushed to branch master at Debian Med / last-align
Commits:
6c273eac by Nilesh Patra at 2021-07-11T02:05:35+05:30
New upstream version 1250
- - - - -
9e046023 by Nilesh Patra at 2021-07-11T02:05:35+05:30
Refresh patch
- - - - -
bf1432f5 by Nilesh Patra at 2021-07-11T02:05:35+05:30
Interim changelog entry
- - - - -
18 changed files:
- bin/maf-convert
- bin/maf-swap
- debian/changelog
- debian/patches/2to3.patch
- doc/lastal.rst
- doc/maf-convert.rst
- src/AlignmentWrite.cc
- src/LastalArguments.cc
- src/lastal.cc
- src/makefile
- + test/frameshift-new.maf
- + test/frameshift-old.maf
- test/last-test.out
- test/last-test.sh
- test/maf-convert-test.out
- test/maf-convert-test.sh
- test/maf-swap-test.out
- test/maf-swap-test.sh
Changes:
=====================================
bin/maf-convert
=====================================
@@ -25,6 +25,36 @@ try:
except ImportError:
pass
+aminoAcidCodes = {"ALA": "A",
+ "CYS": "C",
+ "ASP": "D",
+ "GLU": "E",
+ "PHE": "F",
+ "GLY": "G",
+ "HIS": "H",
+ "ILE": "I",
+ "LYS": "K",
+ "LEU": "L",
+ "MET": "M",
+ "ASN": "N",
+ "PRO": "P",
+ "GLN": "Q",
+ "ARG": "R",
+ "SER": "S",
+ "THR": "T",
+ "VAL": "V",
+ "TRP": "W",
+ "TYR": "Y",
+ "***": "*",
+ "XAA": "X"}
+
+def standardGeneticCode():
+ aa = "FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG"
+ b1 = "TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG"
+ b2 = "TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG"
+ b3 = "TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG"
+ return {x + y + z: a for a, x, y, z in zip(aa, b1, b2, b3)}
+
def myOpen(fileName):
if fileName == "-":
return sys.stdin
@@ -67,24 +97,33 @@ def insertSize(row, letterSize):
def matchAndInsertSizes(alignmentColumns, letterSizes):
"""Get sizes of gapless blocks, and of the inserts between them."""
letterSizeA, letterSizeB = letterSizes
+ delInc = max(letterSizeA, 1)
+ delDiv = 1 if letterSizeA else 3
+ insInc = max(letterSizeB, 1)
+ insDiv = 1 if letterSizeB else 3
+ sizeDiv = max(delDiv, insDiv)
delSize = insSize = subSize = 0
for x, y in alignmentColumns:
if x == "-":
if subSize:
- if delSize or insSize: yield str(delSize) + ":" + str(insSize)
- yield str(subSize)
+ if delSize or insSize:
+ yield str(delSize // delDiv) + ":" + str(insSize // insDiv)
+ yield str(subSize // sizeDiv)
delSize = insSize = subSize = 0
- insSize += symbolSize(y, letterSizeB)
+ insSize += symbolSize(y, insInc)
elif y == "-":
if subSize:
- if delSize or insSize: yield str(delSize) + ":" + str(insSize)
- yield str(subSize)
+ if delSize or insSize:
+ yield str(delSize // delDiv) + ":" + str(insSize // insDiv)
+ yield str(subSize // sizeDiv)
delSize = insSize = subSize = 0
- delSize += symbolSize(x, letterSizeA)
+ delSize += symbolSize(x, delInc)
else:
subSize += 1
- if delSize or insSize: yield str(delSize) + ":" + str(insSize)
- if subSize: yield str(subSize)
+ if delSize or insSize:
+ yield str(delSize // delDiv) + ":" + str(insSize // insDiv)
+ if subSize:
+ yield str(subSize // sizeDiv)
##### Routines for reading MAF format: #####
@@ -120,8 +159,11 @@ def mafInput(opts, lines):
beg = int(beg)
span = int(span)
seqLen = int(seqLen)
- if "\\" in row or "/" in row or len(row) - row.count("-") < span:
+ rowLetters = len(row) - row.count("-")
+ if "\\" in row or "/" in row or rowLetters < span:
letterSize = 3
+ elif rowLetters > span:
+ letterSize = 0 # xxx means 3-letter codes like AlaCysAsp
else:
letterSize = 1
fields = seqName, seqLen, strand, letterSize, beg, beg + span, row
@@ -306,48 +348,83 @@ def mafConvertToChain(opts, lines):
##### Routines for converting to PSL format: #####
-def pslBlocks(opts, mafs, outCounts):
+def pslBlocks(opts, geneticCode, mafs, outCounts):
"""Get sizes and start coordinates of gapless blocks in an alignment."""
# repMatches is always zero
# for proteins, nCount is always zero, because that's what BLATv34 does
normalBases = "ACGTU"
- matches = mismatches = repMatches = nCount = 0
+ mismatches = repMatches = nCount = 0
for maf in mafs:
sLines = maf[1]
fieldsA, fieldsB = pairOrDie(sLines, "PSL")
letterSizeA, begA, endA, rowA = fieldsA[3:7]
letterSizeB, begB, endB, rowB = fieldsB[3:7]
-
- size = 0
- for x, y in zip(rowA.upper(), rowB.upper()):
- if x == "-":
- if size:
- yield size, begA, begB
- begA += size * letterSizeA
- begB += size * letterSizeB
- size = 0
- begB += symbolSize(y, letterSizeB)
- elif y == "-":
- if size:
- yield size, begA, begB
- begA += size * letterSizeA
- begB += size * letterSizeB
- size = 0
- begA += symbolSize(x, letterSizeA)
- else:
- size += 1
- if x in normalBases and y in normalBases or opts.protein:
- if x == y:
- matches += 1
- else:
+ rowA = rowA.upper()
+ rowB = rowB.upper()
+
+ if letterSizeA * letterSizeB < 1:
+ letterSpanA = 3 - letterSizeA * 2
+ letterSpanB = 3 - letterSizeB * 2
+ codeA = geneticCode if letterSizeA else aminoAcidCodes
+ codeB = geneticCode if letterSizeB else aminoAcidCodes
+ loopEnd = len(rowA)
+ i = j = 0
+ while j < loopEnd:
+ if rowA[j] == "-":
+ if j > i:
+ size = j - i
+ yield size // 3, begA, begB
+ begA += size // letterSpanA
+ begB += size // letterSpanB
+ begB += 1
+ j += letterSpanB
+ i = j
+ elif rowB[j] == "-":
+ if j > i:
+ size = j - i
+ yield size // 3, begA, begB
+ begA += size // letterSpanA
+ begB += size // letterSpanB
+ begA += 1
+ j += letterSpanA
+ i = j
+ else:
+ k = j + 3
+ if codeA.get(rowA[j:k], "X") != codeB.get(rowB[j:k], "X"):
mismatches += 1
+ j = k
+ if j > i:
+ yield (j - i) // 3, begA, begB
+ else:
+ isProtein = opts.protein or letterSizeA * letterSizeB > 1
+ size = 0
+ for x, y in zip(rowA, rowB):
+ if x == "-":
+ if size:
+ yield size, begA, begB
+ begA += size * letterSizeA
+ begB += size * letterSizeB
+ size = 0
+ begB += symbolSize(y, letterSizeB)
+ elif y == "-":
+ if size:
+ yield size, begA, begB
+ begA += size * letterSizeA
+ begB += size * letterSizeB
+ size = 0
+ begA += symbolSize(x, letterSizeA)
else:
- nCount += 1
- if size:
- yield size, begA, begB
+ size += 1
+ if x in normalBases and y in normalBases or isProtein:
+ if x != y:
+ mismatches += 1
+ else:
+ nCount += 1
+ if size:
+ yield size, begA, begB
- outCounts[0:4] = matches, mismatches, repMatches, nCount
+ outCounts[0:3] = mismatches, repMatches, nCount
def pslNumInserts(blocks, letterSizeA, letterSizeB):
numInsertA = numInsertB = 0
@@ -371,31 +448,43 @@ def pslEnds(seqLen, strand, beg, end):
return seqLen - end, seqLen - beg
return beg, end
-def writePsl(opts, mafs):
- matchCounts = [0] * 4
- blocks = list(pslBlocks(opts, mafs, matchCounts))
- matches, mismatches, repMatches, nCount = matchCounts
- numGaplessColumns = sum(matchCounts)
+def writePsl(opts, geneticCode, mafs):
+ matchCounts = [0] * 3
+ blocks = list(pslBlocks(opts, geneticCode, mafs, matchCounts))
+ mismatches, repMatches, nCount = matchCounts
+ numGaplessColumns = sum(i[0] for i in blocks)
+ matches = numGaplessColumns - sum(matchCounts)
if not blocks:
return
fieldsA, fieldsB = mafs[0][1]
+
+ if fieldsA[3] < fieldsB[3]: # protein-to-DNA alignment
+ fieldsA, fieldsB = fieldsB, fieldsA
+ blocks = [(s, b, a) for s, a, b in blocks]
+
+ seqNameA, seqLenA, strandA, letterSizeA = fieldsA[0:4]
+ seqNameB, seqLenB, strandB, letterSizeB = fieldsB[0:4]
+
+ sizeMulA = 3 if letterSizeA > letterSizeB else 1
+ sizeMulB = 3 if letterSizeB > letterSizeA else 1
+
headSize, headBegA, headBegB = blocks[0]
tailSize, tailBegA, tailBegB = blocks[-1]
- seqNameA, seqLenA, strandA, letterSizeA = fieldsA[0:4]
- begA, endA = pslEnds(seqLenA, strandA, headBegA, tailBegA + tailSize)
- baseInsertA = endA - begA - numGaplessColumns * letterSizeA
+ tailEndA = tailBegA + tailSize * sizeMulA
+ begA, endA = pslEnds(seqLenA, strandA, headBegA, tailEndA)
+ baseInsertA = endA - begA - numGaplessColumns * sizeMulA
- seqNameB, seqLenB, strandB, letterSizeB = fieldsB[0:4]
- begB, endB = pslEnds(seqLenB, strandB, headBegB, tailBegB + tailSize)
- baseInsertB = endB - begB - numGaplessColumns * letterSizeB
+ tailEndB = tailBegB + tailSize * sizeMulB
+ begB, endB = pslEnds(seqLenB, strandB, headBegB, tailEndB)
+ baseInsertB = endB - begB - numGaplessColumns * sizeMulB
- numInsertA, numInsertB = pslNumInserts(blocks, letterSizeA, letterSizeB)
+ numInsertA, numInsertB = pslNumInserts(blocks, sizeMulA, sizeMulB)
strand = strandB
- if letterSizeA > 1 or letterSizeB > 1:
+ if sizeMulA > 1 or sizeMulB > 1:
strand += strandA
elif strandA != "+":
raise Exception("for non-translated PSL, the 1st strand in each alignment must be +")
@@ -409,15 +498,16 @@ def writePsl(opts, mafs):
blockCount, blockSizes, blockStartsB, blockStartsA, sep="\t")
def mafConvertToPsl(opts, lines):
+ geneticCode = standardGeneticCode()
if opts.Join:
for i in colinearMafInput(opts, lines):
- writePsl(opts, i)
+ writePsl(opts, geneticCode, i)
elif opts.join:
for i in mafGroupInput(opts, lines):
- writePsl(opts, i)
+ writePsl(opts, geneticCode, i)
else:
for i in mafInput(opts, lines):
- writePsl(opts, [i])
+ writePsl(opts, geneticCode, [i])
##### Routines for converting to SAM format: #####
@@ -714,20 +804,61 @@ def blastDataFromMafFields(fields):
else:
beg = seqLen - beg
end = seqLen - end + 1
- return seqName, str(beg), str(end), row.upper()
+ return seqName, letterSize, str(beg), str(end), row.upper()
+
+def codonMatchCounts(geneticCode, letterSizeA, letterSizeB, rowA, rowB):
+ letterSpanA = 3 - letterSizeA * 2
+ letterSpanB = 3 - letterSizeB * 2
+ codeA = geneticCode if letterSizeA else aminoAcidCodes
+ codeB = geneticCode if letterSizeB else aminoAcidCodes
+ loopEnd = len(rowA)
+ matches = mismatches = gaps = dangles = 0
+ i = 0
+ while i < loopEnd:
+ if rowA[i] == "-":
+ gaps += 1
+ if rowA[i+1] == "-" and rowA[i+2] == "-":
+ i += 3
+ else:
+ if rowB[i-1] == "-":
+ dangles += 1
+ i += 1
+ elif rowB[i] == "-":
+ gaps += 1
+ if rowB[i+1] == "-" and rowB[i+2] == "-":
+ i += 3
+ else:
+ if rowA[i-1] == "-":
+ dangles += 1
+ i += 1
+ else:
+ j = i + 3
+ if codeA.get(rowA[i:j], "X") == codeB.get(rowB[i:j], "X"):
+ matches += 1
+ else:
+ mismatches += 1
+ i = j
+ return matches, mismatches, gaps, dangles
-def writeBlastTab(opts, maf):
+def writeBlastTab(opts, geneticCode, maf):
aLine, sLines, qLines, pLines = maf
fieldsA, fieldsB = pairOrDie(sLines, "BlastTab")
- seqNameA, begA, endA, rowA = blastDataFromMafFields(fieldsA)
- seqNameB, begB, endB, rowB = blastDataFromMafFields(fieldsB)
+ seqNameA, letterSizeA, begA, endA, rowA = blastDataFromMafFields(fieldsA)
+ seqNameB, letterSizeB, begB, endB, rowB = blastDataFromMafFields(fieldsB)
+ gapOpens = gapRunCount(rowA) + gapRunCount(rowB)
+
+ if letterSizeA * letterSizeB < 1:
+ c = codonMatchCounts(geneticCode, letterSizeA, letterSizeB, rowA, rowB)
+ matches, mismatches, gaps, dangles = c
+ alnSize = matches + mismatches + gaps
+ gapOpens -= dangles
+ else:
+ alignmentColumns = list(zip(rowA, rowB))
+ alnSize = len(alignmentColumns)
+ matches = sum(x == y for x, y in alignmentColumns)
+ mismatches = alnSize - matches - rowA.count("-") - rowB.count("-")
- alignmentColumns = list(zip(rowA, rowB))
- alnSize = len(alignmentColumns)
- matches = sum(x == y for x, y in alignmentColumns)
matchPercent = "%.2f" % (100.0 * matches / alnSize)
- mismatches = alnSize - matches - rowA.count("-") - rowB.count("-")
- gapOpens = gapRunCount(rowA) + gapRunCount(rowB)
out = [seqNameB, seqNameA, matchPercent, alnSize, mismatches,
gapOpens, begB, endB, begA, endA]
@@ -742,8 +873,9 @@ def writeBlastTab(opts, maf):
print(*out, sep="\t")
def mafConvertToBlastTab(opts, lines):
+ geneticCode = standardGeneticCode()
for maf in mafInput(opts, lines):
- writeBlastTab(opts, maf)
+ writeBlastTab(opts, geneticCode, maf)
##### Routines for converting to GFF format: #####
@@ -753,6 +885,10 @@ def writeGffHeader():
def gffFromMaf(maf):
aLine, sLines, qLines, pLines = maf
fieldsA, fieldsB = pairOrDie(sLines, "GFF")
+
+ if fieldsA[3] < fieldsB[3]: # protein-to-DNA alignment
+ fieldsA, fieldsB = fieldsB, fieldsA
+
seqNameA, seqLenA, strandA, letterSizeA, begA, endA, rowA = fieldsA
seqNameB, seqLenB, strandB, letterSizeB, begB, endB, rowB = fieldsB
=====================================
bin/maf-swap
=====================================
@@ -1,4 +1,6 @@
#! /usr/bin/env python
+# Author: Martin C. Frith
+# SPDX-License-Identifier: GPL-3.0-or-later
# Read MAF-format alignments, and write them, after moving the Nth
# sequence to the top in each alignment.
@@ -94,8 +96,9 @@ def flippedMaf(mafLines):
fieldWidths = list(sLineFieldWidths(flippedLines))
return (joinedMafLine(i, fieldWidths) for i in flippedLines)
-def isCanonicalStrand(mafLine):
- words = mafLine.split()
+def isCanonicalStrand(mafLines):
+ sLine1 = mafLines[1]
+ words = sLine1.split()
strand = words[4]
if strand == "+": return True
alnString = words[6]
@@ -103,12 +106,18 @@ def isCanonicalStrand(mafLine):
alnSize = int(words[3])
gapCount = alnString.count("-")
if len(alnString) - gapCount < alnSize: return True # translated DNA
+ sLine2 = mafLines[indexOfNthSequence(mafLines, 2)]
+ words2 = sLine2.split()
+ alnSize2 = int(words2[3])
+ alnString2 = words2[6]
+ if len(alnString2) - alnString2.count("-") > alnSize2:
+ return True # 3-letter amino acids
return False
def swapOneMaf(opts, mafLines):
start, stop = rangeOfNthSequence(mafLines, opts.n)
mafLines[1:stop] = mafLines[start:stop] + mafLines[1:start]
- if not isCanonicalStrand(mafLines[1]):
+ if not isCanonicalStrand(mafLines):
mafLines = flippedMaf(mafLines)
for i in mafLines:
print(i, end="")
=====================================
debian/changelog
=====================================
@@ -1,8 +1,7 @@
-last-align (1243-1) UNRELEASED; urgency=medium
+last-align (1250-1) UNRELEASED; urgency=medium
- * [skip ci] Update email
* d/watch: Fix fetch URL - last-align has moved to gitlab
- * New upstream version 1243
+ * New upstream version 1250
* d/p/2to3.patch: scripts has moved to bin, change
* d/p/helpMakefiles.patch: Refresh helpmakefile.patch
* d/p/simde: Attempt adapting simde to new upstream
@@ -11,7 +10,7 @@ last-align (1243-1) UNRELEASED; urgency=medium
* d/debian/last-align.doc-base.last-align-manual:
The manual page has moved to last-cookbook.rst
- -- Nilesh Patra <nilesh at debian.org> Mon, 19 Apr 2021 21:03:45 +0530
+ -- Nilesh Patra <nilesh at debian.org> Sun, 11 Jul 2021 02:05:04 +0530
last-align (1179-1) unstable; urgency=medium
=====================================
debian/patches/2to3.patch
=====================================
@@ -158,10 +158,10 @@ Last-Update: Fri, 22 Nov 2019 11:23:44 +0100
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python3
+ # Author: Martin C. Frith
+ # SPDX-License-Identifier: GPL-3.0-or-later
- # Read MAF-format alignments, and write them, after moving the Nth
- # sequence to the top in each alignment.
-@@ -69,12 +69,12 @@
+@@ -71,12 +71,12 @@
def sLineFieldWidths(mafLines):
sLines = (i for i in mafLines if i[0] == "s")
=====================================
doc/lastal.rst
=====================================
@@ -291,10 +291,13 @@ Miscellaneous options
complemented matrix is used for query sequence reverse strands.
-K LIMIT
- Omit any alignment whose query range lies in LIMIT or more other
- alignments with higher score (and on the same strand). This is
- a useful way to get just the top few hits to each part of each
- query (P Berman et al. 2000, J Comput Biol 7:293-302).
+ Omit any alignment whose query range is contained in LIMIT or more
+ other alignments with higher score (and on the same strand). This
+ is a useful way to get just the top few hits to each part of each
+ query (P Berman et al. 2000, J Comput Biol 7:293-302). As a
+ special case, a LIMIT of 0 means: omit any alignment whose query
+ range overlaps an alignment with higher score (and on the same
+ strand).
-C LIMIT
Before extending gapped alignments, discard any gapless
=====================================
doc/maf-convert.rst
=====================================
@@ -13,9 +13,11 @@ It's often convenient to pipe in the input, like this::
This script takes the first (topmost) maf sequence as the "reference"
/ "subject" / "target", and the second sequence as the "query".
+(Exception: when converting DNA-to-protein alignments to gff or psl,
+the protein becomes the "query" and the DNA becomes the "reference".)
For html: if the input includes probability lines starting with 'p',
-then the output will be coloured by column probability. (To get lines
+then the output will be colored by column probability. (To get lines
starting with 'p', run lastal with option -j set to 4 or higher.)
.. _maf: http://genome.ucsc.edu/FAQ/FAQformat.html#format5
@@ -32,7 +34,7 @@ Options
-p, --protein
Specify that the alignments are of proteins, rather than
nucleotides. This affects psl format only (the first 4
- columns).
+ columns), and has no effect for DNA-to-protein alignments.
-j N, --join=N
Join alignments that are co-linear (align different parts of
=====================================
src/AlignmentWrite.cc
=====================================
@@ -474,7 +474,7 @@ AlignmentText Alignment::writeBlastTab(const MultiSequence& seq1,
const uchar *map2 = (translationType == 2) ? codonToAmino : map1;
size_t matches = matchCount(blocks, seq1.seqReader(), seqData2, map1, map2);
size_t mismatches = alignedColumnCount(blocks) - matches;
- size_t gapOpens = blocks.size() - 1;
+ size_t gapOpens = blocks.size() - 1; // xxx ???
double matchPercent = 100.0 * matches / alnSize;
size_t blastAlnBeg1 = alnBeg1 + 1; // 1-based coordinate
=====================================
src/LastalArguments.cc
=====================================
@@ -106,7 +106,7 @@ LastalArguments::LastalArguments() :
maxGaplessAlignmentsPerQueryPosition(0), // depends on oneHitMultiplicity
maxAlignmentsPerQueryStrand(-1),
cullingLimitForGaplessAlignments(0),
- cullingLimitForFinalAlignments(0),
+ cullingLimitForFinalAlignments(-1),
queryStep(1),
minimizerWindow(0), // depends on the reference's minimizer window
batchSize(0), // depends on the outputType, and voluming
@@ -649,7 +649,7 @@ void LastalArguments::writeCommented( std::ostream& stream ) const{
stream << " N=" << maxAlignmentsPerQueryStrand;
if( cullingLimitForGaplessAlignments )
stream << " C=" << cullingLimitForGaplessAlignments;
- if( cullingLimitForFinalAlignments )
+ if( cullingLimitForFinalAlignments + 1 > 0 )
stream << " K=" << cullingLimitForFinalAlignments;
stream << " k=" << queryStep;
if( minimizerWindow > 1 )
=====================================
src/lastal.cc
=====================================
@@ -543,7 +543,7 @@ struct Dispatcher{
static bool isCollatedAlignments() {
return args.outputFormat == 'b' || args.outputFormat == 'B' ||
- args.cullingLimitForFinalAlignments;
+ args.cullingLimitForFinalAlignments + 1;
}
static void printAndDelete(char *text) {
@@ -846,12 +846,41 @@ static bool lessForCulling(const AlignmentText &x, const AlignmentText &y) {
else return x.score > y.score;
}
+// Remove any alignment whose query range overlaps an alignment with
+// higher score (and on the same strand):
+static void cullOverlappingAlignments(std::vector<AlignmentText> &textAlns,
+ size_t start) {
+ size_t end = textAlns.size();
+ size_t i = start;
+ for (size_t j = start; j < end; ++j) {
+ AlignmentText &x = textAlns[j];
+ for (size_t k = j + 1; k < end; ++k) {
+ AlignmentText &y = textAlns[k];
+ if (y.strandNum > x.strandNum || y.queryBeg >= x.queryEnd) break;
+ if (x.score > y.score) {
+ delete[] y.text;
+ y.text = 0;
+ }
+ if (y.score > x.score) {
+ delete[] x.text;
+ x.text = 0;
+ }
+ }
+ if (x.text) {
+ textAlns[i] = x;
+ ++i;
+ }
+ }
+ textAlns.resize(i);
+}
+
// Remove any alignment whose query range lies in LIMIT or more other
// alignments with higher score (and on the same strand):
static void cullFinalAlignments(std::vector<AlignmentText> &textAlns,
- size_t start) {
- if (!args.cullingLimitForFinalAlignments) return;
+ size_t start, size_t limit) {
+ if (limit + 1 == 0) return;
sort(textAlns.begin() + start, textAlns.end(), lessForCulling);
+ if (limit == 0) return cullOverlappingAlignments(textAlns, start);
std::vector<size_t> stash; // alignments that might dominate subsequent ones
size_t i = start; // number of kept alignments so far
for (size_t j = start; j < textAlns.size(); ++j) {
@@ -867,7 +896,7 @@ static void cullFinalAlignments(std::vector<AlignmentText> &textAlns,
if (y.queryEnd >= x.queryEnd && y.score > x.score) ++numOfDominators;
}
stash.resize(a);
- if (numOfDominators >= args.cullingLimitForFinalAlignments) {
+ if (numOfDominators >= limit) {
delete[] x.text;
} else {
stash.push_back(i);
@@ -1037,7 +1066,7 @@ static void tantanMaskTranslatedQuery(size_t queryNum, uchar *querySeq) {
// Scan one query sequence strand against one database volume,
// after optionally translating and/or masking the query
-void translateAndScan(LastAligner& aligner,
+void translateAndScan(LastAligner &aligner, size_t finalCullingLimit,
size_t queryNum, const SubstitutionMatrices &matrices) {
uchar *querySeqs = query.seqWriter();
uchar *querySeq = querySeqs + query.padBeg(queryNum);
@@ -1069,7 +1098,7 @@ void translateAndScan(LastAligner& aligner,
size_t oldNumOfAlns = aligner.textAlns.size();
scan( aligner, queryNum, matrices, querySeq );
- cullFinalAlignments( aligner.textAlns, oldNumOfAlns );
+ cullFinalAlignments(aligner.textAlns, oldNumOfAlns, finalCullingLimit);
if (args.tantanSetting && !args.isKeepLowercase) {
for (size_t i = query.seqBeg(queryNum); i < query.seqEnd(queryNum); ++i) {
@@ -1078,19 +1107,19 @@ void translateAndScan(LastAligner& aligner,
}
}
-static void alignOneQuery(LastAligner &aligner,
+static void alignOneQuery(LastAligner &aligner, size_t finalCullingLimit,
size_t queryNum, bool isFirstVolume) {
if (args.strand == 2 && !isFirstVolume)
query.reverseComplementOneSequence(queryNum, queryAlph.complement);
if (args.strand != 0)
- translateAndScan(aligner, queryNum, fwdMatrices);
+ translateAndScan(aligner, finalCullingLimit, queryNum, fwdMatrices);
if (args.strand == 2 || (args.strand == 0 && isFirstVolume))
query.reverseComplementOneSequence(queryNum, queryAlph.complement);
if (args.strand != 1)
- translateAndScan(aligner, queryNum,
+ translateAndScan(aligner, finalCullingLimit, queryNum,
args.isQueryStrandMatrix ? revMatrices : fwdMatrices);
}
@@ -1108,14 +1137,16 @@ static void alignSomeQueries(size_t chunkNum,
bool isSort = isCollatedAlignments();
bool isSortPerQuery = (isSort && !isMultiVolume);
bool isPrintPerQuery = (isFirstThread && !(isSort && isMultiVolume));
+ size_t finalCullingLimit = args.cullingLimitForFinalAlignments ?
+ args.cullingLimitForFinalAlignments : isMultiVolume;
for (size_t i = beg; i < end; ++i) {
size_t oldNumOfAlns = textAlns.size();
- alignOneQuery(aligner, i, isFirstVolume);
+ alignOneQuery(aligner, finalCullingLimit, i, isFirstVolume);
if (isSortPerQuery) sort(textAlns.begin() + oldNumOfAlns, textAlns.end());
if (isPrintPerQuery) printAndClear(textAlns);
}
if (isFinalVolume && isMultiVolume) {
- cullFinalAlignments(textAlns, 0);
+ cullFinalAlignments(textAlns, 0, args.cullingLimitForFinalAlignments);
if (isSort) sort(textAlns.begin(), textAlns.end());
if (isFirstThread) printAndClear(textAlns);
}
=====================================
src/makefile
=====================================
@@ -143,7 +143,7 @@ ScoreMatrixData.hh: ../data/*.mat
../build/mat-inc.sh ../data/*.mat > $@
VERSION1 = git describe --dirty
-VERSION2 = echo ' (HEAD -> main, tag: 1243, refs/keep-around/3243658001e5a2afe5329f23aab272c355465293) ' | sed -e 's/.*tag: *//' -e 's/[,) ].*//'
+VERSION2 = echo ' (HEAD -> main, tag: 1250) ' | sed -e 's/.*tag: *//' -e 's/[,) ].*//'
VERSION = \"`test -e ../.git && $(VERSION1) || $(VERSION2)`\"
=====================================
test/frameshift-new.maf
=====================================
@@ -0,0 +1,58 @@
+# LAST version 1243
+#
+# a=21 b=1 A=27 B=1 F=-2,0,-3,0 e=165.797 d=70 x=165 y=42 z=165 D=1e+09 E=18.1715
+# R=01 u=2 s=2 S=0 M=0 T=0 m=500 l=1 n=500 K=1 k=1 w=1000 t=4.24284 j=3 Q=0
+# ../aant/hg38/last/rmsk-hg38
+# Reference sequences=38335 normal letters=27515653
+# lambda=0.235691 K=1.69939
+#
+# AAA AAC AAG AAT ACA ACC ACG ACT AGA AGC AGG AGT ATA ATC ATG ATT CAA CAC CAG CAT CCA CCC CCG CCT CGA CGC CGG CGT CTA CTC CTG CTT GAA GAC GAG GAT GCA GCC GCG GCT GGA GGC GGG GGT GTA GTC GTG GTT TAA TAC TAG TAT TCA TCC TCG TCT TGA TGC TGG TGT TTA TTC TTG TTT
+# A -7 -5 -7 -6 3 3 1 3 -6 -3 -6 -2 -2 -3 -2 -4 -7 -6 -5 -6 -1 -1 -3 -1 -5 -4 -7 -5 -5 -6 -4 -5 -2 -2 -3 -3 9 9 7 10 -1 0 -2 1 4 4 4 4 -5 -9 -6 -8 2 1 0 1 -8 -7 -11 -6 -4 -6 -2 -5
+# C -11 -4 -11 -5 -7 -4 -11 -5 -8 2 -7 2 -9 -6 -11 -8 -7 1 -6 2 -12 -7 -9 -7 -1 8 -2 8 -10 -6 -6 -4 -12 -6 -10 -6 -6 -6 -29 -5 -8 3 -6 1 -10 -6 -7 -6 -2 5 0 6 -6 -1 -4 0 3 13 1 13 -7 0 -6 1
+# D -4 4 -3 4 -9 -3 -7 -4 -7 0 -7 1 -12 -7 -9 -8 -4 1 -5 0 -10 -7 -10 -6 -27 -1 -6 -3 -15 -9 -14 -10 2 11 3 10 -7 -1 -3 -1 -2 5 -2 5 -6 0 -6 -1 -2 1 -3 0 -9 -5 -16 -6 -8 -3 -12 -4 -13 -8 -10 -10
+# E 2 -2 1 -1 -5 -8 -8 -6 -3 -4 -4 -5 -7 -12 -7 -12 0 -5 0 -5 -8 -9 -11 -11 -2 -11 -5 -9 -10 -13 -10 -11 9 3 8 4 -1 -6 -1 -6 2 -2 2 -1 -2 -6 -3 -7 3 -6 0 -5 -9 -9 -9 -8 -4 -9 -10 -8 -9 -14 -8 -12
+# F -17 -9 -16 -8 -11 -6 -7 -6 -16 -8 -13 -8 -8 -2 -6 -2 -10 -3 -10 -1 -12 -5 -8 -6 -11 -5 -4 -1 -4 3 -2 2 -18 -11 -18 -11 -9 -10 -11 -7 -13 -10 -12 -9 -6 1 -7 -1 -6 2 -4 3 -6 1 -2 1 -7 1 -8 2 2 11 2 11
+# G -4 -3 -3 -3 -6 -6 -5 -6 4 3 3 3 -8 -10 -8 -9 -4 -5 -4 -3 -10 -7 -3 -7 0 2 2 0 -13 -13 -14 -13 3 1 3 2 -1 0 1 -1 11 10 10 10 -1 -1 -2 -2 -2 -7 -4 -6 -10 -7 -8 -6 1 -2 -3 -1 -10 -13 -11 -10
+# H -6 0 -5 0 -8 -4 -25 -4 -9 -3 -6 -1 -13 -9 -11 -9 3 11 3 11 -5 1 -1 0 -1 7 2 9 -6 -1 -8 -1 -7 -2 -4 -1 -10 -6 -4 -6 -7 -3 -6 -2 -11 -5 -10 -5 -1 6 0 6 -7 -1 -3 -2 -3 2 -6 4 -8 -3 -9 -3
+# I -5 -5 -8 -4 1 1 1 2 -4 -2 -6 -2 7 7 3 7 -9 -10 -10 -9 -7 -8 -8 -9 -6 -6 -21 -7 1 -1 -2 -1 -11 -11 -10 -9 -4 -5 -2 -4 -8 -8 -9 -7 4 3 1 3 -6 -8 -8 -9 -6 -8 -7 -7 -7 -7 -15 -9 0 -3 -2 -2
+# K 7 1 7 1 -1 -5 0 -5 3 -2 2 -1 -3 -10 -3 -8 0 -5 -1 -5 -7 -10 -4 -10 -2 -8 -5 -5 -8 -13 -10 -13 -1 -7 0 -6 -6 -9 -5 -8 -3 -8 -4 -6 -6 -10 -7 -9 2 -9 -1 -8 -7 -10 -12 -10 -3 -9 -8 -10 -6 -14 -9 -10
+# L -10 -10 -10 -11 -5 -7 -2 -4 -9 -8 -8 -8 0 0 1 0 -4 -2 -2 -2 -1 -1 3 -1 0 0 -3 -1 7 7 7 7 -12 -12 -10 -13 -8 -6 -1 -6 -11 -11 -8 -10 0 -1 0 -1 -3 -4 -4 -5 -2 -4 1 -4 -2 -4 -5 -3 7 3 6 3
+# M -6 -7 -2 -6 1 -3 7 -3 -4 -6 1 -6 4 1 11 2 -7 -8 -5 -9 -6 -8 -1 -9 -4 -10 -8 -3 0 -2 4 -2 -8 -12 -4 -10 -3 -5 2 -5 -10 -8 -4 -10 1 -3 6 -2 -5 -9 -3 -10 -4 -8 2 -8 -6 -12 -6 -8 1 -5 5 -3
+# N 0 9 1 9 -5 1 -3 0 -3 5 -2 5 -7 -3 -7 -3 -3 1 -5 1 -9 -6 -11 -6 -6 -2 -5 -3 -14 -9 -13 -9 -4 2 -3 2 -8 -4 -9 -6 -6 -1 -6 -1 -9 -5 -9 -7 -2 -1 -5 0 -9 -5 -29 -6 -6 -4 -11 -4 -10 -9 -13 -7
+# P -9 -9 -11 -9 -2 -2 -3 -1 -10 -9 -7 -7 -7 -8 -8 -8 -1 -1 -4 -2 10 10 9 10 1 2 0 2 4 2 2 2 -11 -8 -12 -9 -1 0 1 -1 -10 -7 -8 -8 -5 -6 -5 -6 -3 -5 -8 -5 5 5 4 5 -1 -3 -8 -4 -2 -3 -3 -3
+# Q -1 -4 0 -4 -6 -5 -6 -7 -4 -5 -3 -6 -10 -12 -7 -11 10 2 10 3 0 -4 2 -5 6 0 4 1 -2 -8 -2 -7 0 -3 1 -5 -7 -9 -7 -6 -4 -6 -3 -8 -7 -8 -6 -9 6 -2 5 -2 -3 -4 -1 -5 2 -4 -2 -5 -3 -9 -4 -8
+# R 2 -4 3 -3 -1 -6 -1 -6 9 1 8 2 -3 -9 -3 -8 2 1 2 0 -7 -5 -6 -5 6 4 5 3 -8 -7 -8 -8 -4 -8 -4 -8 -7 -8 -3 -7 1 -4 2 -3 -7 -10 -6 -8 0 -5 -1 -4 -6 -7 -6 -6 5 1 -1 0 -6 -9 -7 -8
+# S -6 0 -5 -1 0 2 -1 2 -3 6 -3 5 -5 -3 -5 -4 -5 -3 -4 -3 0 2 -1 1 -5 0 -4 -1 -5 -5 -4 -4 -6 -5 -6 -4 0 1 -1 1 -5 0 -4 -1 -5 -4 -4 -4 -1 -2 -4 -3 8 8 7 8 -1 0 -7 -1 1 0 1 0
+# T -3 -2 -3 -2 7 7 6 7 -2 1 -3 0 2 1 1 1 -5 -5 -5 -6 -2 -2 -2 -1 -5 -7 -4 -4 -4 -6 -3 -6 -6 -6 -6 -6 3 1 2 2 -5 -5 -6 -6 0 -1 0 -1 -4 -8 -6 -6 2 0 1 1 -5 -5 -12 -7 -3 -6 -3 -5
+# V -7 -6 -8 -7 -1 0 -1 1 -5 -5 -5 -4 3 4 2 4 -9 -6 -6 -7 -7 -5 -5 -5 -4 -7 -6 -5 -1 -2 -1 -1 -4 -5 -3 -4 1 2 4 2 -3 -3 0 -2 8 9 9 9 -5 -11 -6 -8 -5 -7 -3 -6 -7 -7 -11 -7 0 -3 -1 -1
+# W -14 -18 -7 -13 -16 -15 -7 -14 -6 -9 1 -9 -13 -23 -10 -13 -5 -7 3 -5 -11 -14 -2 -26 4 -4 10 -1 -9 -10 -4 -11 -12 -14 -4 -19 -14 -12 -5 -19 -5 -9 4 -8 -12 -18 -7 -14 2 -3 11 -2 -3 -11 5 -8 10 4 14 4 -3 -9 4 -5
+# Y -11 -2 -11 -2 -14 -7 -9 -8 -15 -5 -11 -4 -13 -9 -10 -8 -5 5 -3 6 -10 -6 -7 -5 -11 2 -4 3 -9 -4 -9 -5 -12 -4 -11 -2 -11 -9 -28 -8 -15 -7 -10 -5 -13 -5 -10 -8 3 11 4 11 -8 0 -6 0 -3 5 -5 6 -6 3 -5 2
+# * -27 -29 -25 -27 -29 -28 -30 -28 -20 -19 -17 1 -28 -29 -28 -29 0 -20 5 -29 -29 -29 -29 -27 9 -29 4 -29 -25 -29 -26 -29 -24 -29 -28 -29 -29 -28 -29 -29 4 -29 -25 -25 -28 -30 -28 -30 14 -5 10 -12 -26 -29 6 -29 14 -27 -3 -8 -10 -29 -29 -29
+# X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+#
+# Coordinates are 0-based. For - strand matches, coordinates
+# in the reverse complement of the 2nd sequence are used.
+#
+# name start alnSize strand seqSize alignment
+#
+# batch 0
+a score=3177.2 EG2=0 E=0
+s UN-L1MA6_pol#LINE/L1 657 616 + 1275 GlnGlyCysProLeuSerProLeuLeuPheAsnIleValLeuGluValLeuAlaArgAlaIleArgGlnGluLysGluIleLysGlyIleGlnIleGlyLysGluGluValLysLeuSerLeuPheAlaAspAspMetIleLeuTyrIleGluAsnProLysAspSerThrLysLysLeu-LeuGluLeuIleAsnGluPheSerLysValAlaGlyTyrLysIleAsnIleGlnLysSerValAlaPheLeuTyrAlaAsnSerGluLeu-SerGluLysGluIleLyslysthrilepropheThrIleAlaThrLysLysIleLys--TyrLeuGlyIleAsnLeuThrLysGluValLysAspLeuTyrXaaGluAsnTyrLysThrLeuMetLysGluIleGluGluAspThrAsnLysTrpLysAspIleProCysSerTrpIleGlyArgIleAsnIleValLysMetSerIleLeuProLysAlaIleTyrArgPheAsnAlaIleProIleLysIleProMetThrPhePheThrGluIleGluLysThrIleLeuLysPheValTrpAsnHisLysArgProArgIleAlaLysAlaIleLeuSerLysLysAsnLysAlaGlyGlyIleThrLeuProAspPheLysIleTyrTyrLysAlaIleValThrLysThrAlaTrpTyrTrpHisLysAsnArgHisIleAspGlnTrpAsnArgIleGluSerProGluIleAsnProArgIle--TyrSerGlnLeuIlePheAspLysGlyAlaLysAsnThrGln--TrpGlyLysAspSerLeuPheAsnLysTrpCysTrpGluAsnTrpIleSerThrCysArgArgMetLysLeuAspProTyrLeuSerProTyrThrLysIleAsnSerLysTrpIleLys-AspLeuAsnValArgProGluThrMetLysLeuLeuGluGluAsnIle-GlyGluMetLeuHisAspIleGlyLeuGlyLysAspPheLeuAspLysThrSerLysAlaGlnAlaThrLysAlaLysIleAspLysTrpAspTyrIleLysLeuLysSerPheCysThrAlaLysGluThr-IleAsnArgValLysArgGlnProThrGluTrpGluLysIlePheAlaAsnTyrAlaSerAspLysGlyLeuIleSerArgIleTyrLysGluLeuLysGlnLeuAsnSerLysLysThrAsnAsnProIleXaaLysTrpAlaLysAspLeuAsnArgHisPheSerLysGluAspIleGlnMetAlaAsnArgTyrMetLys-LysCysSerThrSerLeuIleIleArgGluMetGlnIleLysThrThrMetArgTyrHisLeuThrProValArgMetAlaIleIleLysLysThrLysAspAsnLysCysTrpArgGlyCysGlyGluLysGlyThrLeuThrHisCys--TrpTrpGluCysLysLeuValGlnProLeuTrpLysThrValTrpArgPheLeuLysLysLeu--LysIleGluLeuProTyrAspProAlaIleProLeuLeuGlyIleTyrProLysGluMetLysSerValCysArgArgAspIleCysThrProMetPheIleAlaAlaLeuPheThrIleAlaLysIleTrpAsnGlnProLysCysProSerThrAspGluTrpIleLysLysMetTrpTyrIleTyrThrMetGluTyrTyrSerAlaIleLysLysAsnGluIle-LeuSerPheAlaThrThrTrpMetAsnLeuGluAspIleMetLeuSerGluIleSerGlnAlaGlnLysAspLysTyrArgMetIleSerLeuIleCysGly
+s chrUn_KI270748v1 13904 1811 + 93321 CAAGGGTGCCCACTCTCAGAACTTCTATTCAACATAGTACTGGATGTCCTAGCCAGAGCAATTAGGCAAAAGAAAGaaaTAAAAGGCATGAAAATTGGAAAGGAAGAAGTTAAATTGTTTCTGTTTGCAGTTGACATGATCTTATATATAGAAAACACCAATAACTCTGCCAAAAAA---TTTAGAATTCATAAATGAATTTAGTAAAGTTGCAGGATACAATGTGAACATACAAAATTCAGTAGCATTTCTACACATCAACAACAAACTATACAAAAAAagaaatcaagaaaacaATCCTATTTATAATAGCAACAAAA---------AATACTTAGATGTAAATTTAAACAAAGAGGTGAATGATCTTTACACTGAAAACTACAAAACATTGATGAAAACAATTGAAGAAGCCACAAATAAATGGAAAGATATCTCATGTTCATGGATTGGAAAAAGTAATATGTTTGAAATGTCCATACTATCCAAAGTGATGTACATATTGAATGCAATCTCTATCAAAATTCCTATGACATTTTCCCACAGAAATAGAAAAACAACTCTCAAATCTGTATGGAATCACAAAAAACTCTGAAAAGCCAAAATAATCTTGATCGAAAAAAGCAAGGCAGGAGATATCACATTACCTGACTTCAAATTATACTACATAGCTATAGCAATCGAAACACCATGGTACTGGCATAAACGCAGACACATAGACCAATTACACAGAATAAAGAGCCCATAAATAAATCTACAT---ATTATAGTCAATTGACTTTCAACAAAGGTGCCAGGAACACA---CATGGGGAAAGAACAGTCTCTTCAAAAAATGGTGTTGAGAAAACTGAATGTCCACA------AGATTGATCTTAGGCCCTTATTTCATACCATATAAAAATATAAATTCAAAATAAGTT---AGACTTAAATGTAAGACCTAGCACTATAGAACTCCTAGAAGAAAAC---AGGGGAATAACTCCAAGACATTGGTCTGGGCAATAATATTTTATGATATGACTCTAAAGCACAGGCAAGAAAAGCAACAAAACACAAATGGAATAGCATCAACCTAAAAAGCTTCTGCGCAGCAAAAGAA---AGTCAACAGAGTGAAGTGATAACCTACAAAATGGGAGGAATTATCTGCAAACTATACATTTGATAAGAGGCTAATGTCCAAAATATCTTAGGAACTCAAACAACACAataataagaaAACAAGGAACCCTAATGAAAAATTGACAAAGGATCTAAATAGACATTTCTCAAAAGAAGACATACAAATGGCCAACAGATATATA---AAAATGCTAATTATCACTGATCATCAGAGAAATGCATATTAAAACTACAATAAAATGCCATTTCACATCCGTTAGAATGGCTGTTACAGAAAAGGCAGAAGATACCAAGTGTTGGAGAGGATGTGGAGAAAAGGAAAACCTTGTA------ATTGTTGAGAATGTAAACTATTTCAGCCATTGTAAAAGACAGTATAAGTGATTCTG---------TAAAAATAGAATTACCATATGATTCAGTAATGCTATTTCTGGGCATATATTAAAAAGATATCAAATCAGTGTGTCAATGAGTTATCTGTACTCCCATATTTATTGTAGCATTATTCACAACAGCCAAGATGTGGAATTAACTTAAGTATCCATCGACACATGAGTGGATGAAGAAAATGTGGTACACATACACAATAGAATAGTATACAACCTTAaaaaataaaaaa---aGTATCATTTGTGACAACATGAATGAACCGGGAGGACATTATACTGAGTAAAATAATCCAGGCACAGAAAGCCAGATACTGCATAATCTCACTTGTATGTGGA
+
+a score=1775.7 EG2=2.9e-164 E=1.5e-169
+s UN-L1PA2_pol#LINE/L1 1048 227 + 1276 LeuIleSerArgIleTyrAsnGluLeuLysGlnIleTyrLysLysLysThrAsnAsnProIleLysLysTrpAlaLysAspMetAsnArgHisPheSerLysGluAspIleTyrAlaAlaLysLysHisMetLysLysCysSerSerSerLeuAlaIleArgGluMetGlnIleLysThrThrMetArgTyrHisLeuThrProValArgMetAlaIleIleLysLysSerGlyAsnAsnArgCysTrpArgGlyCysGlyGluIleGlyThrLeuLeuHiscystrptrpaspcyslysLeuValGlnProLeuTrpLysSerValTrpArgPheLeuArgAspLeuGluLeuGluIleProPheAspProAlaIleProLeuLeuGlyIleTyrProLysAspTyrLysSerCysCysTyrLysAspThrCysThrArgMetPheIleAlaAlaLeuPheThrIleAlaLysThrTrpAsnGlnProLysCysProThrMetIleAspTrpIleLysLysMetTrpHisIleTyrThrMetGluTyrTyrAlaAlaIleLysAsnAspGluPheMetSerPheValGlyThrTrpMetLysLeuGluIleIleIleLeuSerLysLeuSerGlnGluGlnLysThrLysHisArgIlePheSerLeuIleGlyGlyAsn
+s chrUn_KI270748v1 3859 681 + 93321 CTAATATCCGGAATCTACAATGAACCCAAACAAATTTACAAGAAaaaaacaaacaaCCCCATCAAAAAGTGGGCAAAGGATATGAACAGACACTTCTCAAAAGAAGACATTTATGCAGCCAAAAAACACATGAAAAAATGCTCACTATCACTGGCCATCAGAGAAATGCAAATCAAAACCACAATGAGATACCATCTTACACCAGTTAGAATGGCCATCATTAAAAAGTCAGGAAACAACAGGTGCTGGAGAGGATGTGGAGAAATAGGAACATTTTTACACTGTTGGTGGGACTGTAAACTAGTTCAACCATTGTGGAAGACAGTGTGGTGATTCCGCAGGGATCTAGAACTAGAAATACCATTTGACCCAGCCATCCCATTACTGGGTATATACCCAAAGGACTATAAATCATGCTGCTATAAAGACACATGCACACGTATGTTTACTGTGGCACTATTCACAATAGCAAAGACTTGGAACCAATCCAAATGTCCAACAATGATAGACTGGATTAAGAAAACGTGGCACATATACACCATGGAATACTATGCAGCCATAAAAAATGATGAGTTCATGTCCTTTGTAGGGACATGGATGAAGCTGGAAACCATCATTCTCAGCAAACAATCACAAGGACAAAAAACCAAACACCGCATGTTCTCACTCATAGGTGGGAAT
+
+a score=1607.4 EG2=5e-147 E=2.5e-152
+s UN-L1MA6_pol#LINE/L1 517 362 + 1275 LysProAspLysAspThrThrLysLysGluAsn--TyrArgProIleSerLeuMetAsnIleAspAlaLysIleLeuAsnLys--IleLeuAlaAsnArgIleGlnGlnHisIleLysLysIle--IleHisHisAspGlnVal--GlyPheIleProGlyMetGln-GlyTrpPheAsnIleArgLysSerIleAsnValIleHisHisIleAsnArgMetLysAspLysAsnHisMetIleIleSerIleAspAlaGluLysAlaPheAspLysIleGlnHisProPheMetIleLysThrLeuAsnLysLeuGlyIleGluGlyThrTyrLeuAsnThrIleLysAlaIleTyrAspLysProThrAlaAsnIleIleLeuAsnGlyGluLysLeuLysAlaPheProLeuArgSerGlyThrArgGlnGlyCysProLeuSerProLeuLeuPheAsnIleValLeuGluValLeuAlaArgAlaIleArgGlnGluLysGluIleLysGly-IleGlnIleGlyLysGluGluValLysLeuSerLeuPheAlaAspAspMetIleLeuTyrIleGluAsnProLysAspSerThrLysLysLeuLeuGluLeuIleAsnGluPheSerLysValAlaGlyTyrLysIleAsnIleGlnLysSerValAla-PheLeuTyrAlaAsnSerGluLeuSerGluLysGlu-IleLyslysthrilepropheThrIleAlaThrLysLysIle------------------------------LysTyrLeuGlyIleAsnLeuThrLysGluValLysAspLeuTyrXaaGluAsnTyrLysThrLeuMetLysGlu-IleGluGluAspThrAsnLysTrpLysAspIleProCysSerTrpIleGlyArgIleAsnIleValLysMetSerIleLeuProLysAlaIleTyrArgPheAsnAlaIleProIleLysIleProMetThrPhePheThrGluIleGluLysThrIleLeuLysPheValTrpAsnHisLysArgProArgIleAlaLysAlaIleLeuSerLysLysAsnLysAlaGlyGlyIleThrLeu-ProAspPheLysIleTyrTyrLys
+s chrUn_KI270748v1 89660 1085 - 93321 aaggcaaacaAGGACACTATAAGAAAAGTA---TGGGCCAACCAATATCCCTGATGAACACAGATACAAAAGTCCTCAAAAAAAAGTACTAGCAAACAGAATTTAACAACATATTAGGAGA---ACATTTACCATGATAAA---GTGGATTTATCCTC---------CAGATGTTTCAGCAAACACAAATCA---AATGTGATAAACCACATTAACAGAATGAAGGATAAAAAA---ATAGCTATCTCTATATATGCAGAAAAAGCATTTGACTAAATTCAAAATCCTCTCATGACTAAACCTCTCAACAAATTGGGCATAGAAGGCATGTACCTTAACACAAAACAGGACATATATAACAAGCTCACAGCTCACATCATACCCAACAATGAAAAAGTGAAATCTTTTCTGCTAAGATCAAAAACAAGACAAGGATATTTATTCTCACTACTTCTATTCAACTTATTTCTGGAAGTCCTAGCCAGAGCAATTAAGCCAAATAAAGAAATAAAA---TATTCAAATTGAAAAGGaagaagtaaaaTTGTCTCTGTTTGATGAC------ATATTATATATAGGAAACCCTAAAAACTCCACCAAAAAGCTATTAGAAATGATAAATGAATTCAATAAAATTTCAGAATTCAAAATCAATGTACAAAACTCAGTA---GTTTCTTTACACTCACAACAAACTATATGACAAA---AATAAAGAAATCAATCTCATTCACAGTAGCATCAAaaaaaacgtattttttttGTTTAGGAGCACATTTAGGATAGTACttaggagtacatttaACCAAGGAGGTGAAAGATCTGTATTCTGAACACTATAAAACATTGATGAAA---AATTGTAGATGACACAAATACATGGAAAGATATTTTATGTTCATGGGTAGGAAGAATTAATATTCTTAAAATGTCCTTACTGCCCAAAGCGATTTATAGGTTTAATGCAATATTTATCAAAATTTCAATGTCATTCTTCACAGAAATAGAAAAAACAATTTGAAAATTTATATGGAACCACAAAGGATCCTGAATAACTAAAGGACTCTTGAGCAATAAGAACAAAGCTGAAGGCCTCACA---ATCTGACTTCAAAACATATTACAGG
+
+a score=1559.7 EG2=3.8e-142 E=2e-147
+s UN-L1MA6_pol#LINE/L1 883 281 + 1275 LysThrAlaTrpTyrTrpHisLys--AsnArgHisIleAspGlnTrpAsnArgIleGluSerProGluIleAsnProArgIleTyrSerGlnLeuIlePheAspLysGlyAlaLysAsnThrGlnTrp-GlyLysAspSerLeuPheAsnLysTrpCysTrpGluAsnTrpIleSerThrCysArgArgMetLysLeuAspProTyrLeuSerProTyrThrLysIleAsnSerLysTrpIleLysAspLeu-AsnValArgProGluThrMetLysLeuLeuGluGluAsnIleGlyGluMetLeuHisAspIleGlyLeuGlyLysAspPheLeuAspLysThrSerLysAlaGlnAlaThrLysAlaLysIleAspLysTrpAspTyrIleLysLeuLysSerPheCysThrAlaLysGluThrIleAsnArgValLysArgGlnProThrGluTrpGluLysIlePheAlaAsnTyrAlaSerAspLysGlyLeuIleSerArgIleTyrLys--GluLeuLysGlnLeuAsnSerLysLysThrAsnAsnProIleXaaLysTrpAlaLysAspLeuAsnArgHisPheSerLysGluAspIleGlnMetAlaAsnArgTyrMetLysLysCysSerThrSerLeuIleIleArgGluMetGlnIle-LysThrThrMetArgTyrHisLeuThrProValArgMetAlaIleIleLysLysThrLysAspAsnLysCysTrpArgGlyCysGlyGluLysGlyThrLeuThrHisCysTrp--TrpGluCysLysLeuValGlnProLeuTrpLysThrVal--TrpArgPheLeuLysLysLeuLys
+s chrUn_KI270748v1 3232 818 - 93321 TaatcagcctggtaatcaCGT---AAAACAGACACATAGACCAGTGGAACAGAATAGAGAACCCAGATATAAATCCACACATTTACAGCCAGCTCATCTTCAGCAAAGGCACCAACAACATACGA---GCGAAAGGACGGTCTCTTCCATAAGTGGTGCAGGGGAAACTAGATAAAGATATGCAGAAGAATGAAACTAGACCCGTCTCTCTTACCATACACAGAAATCAAATCAGAATGGATTAAAGGT---AAAACTGAGACCTGAAAGTATAAAACTACTGGAAGAAAACATTAGGGAAGTGCTCCAGGACATTGTTCTCAGCAAAGACTTTTTCAGTAGGGCCCCAAAAGCACAGGCAACCAAAGCAAAAACAGACAAGTGAAATCACACCAAGCTAAGAACCCTCTGCAGACCAAAGGAAAAAGTCAACAAACTGAAGAGACAACCCACAGAATGGGAGAAAATACTTGCAAGCTACCCACCTGACAAGGGATTCATAACC------------AGGAGCTCAAACAA---------TAGCAAACAATTAATCGAATTTTAAAATGGGCAAGAGACCTGAGTAGACATTTCTCAAAAGAAGATGTACAAATGGCCAGCAGGTACATGAAAAAATGCTCAACATCACTAATCATCAGAGAAACGCAAATAAAAAACTGCAATGAGGTCTTCTCTCACCTCAGTTAAAATGGCTTTCGTCAAAAACGCAGGGAATAAGGGATGCTGGCGAGGATGTGGAGAAAGGGGGACCCTCACACACTGT---TGTGGGAACGTTGATTAGTACAACCACTATGGAAAACA---GATGGAGGCTCCTCAaaaaaccaaaa
+
+a score=1508.0 EG2=7.4e-137 E=3.8e-142
+s UN-L1PA16_pol#LINE/L1 526 338 + 1276 LysGluAsnTyrArgProIleSerLeuMetAsnIleAspAlaLysIleLeuAsnLysIleLeuAlaAsnArgIleGlnGlnHisIleLysLysLeuIleHisHisAspGlnValGlyPheIleProGlyMetGlnGlyTrpPheAsnIleArgLysSerIleAsnValIleHisHisIleAsnArgIleLysAsnLysAsnHisMetIleIleSerIleAspAlaGluLysAlaPheAspLysIleGlnHisProPheMetIleLysThrLeuXaaLysLeuGlyIleGluGlyThrTyrLeuLysIleIleArgAlaIleTyrAspLysProThrAlaAsnIleIleLeuAsnGlyGlnLysLeuGluAlaPheProLeuArgThrGlyThrArgGlnGlyCysProLeuSerProLeuLeuPheAsnIleValLeuGluValLeuAlaArgAlaIleArgGlnGluLysGluIleLysGlyIleGlnIleGlyLysGluGluValLysLeuSerLeuPheAlaAspAspMetIleLeuTyrLeuGluAsnProLysAspSerAlaLysArgLeuLeuGluLeuIleAsnAspPheSerLysValSerGlyTyrLysIleAsnVal--GlnLysSerValAlaPheLeuTyrThrAsnAsnValGlnAla-----------------------------GluSerGlnIleLysAsnAlaIleProPheThrIleAlaThrLysLysIle--LysTyrLeuGlyIleHisLeu-ThrLysGluValLysAspLeuTyrLysGluAsnTyrLysThrLeuLeuLysGluIleIleAspAspThrAsnLysTrpLysAsnIleProCysSerTrpIleGlyArgIleAsnIle-ValLysMetAlaIleLeuProLys--AlaIleTyrArgPheAsnAlaIleProIleLysLeuProMetSerPhePheThrGluLeuGluLysThr-IleLeuLysPheIleTrpAsnGln-LysArgAlaGlnIleAlaLysAlaIleLeuSerLysLys
+s chrUn_KI270748v1 17571 1017 + 93321 AAAGAAAACTACAAATCCTTATCCCTGATCAACACAGATGTAAAAATACTCAACAAAATTCTAGCAAACTGAAGCTAACAACACATCAAAAAGATAATTCATCATGATCAAGTGGGCTTTATTCCAGGGGTGCTTGAATGGTTCAAAATAGACAAATCAATAAACATGATTCACCACATAAATGGAACTGAGAACAAAAACCCTATGATCATCTCATTAGATGCAGAATaagcatttgataaaatccaacatctgtttatgataaaaaccctcaACAATATAGGTATAGATGGAGTATACCTCAAA---AAATGAGTCATCTATGACAAAGCCACAGCCAACATCATCCTGGATGGGCAAAAGTTAGAAGTGTTGCTTCTAGAAACTGGAAAAAAGCAAGGATGTTCACCTTCATCATTCCTATTCAATACAGTACTGGAAGTGCTAGCCAGAACTATCAGAAAGGAGAAAGAAATAAAAGGTATACAAATTAGAAAA---GAAGTCAAATGATCTCTGCTCACTGATGACATGACTGTAGGCCTAGAAAACCCTAAAGTCTTC---AGAAGACTCCTAGACTTGATACACGACTTCAGTAAAGTCTTGGGATAAACAAGC------CACAAAAATCAGTTGTATTTCTATACACCAAATACATTCAAGCTGTTTGAATGTTTGTTGAGATTAATTtgttgAGAACCAAATTAAGAACTCAACTGAATTTACAATAGCCATG---------AAAAATACCTAGGAATGCAT---AACTATATAAATGAAAGATCTCTACAAGGAGAACTACAAAATACTAATGAAAGAAATTATAGATGACATAAACAAATGGAAAAACATCCCATGCTCATGGATTAGAAAAATCAAT---AGCTAAAGTGACCATATCACCC---ATACAATCTATAGAGTTAATGCAATTCCCATCAAATTACCAACGTTATTTCTCACAaaattaaaaaaa---aaTCCTAAAGTTCACATGGAGCCAAAAAAAGATCCCTAATAGCCAAAGCACTTCTAAGCAAAAAa
+
=====================================
test/frameshift-old.maf
=====================================
@@ -0,0 +1,115 @@
+# LAST version 1243
+#
+# a=11 b=2 A=11 B=2 F=12 e=40 d=29 x=39 y=31 z=39 D=1e+06 E=8.45245e+08
+# R=01 u=0 s=2 S=0 M=0 T=0 m=10 l=1 n=10 k=1 w=1000 t=3.08611 j=3 Q=0
+# /home/mcfrith/tmp/x
+# Reference sequences=1 normal letters=491
+# lambda=0.327048 K=0.105437
+#
+# A R N D C Q E G H I L K M F P S T W Y V B J Z X *
+# A 4 -1 -2 -2 0 -1 -1 0 -2 -1 -1 -1 -1 -2 -1 1 0 -3 -2 0 -2 -1 -1 -1 -4
+# R -1 5 0 -2 -3 1 0 -2 0 -3 -2 2 -1 -3 -2 -1 -1 -3 -2 -3 -1 -2 0 -1 -4
+# N -2 0 6 1 -3 0 0 0 1 -3 -3 0 -2 -3 -2 1 0 -4 -2 -3 4 -3 0 -1 -4
+# D -2 -2 1 6 -3 0 2 -1 -1 -3 -4 -1 -3 -3 -1 0 -1 -4 -3 -3 4 -3 1 -1 -4
+# C 0 -3 -3 -3 9 -3 -4 -3 -3 -1 -1 -3 -1 -2 -3 -1 -1 -2 -2 -1 -3 -1 -3 -1 -4
+# Q -1 1 0 0 -3 5 2 -2 0 -3 -2 1 0 -3 -1 0 -1 -2 -1 -2 0 -2 4 -1 -4
+# E -1 0 0 2 -4 2 5 -2 0 -3 -3 1 -2 -3 -1 0 -1 -3 -2 -2 1 -3 4 -1 -4
+# G 0 -2 0 -1 -3 -2 -2 6 -2 -4 -4 -2 -3 -3 -2 0 -2 -2 -3 -3 -1 -4 -2 -1 -4
+# H -2 0 1 -1 -3 0 0 -2 8 -3 -3 -1 -2 -1 -2 -1 -2 -2 2 -3 0 -3 0 -1 -4
+# I -1 -3 -3 -3 -1 -3 -3 -4 -3 4 2 -3 1 0 -3 -2 -1 -3 -1 3 -3 3 -3 -1 -4
+# L -1 -2 -3 -4 -1 -2 -3 -4 -3 2 4 -2 2 0 -3 -2 -1 -2 -1 1 -4 3 -3 -1 -4
+# K -1 2 0 -1 -3 1 1 -2 -1 -3 -2 5 -1 -3 -1 0 -1 -3 -2 -2 0 -3 1 -1 -4
+# M -1 -1 -2 -3 -1 0 -2 -3 -2 1 2 -1 5 0 -2 -1 -1 -1 -1 1 -3 2 -1 -1 -4
+# F -2 -3 -3 -3 -2 -3 -3 -3 -1 0 0 -3 0 6 -4 -2 -2 1 3 -1 -3 0 -3 -1 -4
+# P -1 -2 -2 -1 -3 -1 -1 -2 -2 -3 -3 -1 -2 -4 7 -1 -1 -4 -3 -2 -2 -3 -1 -1 -4
+# S 1 -1 1 0 -1 0 0 0 -1 -2 -2 0 -1 -2 -1 4 1 -3 -2 -2 0 -2 0 -1 -4
+# T 0 -1 0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -2 -1 1 5 -2 -2 0 -1 -1 -1 -1 -4
+# W -3 -3 -4 -4 -2 -2 -3 -2 -2 -3 -2 -3 -1 1 -4 -3 -2 11 2 -3 -4 -2 -2 -1 -4
+# Y -2 -2 -2 -3 -2 -1 -2 -3 2 -1 -1 -2 -1 3 -3 -2 -2 2 7 -1 -3 -1 -2 -1 -4
+# V 0 -3 -3 -3 -1 -2 -2 -3 -3 3 1 -2 1 -1 -2 -2 0 -3 -1 4 -3 2 -2 -1 -4
+# B -2 -1 4 4 -3 0 1 -1 0 -3 -4 0 -3 -3 -2 0 -1 -4 -3 -3 4 -3 0 -1 -4
+# J -1 -2 -3 -3 -1 -2 -3 -4 -3 3 3 -3 2 0 -3 -2 -1 -2 -1 2 -3 3 -3 -1 -4
+# Z -1 0 0 1 -3 4 4 -2 0 -3 -3 1 -1 -3 -1 0 -1 -2 -2 -2 0 -3 4 -1 -4
+# X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -4
+# * -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1
+#
+# Coordinates are 0-based. For - strand matches, coordinates
+# in the reverse complement of the 2nd sequence are used.
+#
+# name start alnSize strand seqSize alignment
+#
+# batch 0
+a score=118 EG2=1.8 E=2.4e-11
+s Q2LCP8 110 232 + 491 LILIYSSIIGMLISMEAHNLITLFLSLEISSICFYILALNKNSRKGIEGGLKYYIIGGIATTILLLGIVSIYKSTGSLMYTDLLVIVMENTDDYRIQMGIALIVLGLILKLGIAPFHGWLIDVYEGAGMLMTFYLTITQKlvtlmvlinlyqnliiytnaimftngliILILVTLVVGTIGSLRQQKLIRFIAYSAIVNSALLILMLAGSMSEELMVNSVYYLINYIIGLTV
+s chrM 5258 639 + 16775 LICTVSLIMGTSITISSNH*ILA*TGLEINTLAIIPLISKSHHPRAIEATIKYFLTQSTASALILFSSITNA*STGQ*DITQL------NHPTSCLILTIAIAI-----KLGLVPFHF*FPEVLQGSSLITALLLSTLIKLPPITLLLLTSQSL----Nttllt---llaISSTLIGG*MG-LNQTQTRKILAFSSISHLG*IIIIISYNPQLTILTFILYTIMTSTVFLSL
+
+a score=72 EG2=6.3e+06 E=9e-05
+s Q2LCP8 379 52 + 491 ILVLMYLAGLPPMTNFISKILILLPYMVLGRVYLTMLAFFLSVGVMIYYMNL
+s chrM 5972 156 + 16775 ILTLLSLAGLPPLTGFMPK*LIIQELTKQEITPiatiitilsllslfFYLRL
+
+a score=55 EG2=1.6e+09 E=0.024
+s Q2LCP8 101 87 + 491 KKTKITDEGLILIYSSIIGMLISMEAHNLITLFLSLEISSICFYILALN-KNSRKGIEGGLKYYIIGGIATTILLLGIVSIYKSTGSL
+s chrM 11752 255 + 16775 KRKRIFISTLIIIQPFII---LAFSATELILFYISFEATLIPTLILITR*GNQPERLSAGIYLLFYTLISSLPLLVSILYLHTNTGTL
+
+a score=51 EG2=6e+09 E=0.09
+s Q2LCP8 170 49 + 491 TTILLLGIVS-IYKSTGSLMYTDLLVIVMENTDDYRIQMGIALIVLGLIL
+s chrM 13892 141 + 16775 TTCLCLGALSTLFAATCALTQNDIKKIIAFSTSS---QLGLIIVTIGLDL
+
+a score=48 EG2=1.6e+10 E=0.24
+s Q2LCP8 394 27 + 491 FISKILILLPYMVLGRVYLTMLAFFLS
+s chrM 11767 81 + 16775 FISTLIIIQPFIILAFSATELILFYIS
+
+a score=46 EG2=3.1e+10 E=0.47
+s Q2LCP8 16 38 + 491 YILPLII-LIVLSISIKKDVQRVHIIIQSLKLtlivimi
+s chrM 14080 115 + 16775 yiipmlr\LIIHSLNGEQDIRKIGCLQKTLPITTSCLTI
+
+a score=44 EG2=5.9e+10 E=0.91
+s Q2LCP8 27 57 + 491 SISIK-KDVQRVHIIIQSLKLtlivimiviGIEESIYVKLNGHLIKTELIKLFEYLLL
+s chrM 13941 170 + 16775 ALSLK/NDIKKIIAFSTSSQLGLIIVTIGLDLPQLAFLHISTHAFFKAILFLCSGLII
+
+a score=42 EG2=1.1e+11 E=1.8
+s Q2LCP8 166 24 + 491 GGIATTILLLGIVSIYKSTGSLMY
+s chrM 54 72 + 16775 GGILCIIVHTFIYHIYYGTGNIYY
+
+a score=42 EG2=1.1e+11 E=1.8
+s Q2LCP8 292 22 + 491 LRQQKLIRFIAYSAIVNSALLI
+s chrM 12313 66 + 16775 LRQTDLKSLIAYSSVSHMGLVI
+
+a score=42 EG2=1.1e+11 E=1.8
+s Q2LCP8 388 15 + 491 LPPMTNFISKILILL
+s chrM 12589 45 + 16775 LPPTTNLIAELTIIV
+
+a score=41 EG2=1.6e+11 E=2.4
+s Q2LCP8 10 66 + 491 MIKYSIYILPLIILIVLSISIKKDVQRVHIIIQSLKLtlivimiviGIEESI--YVKLNGHLIKTELI
+s chrM 11677 204 + 16775 LLVLSCWFLPLIIIASQGHLQHEPHKRKRIFISTLIIIQPFIILAFSATELILFYISFEATLIPTLIL
+
+a score=41 EG2=1.6e+11 E=2.4
+s Q2LCP8 15 44 + 491 IYILPLIILIVLSISIKKDVQRVHIIIQSLKLtlivimiviGIE
+s chrM 8444 129 + 16775 LYLLTLILIEKLS-SNTVDAQEVELI*TILPAIVlvllalpslq
+
+a score=41 EG2=1.6e+11 E=2.4
+s Q2LCP8 117 200 + 491 IIGMLISMEAHNLITLFLSLE-ISSICFYILALNKNSRKGIEGGLKYYIIGGIATTILLLGIVSIYKSTGSLMYTDLLVIVMENTDDYRIQMGIALIVLGLILKLGIAPFHGWLIDVYEGAGMLMTFYLTITQKlvtlmvlinlyqnliiytnaimftngliILILVTLVVGTIGSLRQQKLIRFIAYSAIVNSALLILML
+s chrM 13445 576 + 16775 liailTLTIANNIFLLFVG*EGVGIMSFLLIG**QGRAEANTAALQAIIYNRIGDIGLILSIA*L---ASSLNT*EIQQITHPNQTPTLPLLGLILAATGKSAQFGL---HP*LPAAIEGPTPVSALLHSSTIVVAGIFLLIRTHP--FLSSNKTALTTCLCLGALSTLFAATC-ALTQNDIKKIIAFSTSSQLGLIIVTI
+
+a score=41 EG2=1.6e+11 E=2.4
+s Q2LCP8 375 42 + 491 AIVYILVLMYLAGLPPMTNFISKILILLPYMVLGRVYLTMLA
+s chrM 5606 108 + 16775 SLITALLLSTLIKLPPIT------LLLLTSQSLNttlltlla
+
+a score=40 EG2=2.2e+11 E=3.4
+s Q2LCP8 374 30 + 491 GAIVYILVLMYLAGLPPM---TNFISKILILLP
+s chrM 7064 99 + 16775 gasvdlaifhylagVSSILGAINFITTIINIKP
+
+a score=43 EG2=8.2e+10 E=1.3
+s Q2LCP8 202 20 + 491 DYRIQMGIALIVLGLILKLG
+s chrM 9413 57 - 16775 DRRIrigvg-iglglllqlG
+
+a score=41 EG2=1.6e+11 E=2.4
+s Q2LCP8 0 34 + 491 MVCLFENLMNMIKYSIYILPLIILIVLSISIKKD
+s chrM 196 102 - 16775 LVSLGVSFVSLALFLVYLGGMLVVFVYSVSLAAD
+
+a score=40 EG2=2.2e+11 E=3.4
+s Q2LCP8 406 20 + 491 VLGRVYLTMLAFFLSVGVMI
+s chrM 2209 60 - 16775 IIPrvvtmmaavfvmvgivi
+
+# batch 1
+# Query sequences=2
=====================================
test/last-test.out
=====================================
@@ -3939,6 +3939,92 @@ TEST lastal -D1000 -fTAB -K2 /tmp/last-test galGal3-M-32.fa
15 chrM 6590 19 + 16571 chr32 2 19 + 1028 19 EG2=2.4e+10 E=0.8
# Query sequences=2
+TEST lastal -D1000 -fTAB -K0 /tmp/last-test galGal3-M-32.fa
+#
+# a=7 b=1 A=7 B=1 e=15 d=13 x=14 y=9 z=14 D=1000 E=2.43016e+10
+# R=01 u=0 s=2 S=0 M=0 T=0 m=10 l=1 n=10 K=0 k=1 w=1000 t=0.910239 j=3 Q=0
+# /tmp/last-test
+# Reference sequences=1 normal letters=16571
+# lambda=1.09602 K=0.335388
+#
+# A C G T M S K W R Y B D H V
+# A 1 -1 -1 -1 0 -1 -1 0 0 -1 -1 0 0 0
+# C -1 1 -1 -1 0 0 -1 -1 -1 0 0 -1 0 0
+# G -1 -1 1 -1 -1 0 0 -1 0 -1 0 0 -1 0
+# T -1 -1 -1 1 -1 -1 0 0 -1 0 0 0 0 -1
+# M 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0
+# S -1 0 0 -1 0 0 0 -1 0 0 0 0 0 0
+# K -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0
+# W 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0
+# R 0 -1 0 -1 0 0 0 0 0 -1 0 0 0 0
+# Y -1 0 -1 0 0 0 0 0 -1 0 0 0 0 0
+# B -1 0 0 0 0 0 0 0 0 0 0 0 0 0
+# D 0 -1 0 0 0 0 0 0 0 0 0 0 0 0
+# H 0 0 -1 0 0 0 0 0 0 0 0 0 0 0
+# V 0 0 0 -1 0 0 0 0 0 0 0 0 0 0
+#
+# Coordinates are 0-based. For - strand matches, coordinates
+# in the reverse complement of the 2nd sequence are used.
+#
+# score name1 start1 alnSize1 strand1 seqSize1 name2 start2 alnSize2 strand2 seqSize2 blocks
+# batch 0
+847 chrM 5902 1595 + 16571 chrM 6645 1589 + 16775 450,3:0,1085,3:0,54 EG2=0 E=0
+524 chrM 14756 1124 + 16571 chrM 14904 1124 + 16775 1124 EG2=1.3e-232 E=6.2e-242
+426 chrM 10944 1266 + 16571 chrM 11669 1266 + 16775 1266 EG2=5.6e-186 E=2.8e-195
+404 chrM 9109 918 + 16571 chrM 9824 918 + 16775 918 EG2=1.7e-175 E=8.4e-185
+366 chrM 3334 920 + 16571 chrM 4097 920 + 16775 920 EG2=2e-157 E=1e-166
+259 chrM 7524 722 + 16571 chrM 8266 721 + 16775 45,0:1,17,0:1,154,3:0,503 EG2=1.8e-106 E=9.1e-116
+249 chrM 13168 681 + 16571 chrM 13901 681 + 16775 681 EG2=1e-101 E=5.3e-111
+242 chrM 12461 671 + 16571 chrM 13197 668 + 16775 505,3:0,163 EG2=2.2e-98 E=1.1e-107
+193 chrM 4321 800 + 16571 chrM 5093 798 + 16775 66,3:0,69,0:1,662 EG2=4.6e-75 E=2.4e-84
+160 chrM 2908 255 + 16571 chrM 3629 255 + 16775 146,0:1,53,1:0,55 EG2=2.3e-59 E=1.2e-68
+149 chrM 1042 401 + 16571 chrM 1702 407 + 16775 114,0:2,92,0:4,33,0:1,27,0:1,45,1:0,32,1:0,56 EG2=4e-54 E=2.1e-63
+122 chrM 2409 334 + 16571 chrM 3112 338 + 16775 41,2:0,38,0:1,32,0:2,37,0:3,184 EG2=2.8e-41 E=1.5e-50
+114 chrM 5208 523 + 16571 chrM 5978 529 + 16775 233,3:0,84,0:5,39,0:3,14,1:0,69,0:2,80 EG2=1.8e-37 E=9.9e-47
+108 chrM 595 352 + 16571 chrM 1243 356 + 16775 56,1:0,82,0:3,63,0:1,19,0:1,55,1:0,57,0:1,18 EG2=1.3e-34 E=7.1e-44
+95 chrM 1742 281 + 16571 chrM 2432 295 + 16775 26,0:1,12,0:4,25,0:4,11,0:2,57,1:0,42,0:1,24,0:3,83 EG2=2e-28 E=1.1e-37
+92 chrM 10106 346 + 16571 chrM 10825 349 + 16775 299,0:3,47 EG2=5.4e-27 E=2.9e-36
+90 chrM 10518 272 + 16571 chrM 11243 272 + 16775 272 EG2=4.9e-26 E=2.6e-35
+72 chrM 8638 216 + 16571 chrM 9353 216 + 16775 216 EG2=1.8e-17 E=9.8e-27
+67 chrM 8897 151 + 16571 chrM 9612 151 + 16775 151 EG2=4.3e-15 E=2.4e-24
+60 chrM 12211 128 + 16571 chrM 12944 128 + 16775 128 EG2=9.2e-12 E=5.1e-21
+48 chrM 14425 318 + 16571 chrM 16456 319 + 16775 247,0:2,54,1:0,16 EG2=4.8e-06 E=2.6e-15
+40 chrM 1546 60 + 16571 chrM 2216 60 + 16775 60 EG2=0.031 E=1.7e-11
+36 chrM 5764 129 + 16571 chrM 6510 134 + 16775 78,0:2,33,0:3,18 EG2=2.5 E=1.4e-09
+33 chrM 1450 53 + 16571 chrM 2122 53 + 16775 53 EG2=66 E=3.6e-08
+26 chrM 198 48 + 16571 chrM 856 48 + 16775 48 EG2=1.4e+05 E=7.8e-05
+25 chrM 3237 70 + 16571 chrM 3973 69 + 16775 38,1:0,31 EG2=4.2e+05 E=0.00023
+24 chrM 2807 38 + 16571 chrM 3520 38 + 16775 38 EG2=1.3e+06 E=0.0007
+24 chrM 3279 28 + 16571 chrM 10177 28 - 16775 28 EG2=1.3e+06 E=0.0007
+23 chrM 15975 49 + 16571 chrM 16128 49 + 16775 49 EG2=3.8e+06 E=0.0021
+22 chrM 14065 78 + 16571 chrM 14801 78 + 16775 78 EG2=1.1e+07 E=0.0063
+19 chrM 14757 47 + 16571 chrM 14646 47 + 16775 47 EG2=3e+08 E=0.17
+18 chrM 10947 40 + 16571 chrM 13143 40 + 16775 40 EG2=9.1e+08 E=0.5
+17 chrM 2171 23 + 16571 chrM 2890 23 + 16775 23 EG2=2.7e+09 E=1.5
+17 chrM 2287 35 + 16571 chrM 2996 35 + 16775 35 EG2=2.7e+09 E=1.5
+17 chrM 4152 43 + 16571 chrM 2363 43 + 16775 43 EG2=2.7e+09 E=1.5
+17 chrM 5842 33 + 16571 chrM 3861 33 - 16775 33 EG2=2.7e+09 E=1.5
+17 chrM 8549 35 + 16571 chrM 473 35 + 16775 35 EG2=2.7e+09 E=1.5
+16 chrM 13128 26 + 16571 chrM 1473 26 - 16775 26 EG2=8.1e+09 E=4.5
+16 chrM 13647 60 + 16571 chrM 9068 60 + 16775 60 EG2=8.1e+09 E=4.5
+16 chrM 14155 42 + 16571 chrM 16201 42 + 16775 42 EG2=8.1e+09 E=4.5
+16 chrM 15450 32 + 16571 chrM 13086 32 + 16775 32 EG2=8.1e+09 E=4.5
+16 chrM 1668 36 + 16571 chrM 1653 36 + 16775 36 EG2=8.1e+09 E=4.5
+16 chrM 5427 26 + 16571 chrM 16421 26 + 16775 26 EG2=8.1e+09 E=4.5
+16 chrM 8312 24 + 16571 chrM 9034 24 + 16775 24 EG2=8.1e+09 E=4.5
+16 chrM 8362 42 + 16571 chrM 9080 42 + 16775 42 EG2=8.1e+09 E=4.5
+16 chrM 9094 38 + 16571 chrM 13088 38 + 16775 38 EG2=8.1e+09 E=4.5
+15 chrM 473 27 + 16571 chrM 5926 27 + 16775 27 EG2=2.4e+10 E=13
+15 chrM 4761 23 + 16571 chrM 9904 23 - 16775 23 EG2=2.4e+10 E=13
+15 chrM 6447 43 + 16571 chrM 9290 43 + 16775 43 EG2=2.4e+10 E=13
+15 chrM 6518 37 + 16571 chrM 3056 37 + 16775 37 EG2=2.4e+10 E=13
+# batch 1
+18 chrM 15816 34 + 16571 chr32 172 34 + 1028 34 EG2=9.1e+08 E=0.03
+15 chrM 13147 33 + 16571 chr32 78 33 + 1028 33 EG2=2.4e+10 E=0.8
+15 chrM 1676 23 + 16571 chr32 71 23 + 1028 23 EG2=2.4e+10 E=0.8
+15 chrM 6590 19 + 16571 chr32 2 19 + 1028 19 EG2=2.4e+10 E=0.8
+# Query sequences=2
+
TEST lastal -W19 -fTAB /tmp/last-test hg19-M.fa
#
# a=7 b=1 A=7 B=1 e=22 d=13 x=21 y=9 z=21 D=1e+06 E=1.13155e+07
=====================================
test/last-test.sh
=====================================
@@ -189,6 +189,7 @@ trap 'rm -f $db*' EXIT
# culling
try lastal -D1000 -fTAB -K2 $db galGal3-M-32.fa
+ try lastal -D1000 -fTAB -K0 $db galGal3-M-32.fa
# minimizers
lastdb -W3 -R10 $db galGal3-M-32.fa
=====================================
test/maf-convert-test.out
=====================================
@@ -8304,6 +8304,11 @@ Sbjct: 9000 TACGCCTAACCGCTAACATTACTGCAG 9026
97 chrM 59.30 86 35 0 1 86 570 655
98 chrM 67.86 84 27 0 84 1 6926 7009
99 chrM 79.31 87 18 0 87 1 8940 9026
+chrUn_KI270748v1 UN-L1MA6_pol#LINE/L1 63.82 633 194 13 13905 15715 658 1273 0 1.08e+03
+chrUn_KI270748v1 UN-L1PA2_pol#LINE/L1 93.39 227 15 0 3860 4540 1049 1275 1.5e-169 603
+chrUn_KI270748v1 UN-L1MA6_pol#LINE/L1 62.18 386 107 14 3661 2577 518 879 2.5e-152 546
+chrUn_KI270748v1 UN-L1MA6_pol#LINE/L1 61.64 292 89 8 90089 89272 884 1164 2e-147 530
+chrUn_KI270748v1 UN-L1PA16_pol#LINE/L1 64.07 359 96 11 17572 18588 527 864 3.8e-142 512
chain 450 chr1 249250621 + 231468663 231468738 SRR359290.9002 75 + 0 75 1
75
chain 450 chr11 135006516 + 35273430 35273505 SRR359290.9010 75 + 0 75 2
@@ -8933,6 +8938,12 @@ chr19 maf-convert match 1395388 1395484 . - . ID=102.72;Name=102:4-102
chr19 maf-convert match_part 1395388 1395484 291 - . Target=102 4 102;Name=102:4-102;Parent=102.72
chr22 maf-convert match 20726589 20726617 . - . ID=102.73;Name=102:69-95
chr22 maf-convert match_part 20726589 20726617 115 - . Target=102 69 95;Name=102:69-95;Parent=102.73
+##gff-version 3
+chrUn_KI270748v1 maf-convert match 13905 15715 3177.2 + . Target=UN-L1MA6_pol#LINE/L1 658 1273;Name=UN-L1MA6_pol#LINE/L1:658-1273
+chrUn_KI270748v1 maf-convert match 3860 4540 1775.7 + . Target=UN-L1PA2_pol#LINE/L1 1049 1275;Name=UN-L1PA2_pol#LINE/L1:1049-1275
+chrUn_KI270748v1 maf-convert match 2577 3661 1607.4 - . Target=UN-L1MA6_pol#LINE/L1 518 879;Name=UN-L1MA6_pol#LINE/L1:518-879
+chrUn_KI270748v1 maf-convert match 89272 90089 1559.7 - . Target=UN-L1MA6_pol#LINE/L1 884 1164;Name=UN-L1MA6_pol#LINE/L1:884-1164
+chrUn_KI270748v1 maf-convert match 17572 18588 1508.0 + . Target=UN-L1PA16_pol#LINE/L1 527 864;Name=UN-L1PA16_pol#LINE/L1:527-864
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
@@ -12112,6 +12123,29 @@ SRR359290.9033 1 CAAAGTGCTGGGATTGCAGGCATAAGCCACTGTGCGTGGCCA 42
606 8 0 0 4 8 17 34 + 90089 2478 48 670 chrX 156040895 23075589 23076237 22 9,31,26,2,35,9,4,43,7,56,10,9,13,90,10,40,50,5,68,65,2,30, 48,58,89,115,122,158,167,171,214,221,277,287,296,309,399,410,450,500,505,573,638,640, 23075589,23075598,23075630,23075663,23075665,23075700,23075710,23075716,23075760,23075770,23075827,23075838,23075848,23075864,23075956,23075966,23076007,23076058,23076064,23076135,23076203,23076207,
100 1 0 0 0 0 5 6 - 90089 2478 675 776 chr7 159345973 121351142 121351249 6 9,10,41,2,20,19, 1702,1711,1721,1762,1764,1784, 121351142,121351152,121351164,121351206,121351209,121351230,
1645 8 0 0 2 2 31 44 - 90089 2478 776 2431 chr7 159345973 121348853 121350550 34 45,14,4,43,11,65,37,114,184,15,47,75,120,53,3,25,117,94,52,69,19,94,51,8,84,40,4,46,1,8,13,26,22,50, 47,92,106,110,153,164,230,267,381,565,580,627,702,822,875,878,903,1020,1114,1166,1235,1254,1348,1399,1407,1491,1531,1535,1581,1582,1590,1604,1630,1652, 121348853,121348899,121348915,121348920,121348964,121348976,121349041,121349079,121349195,121349381,121349397,121349445,121349523,121349646,121349701,121349705,121349732,121349850,121349945,121349999,121350069,121350089,121350184,121350236,121350246,121350331,121350372,121350377,121350424,121350426,121350435,121350448,121350475,121350500,
+54 159 0 0 5 19 0 0 ++ Q2LCP8 491 110 342 chrM 16775 5258 5897 6 83,15,45,6,14,50, 110,199,219,268,277,292, 5258,5507,5552,5687,5705,5747,
+18 34 0 0 0 0 0 0 ++ Q2LCP8 491 379 431 chrM 16775 5972 6128 1 52, 379, 5972,
+24 60 0 0 1 3 1 3 ++ Q2LCP8 491 101 188 chrM 16775 11752 12007 3 18,28,38, 101,122,150, 11752,11806,11893,
+16 30 0 0 1 3 1 3 ++ Q2LCP8 491 170 219 chrM 16775 13892 14033 3 10,23,13, 170,180,206, 13892,13925,13994,
+8 19 0 0 0 0 0 0 ++ Q2LCP8 491 394 421 chrM 16775 11767 11848 1 27, 394, 11767,
+10 28 0 0 0 0 1 1 ++ Q2LCP8 491 16 54 chrM 16775 14080 14195 2 7,31, 16,23, 14080,14102,
+11 46 0 0 0 0 0 -1 ++ Q2LCP8 491 27 84 chrM 16775 13941 14111 2 5,52, 27,32, 13941,13955,
+10 14 0 0 0 0 0 0 ++ Q2LCP8 491 166 190 chrM 16775 54 126 1 24, 166, 54,
+10 12 0 0 0 0 0 0 ++ Q2LCP8 491 292 314 chrM 16775 12313 12379 1 22, 292, 12313,
+7 8 0 0 0 0 0 0 ++ Q2LCP8 491 388 403 chrM 16775 12589 12634 1 15, 388, 12589,
+17 49 0 0 0 0 1 6 ++ Q2LCP8 491 10 76 chrM 16775 11677 11881 2 52,14, 10,62, 11677,11839,
+13 30 0 0 1 1 0 0 ++ Q2LCP8 491 15 59 chrM 16775 8444 8573 2 13,30, 15,29, 8444,8483,
+43 148 0 0 4 9 1 3 ++ Q2LCP8 491 117 317 chrM 16775 13445 14021 6 21,43,39,36,26,26, 117,138,184,226,264,291, 13445,13511,13640,13757,13865,13943,
+15 21 0 0 1 6 0 0 ++ Q2LCP8 491 375 417 chrM 16775 5606 5714 2 18,18, 375,399, 5606,5660,
+12 18 0 0 0 0 1 9 ++ Q2LCP8 491 374 404 chrM 16775 7064 7163 2 18,12, 374,392, 7064,7127,
+11 8 0 0 1 1 0 0 +- Q2LCP8 491 202 222 chrM 16775 7305 7362 2 9,10, 202,212, 9413,9440,
+7 27 0 0 0 0 0 0 +- Q2LCP8 491 0 34 chrM 16775 16477 16579 1 34, 0, 196,
+8 12 0 0 0 0 0 0 +- Q2LCP8 491 406 426 chrM 16775 14506 14566 1 20, 406, 2209,
+404 194 0 0 12 18 12 17 ++ UN-L1MA6_pol#LINE/L1 1275 657 1273 chrUn_KI270748v1 93321 13904 15715 14 59,30,16,143,13,18,19,15,43,67,48,18,75,34, 657,717,747,766,910,924,944,964,980,1024,1092,1142,1163,1239, 13904,14082,14173,14223,14654,14695,14749,14807,14853,14983,15185,15331,15387,15613,
+212 15 0 0 0 0 0 0 ++ UN-L1PA2_pol#LINE/L1 1276 1048 1275 chrUn_KI270748v1 93321 3859 4540 1 227, 1048, 3859,
+240 107 0 0 12 15 11 44 +- UN-L1MA6_pol#LINE/L1 1275 517 879 chrUn_KI270748v1 93321 2576 3661 15 10,16,12,5,4,8,13,92,15,35,11,14,24,80,8, 517,528,544,557,563,570,579,593,686,703,739,751,765,790,871, 89660,89692,89742,89780,89797,89810,89834,89873,90150,90195,90301,90335,90407,90480,90721,
+180 89 0 0 7 12 7 11 +- UN-L1MA6_pol#LINE/L1 1275 883 1164 chrUn_KI270748v1 93321 89271 90089 9 7,33,40,84,4,44,37,12,8, 883,891,925,966,1054,1061,1105,1143,1156, 3232,3255,3355,3476,3730,3742,3875,3988,4026,
+230 96 0 0 9 12 8 39 ++ UN-L1PA16_pol#LINE/L1 1276 526 864 chrUn_KI270748v1 93321 17571 18588 12 102,63,21,18,14,14,6,38,7,22,8,13, 526,629,693,715,735,749,766,773,812,820,843,851, 17571,17877,18066,18129,18185,18256,18300,18319,18434,18457,18524,18549,
0 16 chrM 13914 71 3=1X11=1X28=2X21=1X15=1X3= * 0 0 TCGAATTCTACCCTAACATCACACACCGCACAATCCCCTATCTAAACCTTCTTACGAGCCAAAACCTACCCCTACTCCTCCTAAACC C at A=<3CC@@CBCCC8CBAC?BBBC?BB at BCCBBBCCCCBBBCBCABCBBBCCCCBCBBAC@CCBBCCACCACCCCCCBCCACCA?B NM:i:6 AS:i:429
1 0 chrM 1544 71 14=1X9=1X12=1X9=1X1=1X5=1X4=1X9=1X4=1X1=1X6=3X * 0 0 TTATATAGAGGAGATAAGTCGTAATATGGTAAGTGTATTGGAAAGTGTATTTGGATGAACTAGAGTGTAGTTTAATATAAAGCATTT BB at 1;?@B at BBBC@BBBCACBBA>B??=?A at B?B?B=7 at 4BB;B>@@@A?>=B at A@>@7>BA>BA6BA?@@B@@?B?AABBAB=<>B NM:i:13 AS:i:420
10 0 chrM 3291 69 2=2X1=1X2=1X4=2X1=1X3=3X4=2X2=2X1=2X2=1X1=2X1=1X6=3X7=27H * 0 0 TTTTTTTTTTTAATCATATATTTATGGTTAATTTTTTATTTTTTATTGTATTTATTCTAA @6)>B+A9<)?>>A(?A=-(48/<5?=1>4>:B@@<-:@@5;/9==ABA47*5':B<### NM:i:23 AS:i:207
@@ -23615,3 +23649,8 @@ SRR359290.9984 16 chrX 86355890 255 2H14=1X9=49H * 0 0 GAAAGGGGAAGGAAAAGAAGGAAG
156 chr16 29595844 46 + 90354753 SRR359290.9033 0 46 + 75 46
156 chr16 30335586 46 + 90354753 SRR359290.9033 0 46 + 75 46
156 chr3 37456613 42 + 198022430 SRR359290.9033 0 42 + 75 42
+3177.2 UN-L1MA6_pol#LINE/L1 657 616 + 1275 chrUn_KI270748v1 13904 1811 + 93321 59,1:1,30,0:1,16,3:2,143,1:2,13,1:2,18,2:0,19,1:1,15,1:1,43,1:1,67,1:1,48,2:2,18,3:2,75,1:1,34 EG2=0 E=0
+1775.7 UN-L1PA2_pol#LINE/L1 1048 227 + 1276 chrUn_KI270748v1 3859 681 + 93321 227 EG2=2.9e-164 E=1.5e-169
+1607.4 UN-L1MA6_pol#LINE/L1 517 362 + 1275 chrUn_KI270748v1 89660 1085 - 93321 10,1:2,16,0:2,12,1:2,5,1:2,4,3:1,8,1:0,13,1:0,92,1:1,15,2:0,35,1:1,11,1:1,14,0:30,24,1:1,80,1:1,8 EG2=5e-147 E=2.5e-152
+1559.7 UN-L1MA6_pol#LINE/L1 883 281 + 1275 chrUn_KI270748v1 3232 818 - 93321 7,1:2,33,1:1,40,1:1,84,4:2,4,3:0,44,0:1,37,1:2,12,1:2,8 EG2=3.8e-142 E=2e-147
+1508.0 UN-L1PA16_pol#LINE/L1 526 338 + 1276 chrUn_KI270748v1 17571 1017 + 93321 102,1:0,63,1:0,21,1:0,18,2:2,14,0:29,14,3:2,6,1:1,38,1:1,7,1:2,22,1:1,8,0:1,13 EG2=7.4e-137 E=3.8e-142
=====================================
test/maf-convert-test.sh
=====================================
@@ -18,9 +18,11 @@ maf2=bs100.maf
head -n999 $maf1 | $r -l100 blast
$r blast $maf2
$r blasttab $maf2
+ $r blasttab frameshift-new.maf
head -n999 $maf1 | $r chain
$r gff 102.maf
$r -J1e9 gff 102.maf
+ $r gff frameshift-new.maf
$r html -l100 $maf2
head -n999 $maf1 | $r -n html
head -n999 $maf1 | $r psl
@@ -29,9 +31,12 @@ maf2=bs100.maf
$r -j1e9 psl 102.maf
$r -J1e9 psl 102.maf
$r psl 90089.maf
+ $r psl frameshift-old.maf
+ $r psl frameshift-new.maf
$r -n sam $maf2
head -n999 $maf1 | $r -r 'ID:1 PL:ILLUMINA SM:x' sam
$r -d sam $maf1
head -n999 $maf1 | $r -n tab
head -n999 $maf1 | $r tab
+ $r -n tab frameshift-new.maf
} | diff -u maf-convert-test.out -
=====================================
test/maf-swap-test.out
=====================================
@@ -769,3 +769,63 @@ p T\`hkkecba]\\`bbbceieae`]\[Z[ZZ[Z\^_^b^YY\[__cd
p z~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}|yyyy}~~~~~}|yyyz~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{zz{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||{{zz{~~~~~~~~~~~~~~~~~~~~~~|yywutsponnmmlllllmrw{~~~~~~~~~~~~~~~}}}}}~~~~~~~~~~|yxxxxx{|}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~zywwvssrqqqruwx}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{vrmlllkkkkkkllmnnooooppqrrrtuz~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|{{{yyyyy{{~~~~~~~~~~~~~~~~~~~~~~~~~~~}|{{|~~~~~~}xxwwurrpnjea````````______________``bccdddefglqvz~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~}||}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~yuttssstvxxz{|{|{||{{zyxxyz{{{||}}||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{wsnmmmmmmmllllllmnpqrrrrrrsvwx{}~~~~~~~~~~~~~~~~~~~|wsrpmid`[ZXXWWWWWWWWVTPLKJIHFEDA>98888888888888888888888763/+&%$
+TEST maf-swap frameshift-new.maf
+# LAST version 1243
+#
+# a=21 b=1 A=27 B=1 F=-2,0,-3,0 e=165.797 d=70 x=165 y=42 z=165 D=1e+09 E=18.1715
+# R=01 u=2 s=2 S=0 M=0 T=0 m=500 l=1 n=500 K=1 k=1 w=1000 t=4.24284 j=3 Q=0
+# ../aant/hg38/last/rmsk-hg38
+# Reference sequences=38335 normal letters=27515653
+# lambda=0.235691 K=1.69939
+#
+# AAA AAC AAG AAT ACA ACC ACG ACT AGA AGC AGG AGT ATA ATC ATG ATT CAA CAC CAG CAT CCA CCC CCG CCT CGA CGC CGG CGT CTA CTC CTG CTT GAA GAC GAG GAT GCA GCC GCG GCT GGA GGC GGG GGT GTA GTC GTG GTT TAA TAC TAG TAT TCA TCC TCG TCT TGA TGC TGG TGT TTA TTC TTG TTT
+# A -7 -5 -7 -6 3 3 1 3 -6 -3 -6 -2 -2 -3 -2 -4 -7 -6 -5 -6 -1 -1 -3 -1 -5 -4 -7 -5 -5 -6 -4 -5 -2 -2 -3 -3 9 9 7 10 -1 0 -2 1 4 4 4 4 -5 -9 -6 -8 2 1 0 1 -8 -7 -11 -6 -4 -6 -2 -5
+# C -11 -4 -11 -5 -7 -4 -11 -5 -8 2 -7 2 -9 -6 -11 -8 -7 1 -6 2 -12 -7 -9 -7 -1 8 -2 8 -10 -6 -6 -4 -12 -6 -10 -6 -6 -6 -29 -5 -8 3 -6 1 -10 -6 -7 -6 -2 5 0 6 -6 -1 -4 0 3 13 1 13 -7 0 -6 1
+# D -4 4 -3 4 -9 -3 -7 -4 -7 0 -7 1 -12 -7 -9 -8 -4 1 -5 0 -10 -7 -10 -6 -27 -1 -6 -3 -15 -9 -14 -10 2 11 3 10 -7 -1 -3 -1 -2 5 -2 5 -6 0 -6 -1 -2 1 -3 0 -9 -5 -16 -6 -8 -3 -12 -4 -13 -8 -10 -10
+# E 2 -2 1 -1 -5 -8 -8 -6 -3 -4 -4 -5 -7 -12 -7 -12 0 -5 0 -5 -8 -9 -11 -11 -2 -11 -5 -9 -10 -13 -10 -11 9 3 8 4 -1 -6 -1 -6 2 -2 2 -1 -2 -6 -3 -7 3 -6 0 -5 -9 -9 -9 -8 -4 -9 -10 -8 -9 -14 -8 -12
+# F -17 -9 -16 -8 -11 -6 -7 -6 -16 -8 -13 -8 -8 -2 -6 -2 -10 -3 -10 -1 -12 -5 -8 -6 -11 -5 -4 -1 -4 3 -2 2 -18 -11 -18 -11 -9 -10 -11 -7 -13 -10 -12 -9 -6 1 -7 -1 -6 2 -4 3 -6 1 -2 1 -7 1 -8 2 2 11 2 11
+# G -4 -3 -3 -3 -6 -6 -5 -6 4 3 3 3 -8 -10 -8 -9 -4 -5 -4 -3 -10 -7 -3 -7 0 2 2 0 -13 -13 -14 -13 3 1 3 2 -1 0 1 -1 11 10 10 10 -1 -1 -2 -2 -2 -7 -4 -6 -10 -7 -8 -6 1 -2 -3 -1 -10 -13 -11 -10
+# H -6 0 -5 0 -8 -4 -25 -4 -9 -3 -6 -1 -13 -9 -11 -9 3 11 3 11 -5 1 -1 0 -1 7 2 9 -6 -1 -8 -1 -7 -2 -4 -1 -10 -6 -4 -6 -7 -3 -6 -2 -11 -5 -10 -5 -1 6 0 6 -7 -1 -3 -2 -3 2 -6 4 -8 -3 -9 -3
+# I -5 -5 -8 -4 1 1 1 2 -4 -2 -6 -2 7 7 3 7 -9 -10 -10 -9 -7 -8 -8 -9 -6 -6 -21 -7 1 -1 -2 -1 -11 -11 -10 -9 -4 -5 -2 -4 -8 -8 -9 -7 4 3 1 3 -6 -8 -8 -9 -6 -8 -7 -7 -7 -7 -15 -9 0 -3 -2 -2
+# K 7 1 7 1 -1 -5 0 -5 3 -2 2 -1 -3 -10 -3 -8 0 -5 -1 -5 -7 -10 -4 -10 -2 -8 -5 -5 -8 -13 -10 -13 -1 -7 0 -6 -6 -9 -5 -8 -3 -8 -4 -6 -6 -10 -7 -9 2 -9 -1 -8 -7 -10 -12 -10 -3 -9 -8 -10 -6 -14 -9 -10
+# L -10 -10 -10 -11 -5 -7 -2 -4 -9 -8 -8 -8 0 0 1 0 -4 -2 -2 -2 -1 -1 3 -1 0 0 -3 -1 7 7 7 7 -12 -12 -10 -13 -8 -6 -1 -6 -11 -11 -8 -10 0 -1 0 -1 -3 -4 -4 -5 -2 -4 1 -4 -2 -4 -5 -3 7 3 6 3
+# M -6 -7 -2 -6 1 -3 7 -3 -4 -6 1 -6 4 1 11 2 -7 -8 -5 -9 -6 -8 -1 -9 -4 -10 -8 -3 0 -2 4 -2 -8 -12 -4 -10 -3 -5 2 -5 -10 -8 -4 -10 1 -3 6 -2 -5 -9 -3 -10 -4 -8 2 -8 -6 -12 -6 -8 1 -5 5 -3
+# N 0 9 1 9 -5 1 -3 0 -3 5 -2 5 -7 -3 -7 -3 -3 1 -5 1 -9 -6 -11 -6 -6 -2 -5 -3 -14 -9 -13 -9 -4 2 -3 2 -8 -4 -9 -6 -6 -1 -6 -1 -9 -5 -9 -7 -2 -1 -5 0 -9 -5 -29 -6 -6 -4 -11 -4 -10 -9 -13 -7
+# P -9 -9 -11 -9 -2 -2 -3 -1 -10 -9 -7 -7 -7 -8 -8 -8 -1 -1 -4 -2 10 10 9 10 1 2 0 2 4 2 2 2 -11 -8 -12 -9 -1 0 1 -1 -10 -7 -8 -8 -5 -6 -5 -6 -3 -5 -8 -5 5 5 4 5 -1 -3 -8 -4 -2 -3 -3 -3
+# Q -1 -4 0 -4 -6 -5 -6 -7 -4 -5 -3 -6 -10 -12 -7 -11 10 2 10 3 0 -4 2 -5 6 0 4 1 -2 -8 -2 -7 0 -3 1 -5 -7 -9 -7 -6 -4 -6 -3 -8 -7 -8 -6 -9 6 -2 5 -2 -3 -4 -1 -5 2 -4 -2 -5 -3 -9 -4 -8
+# R 2 -4 3 -3 -1 -6 -1 -6 9 1 8 2 -3 -9 -3 -8 2 1 2 0 -7 -5 -6 -5 6 4 5 3 -8 -7 -8 -8 -4 -8 -4 -8 -7 -8 -3 -7 1 -4 2 -3 -7 -10 -6 -8 0 -5 -1 -4 -6 -7 -6 -6 5 1 -1 0 -6 -9 -7 -8
+# S -6 0 -5 -1 0 2 -1 2 -3 6 -3 5 -5 -3 -5 -4 -5 -3 -4 -3 0 2 -1 1 -5 0 -4 -1 -5 -5 -4 -4 -6 -5 -6 -4 0 1 -1 1 -5 0 -4 -1 -5 -4 -4 -4 -1 -2 -4 -3 8 8 7 8 -1 0 -7 -1 1 0 1 0
+# T -3 -2 -3 -2 7 7 6 7 -2 1 -3 0 2 1 1 1 -5 -5 -5 -6 -2 -2 -2 -1 -5 -7 -4 -4 -4 -6 -3 -6 -6 -6 -6 -6 3 1 2 2 -5 -5 -6 -6 0 -1 0 -1 -4 -8 -6 -6 2 0 1 1 -5 -5 -12 -7 -3 -6 -3 -5
+# V -7 -6 -8 -7 -1 0 -1 1 -5 -5 -5 -4 3 4 2 4 -9 -6 -6 -7 -7 -5 -5 -5 -4 -7 -6 -5 -1 -2 -1 -1 -4 -5 -3 -4 1 2 4 2 -3 -3 0 -2 8 9 9 9 -5 -11 -6 -8 -5 -7 -3 -6 -7 -7 -11 -7 0 -3 -1 -1
+# W -14 -18 -7 -13 -16 -15 -7 -14 -6 -9 1 -9 -13 -23 -10 -13 -5 -7 3 -5 -11 -14 -2 -26 4 -4 10 -1 -9 -10 -4 -11 -12 -14 -4 -19 -14 -12 -5 -19 -5 -9 4 -8 -12 -18 -7 -14 2 -3 11 -2 -3 -11 5 -8 10 4 14 4 -3 -9 4 -5
+# Y -11 -2 -11 -2 -14 -7 -9 -8 -15 -5 -11 -4 -13 -9 -10 -8 -5 5 -3 6 -10 -6 -7 -5 -11 2 -4 3 -9 -4 -9 -5 -12 -4 -11 -2 -11 -9 -28 -8 -15 -7 -10 -5 -13 -5 -10 -8 3 11 4 11 -8 0 -6 0 -3 5 -5 6 -6 3 -5 2
+# * -27 -29 -25 -27 -29 -28 -30 -28 -20 -19 -17 1 -28 -29 -28 -29 0 -20 5 -29 -29 -29 -29 -27 9 -29 4 -29 -25 -29 -26 -29 -24 -29 -28 -29 -29 -28 -29 -29 4 -29 -25 -25 -28 -30 -28 -30 14 -5 10 -12 -26 -29 6 -29 14 -27 -3 -8 -10 -29 -29 -29
+# X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+#
+# Coordinates are 0-based. For - strand matches, coordinates
+# in the reverse complement of the 2nd sequence are used.
+#
+# name start alnSize strand seqSize alignment
+#
+# batch 0
+a score=3177.2 EG2=0 E=0
+s chrUn_KI270748v1 13904 1811 + 93321 CAAGGGTGCCCACTCTCAGAACTTCTATTCAACATAGTACTGGATGTCCTAGCCAGAGCAATTAGGCAAAAGAAAGaaaTAAAAGGCATGAAAATTGGAAAGGAAGAAGTTAAATTGTTTCTGTTTGCAGTTGACATGATCTTATATATAGAAAACACCAATAACTCTGCCAAAAAA---TTTAGAATTCATAAATGAATTTAGTAAAGTTGCAGGATACAATGTGAACATACAAAATTCAGTAGCATTTCTACACATCAACAACAAACTATACAAAAAAagaaatcaagaaaacaATCCTATTTATAATAGCAACAAAA---------AATACTTAGATGTAAATTTAAACAAAGAGGTGAATGATCTTTACACTGAAAACTACAAAACATTGATGAAAACAATTGAAGAAGCCACAAATAAATGGAAAGATATCTCATGTTCATGGATTGGAAAAAGTAATATGTTTGAAATGTCCATACTATCCAAAGTGATGTACATATTGAATGCAATCTCTATCAAAATTCCTATGACATTTTCCCACAGAAATAGAAAAACAACTCTCAAATCTGTATGGAATCACAAAAAACTCTGAAAAGCCAAAATAATCTTGATCGAAAAAAGCAAGGCAGGAGATATCACATTACCTGACTTCAAATTATACTACATAGCTATAGCAATCGAAACACCATGGTACTGGCATAAACGCAGACACATAGACCAATTACACAGAATAAAGAGCCCATAAATAAATCTACAT---ATTATAGTCAATTGACTTTCAACAAAGGTGCCAGGAACACA---CATGGGGAAAGAACAGTCTCTTCAAAAAATGGTGTTGAGAAAACTGAATGTCCACA------AGATTGATCTTAGGCCCTTATTTCATACCATATAAAAATATAAATTCAAAATAAGTT---AGACTTAAATGTAAGACCTAGCACTATAGAACTCCTAGAAGAAAAC---AGGGGAATAACTCCAAGACATTGGTCTGGGCAATAATATTTTATGATATGACTCTAAAGCACAGGCAAGAAAAGCAACAAAACACAAATGGAATAGCATCAACCTAAAAAGCTTCTGCGCAGCAAAAGAA---AGTCAACAGAGTGAAGTGATAACCTACAAAATGGGAGGAATTATCTGCAAACTATACATTTGATAAGAGGCTAATGTCCAAAATATCTTAGGAACTCAAACAACACAataataagaaAACAAGGAACCCTAATGAAAAATTGACAAAGGATCTAAATAGACATTTCTCAAAAGAAGACATACAAATGGCCAACAGATATATA---AAAATGCTAATTATCACTGATCATCAGAGAAATGCATATTAAAACTACAATAAAATGCCATTTCACATCCGTTAGAATGGCTGTTACAGAAAAGGCAGAAGATACCAAGTGTTGGAGAGGATGTGGAGAAAAGGAAAACCTTGTA------ATTGTTGAGAATGTAAACTATTTCAGCCATTGTAAAAGACAGTATAAGTGATTCTG---------TAAAAATAGAATTACCATATGATTCAGTAATGCTATTTCTGGGCATATATTAAAAAGATATCAAATCAGTGTGTCAATGAGTTATCTGTACTCCCATATTTATTGTAGCATTATTCACAACAGCCAAGATGTGGAATTAACTTAAGTATCCATCGACACATGAGTGGATGAAGAAAATGTGGTACACATACACAATAGAATAGTATACAACCTTAaaaaataaaaaa---aGTATCATTTGTGACAACATGAATGAACCGGGAGGACATTATACTGAGTAAAATAATCCAGGCACAGAAAGCCAGATACTGCATAATCTCACTTGTATGTGGA
+s UN-L1MA6_pol#LINE/L1 657 616 + 1275 GlnGlyCysProLeuSerProLeuLeuPheAsnIleValLeuGluValLeuAlaArgAlaIleArgGlnGluLysGluIleLysGlyIleGlnIleGlyLysGluGluValLysLeuSerLeuPheAlaAspAspMetIleLeuTyrIleGluAsnProLysAspSerThrLysLysLeu-LeuGluLeuIleAsnGluPheSerLysValAlaGlyTyrLysIleAsnIleGlnLysSerValAlaPheLeuTyrAlaAsnSerGluLeu-SerGluLysGluIleLyslysthrilepropheThrIleAlaThrLysLysIleLys--TyrLeuGlyIleAsnLeuThrLysGluValLysAspLeuTyrXaaGluAsnTyrLysThrLeuMetLysGluIleGluGluAspThrAsnLysTrpLysAspIleProCysSerTrpIleGlyArgIleAsnIleValLysMetSerIleLeuProLysAlaIleTyrArgPheAsnAlaIleProIleLysIleProMetThrPhePheThrGluIleGluLysThrIleLeuLysPheValTrpAsnHisLysArgProArgIleAlaLysAlaIleLeuSerLysLysAsnLysAlaGlyGlyIleThrLeuProAspPheLysIleTyrTyrLysAlaIleValThrLysThrAlaTrpTyrTrpHisLysAsnArgHisIleAspGlnTrpAsnArgIleGluSerProGluIleAsnProArgIle--TyrSerGlnLeuIlePheAspLysGlyAlaLysAsnThrGln--TrpGlyLysAspSerLeuPheAsnLysTrpCysTrpGluAsnTrpIleSerThrCysArgArgMetLysLeuAspProTyrLeuSerProTyrThrLysIleAsnSerLysTrpIleLys-AspLeuAsnValArgProGluThrMetLysLeuLeuGluGluAsnIle-GlyGluMetLeuHisAspIleGlyLeuGlyLysAspPheLeuAspLysThrSerLysAlaGlnAlaThrLysAlaLysIleAspLysTrpAspTyrIleLysLeuLysSerPheCysThrAlaLysGluThr-IleAsnArgValLysArgGlnProThrGluTrpGluLysIlePheAlaAsnTyrAlaSerAspLysGlyLeuIleSerArgIleTyrLysGluLeuLysGlnLeuAsnSerLysLysThrAsnAsnProIleXaaLysTrpAlaLysAspLeuAsnArgHisPheSerLysGluAspIleGlnMetAlaAsnArgTyrMetLys-LysCysSerThrSerLeuIleIleArgGluMetGlnIleLysThrThrMetArgTyrHisLeuThrProValArgMetAlaIleIleLysLysThrLysAspAsnLysCysTrpArgGlyCysGlyGluLysGlyThrLeuThrHisCys--TrpTrpGluCysLysLeuValGlnProLeuTrpLysThrValTrpArgPheLeuLysLysLeu--LysIleGluLeuProTyrAspProAlaIleProLeuLeuGlyIleTyrProLysGluMetLysSerValCysArgArgAspIleCysThrProMetPheIleAlaAlaLeuPheThrIleAlaLysIleTrpAsnGlnProLysCysProSerThrAspGluTrpIleLysLysMetTrpTyrIleTyrThrMetGluTyrTyrSerAlaIleLysLysAsnGluIle-LeuSerPheAlaThrThrTrpMetAsnLeuGluAspIleMetLeuSerGluIleSerGlnAlaGlnLysAspLysTyrArgMetIleSerLeuIleCysGly
+
+a score=1775.7 EG2=2.9e-164 E=1.5e-169
+s chrUn_KI270748v1 3859 681 + 93321 CTAATATCCGGAATCTACAATGAACCCAAACAAATTTACAAGAAaaaaacaaacaaCCCCATCAAAAAGTGGGCAAAGGATATGAACAGACACTTCTCAAAAGAAGACATTTATGCAGCCAAAAAACACATGAAAAAATGCTCACTATCACTGGCCATCAGAGAAATGCAAATCAAAACCACAATGAGATACCATCTTACACCAGTTAGAATGGCCATCATTAAAAAGTCAGGAAACAACAGGTGCTGGAGAGGATGTGGAGAAATAGGAACATTTTTACACTGTTGGTGGGACTGTAAACTAGTTCAACCATTGTGGAAGACAGTGTGGTGATTCCGCAGGGATCTAGAACTAGAAATACCATTTGACCCAGCCATCCCATTACTGGGTATATACCCAAAGGACTATAAATCATGCTGCTATAAAGACACATGCACACGTATGTTTACTGTGGCACTATTCACAATAGCAAAGACTTGGAACCAATCCAAATGTCCAACAATGATAGACTGGATTAAGAAAACGTGGCACATATACACCATGGAATACTATGCAGCCATAAAAAATGATGAGTTCATGTCCTTTGTAGGGACATGGATGAAGCTGGAAACCATCATTCTCAGCAAACAATCACAAGGACAAAAAACCAAACACCGCATGTTCTCACTCATAGGTGGGAAT
+s UN-L1PA2_pol#LINE/L1 1048 227 + 1276 LeuIleSerArgIleTyrAsnGluLeuLysGlnIleTyrLysLysLysThrAsnAsnProIleLysLysTrpAlaLysAspMetAsnArgHisPheSerLysGluAspIleTyrAlaAlaLysLysHisMetLysLysCysSerSerSerLeuAlaIleArgGluMetGlnIleLysThrThrMetArgTyrHisLeuThrProValArgMetAlaIleIleLysLysSerGlyAsnAsnArgCysTrpArgGlyCysGlyGluIleGlyThrLeuLeuHiscystrptrpaspcyslysLeuValGlnProLeuTrpLysSerValTrpArgPheLeuArgAspLeuGluLeuGluIleProPheAspProAlaIleProLeuLeuGlyIleTyrProLysAspTyrLysSerCysCysTyrLysAspThrCysThrArgMetPheIleAlaAlaLeuPheThrIleAlaLysThrTrpAsnGlnProLysCysProThrMetIleAspTrpIleLysLysMetTrpHisIleTyrThrMetGluTyrTyrAlaAlaIleLysAsnAspGluPheMetSerPheValGlyThrTrpMetLysLeuGluIleIleIleLeuSerLysLeuSerGlnGluGlnLysThrLysHisArgIlePheSerLeuIleGlyGlyAsn
+
+a score=1607.4 EG2=5e-147 E=2.5e-152
+s chrUn_KI270748v1 89660 1085 - 93321 aaggcaaacaAGGACACTATAAGAAAAGTA---TGGGCCAACCAATATCCCTGATGAACACAGATACAAAAGTCCTCAAAAAAAAGTACTAGCAAACAGAATTTAACAACATATTAGGAGA---ACATTTACCATGATAAA---GTGGATTTATCCTC---------CAGATGTTTCAGCAAACACAAATCA---AATGTGATAAACCACATTAACAGAATGAAGGATAAAAAA---ATAGCTATCTCTATATATGCAGAAAAAGCATTTGACTAAATTCAAAATCCTCTCATGACTAAACCTCTCAACAAATTGGGCATAGAAGGCATGTACCTTAACACAAAACAGGACATATATAACAAGCTCACAGCTCACATCATACCCAACAATGAAAAAGTGAAATCTTTTCTGCTAAGATCAAAAACAAGACAAGGATATTTATTCTCACTACTTCTATTCAACTTATTTCTGGAAGTCCTAGCCAGAGCAATTAAGCCAAATAAAGAAATAAAA---TATTCAAATTGAAAAGGaagaagtaaaaTTGTCTCTGTTTGATGAC------ATATTATATATAGGAAACCCTAAAAACTCCACCAAAAAGCTATTAGAAATGATAAATGAATTCAATAAAATTTCAGAATTCAAAATCAATGTACAAAACTCAGTA---GTTTCTTTACACTCACAACAAACTATATGACAAA---AATAAAGAAATCAATCTCATTCACAGTAGCATCAAaaaaaacgtattttttttGTTTAGGAGCACATTTAGGATAGTACttaggagtacatttaACCAAGGAGGTGAAAGATCTGTATTCTGAACACTATAAAACATTGATGAAA---AATTGTAGATGACACAAATACATGGAAAGATATTTTATGTTCATGGGTAGGAAGAATTAATATTCTTAAAATGTCCTTACTGCCCAAAGCGATTTATAGGTTTAATGCAATATTTATCAAAATTTCAATGTCATTCTTCACAGAAATAGAAAAAACAATTTGAAAATTTATATGGAACCACAAAGGATCCTGAATAACTAAAGGACTCTTGAGCAATAAGAACAAAGCTGAAGGCCTCACA---ATCTGACTTCAAAACATATTACAGG
+s UN-L1MA6_pol#LINE/L1 517 362 + 1275 LysProAspLysAspThrThrLysLysGluAsn--TyrArgProIleSerLeuMetAsnIleAspAlaLysIleLeuAsnLys--IleLeuAlaAsnArgIleGlnGlnHisIleLysLysIle--IleHisHisAspGlnVal--GlyPheIleProGlyMetGln-GlyTrpPheAsnIleArgLysSerIleAsnValIleHisHisIleAsnArgMetLysAspLysAsnHisMetIleIleSerIleAspAlaGluLysAlaPheAspLysIleGlnHisProPheMetIleLysThrLeuAsnLysLeuGlyIleGluGlyThrTyrLeuAsnThrIleLysAlaIleTyrAspLysProThrAlaAsnIleIleLeuAsnGlyGluLysLeuLysAlaPheProLeuArgSerGlyThrArgGlnGlyCysProLeuSerProLeuLeuPheAsnIleValLeuGluValLeuAlaArgAlaIleArgGlnGluLysGluIleLysGly-IleGlnIleGlyLysGluGluValLysLeuSerLeuPheAlaAspAspMetIleLeuTyrIleGluAsnProLysAspSerThrLysLysLeuLeuGluLeuIleAsnGluPheSerLysValAlaGlyTyrLysIleAsnIleGlnLysSerValAla-PheLeuTyrAlaAsnSerGluLeuSerGluLysGlu-IleLyslysthrilepropheThrIleAlaThrLysLysIle------------------------------LysTyrLeuGlyIleAsnLeuThrLysGluValLysAspLeuTyrXaaGluAsnTyrLysThrLeuMetLysGlu-IleGluGluAspThrAsnLysTrpLysAspIleProCysSerTrpIleGlyArgIleAsnIleValLysMetSerIleLeuProLysAlaIleTyrArgPheAsnAlaIleProIleLysIleProMetThrPhePheThrGluIleGluLysThrIleLeuLysPheValTrpAsnHisLysArgProArgIleAlaLysAlaIleLeuSerLysLysAsnLysAlaGlyGlyIleThrLeu-ProAspPheLysIleTyrTyrLys
+
+a score=1559.7 EG2=3.8e-142 E=2e-147
+s chrUn_KI270748v1 3232 818 - 93321 TaatcagcctggtaatcaCGT---AAAACAGACACATAGACCAGTGGAACAGAATAGAGAACCCAGATATAAATCCACACATTTACAGCCAGCTCATCTTCAGCAAAGGCACCAACAACATACGA---GCGAAAGGACGGTCTCTTCCATAAGTGGTGCAGGGGAAACTAGATAAAGATATGCAGAAGAATGAAACTAGACCCGTCTCTCTTACCATACACAGAAATCAAATCAGAATGGATTAAAGGT---AAAACTGAGACCTGAAAGTATAAAACTACTGGAAGAAAACATTAGGGAAGTGCTCCAGGACATTGTTCTCAGCAAAGACTTTTTCAGTAGGGCCCCAAAAGCACAGGCAACCAAAGCAAAAACAGACAAGTGAAATCACACCAAGCTAAGAACCCTCTGCAGACCAAAGGAAAAAGTCAACAAACTGAAGAGACAACCCACAGAATGGGAGAAAATACTTGCAAGCTACCCACCTGACAAGGGATTCATAACC------------AGGAGCTCAAACAA---------TAGCAAACAATTAATCGAATTTTAAAATGGGCAAGAGACCTGAGTAGACATTTCTCAAAAGAAGATGTACAAATGGCCAGCAGGTACATGAAAAAATGCTCAACATCACTAATCATCAGAGAAACGCAAATAAAAAACTGCAATGAGGTCTTCTCTCACCTCAGTTAAAATGGCTTTCGTCAAAAACGCAGGGAATAAGGGATGCTGGCGAGGATGTGGAGAAAGGGGGACCCTCACACACTGT---TGTGGGAACGTTGATTAGTACAACCACTATGGAAAACA---GATGGAGGCTCCTCAaaaaaccaaaa
+s UN-L1MA6_pol#LINE/L1 883 281 + 1275 LysThrAlaTrpTyrTrpHisLys--AsnArgHisIleAspGlnTrpAsnArgIleGluSerProGluIleAsnProArgIleTyrSerGlnLeuIlePheAspLysGlyAlaLysAsnThrGlnTrp-GlyLysAspSerLeuPheAsnLysTrpCysTrpGluAsnTrpIleSerThrCysArgArgMetLysLeuAspProTyrLeuSerProTyrThrLysIleAsnSerLysTrpIleLysAspLeu-AsnValArgProGluThrMetLysLeuLeuGluGluAsnIleGlyGluMetLeuHisAspIleGlyLeuGlyLysAspPheLeuAspLysThrSerLysAlaGlnAlaThrLysAlaLysIleAspLysTrpAspTyrIleLysLeuLysSerPheCysThrAlaLysGluThrIleAsnArgValLysArgGlnProThrGluTrpGluLysIlePheAlaAsnTyrAlaSerAspLysGlyLeuIleSerArgIleTyrLys--GluLeuLysGlnLeuAsnSerLysLysThrAsnAsnProIleXaaLysTrpAlaLysAspLeuAsnArgHisPheSerLysGluAspIleGlnMetAlaAsnArgTyrMetLysLysCysSerThrSerLeuIleIleArgGluMetGlnIle-LysThrThrMetArgTyrHisLeuThrProValArgMetAlaIleIleLysLysThrLysAspAsnLysCysTrpArgGlyCysGlyGluLysGlyThrLeuThrHisCysTrp--TrpGluCysLysLeuValGlnProLeuTrpLysThrVal--TrpArgPheLeuLysLysLeuLys
+
+a score=1508.0 EG2=7.4e-137 E=3.8e-142
+s chrUn_KI270748v1 17571 1017 + 93321 AAAGAAAACTACAAATCCTTATCCCTGATCAACACAGATGTAAAAATACTCAACAAAATTCTAGCAAACTGAAGCTAACAACACATCAAAAAGATAATTCATCATGATCAAGTGGGCTTTATTCCAGGGGTGCTTGAATGGTTCAAAATAGACAAATCAATAAACATGATTCACCACATAAATGGAACTGAGAACAAAAACCCTATGATCATCTCATTAGATGCAGAATaagcatttgataaaatccaacatctgtttatgataaaaaccctcaACAATATAGGTATAGATGGAGTATACCTCAAA---AAATGAGTCATCTATGACAAAGCCACAGCCAACATCATCCTGGATGGGCAAAAGTTAGAAGTGTTGCTTCTAGAAACTGGAAAAAAGCAAGGATGTTCACCTTCATCATTCCTATTCAATACAGTACTGGAAGTGCTAGCCAGAACTATCAGAAAGGAGAAAGAAATAAAAGGTATACAAATTAGAAAA---GAAGTCAAATGATCTCTGCTCACTGATGACATGACTGTAGGCCTAGAAAACCCTAAAGTCTTC---AGAAGACTCCTAGACTTGATACACGACTTCAGTAAAGTCTTGGGATAAACAAGC------CACAAAAATCAGTTGTATTTCTATACACCAAATACATTCAAGCTGTTTGAATGTTTGTTGAGATTAATTtgttgAGAACCAAATTAAGAACTCAACTGAATTTACAATAGCCATG---------AAAAATACCTAGGAATGCAT---AACTATATAAATGAAAGATCTCTACAAGGAGAACTACAAAATACTAATGAAAGAAATTATAGATGACATAAACAAATGGAAAAACATCCCATGCTCATGGATTAGAAAAATCAAT---AGCTAAAGTGACCATATCACCC---ATACAATCTATAGAGTTAATGCAATTCCCATCAAATTACCAACGTTATTTCTCACAaaattaaaaaaa---aaTCCTAAAGTTCACATGGAGCCAAAAAAAGATCCCTAATAGCCAAAGCACTTCTAAGCAAAAAa
+s UN-L1PA16_pol#LINE/L1 526 338 + 1276 LysGluAsnTyrArgProIleSerLeuMetAsnIleAspAlaLysIleLeuAsnLysIleLeuAlaAsnArgIleGlnGlnHisIleLysLysLeuIleHisHisAspGlnValGlyPheIleProGlyMetGlnGlyTrpPheAsnIleArgLysSerIleAsnValIleHisHisIleAsnArgIleLysAsnLysAsnHisMetIleIleSerIleAspAlaGluLysAlaPheAspLysIleGlnHisProPheMetIleLysThrLeuXaaLysLeuGlyIleGluGlyThrTyrLeuLysIleIleArgAlaIleTyrAspLysProThrAlaAsnIleIleLeuAsnGlyGlnLysLeuGluAlaPheProLeuArgThrGlyThrArgGlnGlyCysProLeuSerProLeuLeuPheAsnIleValLeuGluValLeuAlaArgAlaIleArgGlnGluLysGluIleLysGlyIleGlnIleGlyLysGluGluValLysLeuSerLeuPheAlaAspAspMetIleLeuTyrLeuGluAsnProLysAspSerAlaLysArgLeuLeuGluLeuIleAsnAspPheSerLysValSerGlyTyrLysIleAsnVal--GlnLysSerValAlaPheLeuTyrThrAsnAsnValGlnAla-----------------------------GluSerGlnIleLysAsnAlaIleProPheThrIleAlaThrLysLysIle--LysTyrLeuGlyIleHisLeu-ThrLysGluValLysAspLeuTyrLysGluAsnTyrLysThrLeuLeuLysGluIleIleAspAspThrAsnLysTrpLysAsnIleProCysSerTrpIleGlyArgIleAsnIle-ValLysMetAlaIleLeuProLys--AlaIleTyrArgPheAsnAlaIleProIleLysLeuProMetSerPhePheThrGluLeuGluLysThr-IleLeuLysPheIleTrpAsnGln-LysArgAlaGlnIleAlaLysAlaIleLeuSerLysLys
+
+
=====================================
test/maf-swap-test.sh
=====================================
@@ -15,4 +15,5 @@ PATH=../bin:$PATH
try maf-swap bs100.maf
try maf-swap -n1 90089.maf
try maf-swap -n3 ../examples/multiMito.maf
+ try maf-swap frameshift-new.maf
} 2>&1 | diff -u $(basename $0 .sh).out -
View it on GitLab: https://salsa.debian.org/med-team/last-align/-/compare/52919d393333dac9cca9b189947ac2b14d26b13a...bf1432f5464effc0f937939646b03c87be267edf
--
View it on GitLab: https://salsa.debian.org/med-team/last-align/-/compare/52919d393333dac9cca9b189947ac2b14d26b13a...bf1432f5464effc0f937939646b03c87be267edf
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20210710/a650e6f0/attachment-0001.htm>
More information about the debian-med-commit
mailing list