-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAlignmentTrack.C
136 lines (90 loc) · 1.95 KB
/
AlignmentTrack.C
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
122
123
124
125
126
127
128
129
130
131
132
133
134
/***********************************************************************
AlignmentTrack.C
BOOM : Bioinformatics Object Oriented Modules
Copyright (C)2012 William H. Majoros ([email protected]).
This is OPEN SOURCE SOFTWARE governed by the Gnu General Public
License (GPL) version 3, as described at www.opensource.org.
***********************************************************************/
#include "AlignmentTrack.H"
#include <iostream>
using namespace BOOM;
AlignmentTrack::AlignmentTrack(const BOOM::String &name,int ID)
: name(name),
isTargetTrack(false),
ID(ID),
begin(0)
{
// ctor
}
void AlignmentTrack::setTarget()
{
isTargetTrack=true;
}
bool AlignmentTrack::isTarget() const
{
return isTargetTrack;
}
const BOOM::String &AlignmentTrack::getName() const
{
return name;
}
int AlignmentTrack::getBegin() const
{
return begin;
}
int AlignmentTrack::getLength() const
{
return seqStr.length();
}
void AlignmentTrack::addHSP(int begin,const BOOM::String &hsp)
{
if(seqStr.length()==0) this->begin=begin;
seqStr+=hsp;
}
void AlignmentTrack::extendToLength(int length)
{
int L=seqStr.length();
if(L<length)
{
int delta=length-L;
BOOM::String padding(delta,'-');
seqStr+=padding;
}
}
const BOOM::String &AlignmentTrack::getSeq() const
{
return seqStr;
}
void AlignmentTrack::deleteSequence()
{
seqStr="";
}
int AlignmentTrack::getID() const
{
return ID;
}
void AlignmentTrack::append(const AlignmentTrack &other)
{
seqStr+=other.seqStr;
}
void AlignmentTrack::toupper()
{
seqStr.toupper();
}
int AlignmentTrack::getNonGapLength() const
{
int l=0, L=seqStr.length();
for(int i=0 ; i<L ; ++i)
if(seqStr[i]!='-')
++l;
return l;
}
int AlignmentTrack::mapUngappedCoordToGapped(int ungappedCoord)
{
int l=0, L=seqStr.length();
for(int i=0 ; i<L ; ++i) {
if(seqStr[i]!='-') ++l;
if(l==ungappedCoord) return i;
}
return -1;
}