[mlpack-svn] r10095 - mlpack/trunk/src/mlpack/methods/hmm

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Mon Oct 31 14:50:40 EDT 2011


Author: rcurtin
Date: 2011-10-31 14:50:40 -0400 (Mon, 31 Oct 2011)
New Revision: 10095

Modified:
   mlpack/trunk/src/mlpack/methods/hmm/discreteHMM.cpp
   mlpack/trunk/src/mlpack/methods/hmm/gaussianHMM.cpp
   mlpack/trunk/src/mlpack/methods/hmm/generate.cpp
   mlpack/trunk/src/mlpack/methods/hmm/loglik.cpp
   mlpack/trunk/src/mlpack/methods/hmm/mixgaussHMM.cpp
   mlpack/trunk/src/mlpack/methods/hmm/support.cpp
   mlpack/trunk/src/mlpack/methods/hmm/support.hpp
   mlpack/trunk/src/mlpack/methods/hmm/viterbi.cpp
Log:
Stop using TextWriter.  This breaks already broken code.  Waiting on resolution
of #131.  Also, this introduces forty ten bajillion warnings.


Modified: mlpack/trunk/src/mlpack/methods/hmm/discreteHMM.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/hmm/discreteHMM.cpp	2011-10-31 17:12:28 UTC (rev 10094)
+++ mlpack/trunk/src/mlpack/methods/hmm/discreteHMM.cpp	2011-10-31 18:50:40 UTC (rev 10095)
@@ -75,6 +75,7 @@
 }
 
 void DiscreteHMM::SaveProfile(const char* profile) const {
+  /*** need something better
   TextWriter w_pro;
   if (!(w_pro.Open(profile))) {
     mlpack::Log::Warn << "Couldn't open " << profile << " for writing." <<
@@ -84,6 +85,7 @@
 
   print_matrix(w_pro, transmission_, "%% transmission", "%f,");
   print_matrix(w_pro, emission_, "%% emission", "%f,");
+  */
 }
 
 void DiscreteHMM::GenerateSequence(size_t length, arma::vec& data_seq, arma::vec& state_seq) const {

Modified: mlpack/trunk/src/mlpack/methods/hmm/gaussianHMM.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/hmm/gaussianHMM.cpp	2011-10-31 17:12:28 UTC (rev 10094)
+++ mlpack/trunk/src/mlpack/methods/hmm/gaussianHMM.cpp	2011-10-31 18:50:40 UTC (rev 10095)
@@ -225,6 +225,7 @@
 }
 
 bool GaussianHMM::SaveProfile(const char* profile, const arma::mat& trans, const std::vector<arma::vec>& means, const std::vector<arma::mat>& covs) {
+  /** need something better
   TextWriter w_pro;
   if (!(w_pro.Open(profile))) {
     mlpack::Log::Warn << "Couldn't open " << profile << " for writing." <<
@@ -245,6 +246,7 @@
     sprintf(s, "%% covariance - state%zu", i);
     print_matrix(w_pro, covs[i], s, "%f,");
   }
+  */
 
   return true;
 }

Modified: mlpack/trunk/src/mlpack/methods/hmm/generate.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/hmm/generate.cpp	2011-10-31 17:12:28 UTC (rev 10094)
+++ mlpack/trunk/src/mlpack/methods/hmm/generate.cpp	2011-10-31 18:50:40 UTC (rev 10095)
@@ -123,6 +123,7 @@
   MixtureofGaussianHMM hmm;
   hmm.InitFromFile(profile);
 
+  /** need something better
   TextWriter w_seq, w_state;
   if (!(w_seq.Open(seqout))) {
     Log::Warn << "Couldn't open '" << seqout << "' for writing." << std::endl;
@@ -147,6 +148,7 @@
     sprintf(s, "%% state sequence %d", i);
     print_vector(w_state, states, s, "%.0f,");
   }
+  */
 
   //printf("---END---");
   return true;
@@ -172,6 +174,7 @@
   GaussianHMM hmm;
   hmm.InitFromFile(profile);
 
+  /** need something better
   TextWriter w_seq, w_state;
   if (!(w_seq.Open(seqout))) {
     Log::Warn << "Couldn't open '" << seqout << "' for writing." << std::endl;
@@ -196,6 +199,8 @@
     sprintf(s, "%% state sequence %d", i);
     print_vector(w_state, states, s, "%.0f,");
   }
+  */
+
   return true;
 }
 
@@ -219,6 +224,7 @@
   DiscreteHMM hmm;
   hmm.InitFromFile(profile);
 
+  /** need something better
   TextWriter w_seq, w_state;
   if (!(w_seq.Open(seqout))) {
     Log::Warn << "Couldn't open '" << seqout << "' for writing." << std::endl;
@@ -242,5 +248,6 @@
     sprintf(s, "%% state sequence %d", i);
     print_vector(w_state, states, s, "%.0f,");
   }
+  */
   return true;
 }

Modified: mlpack/trunk/src/mlpack/methods/hmm/loglik.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/hmm/loglik.cpp	2011-10-31 17:12:28 UTC (rev 10094)
+++ mlpack/trunk/src/mlpack/methods/hmm/loglik.cpp	2011-10-31 18:50:40 UTC (rev 10095)
@@ -105,6 +105,7 @@
   std::vector<arma::mat> seqs;
   load_matrix_list(seqin, seqs);
 
+  /** need something better
   TextWriter w_log;
   if (!(w_log.Open(logout))) {
     Log::Warn << "Couldn't open '" << logout << "' for writing." << std::endl;
@@ -116,6 +117,7 @@
 
   for (size_t i = 0; i < seqs.size(); i++)
     w_log.Printf("%f\n", list_loglik[i]);
+  */
 
   return true;
 }
@@ -135,6 +137,7 @@
   std::vector<arma::mat> seqs;
   load_matrix_list(seqin, seqs);
 
+  /** need something better
   TextWriter w_log;
   if (!(w_log.Open(logout))) {
     Log::Warn << "Couldn't open '"<< logout <<"' for writing." << std::endl;
@@ -146,6 +149,7 @@
 
   for (size_t i = 0; i < seqs.size(); i++)
     w_log.Printf("%f\n", list_loglik[i]);
+  */
 
   return true;
 }
@@ -165,6 +169,7 @@
   std::vector<arma::vec> seqs;
   load_vector_list(seqin, seqs);
 
+  /** need something better
   TextWriter w_log;
   if (!(w_log.Open(logout))) {
     Log::Warn << "Couldn't open '"<< logout <<"' for writing." << std::endl;
@@ -176,6 +181,7 @@
 
   for (size_t i = 0; i < seqs.size(); i++)
     w_log.Printf("%f\n", list_loglik[i]);
+  */
 
   return true;
 }

Modified: mlpack/trunk/src/mlpack/methods/hmm/mixgaussHMM.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/hmm/mixgaussHMM.cpp	2011-10-31 17:12:28 UTC (rev 10094)
+++ mlpack/trunk/src/mlpack/methods/hmm/mixgaussHMM.cpp	2011-10-31 18:50:40 UTC (rev 10095)
@@ -163,6 +163,7 @@
 }
 
 bool MixtureofGaussianHMM::SaveProfile(const char* profile, const arma::mat& trans, const std::vector<MixtureGauss>& mixs) {
+  /** need something better
   TextWriter w_pro;
   if (!(w_pro.Open(profile))) {
     mlpack::Log::Warn << "Couldn't open " << profile << " for writing." <<
@@ -183,6 +184,7 @@
       print_matrix(w_pro, mixs[i].get_cov(k), s, "%E,");
     }
   }
+  */
 
   return true;
 }

Modified: mlpack/trunk/src/mlpack/methods/hmm/support.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/hmm/support.cpp	2011-10-31 17:12:28 UTC (rev 10094)
+++ mlpack/trunk/src/mlpack/methods/hmm/support.cpp	2011-10-31 18:50:40 UTC (rev 10095)
@@ -1,6 +1,5 @@
 #include <mlpack/core.h>
 #include <mlpack/core/kernels/lmetric.hpp>
-#include "../../core/col/tokenizer.h"
 
 #include "support.hpp"
 
@@ -26,16 +25,6 @@
     }
   }
 
-  void print_matrix(TextWriter& writer, const arma::mat& a, const char* msg, const char* format) {
-    writer.Printf("%s - Matrix (%d x %d) = \n", msg, a.n_rows, a.n_cols);
-    for (size_t j = 0; j < a.n_cols; j++) {
-      for (size_t i = 0; i < a.n_rows; i++)
-	writer.Printf(format, a(i, j));
-
-      writer.Printf("\n");
-    }
-  }
-
   void print_vector(const arma::vec& a, const char* msg) {
     printf("%s - Vector (%d) = \n", msg, a.n_elem);
     for (size_t i = 0; i < a.n_elem; i++)
@@ -43,13 +32,6 @@
     printf("\n");
   }
 
-  void print_vector(TextWriter& writer, const arma::vec& a, const char* msg, const char* format) {
-    writer.Printf("%s - Vector (%d) = \n", msg, a.n_elem);
-    for (size_t i = 0; i < a.n_elem; i++)
-      writer.Printf(format, a[i]);
-    writer.Printf("\n");
-  }
-
   double RAND_NORMAL_01() {
     double r = 2, u, v;
     while (r > 1) {
@@ -272,149 +254,8 @@
     }
   }
 
-  bool skip_blank(TextLineReader& reader) {
-    for (;;) {
-      if (!reader.MoreLines())
-        return false;
-//      char* pos = reader.Peek().begin();
-
-      std::string::iterator pos = reader.Peek().begin();
-      while (*pos == ' ' || *pos == ',' || *pos == '\t')
-	pos++;
-
-      if (*pos == '\0' || *pos == '%')
-        reader.Gobble();
-      else
-        break;
-    }
-    return true;
-  }
-
-  bool read_matrix(TextLineReader& reader, arma::mat& matrix) {
-    if (!skip_blank(reader)) { // EOF ?
-      matrix.set_size(0, 0);
-      return false;
-    } else {
-      size_t n_rows = 0;
-      size_t n_cols = 0;
-      bool is_done;
-
-      // How many columns ?
-      std::vector<std::string> num_str;
-      tokenizeString(reader.Peek(), ", \t", num_str);
-      n_cols = num_str.size();
-
-      std::vector<double> num_double;
-
-      for(;;) { // read each rows
-        n_rows++;
-        // deprecated: double* point = num_double.AddBack(n_cols);
-        std::vector<std::string> num_str;
-        tokenizeString(reader.Peek(), ", \t", num_str);
-//       reader.Peek().Split(", \t", &num_str);
-
-        mlpack::Log::Assert(num_str.size() == n_cols);
-
-        std::istringstream is;
-        for (size_t i = 0; i < n_cols; i++) {
-          double d;
-          is.str(num_str[i]);
-          if( !(is >> d ) )
-            abort();
-          num_double.push_back(d);
-        }
-
-        is_done = false;
-
-        reader.Gobble();
-
-        for (;;) {
-	  if (!reader.MoreLines()) {
-	    is_done = true;
-	    break;
-	  }
-          std::string::iterator pos = reader.Peek().begin();
-
-          while (*pos == ' ' || *pos == '\t')
-	    pos++;
-
-          if (*pos == '\0')
-            reader.Gobble();
-	  else if (*pos == '%') {
-	    is_done = true;
-	    break;
-	  }
-	  else
-            break;
-        }
-
-        if (is_done) {
-          std::vector<double> empty;
-          num_double.swap(empty);
-
-          //FIXME
-//	  matrix->Own(num_double.ReleasePtr(), n_cols, n_rows);
-
-          return true;
-        }
-      }
-    }
-  }
-
-  bool read_vector(TextLineReader& reader, arma::vec& vec) {
-    if (!skip_blank(reader)) { // EOF ?
-      vec.set_size(0);
-      return false;
-    }
-
-    std::vector<double> num_double;
-
-    for(;;) { // read each rows
-      bool is_done = false;
-
-      std::vector<std::string> num_str;
-      tokenizeString(reader.Peek(), ", \t", num_str);
-
-      // deprecated: double* point = num_double.AddBack(num_str.size());
-
-      std::istringstream is;
-      for (size_t i = 0; i < num_str.size(); i++) {
-        double d;
-        is.str(num_str[i]);
-        if( !(is >> d) )
-          abort();
-      }
-
-      reader.Gobble();
-
-      for (;;) {
-        if (!reader.MoreLines()) {
-	  is_done = true;
-	  break;
-	}
-        std::string::iterator pos = reader.Peek().begin();
-	while (*pos == ' ' || *pos == '\t')
-	  pos++;
-	if (*pos == '\0')
-          reader.Gobble();
-	else if (*pos == '%') {
-	  is_done = true;
-	  break;
-	} else
-          break;
-      }
-
-      if (is_done) {
-        //num_double.Trim();
-        // FIXME
-//	vec->Own(num_double.ReleasePtr(), length);
-
-        return true;
-      }
-    }
-  }
-
   bool load_matrix_list(const char* filename, std::vector<arma::mat>& matlst) {
+    /** need something better
     TextLineReader reader;
     if (!(reader.Open(filename)))
       return false;
@@ -425,11 +266,13 @@
       else
         break;
     } while (1);
+    */
 
     return true;
   }
 
   bool load_vector_list(const char* filename, std::vector<arma::vec>& veclst) {
+    /** need something better
     TextLineReader reader;
     if (!(reader.Open(filename)))
       return false;
@@ -441,6 +284,7 @@
       else
         break;
     } while (1);
+    */
 
     return true;
   }

Modified: mlpack/trunk/src/mlpack/methods/hmm/support.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/hmm/support.hpp	2011-10-31 17:12:28 UTC (rev 10094)
+++ mlpack/trunk/src/mlpack/methods/hmm/support.hpp	2011-10-31 18:50:40 UTC (rev 10095)
@@ -31,15 +31,9 @@
   /** Print a matrix to stdout */
   void print_matrix(const arma::mat& a, const char* msg);
 
-  /** Print a matrix to a TextWriter object */
-  void print_matrix(TextWriter& writer, const arma::mat& a, const char* msg, const char* format = "%f,");
-
   /** Print a vector to stdout */
   void print_vector(const arma::vec& a, const char* msg);
 
-  /** Print a vector to a TextWriter object */
-  void print_vector(TextWriter& writer, const arma::vec& a, const char* msg, const char* format = "%f,");
-
   /** Compute the centroids and label the samples by K-means algorithm */
   bool kmeans(const std::vector<arma::mat>& data, size_t num_clusters,
 	      std::vector<size_t>& labels_, std::vector<arma::vec>& centroids_,

Modified: mlpack/trunk/src/mlpack/methods/hmm/viterbi.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/hmm/viterbi.cpp	2011-10-31 17:12:28 UTC (rev 10094)
+++ mlpack/trunk/src/mlpack/methods/hmm/viterbi.cpp	2011-10-31 18:50:40 UTC (rev 10095)
@@ -102,6 +102,7 @@
   std::vector<arma::mat> seqs;
   load_matrix_list(seqin, seqs);
 
+  /** need something better
   TextWriter w_state;
   if (!(w_state.Open(stateout))) {
     Log::Warn << "Couldn't open '" << stateout << "' for writing." << std::endl;
@@ -117,6 +118,7 @@
     sprintf(s, "%% viterbi state sequence %zu", i);
     print_vector(w_state, states, s, "%.0f,");
   }
+  */
 
   return true;
 }
@@ -136,6 +138,7 @@
   std::vector<arma::mat> seqs;
   load_matrix_list(seqin, seqs);
 
+  /** need something better
   TextWriter w_state;
   if (!(w_state.Open(stateout))) {
     Log::Warn << "Couldn't open '" << stateout << "' for writing." << std::endl;
@@ -150,6 +153,7 @@
     sprintf(s, "%% viterbi state sequence %zu", i);
     print_vector(w_state, states, s, "%.0f,");
   }
+  */
 
   return true;
 }
@@ -170,6 +174,7 @@
   std::vector<arma::vec> seqs;
   load_vector_list(seqin, seqs);
 
+  /** need something better
   TextWriter w_state;
   if (!(w_state.Open(stateout))) {
     Log::Warn << "Couldn't open '" << stateout << "' for writing." << std::endl;
@@ -185,6 +190,7 @@
     sprintf(s, "%% viterbi state sequence %zu", i);
     print_vector(w_state, states, s, "%.0f,");
   }
+  */
 
   return true;
 }




More information about the mlpack-svn mailing list