1 #ifndef LOCARNA_MULTIPLE_ALIGNMENT_HH 2 #define LOCARNA_MULTIPLE_ALIGNMENT_HH 15 #include "scoring_fwd.hh" 16 #include "sequence_annotation.hh" 27 template<
class T>
class Alphabet;
115 std::vector<std::string>
119 annotation_tags_t annotation_tags;
124 init_annotation_tags();
133 return annotation_tags.size();
152 std::string description_;
165 const std::string &seq)
166 : name_(name), description_(
""), seq_((
string1)seq)
177 : name_(name), description_(
""), seq_(seq)
188 const std::string &description,
189 const std::string &seq)
190 : name_(name), description_(description), seq_((
string1)seq)
201 const std::string &description,
203 : name_(name), description_(description), seq_(seq)
218 seq()
const {
return seq_;}
222 length_wogaps()
const;
278 size_type col_index_;
287 assert(1<=col_index);
288 assert(col_index<=ma.
length());
299 operator [](size_type row_index)
const {
322 for (size_type i=0; ret && i<
size(); i++) {
323 ret = ( this->ma_.
seqentry(i).
seq()[this->col_index_]
339 return !(*
this == ac);
347 typedef std::map<std::string,size_type> str2idx_map_t;
350 typedef std::map<size_t,SequenceAnnotation> annotation_map_t;
356 std::vector<SeqEntry> alig_;
359 annotation_map_t annotations_;
365 str2idx_map_t name2idx_;
372 create_name2idx_map();
395 read_stockholm(std::istream &in);
409 read_clustalw(std::istream &in);
430 read_fasta(std::istream &in);
465 const std::string &sequence);
477 const std::string &nameB,
478 const std::string &alistringA,
479 const std::string &alistringB);
495 bool only_local=
false,
496 bool special_gap_symbols=
false);
526 bool special_gap_symbols);
572 return alig_.empty();
595 annotations_[(size_t)annotype] = annotation;
606 return annotations_.find(annotype)!=annotations_.end();
624 length()
const {
return alig_.empty() ? 0 : alig_[0].seq().length(); }
632 return alig_.begin();
662 index(
const std::string &name)
const {
663 str2idx_map_t::const_iterator it = name2idx_.find(name);
664 assert(it!=name2idx_.end());
688 return alig_[
index(name)];
872 const std::string &name,
873 const std::string &sequence,
874 size_t namewidth)
const;
890 write(std::ostream &out,
943 pairwise_match_score(
const SeqEntry &a1,
947 bool score_common_gaps
977 match_vector2(
const string1 &s,
1007 count_exclusive_matches(
const SeqEntry &a1,
1032 pairwise_deviation_score(
const SeqEntry &a1,
1059 #endif // LOCARNA_MULTIPLE_ALIGNMENT_HH void reverse()
reverse string
Definition: string1.hh:117
size_type size() const
Size / Number of rows.
Definition: multiple_alignment.hh:308
AliColumn(const MultipleAlignment &ma, size_type col_index)
Construct from multiple alignment column.
Definition: multiple_alignment.hh:286
void operator+=(const AliColumn &c)
Append a column.
Definition: multiple_alignment.cc:1173
static size_t num_of_annotypes()
number of annotation types
Definition: multiple_alignment.hh:132
std::ostream & operator<<(std::ostream &out, AlignerRestriction r)
Definition: aligner_restriction.hh:113
bool has_annotation(const AnnoType::type &annotype) const
Definition: multiple_alignment.hh:604
size_type num_of_rows() const
Number of rows of multiple aligment.
Definition: multiple_alignment.hh:558
pair of vector of alignment edges
Definition: alignment.hh:63
void prepend(const SeqEntry &seqentry)
Prepend sequence entry.
Definition: multiple_alignment.cc:1165
void normalize_rna_symbols()
normalize rna symbols
Definition: multiple_alignment.cc:585
bool operator==(const TaintedInftyInt &x, const TaintedInftyInt &y)
Definition: infty_int.hh:598
Definition: multiple_alignment.hh:96
static size_t size()
size of enum
Definition: multiple_alignment.hh:106
const SeqEntry & seqentry(const std::string &name) const
Access name/sequence pair by name.
Definition: multiple_alignment.hh:687
size_type pos_type
type of a sequence position
Definition: aux.hh:97
const std::string & description() const
(read-only) access to description
Definition: multiple_alignment.hh:214
std::string consensus_sequence() const
Consensus sequence of multiple alignment.
Definition: multiple_alignment.cc:990
A row in a multiple alignment.
Definition: multiple_alignment.hh:144
bool is_proper() const
Test whether alignment is proper.
Definition: multiple_alignment.cc:608
bool contains(std::string name) const
Test whether name exists.
Definition: multiple_alignment.cc:622
SeqEntry(const std::string &name, const std::string &description, const std::string &seq)
Construct from strings name, description and seq.
Definition: multiple_alignment.hh:187
AliColumn column(size_type col_index) const
Access alignment column.
Definition: multiple_alignment.hh:774
virtual ~MultipleAlignment()
virtual destructor
Definition: multiple_alignment.cc:271
void set_seq(const string1 &seq)
write access to seq
Definition: multiple_alignment.hh:268
MultipleAlignment()
Construct empty.
Definition: multiple_alignment.cc:54
double avg_deviation_score(const MultipleAlignment &ma) const
Average deviation score.
Definition: multiple_alignment.cc:745
const SequenceAnnotation & annotation(const AnnoType::type &annotype) const
Read access of annotation by prefix.
Definition: multiple_alignment.cc:595
Definition: aligner.cc:17
bool checkAlphabet(const Alphabet< char > &alphabet) const
check character constraints
Definition: multiple_alignment.cc:1148
void init(const AlignmentEdges &edges, const Sequence &seqA, const Sequence &seqB, bool special_gap_symbols)
Initialize from alignment edges and sequences.
Definition: multiple_alignment.cc:209
size_type index(const std::string &name) const
Access index by name.
Definition: multiple_alignment.hh:662
double cmfinder_realignment_score(const MultipleAlignment &ma) const
Cmfinder realignment score of a multiple alignment to a reference alignment.
Definition: multiple_alignment.cc:829
std::vector< SeqEntry >::const_iterator const_iterator
const iterator of sequence entries
Definition: multiple_alignment.hh:435
void write_debug(std::ostream &out=std::cout) const
Print contents of object to stream.
Definition: multiple_alignment.cc:982
double sps(const MultipleAlignment &ma, bool compalign=true) const
Sum-of-pairs score between a multiple alignment and a reference alignment.
Definition: multiple_alignment.cc:699
type
inner type
Definition: multiple_alignment.hh:91
A simple 1-based string.
Definition: string1.hh:22
size_t size_type
size type
Definition: multiple_alignment.hh:68
size_type deviation(const MultipleAlignment &ma) const
Deviation of a multiple alignment from a reference alignment.
Definition: multiple_alignment.cc:675
std::ostream & write_name_sequence_line(std::ostream &out, const std::string &name, const std::string &sequence, size_t namewidth) const
Write formatted line of name and sequence.
Definition: multiple_alignment.cc:1020
SeqEntry(const std::string &name, const string1 &seq)
Construct from strings name and 1-based string seq.
Definition: multiple_alignment.hh:176
read only proxy class representing a column of the alignment
Definition: multiple_alignment.hh:276
const Sequence & as_sequence() const
"cast" multiple alignment to sequence
Definition: multiple_alignment.cc:274
void set_annotation(const AnnoType::type &annotype, const SequenceAnnotation &annotation)
Write access to annotation.
Definition: multiple_alignment.hh:592
std::ostream & write(std::ostream &out, FormatType::type format=MultipleAlignment::FormatType::CLUSTAL) const
Write alignment to stream.
Definition: multiple_alignment.cc:1134
const_iterator begin() const
Begin for read-only traversal of name/sequence pairs.
Definition: multiple_alignment.hh:631
const string1 & seq() const
(read-only) access to seq
Definition: multiple_alignment.hh:218
Definition: multiple_alignment.hh:99
pos_type length() const
Length of multiple aligment.
Definition: multiple_alignment.hh:624
void append(const SeqEntry &seqentry)
Append sequence entry.
Definition: multiple_alignment.cc:1160
MultipleAlignment::size_type size_type
size type
Definition: multiple_alignment.hh:146
const std::string & name() const
(read-only) access to name
Definition: multiple_alignment.hh:210
void reverse()
reverse sequence
Definition: multiple_alignment.hh:253
void reverse()
reverse the multiple alignment
Definition: multiple_alignment.cc:1141
void push_back(char c)
push back character
Definition: string1.hh:127
type of sequence annotation. enumerates legal annotation types
Definition: multiple_alignment.hh:89
Represents a structure-annotated sequence alignment.
Definition: alignment.hh:87
consensus structure annotation (consensus structure)
Definition: multiple_alignment.hh:93
const SeqEntry & seqentry(size_type index) const
Access name/sequence pair by index.
Definition: multiple_alignment.hh:676
Annotation of a sequence.
Definition: sequence_annotation.hh:24
SeqEntry(const std::string &name, const std::string &description, const string1 &seq)
Construct from strings name, description and 1-based string seq.
Definition: multiple_alignment.hh:200
Represents a multiple alignment.
Definition: multiple_alignment.hh:65
bool empty() const
Emptiness check.
Definition: multiple_alignment.hh:571
std::pair< pos_type, pos_type > pos_pair_t
pair of positions
Definition: multiple_alignment.hh:148
"Sequence View" of multiple alignment as array of column vectors
Definition: sequence.hh:29
SeqEntry(const std::string &name, const std::string &seq)
Construct from strings name and seq.
Definition: multiple_alignment.hh:164
void push_back(char c)
append character to sequence
Definition: multiple_alignment.hh:262
const_iterator end() const
End for read-only traversal of name/sequence pairs.
Definition: multiple_alignment.hh:640