[go: up one dir, main page]

File: LeftAlign.h

package info (click to toggle)
freebayes 1.3.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,984 kB
  • sloc: cpp: 125,778; ansic: 4,581; sh: 1,084; python: 672; asm: 271; javascript: 94; lisp: 85; makefile: 37; perl: 27
file content (121 lines) | stat: -rw-r--r-- 3,553 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#ifndef FREEBAYES_LEFTALIGN_H
#define FREEBAYES_LEFTALIGN_H

#include <iostream>
#include <getopt.h>
#include <fstream>
#include <iostream>
#include <sstream>
#include <signal.h>
#include <stdlib.h>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>

#ifdef HAVE_BAMTOOLS
#include "api/BamAlignment.h"
#include "api/BamReader.h"
#include "api/BamMultiReader.h"
#include "api/BamWriter.h"
using namespace BamTools;
#define GETNEXT(reader, alignment) reader.GetNextAlignment(alignment)
#define GETERRORSTRING(reader) reader.GetErrorString()
#define ALIGNMENTLENGTH Length
#define ISMAPPED IsMapped()
#define REFID RefID
#define POSITION Position
#define REFNAME RefName
#define REFLEN RefLength
#define REFVEC RefVector
#define REFDATA RefData
#define BAMALIGN BamAlignment
#define QUALITIES Qualities
#define QUERYBASES QueryBases
#define ALIGNEDBASES AlignedBases.size()
#define QNAME Name
#define GETREFDATA GetReferenceData()
#define GETREFNUM GetReferenceCount()
#define GETREFID(name) GetReferenceID(name)
#define ENDPOSITION GetEndPosition()
#define SEQLEN QueryBases.size()
#define MAPPINGQUALITY MapQuality
#define CIGAR std::vector<CigarOp>
#define GETCIGAR CigarData
#define ISDUPLICATE IsDuplicate()
#define ISREVERSESTRAND IsReverseStrand()
#define ISPAIRED IsPaired()
#define ISMATEMAPPED IsMateMapped()
#define ISPROPERPAIR IsProperPair()
#define CIGLEN Length
#define CIGTYPE Type
#define BAMREADER BamMultiReader
#define BAMSINGLEREADER BamReader
#define FILLREADGROUP(rg, align) (align).GetTag("RG", (rg))
#define ADDCIGAR push_back
#define CIGOP CigarOp
#define GETHEADERTEXT GetHeaderText()
#define STDIN "stdin"
#define WRITEALIGNMENT(writer, alignment) writer.SaveAlignment(alignment)
#else

#define GETNEXT(reader, alignment) reader.GetNextRecord(alignment)
#define MAPPINGQUALITY MapQuality()
#define ALIGNMENTLENGTH Length()
#define ISMAPPED MappedFlag()
#define ISPAIRED PairedFlag()
#define ISMATEMAPPED MateMappedFlag()
#define ISPROPERPAIR ProperPair()
#define ISREVERSESTRAND ReverseFlag()
#define SEQLEN Length()
#define BAMALIGN SeqLib::BamRecord
#define REFID ChrID()
#define POSITION Position()
#define REFVEC std::vector<SeqLib::HeaderSequence>
#define REFDATA SeqLib::HeaderSequence
#define REFNAME Name
#define REFLEN Length
#define QUALITIES Qualities()
#define QUERYBASES Sequence()
#define ALIGNEDBASES NumAlignedBases()
#define QNAME Qname()
#define GETREFDATA Header().GetHeaderSequenceVector()
#define GETREFNUM Header().NumSequences()
#define ENDPOSITION PositionEnd()
#define CIGAR SeqLib::Cigar
#define BAMREADER SeqLib::BamReader
#define BAMSINGLEREADER SeqLib::BamReader
#define GETCIGAR GetCigar()
#define GETREFID(name) Header().Name2ID(name)
#define ISDUPLICATE DuplicateFlag()
#define CIGLEN Length()
#define CIGTYPE Type()
#define ADDCIGAR add
#define CIGOP SeqLib::CigarField
#define FILLREADGROUP(rg, align) (align).GetZTag("RG", rg)
#define GETHEADERTEXT HeaderConcat()
#include "SeqLib/BamReader.h"
#include "SeqLib/BamWriter.h"
#define STDIN "-"
#define WRITEALIGNMENT(writer, alignment) writer.WriteRecord(alignment)
#endif




#include "IndelAllele.h"

#ifdef VERBOSE_DEBUG
#define LEFTALIGN_DEBUG(msg) \
    if (debug) { cerr << msg; }
#else
#define LEFTALIGN_DEBUG(msg)
#endif

using namespace std;

bool leftAlign(BAMALIGN& alignment, string& referenceSequence, bool debug = false);
bool stablyLeftAlign(BAMALIGN& alignment, string referenceSequence, int maxiterations = 20, bool debug = false);
int countMismatches(BAMALIGN& alignment, string referenceSequence);

#endif