}
string
-Sequence::motif_validate(string a_motif)
+Sequence::motif_normalize(string a_motif)
{
string valid_motif;
int seq_i, len;
// current nonIUPAC symbols are omitted, which is not reported atm
for(seq_i = 0; seq_i < len; seq_i++)
{
- if ((a_motif[seq_i] == 'a') || (a_motif[seq_i] == 'A'))
+ if ((a_motif[seq_i] == 'a') || (a_motif[seq_i] == 'A'))
valid_motif += 'A';
else if ((a_motif[seq_i] == 't') || (a_motif[seq_i] == 'T'))
valid_motif += 'T';
valid_motif += 'D';
else if ((a_motif[seq_i] == 'b') || (a_motif[seq_i] == 'B'))
valid_motif += 'B';
- }
-
+ else {
+ string msg = "Letter ";
+ msg += a_motif[seq_i];
+ msg += " is not a valid IUPAC symbol";
+ throw motif_normalize_error(msg);
+ }
+ }
//cout << "valid_motif is: " << valid_motif << endl;
-
return valid_motif;
}
{
vector<int> motif_starts = find_motif(a_motif);
-
for(vector<int>::iterator motif_start_i = motif_starts.begin();
motif_start_i != motif_starts.end();
++motif_start_i)
}
}
+void Sequence::clear_motifs()
+{
+ motif_list.clear();
+}
+
const list<motif>& Sequence::motifs() const
{
return motif_list;
motif_match_starts.clear();
//cout << "motif is: " << a_motif << endl;
- a_motif = motif_validate(a_motif);
+ a_motif = motif_normalize(a_motif);
//cout << "motif is: " << a_motif << endl;
-
if (a_motif != "")
{
//cout << "Sequence: none blank motif\n";