load and display a motif list
[mussa.git] / alg / sequence.cpp
index 5c7f069efce30c738e84e8bec769ef8cfec96896..4161bfcd7d1f33ba62a941111bd3e18b0c984378 100644 (file)
@@ -584,7 +584,7 @@ Sequence::rc_motif(string a_motif)
 }
 
 string
-Sequence::motif_validate(string a_motif)
+Sequence::motif_normalize(string a_motif)
 {
   string valid_motif;
   int seq_i, len;
@@ -596,7 +596,7 @@ Sequence::motif_validate(string a_motif)
   // 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';
@@ -626,10 +626,14 @@ Sequence::motif_validate(string a_motif)
       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;
 }
 
@@ -637,7 +641,6 @@ void Sequence::add_motif(string a_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)
@@ -646,6 +649,11 @@ void Sequence::add_motif(string a_motif)
   }
 }
 
+void Sequence::clear_motifs()
+{
+  motif_list.clear();
+}
+
 const list<motif>& Sequence::motifs() const
 {
   return motif_list;
@@ -660,10 +668,9 @@ Sequence::find_motif(string a_motif)
   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";