28 #ifndef SEQ_FUNCTS_HPP_
29 #define SEQ_FUNCTS_HPP_
32 #include <boost/lexical_cast.hpp>
51 template<
typename SequenceType>
53 substr(
const SequenceType &seq,
size_t start,
size_t length)
55 return SequenceType(seq.name()+
"_"+boost::lexical_cast<std::string>(start+1)+
"-"+boost::lexical_cast<std::string>(start+length), seq.sequence().substr(start, length), seq.comment(), seq.id());
66 template<
typename SequenceType>
70 return SequenceType(seq.name(), seq.sequence().substr(start, length), seq.comment(), seq.id());
82 template<
typename SequenceType>
84 substr_end(
const SequenceType &seq,
size_t start,
size_t end)
86 return new SequenceType(seq.name()+
"_"+boost::lexical_cast<std::string>(start+1)+
"-"+boost::lexical_cast<std::string>(end+1), seq.sequence().substr(start, end-start+1), seq.comment(), seq.id());
90 template<
typename SequenceType>
92 substr_end_no_renaming(
const SequenceType &seq,
size_t start,
size_t end)
94 return new SequenceType(seq.name(), seq.sequence().substr(start, end-start+1), seq.comment(), seq.id());
100 reverse_complement(std::string &seq);
108 template<
typename SequenceType>
110 reverse_complement(SequenceType &seq)
112 size_t length =seq.size();
114 std::vector<char>transformation(128,
'!');
115 transformation[
'A']=
'T';
116 transformation[
'a']=
't';
117 transformation[
'C']=
'G';
118 transformation[
'c']=
'g';
119 transformation[
'T']=
'A';
120 transformation[
't']=
'a';
121 transformation[
'G']=
'C';
122 transformation[
'g']=
'c';
123 transformation[
'R']=
'Y';
124 transformation[
'r']=
'y';
125 transformation[
'Y']=
'R';
126 transformation[
'y']=
'r';
127 transformation[
'M']=
'K';
128 transformation[
'm']=
'k';
129 transformation[
'K']=
'M';
130 transformation[
'k']=
'm';
131 transformation[
'W']=
'W';
132 transformation[
'w']=
'w';
133 transformation[
'S']=
'S';
134 transformation[
's']=
's';
135 transformation[
'B']=
'V';
136 transformation[
'b']=
'v';
137 transformation[
'V']=
'B';
138 transformation[
'v']=
'b';
139 transformation[
'D']=
'H';
140 transformation[
'd']=
'h';
141 transformation[
'H']=
'D';
142 transformation[
'h']=
'd';
143 transformation[
'N']=
'N';
144 transformation[
'n']=
'n';
145 transformation[
'-']=
'-';
147 for (
size_t i=0; i<length; ++i)
148 seq[i] = transformation[seq[i]];