David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/grammar/ngram/EST_Ngrammar.cc festival/speech_tools/grammar/ngram/EST_Ngrammar.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/grammar/ngram/EST_Ngrammar.cc	2004-09-30 08:53:36.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/grammar/ngram/EST_Ngrammar.cc	2006-12-11 17:36:10.000000000 -0500
David Zeuthen 17c4cc7
@@ -306,7 +306,7 @@
David Zeuthen 17c4cc7
     // not right - just print out, then recurse through children
David Zeuthen 17c4cc7
     // change to use 'backoff_traverse'
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
     for (k=p_pdf.item_start();
David Zeuthen 17c4cc7
@@ -373,7 +373,7 @@
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     // recursively delete this state and all its children
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
     for (k=p_pdf.item_start();
David Zeuthen 17c4cc7
@@ -456,7 +456,8 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void EST_BackoffNgrammarState::frequency_of_frequencies(EST_DVector &ff)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-    int k,max=ff.n();
David Zeuthen 17c4cc7
+    int max=ff.n();
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
     for (k=p_pdf.item_start();
David Zeuthen 17c4cc7
@@ -1585,7 +1586,7 @@
David Zeuthen 17c4cc7
     // remove any branches with zero frequency count
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
     // find children of this state with zero freq and zap them
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
     for (k=start_state->pdf_const().item_start();
David Zeuthen 17c4cc7
@@ -2324,7 +2325,8 @@
David Zeuthen 17c4cc7
 	backoff_representation->print_freqs(os,p_order);
David Zeuthen 17c4cc7
     else
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-	int i,j,k;
David Zeuthen 17c4cc7
+	int i,j;
David Zeuthen 17c4cc7
+        EST_Litem *k;
David Zeuthen 17c4cc7
 	EST_IVector window(p_order-1);
David Zeuthen 17c4cc7
 	
David Zeuthen 17c4cc7
 	for (i=0; i < p_num_states; i++)
David Zeuthen 17c4cc7
@@ -2665,7 +2667,7 @@
David Zeuthen 17c4cc7
     function(start_state,params);
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
     // and recurse down the tree
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
     for (k=start_state->pdf_const().item_start();
David Zeuthen 17c4cc7
@@ -2696,7 +2698,7 @@
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
 	// and recurse down the tree if we haven't
David Zeuthen 17c4cc7
 	// reached the level yet
David Zeuthen 17c4cc7
-	int k;
David Zeuthen 17c4cc7
+	EST_Litem *k;
David Zeuthen 17c4cc7
 	double freq;
David Zeuthen 17c4cc7
 	EST_String name;
David Zeuthen 17c4cc7
 	
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/grammar/ngram/EST_PST.cc festival/speech_tools/grammar/ngram/EST_PST.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/grammar/ngram/EST_PST.cc	2004-09-30 08:53:36.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/grammar/ngram/EST_PST.cc	2006-12-11 17:36:10.000000000 -0500
David Zeuthen 17c4cc7
@@ -71,7 +71,8 @@
David Zeuthen 17c4cc7
 	// Base -- print from pd 
David Zeuthen 17c4cc7
 	EST_String s;
David Zeuthen 17c4cc7
 	double freq;
David Zeuthen 17c4cc7
-	for (int i = pd.item_start(); 
David Zeuthen 17c4cc7
+        EST_Litem *i;
David Zeuthen 17c4cc7
+	for (i = pd.item_start(); 
David Zeuthen 17c4cc7
 	     !pd.item_end(i); 
David Zeuthen 17c4cc7
 	     i=pd.item_next(i))
David Zeuthen 17c4cc7
 	{
David Zeuthen 17c4cc7
@@ -98,7 +99,7 @@
David Zeuthen 17c4cc7
 	EST_String s;
David Zeuthen 17c4cc7
 	double prob;
David Zeuthen 17c4cc7
 	os << get_path() << " :";
David Zeuthen 17c4cc7
-	for (int i = pd.item_start(); !pd.item_end(i) ; i=pd.item_next(i))
David Zeuthen 17c4cc7
+	for (EST_Litem *i = pd.item_start(); !pd.item_end(i) ; i=pd.item_next(i))
David Zeuthen 17c4cc7
 	{
David Zeuthen 17c4cc7
 	    pd.item_prob(i,s,prob);
David Zeuthen 17c4cc7
 	    os << " " << s << " " << prob;
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/grammar/ngram/freqsmooth.cc festival/speech_tools/grammar/ngram/freqsmooth.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/grammar/ngram/freqsmooth.cc	2004-09-30 08:53:36.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/grammar/ngram/freqsmooth.cc	2006-12-11 17:36:10.000000000 -0500
David Zeuthen 17c4cc7
@@ -74,7 +74,8 @@
David Zeuthen 17c4cc7
 				 EST_Ngrammar &ngram)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     // Build all the backoff grammars back to uni-grams
David Zeuthen 17c4cc7
-    int i,j,k,l;
David Zeuthen 17c4cc7
+    int i,j,l;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     for (i=0; i < ngram.order()-1; i++)
David Zeuthen 17c4cc7
 	backoff_ngrams[i].init(i+1,EST_Ngrammar::dense,
David Zeuthen 17c4cc7
@@ -110,7 +111,8 @@
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     // For all ngrams which are too infrequent, adjust their
David Zeuthen 17c4cc7
     // frequencies based on their backoff probabilities
David Zeuthen 17c4cc7
-    int i,j;
David Zeuthen 17c4cc7
+    int i;
David Zeuthen 17c4cc7
+    EST_Litem *j;
David Zeuthen 17c4cc7
     double occurs;
David Zeuthen 17c4cc7
     double backoff_prob;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/grammar/ngram/ngrammar_aux.cc festival/speech_tools/grammar/ngram/ngrammar_aux.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/grammar/ngram/ngrammar_aux.cc	2004-09-30 08:53:36.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/grammar/ngram/ngrammar_aux.cc	2006-12-11 17:36:10.000000000 -0500
David Zeuthen 17c4cc7
@@ -117,7 +117,7 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void make_f_of_f(EST_BackoffNgrammarState *s,void *params)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -138,7 +138,7 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void get_max_f(EST_BackoffNgrammarState *s,void *params)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -158,7 +158,7 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void map_f_of_f(EST_BackoffNgrammarState *s,void *params)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -184,7 +184,7 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void zero_small_f(EST_BackoffNgrammarState *s,void *params)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -204,7 +204,8 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void frequency_of_frequencies(EST_DVector &ff, EST_Ngrammar &n,int this_order)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-  int i,k,size;
David Zeuthen 17c4cc7
+  int i,size;
David Zeuthen 17c4cc7
+  EST_Litem *k;
David Zeuthen 17c4cc7
   double max=0.0;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
   // if ff has zero size, do complete frequency of frequencies
David Zeuthen 17c4cc7
@@ -302,8 +303,8 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void map_frequencies(EST_Ngrammar &n, const EST_DVector &map, const int this_order)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-  int i,k;
David Zeuthen 17c4cc7
-
David Zeuthen 17c4cc7
+    int i;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
   switch(n.representation())
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/grammar/ngram/ngrammar_io.cc festival/speech_tools/grammar/ngram/ngrammar_io.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/grammar/ngram/ngrammar_io.cc	2004-09-30 08:53:36.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/grammar/ngram/ngrammar_io.cc	2006-12-11 17:36:10.000000000 -0500
David Zeuthen 17c4cc7
@@ -281,7 +281,8 @@
David Zeuthen 17c4cc7
 load_ngram_cstr_bin(const EST_String filename, EST_Ngrammar &n)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     EST_TokenStream ts;
David Zeuthen 17c4cc7
-    int i,j,k,order;
David Zeuthen 17c4cc7
+    int i,j,order;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     int num_entries;
David Zeuthen 17c4cc7
     double approx_num_samples = 0.0;
David Zeuthen 17c4cc7
     long freq_data_start, freq_data_end;
David Zeuthen 17c4cc7
@@ -407,7 +408,7 @@
David Zeuthen 17c4cc7
 save_ngram_htk_ascii_sub(const EST_String &word, ostream *ost, 
David Zeuthen 17c4cc7
 			 EST_Ngrammar &n, double floor)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-    int k;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
     double freq;
David Zeuthen 17c4cc7
     EST_StrVector this_ngram(2); // assumes bigram
David Zeuthen 17c4cc7
@@ -734,7 +735,8 @@
David Zeuthen 17c4cc7
     // awb's format
David Zeuthen 17c4cc7
     (void)trace;
David Zeuthen 17c4cc7
     ostream *ost;
David Zeuthen 17c4cc7
-    int i,k;
David Zeuthen 17c4cc7
+    int i;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
     if (filename == "-")
David Zeuthen 17c4cc7
 	ost = &cou;;
David Zeuthen 17c4cc7
@@ -831,7 +833,8 @@
David Zeuthen 17c4cc7
     if (n.representation() == EST_Ngrammar::sparse)
David Zeuthen 17c4cc7
 	return misc_write_error;
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
-    int i,k;
David Zeuthen 17c4cc7
+    int i;
David Zeuthen 17c4cc7
+    EST_Litem *k;
David Zeuthen 17c4cc7
     FILE *ofd;
David Zeuthen 17c4cc7
     double lfreq = -1;
David Zeuthen 17c4cc7
     double count = -1;
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/grammar/wfst/wfst_train.cc festival/speech_tools/grammar/wfst/wfst_train.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/grammar/wfst/wfst_train.cc	2005-07-26 18:37:36.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/grammar/wfst/wfst_train.cc	2006-12-11 17:36:10.000000000 -0500
David Zeuthen 17c4cc7
@@ -315,7 +315,8 @@
David Zeuthen 17c4cc7
     LISP *ssplits;
David Zeuthen 17c4cc7
     gc_protect(&splits);
David Zeuthen 17c4cc7
     EST_String sname;
David Zeuthen 17c4cc7
-    int b,best_b,i;
David Zeuthen 17c4cc7
+    int b,best_b;
David Zeuthen 17c4cc7
+    EST_Litem *i;
David Zeuthen 17c4cc7
     int num_pdfs;
David Zeuthen 17c4cc7
     double best_score, score, sfreq;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -390,7 +391,7 @@
David Zeuthen 17c4cc7
     // Find score of (a+b) vs (all-(a+b))
David Zeuthen 17c4cc7
     EST_DiscreteProbDistribution ab(a);
David Zeuthen 17c4cc7
     EST_DiscreteProbDistribution all_but_ab(all);
David Zeuthen 17c4cc7
-    int i;
David Zeuthen 17c4cc7
+    EST_Litem *i;
David Zeuthen 17c4cc7
     EST_String sname;
David Zeuthen 17c4cc7
     double sfreq, score;
David Zeuthen 17c4cc7
     for (i=b.item_start(); !b.item_end(i);
David Zeuthen 17c4cc7
@@ -522,7 +523,7 @@
David Zeuthen 17c4cc7
     EST_DiscreteProbDistribution pdf_split(&wfst.in_symbols());
David Zeuthen 17c4cc7
     EST_DiscreteProbDistribution pdf_remain(&wfst.in_symbols());
David Zeuthen 17c4cc7
     int in, tostate, id;
David Zeuthen 17c4cc7
-    int i;
David Zeuthen 17c4cc7
+    EST_Litem *i;
David Zeuthen 17c4cc7
     double sfreq;
David Zeuthen 17c4cc7
     EST_String sname;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/include/EST_simplestats.h festival/speech_tools/include/EST_simplestats.h
David Zeuthen 17c4cc7
--- festival/speech_tools.old/include/EST_simplestats.h	2004-04-30 12:56:49.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/include/EST_simplestats.h	2006-12-11 17:36:10.000000000 -0500
David Zeuthen 17c4cc7
@@ -47,6 +47,8 @@
David Zeuthen 17c4cc7
 #include "EST_TKVL.h"
David Zeuthen 17c4cc7
 #include "EST_types.h"
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
+typedef size_t int_iter; 
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
 /** A class for managing mapping string names to integers and back again,
David Zeuthen 17c4cc7
     mainly used for representing alphabets in n-grams and grammars etc.
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -249,7 +251,8 @@
David Zeuthen 17c4cc7
     /// Add this observation, may specify number of occurrences
David Zeuthen 17c4cc7
     void cumulate(const EST_String &s,double count=1);
David Zeuthen 17c4cc7
     /// Add this observation, i must be with in EST\_Discrete range
David Zeuthen 17c4cc7
-    void cumulate(const int i,double count=1);
David Zeuthen 17c4cc7
+    void cumulate(EST_Litem *i,double count=1);
David Zeuthen 17c4cc7
+    void cumulate(int i,double count=1);
David Zeuthen 17c4cc7
     /// Return the most probable member of the distribution
David Zeuthen 17c4cc7
     const EST_String &most_probable(double *prob = NULL) const;
David Zeuthen 17c4cc7
     /** Return the entropy of the distribution
David Zeuthen 17c4cc7
@@ -265,17 +268,18 @@
David Zeuthen 17c4cc7
     /// 
David Zeuthen 17c4cc7
     double frequency(const int i) const; 
David Zeuthen 17c4cc7
     /// Used for iterating through members of the distribution
David Zeuthen 17c4cc7
-    int item_start() const;
David Zeuthen 17c4cc7
+    EST_Litem *item_start() const;
David Zeuthen 17c4cc7
     /// Used for iterating through members of the distribution
David Zeuthen 17c4cc7
-    int item_next(int idx) const;
David Zeuthen 17c4cc7
+    EST_Litem *item_next(EST_Litem *idx) const;
David Zeuthen 17c4cc7
     /// Used for iterating through members of the distribution
David Zeuthen 17c4cc7
-    int item_end(int idx) const;
David Zeuthen 17c4cc7
+    int item_end(EST_Litem *idx) const;
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
     /// During iteration returns name given index 
David Zeuthen 17c4cc7
-    const EST_String &item_name(int idx) const;
David Zeuthen 17c4cc7
+    const EST_String &item_name(EST_Litem *idx) const;
David Zeuthen 17c4cc7
     /// During iteration returns name and frequency given index  
David Zeuthen 17c4cc7
-    void item_freq(int idx,EST_String &s,double &freq) const;
David Zeuthen 17c4cc7
+    void item_freq(EST_Litem *idx,EST_String &s,double &freq) const;
David Zeuthen 17c4cc7
     /// During iteration returns name and probability given index
David Zeuthen 17c4cc7
-    void item_prob(int idx,EST_String &s,double &prob) const;
David Zeuthen 17c4cc7
+    void item_prob(EST_Litem *idx,EST_String &s,double &prob) const;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     /// Returns discrete vocabulary of distribution
David Zeuthen 17c4cc7
     inline const EST_Discrete *const get_discrete() const { return discrete; };
David Zeuthen 17c4cc7
@@ -288,11 +292,13 @@
David Zeuthen 17c4cc7
         accordingly.  This is used when smoothing frequencies.
David Zeuthen 17c4cc7
     */
David Zeuthen 17c4cc7
     void set_frequency(int i,double c); 
David Zeuthen 17c4cc7
+    void set_frequency(EST_Litem *i,double c); 
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
     /// Sets the frequency of named item, without modifying {\tt num\_samples}.
David Zeuthen 17c4cc7
     void override_frequency(const EST_String &s,double c);
David Zeuthen 17c4cc7
     /// Sets the frequency of named item, without modifying {\tt num\_samples}.
David Zeuthen 17c4cc7
     void override_frequency(int i,double c); 
David Zeuthen 17c4cc7
+    void override_frequency(EST_Litem *i,double c); 
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
     /** Sets the number of samples.  Care should be taken on setting this
David Zeuthen 17c4cc7
         as it will affect how probabilities are calculated.
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/include/EST_Track.h festival/speech_tools/include/EST_Track.h
David Zeuthen 17c4cc7
--- festival/speech_tools.old/include/EST_Track.h	2004-05-29 14:34:40.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/include/EST_Track.h	2007-02-13 00:12:53.000000000 -0500
David Zeuthen 17c4cc7
@@ -61,6 +61,7 @@
David Zeuthen 17c4cc7
   tff_htk,
David Zeuthen 17c4cc7
   tff_htk_fbank,
David Zeuthen 17c4cc7
   tff_htk_mfcc,
David Zeuthen 17c4cc7
+  tff_htk_mfcc_e,
David Zeuthen 17c4cc7
   tff_htk_user,
David Zeuthen 17c4cc7
   tff_htk_discrete,
David Zeuthen 17c4cc7
   tff_xmg,
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/include/EST_TSimpleVector.h festival/speech_tools/include/EST_TSimpleVector.h
David Zeuthen 17c4cc7
--- festival/speech_tools.old/include/EST_TSimpleVector.h	2006-07-06 08:57:24.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/include/EST_TSimpleVector.h	2006-09-27 09:19:35.000000000 -0400
David Zeuthen 17c4cc7
@@ -60,6 +60,9 @@
David Zeuthen 17c4cc7
     EST_TSimpleVector(const EST_TSimpleVector<T> &v);
David Zeuthen 17c4cc7
     /// "size" constructor
David Zeuthen 17c4cc7
     EST_TSimpleVector(int n): EST_TVector<T>(n) {}; 
David Zeuthen 17c4cc7
+    /// memory constructor
David Zeuthen 17c4cc7
+    EST_TSimpleVector(int n, T* memory, int offset=0, 
David Zeuthen 17c4cc7
+		      int free_when_destroyed=0): EST_TVector<T>(n,memory) {}; 
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     /// resize vector
David Zeuthen 17c4cc7
     void resize(int n, int set=1); 
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/include/EST_Wagon.h festival/speech_tools/include/EST_Wagon.h
David Zeuthen 17c4cc7
--- festival/speech_tools.old/include/EST_Wagon.h	2006-08-11 18:39:02.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/include/EST_Wagon.h	2006-12-02 11:44:48.000000000 -0500
David Zeuthen 17c4cc7
@@ -239,8 +239,7 @@
David Zeuthen 17c4cc7
 extern EST_FMatrix wgn_DistMatrix;
David Zeuthen 17c4cc7
 extern EST_Track wgn_VertexTrack;
David Zeuthen 17c4cc7
 extern EST_Track wgn_UnitTrack;
David Zeuthen 17c4cc7
-extern int wgn_VertexTrack_start;
David Zeuthen 17c4cc7
-extern int wgn_VertexTrack_end;
David Zeuthen 17c4cc7
+extern EST_Track wgn_VertexFeats;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void wgn_load_datadescription(EST_String fname,LISP ignores);
David Zeuthen 17c4cc7
 void wgn_load_dataset(WDataSet &ds,EST_String fname);
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/lib/siod/siod.scm festival/speech_tools/lib/siod/siod.scm
David Zeuthen 17c4cc7
--- festival/speech_tools.old/lib/siod/siod.scm	2003-03-31 09:28:24.000000000 -0500
David Zeuthen 17c4cc7
+++ festival/speech_tools/lib/siod/siod.scm	2006-12-11 17:36:10.000000000 -0500
David Zeuthen 17c4cc7
@@ -209,7 +209,13 @@
David Zeuthen 17c4cc7
 (defun append2 (a b)
David Zeuthen 17c4cc7
   (if (null a)
David Zeuthen 17c4cc7
       b
David Zeuthen 17c4cc7
-    (cons (car a) (append2 (cdr a) b))))
David Zeuthen 17c4cc7
+      (begin
David Zeuthen 17c4cc7
+        (let ((x (reverse a))
David Zeuthen 17c4cc7
+              (y b))
David Zeuthen 17c4cc7
+          (while x
David Zeuthen 17c4cc7
+            (set! y (cons (car x) y))
David Zeuthen 17c4cc7
+            (set! x (cdr x)))
David Zeuthen 17c4cc7
+          y))))
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 (defun rplacd (a b)
David Zeuthen 17c4cc7
 "(replacd A B)
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/main/wagon_main.cc festival/speech_tools/main/wagon_main.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/main/wagon_main.cc	2006-09-10 17:33:18.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/main/wagon_main.cc	2006-12-02 14:46:44.000000000 -0500
David Zeuthen 17c4cc7
@@ -2,7 +2,7 @@
David Zeuthen 17c4cc7
 /*                                                                       */
David Zeuthen 17c4cc7
 /*                Centre for Speech Technology Research                  */
David Zeuthen 17c4cc7
 /*                     University of Edinburgh, UK                       */
David Zeuthen 17c4cc7
-/*                     Copyright (c) 1996-2005                           */
David Zeuthen 17c4cc7
+/*                     Copyright (c) 1996-2006                           */
David Zeuthen 17c4cc7
 /*                        All Rights Reserved.                           */
David Zeuthen 17c4cc7
 /*                                                                       */
David Zeuthen 17c4cc7
 /*  Permission is hereby granted, free of charge, to use and distribute  */
David Zeuthen 17c4cc7
@@ -39,6 +39,8 @@
David Zeuthen 17c4cc7
 /*                                                                       */
David Zeuthen 17c4cc7
 /*  Added decision list support, Feb 1997                                */
David Zeuthen 17c4cc7
 /*                                                                       */
David Zeuthen 17c4cc7
+/*  Added vector support for Clustergen 2005/2006                        */
David Zeuthen 17c4cc7
+/*                                                                       */
David Zeuthen 17c4cc7
 /*=======================================================================*/
David Zeuthen 17c4cc7
 #include <cstdlib>
David Zeuthen 17c4cc7
 #include <iostream>
David Zeuthen 17c4cc7
@@ -111,6 +113,54 @@
David Zeuthen 17c4cc7
     return 0;
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
+static int set_Vertex_Feats(EST_Track &wgn_VertexFeats,
David Zeuthen 17c4cc7
+                            EST_String &wagon_track_features)
David Zeuthen 17c4cc7
+{
David Zeuthen 17c4cc7
+    int i,s=0,e;
David Zeuthen 17c4cc7
+    EST_TokenStream ts;
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+    for (i=0; i
David Zeuthen 17c4cc7
+        wgn_VertexFeats.a(0,i) = 0.0;
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+    ts.open_string(wagon_track_features);
David Zeuthen 17c4cc7
+    ts.set_WhiteSpaceChars(",- ");
David Zeuthen 17c4cc7
+    ts.set_PunctuationSymbols("");
David Zeuthen 17c4cc7
+    ts.set_PrePunctuationSymbols("");
David Zeuthen 17c4cc7
+    ts.set_SingleCharSymbols("");
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+    while (!ts.eof())
David Zeuthen 17c4cc7
+    {
David Zeuthen 17c4cc7
+        EST_Token &token = ts.get();
David Zeuthen 17c4cc7
+        const EST_String ws = (const char *)token.whitespace();
David Zeuthen 17c4cc7
+        if (token == "all")
David Zeuthen 17c4cc7
+        {
David Zeuthen 17c4cc7
+            for (i=0; i
David Zeuthen 17c4cc7
+                wgn_VertexFeats.a(0,i) = 1.0;
David Zeuthen 17c4cc7
+            break;
David Zeuthen 17c4cc7
+        } else if ((ws == ",") || (ws == ""))
David Zeuthen 17c4cc7
+        {
David Zeuthen 17c4cc7
+            s = atoi(token.string());
David Zeuthen 17c4cc7
+            wgn_VertexFeats.a(0,s) = 1.0;
David Zeuthen 17c4cc7
+        } else if (ws == "-")
David Zeuthen 17c4cc7
+        {
David Zeuthen 17c4cc7
+            if (token == "")
David Zeuthen 17c4cc7
+                e = wgn_VertexFeats.num_channels()-1;
David Zeuthen 17c4cc7
+            else
David Zeuthen 17c4cc7
+                e = atoi(token.string());
David Zeuthen 17c4cc7
+            for (i=s; i<=e && i
David Zeuthen 17c4cc7
+                wgn_VertexFeats.a(0,i) = 1.0;
David Zeuthen 17c4cc7
+        } else
David Zeuthen 17c4cc7
+        {
David Zeuthen 17c4cc7
+            printf("wagon: track_feats invalid: %s at position %d\n",
David Zeuthen 17c4cc7
+                   (const char *)wagon_track_features,
David Zeuthen 17c4cc7
+                   ts.filepos());
David Zeuthen 17c4cc7
+            exit(-1);
David Zeuthen 17c4cc7
+        }
David Zeuthen 17c4cc7
+    }
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+    return 0;
David Zeuthen 17c4cc7
+}
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
 static int wagon_main(int argc, char **argv)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     // Top level function sets up data and creates a tree
David Zeuthen 17c4cc7
@@ -119,6 +169,8 @@
David Zeuthen 17c4cc7
     EST_String wgn_oname;
David Zeuthen 17c4cc7
     ostream *wgn_coutput = 0;
David Zeuthen 17c4cc7
     float stepwise_limit = 0;
David Zeuthen 17c4cc7
+    int feats_start=0, feats_end=0;
David Zeuthen 17c4cc7
+    int i;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     parse_command_line
David Zeuthen 17c4cc7
 	(argc, argv,
David Zeuthen 17c4cc7
@@ -142,6 +194,9 @@
David Zeuthen 17c4cc7
          "                  start channel vertex indices\n"+
David Zeuthen 17c4cc7
 	 "-track_end <int>\n"+
David Zeuthen 17c4cc7
          "                  end (inclusive) channel for vertex indices\n"+
David Zeuthen 17c4cc7
+	 "-track_feats <string>\n"+
David Zeuthen 17c4cc7
+         "                  Track features to use, comma separated list\n"+
David Zeuthen 17c4cc7
+         "                  with feature numbers and/or ranges, 0 start\n"+
David Zeuthen 17c4cc7
 	 "-unittrack <ifile>\n"+
David Zeuthen 17c4cc7
          "                  track for unit start and length in vertex track\n"+
David Zeuthen 17c4cc7
 	 "-quiet            No questions printed during building\n"+
David Zeuthen 17c4cc7
@@ -256,36 +311,53 @@
David Zeuthen 17c4cc7
     else if (al.present("-track"))
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
         wgn_VertexTrack.load(al.val("-track"));
David Zeuthen 17c4cc7
-        wgn_VertexTrack_start = 0;
David Zeuthen 17c4cc7
-        wgn_VertexTrack_end = wgn_VertexTrack.num_channels()-1;
David Zeuthen 17c4cc7
+        wgn_VertexFeats.resize(1,wgn_VertexTrack.num_channels());
David Zeuthen 17c4cc7
+        for (i=0; i
David Zeuthen 17c4cc7
+            wgn_VertexFeats.a(0,i) = 1.0;
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     if (al.present("-track_start"))
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-        wgn_VertexTrack_start = al.ival("-track_start");
David Zeuthen 17c4cc7
-        if ((wgn_VertexTrack_start < 0) ||
David Zeuthen 17c4cc7
-            (wgn_VertexTrack_start > wgn_VertexTrack.num_channels()))
David Zeuthen 17c4cc7
+        feats_start = al.ival("-track_start");
David Zeuthen 17c4cc7
+        if ((feats_start < 0) ||
David Zeuthen 17c4cc7
+            (feats_start > wgn_VertexTrack.num_channels()))
David Zeuthen 17c4cc7
         {
David Zeuthen 17c4cc7
             printf("wagon: track_start invalid: %d out of %d channels\n",
David Zeuthen 17c4cc7
-                   wgn_VertexTrack_start,
David Zeuthen 17c4cc7
+                   feats_start,
David Zeuthen 17c4cc7
                    wgn_VertexTrack.num_channels());
David Zeuthen 17c4cc7
             exit(-1);
David Zeuthen 17c4cc7
         }
David Zeuthen 17c4cc7
+        for (i=0; i
David Zeuthen 17c4cc7
+            wgn_VertexFeats.a(0,i) = 0.0; /* don't do feats up to start */
David Zeuthen 17c4cc7
+            
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     if (al.present("-track_end"))
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-        wgn_VertexTrack_end = al.ival("-track_end");
David Zeuthen 17c4cc7
-        if ((wgn_VertexTrack_end < wgn_VertexTrack_start) ||
David Zeuthen 17c4cc7
-            (wgn_VertexTrack_end > wgn_VertexTrack.num_channels()))
David Zeuthen 17c4cc7
+        feats_end = al.ival("-track_end");
David Zeuthen 17c4cc7
+        if ((feats_end < feats_start) ||
David Zeuthen 17c4cc7
+            (feats_end > wgn_VertexTrack.num_channels()))
David Zeuthen 17c4cc7
         {
David Zeuthen 17c4cc7
             printf("wagon: track_end invalid: %d between start %d out of %d channels\n",
David Zeuthen 17c4cc7
-                   wgn_VertexTrack_end,
David Zeuthen 17c4cc7
-                   wgn_VertexTrack_start,
David Zeuthen 17c4cc7
+                   feats_end,
David Zeuthen 17c4cc7
+                   feats_start,
David Zeuthen 17c4cc7
                    wgn_VertexTrack.num_channels());
David Zeuthen 17c4cc7
             exit(-1);
David Zeuthen 17c4cc7
         }
David Zeuthen 17c4cc7
+        for (i=feats_end+1; i
David Zeuthen 17c4cc7
+            wgn_VertexFeats.a(0,i) = 0.0; /* don't do feats after end */
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
+    if (al.present("-track_feats"))
David Zeuthen 17c4cc7
+    {   /* overrides start and end numbers */
David Zeuthen 17c4cc7
+        EST_String wagon_track_features = al.val("-track_feats");
David Zeuthen 17c4cc7
+        set_Vertex_Feats(wgn_VertexFeats,wagon_track_features);
David Zeuthen 17c4cc7
+    }
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+    //    printf("Track feats\n");
David Zeuthen 17c4cc7
+    //    for (i=0; i
David Zeuthen 17c4cc7
+    //        if (wgn_VertexFeats.a(0,i) > 0.0)
David Zeuthen 17c4cc7
+    //            printf("%d ",i);
David Zeuthen 17c4cc7
+    //    printf("\n");
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     if (al.present("-unittrack"))
David Zeuthen 17c4cc7
     {   /* contains two features, a start and length.  start indexes */
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/siod/slib_str.cc festival/speech_tools/siod/slib_str.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/siod/slib_str.cc	2004-09-30 08:53:36.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/siod/slib_str.cc	2006-09-27 11:54:29.000000000 -0400
David Zeuthen 17c4cc7
@@ -268,7 +268,7 @@
David Zeuthen 17c4cc7
 LISP l_matches(LISP atom, LISP regex)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     // t if printname of atom matches regex, nil otherwise
David Zeuthen 17c4cc7
-    EST_String pname = get_c_string(atom);
David Zeuthen 17c4cc7
+    const EST_String pname = get_c_string(atom);
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     if (pname.matches(make_regex(get_c_string(regex))) == TRUE)
David Zeuthen 17c4cc7
 	return truth;
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/speech_class/EST_TrackFile.cc festival/speech_tools/speech_class/EST_TrackFile.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/speech_class/EST_TrackFile.cc	2006-09-10 16:32:14.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/speech_class/EST_TrackFile.cc	2007-02-13 00:12:53.000000000 -0500
David Zeuthen 17c4cc7
@@ -522,7 +522,6 @@
David Zeuthen 17c4cc7
 // 	}
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 	if( ascii ){
David Zeuthen 17c4cc7
-
David Zeuthen 17c4cc7
 	  for (j = 0; j < num_channels; ++j){
David Zeuthen 17c4cc7
 	    tr.a(i, j) = ts.get().Float(ok);
David Zeuthen 17c4cc7
 	    if (!ok)
David Zeuthen 17c4cc7
@@ -1254,6 +1253,11 @@
David Zeuthen 17c4cc7
     return save_htk_as(filename, tmp, HTK_MFCC);
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
+EST_write_status EST_TrackFile::save_htk_mfcc_e(const EST_String filename, EST_Track tmp)
David Zeuthen 17c4cc7
+{
David Zeuthen 17c4cc7
+    return save_htk_as(filename, tmp, HTK_MFCC | HTK_ENERGY);
David Zeuthen 17c4cc7
+}
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
 EST_write_status EST_TrackFile::save_htk_user(const EST_String filename, EST_Track tmp)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     return save_htk_as(filename, tmp, HTK_USER);
David Zeuthen 17c4cc7
@@ -2097,14 +2101,14 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 EST_String EST_TrackFile::options_supported(void)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
-    EST_String s("Available track file formats:\n");
David Zeuthen 17c4cc7
+    EST_String s("AvailablE track file formats:\n");
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
     for(int n=0; n< EST_TrackFile::map.n() ; n++)
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
 	const char *nm = EST_TrackFile::map.name(EST_TrackFile::map.token(n));
David Zeuthen 17c4cc7
 	const char *d = EST_TrackFile::map.info(EST_TrackFile::map.token(n)).description;
David Zeuthen 17c4cc7
 	
David Zeuthen 17c4cc7
-	s += EST_String::cat("        ", nm, EST_String(" ")*(12-strlen(nm)), d, "\n");
David Zeuthen 17c4cc7
+	s += EST_String::cat("        ", nm, EST_String(" ")*(13-strlen(nm)), d, "\n");
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
     return s;
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
@@ -2137,6 +2141,9 @@
David Zeuthen 17c4cc7
 {tff_htk_mfcc,	{ "htk_mfcc" }, 
David Zeuthen 17c4cc7
 {FALSE, EST_TrackFile::load_htk, EST_TrackFile::save_htk_mfcc,
David Zeuthen 17c4cc7
  "htk file (as MFCC)"}},
David Zeuthen 17c4cc7
+{tff_htk_mfcc_e,	{ "htk_mfcc_e" }, 
David Zeuthen 17c4cc7
+{FALSE, EST_TrackFile::load_htk, EST_TrackFile::save_htk_mfcc_e,
David Zeuthen 17c4cc7
+ "htk file (as MFCC_E)"}},
David Zeuthen 17c4cc7
 {tff_htk_user,	{ "htk_user" }, 
David Zeuthen 17c4cc7
 {FALSE, EST_TrackFile::load_htk, EST_TrackFile::save_htk_user,
David Zeuthen 17c4cc7
  "htk file (as USER)"}},
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/speech_class/EST_TrackFile.h festival/speech_tools/speech_class/EST_TrackFile.h
David Zeuthen 17c4cc7
--- festival/speech_tools.old/speech_class/EST_TrackFile.h	2004-05-29 14:34:42.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/speech_class/EST_TrackFile.h	2007-02-13 00:12:53.000000000 -0500
David Zeuthen 17c4cc7
@@ -111,6 +111,8 @@
David Zeuthen 17c4cc7
   static EST_write_status save_htk_fbank(SaveTrackFileArgs);
David Zeuthen 17c4cc7
   static EST_read_status load_htk_fbank(LoadTrackFileArgs);
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
+  static EST_write_status save_htk_mfcc_e(SaveTrackFileArgs);
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
   static EST_write_status save_htk_mfcc(SaveTrackFileArgs);
David Zeuthen 17c4cc7
   static EST_read_status load_htk_mfcc(LoadTrackFileArgs);
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/speech_class/EST_wave_io.cc festival/speech_tools/speech_class/EST_wave_io.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/speech_class/EST_wave_io.cc	2006-01-12 10:37:51.000000000 -0500
David Zeuthen 17c4cc7
+++ festival/speech_tools/speech_class/EST_wave_io.cc	2007-02-13 00:12:53.000000000 -0500
David Zeuthen 17c4cc7
@@ -173,7 +173,7 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     current_pos = ts.tell();
David Zeuthen 17c4cc7
     if (ts.fread(header,NIST_HDR_SIZE,1) != 1)
David Zeuthen 17c4cc7
-	return misc_read_error;
David Zeuthen 17c4cc7
+	return wrong_format;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     if (strncmp(header,NIST_SIG,sizeof(NIST_SIG)) != 0)
David Zeuthen 17c4cc7
 	return wrong_format;
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/stats/EST_DProbDist.cc festival/speech_tools/stats/EST_DProbDist.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/stats/EST_DProbDist.cc	2004-09-30 08:53:36.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/stats/EST_DProbDist.cc	2006-12-11 17:36:12.000000000 -0500
David Zeuthen 17c4cc7
@@ -46,6 +46,39 @@
David Zeuthen 17c4cc7
 #include "EST_TKVL.h"
David Zeuthen 17c4cc7
 #include "EST_simplestats.h"
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
+/* We share ints and pointers for two types of probability distributions */
David Zeuthen 17c4cc7
+/* The know discrete sets can be indexed by ints which is *much* faster  */
David Zeuthen 17c4cc7
+/* the indices pass around a pointers but the lower part contain ints in */
David Zeuthen 17c4cc7
+/* the discrete case                                                     */
David Zeuthen 17c4cc7
+/* On 64bit architectures this is a issue so we need have some macros    */
David Zeuthen 17c4cc7
+/* to help us here.                                                      */
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+const int est_64to32(void *c)
David Zeuthen 17c4cc7
+{   /* this returns the bottom end of the pointer as an unsigned int */
David Zeuthen 17c4cc7
+    /* I believe this is a safe way to do it, we check the bits in the */
David Zeuthen 17c4cc7
+    /* 64 bit int and multiply them out in the 32 bit one              */
David Zeuthen 17c4cc7
+    /* there might be better ways, but I think you'd need to think about */
David Zeuthen 17c4cc7
+    /* byte order then                                                 */
David Zeuthen 17c4cc7
+    long long l;
David Zeuthen 17c4cc7
+    int d;
David Zeuthen 17c4cc7
+    int i,x;
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+    l = (long long)c;
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+    for (i=0,d=0,x=1; i<24; i++)
David Zeuthen 17c4cc7
+    {
David Zeuthen 17c4cc7
+        if (l & 1)
David Zeuthen 17c4cc7
+            d += x;
David Zeuthen 17c4cc7
+        l = l >> 1;
David Zeuthen 17c4cc7
+        x += x;
David Zeuthen 17c4cc7
+    }
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+    return d;
David Zeuthen 17c4cc7
+}
David Zeuthen 17c4cc7
+/* #define tprob_int(X) ((sizeof(void *) != 8) ? est_64to32(X) : (int)X) */
David Zeuthen 17c4cc7
+#define tprob_int(X) (est_64to32(X))
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
 EST_DiscreteProbDistribution::EST_DiscreteProbDistribution(const EST_Discrete *d,
David Zeuthen 17c4cc7
 		 const double n_samples, const EST_DVector &counts)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
@@ -109,7 +142,13 @@
David Zeuthen 17c4cc7
 	icounts.a_no_check(i) = 0;
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
-void EST_DiscreteProbDistribution::cumulate(const int i,double count)
David Zeuthen 17c4cc7
+void EST_DiscreteProbDistribution::cumulate(EST_Litem *i,double count)
David Zeuthen 17c4cc7
+{
David Zeuthen 17c4cc7
+    icounts[tprob_int(i)] += count;
David Zeuthen 17c4cc7
+    num_samples += count;
David Zeuthen 17c4cc7
+}
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+void EST_DiscreteProbDistribution::cumulate(int i,double count)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     icounts[i] += count;
David Zeuthen 17c4cc7
     num_samples += count;
David Zeuthen 17c4cc7
@@ -257,6 +296,21 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
+void EST_DiscreteProbDistribution::set_frequency(EST_Litem *i,double c)
David Zeuthen 17c4cc7
+{
David Zeuthen 17c4cc7
+    if (type == tprob_discrete)
David Zeuthen 17c4cc7
+    {
David Zeuthen 17c4cc7
+	num_samples -= icounts[tprob_int(i)];
David Zeuthen 17c4cc7
+	num_samples += c;
David Zeuthen 17c4cc7
+	icounts[tprob_int(i)] = c;
David Zeuthen 17c4cc7
+    }
David Zeuthen 17c4cc7
+    else
David Zeuthen 17c4cc7
+    {
David Zeuthen 17c4cc7
+	cerr << "ProbDistribution: can't access string type pd with int\n";
David Zeuthen 17c4cc7
+    }
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
+}
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void EST_DiscreteProbDistribution::override_frequency(const EST_String &s,double c)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
@@ -274,6 +328,14 @@
David Zeuthen 17c4cc7
 	cerr << "ProbDistribution: can't access string type pd with int\n";
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
+void EST_DiscreteProbDistribution::override_frequency(EST_Litem *i,double c)
David Zeuthen 17c4cc7
+{
David Zeuthen 17c4cc7
+    if (type == tprob_discrete)
David Zeuthen 17c4cc7
+	icounts[tprob_int(i)] = c;
David Zeuthen 17c4cc7
+    else
David Zeuthen 17c4cc7
+	cerr << "ProbDistribution: can't access string type pd with int\n";
David Zeuthen 17c4cc7
+}
David Zeuthen 17c4cc7
+
David Zeuthen 17c4cc7
 double EST_DiscreteProbDistribution::entropy() const
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     // Returns the entropy of the current distribution
David Zeuthen 17c4cc7
@@ -305,70 +367,70 @@
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 //  For iterating through members of a probability distribution
David Zeuthen 17c4cc7
-int EST_DiscreteProbDistribution::item_start(void) const
David Zeuthen 17c4cc7
+EST_Litem *EST_DiscreteProbDistribution::item_start(void) const
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     if (type == tprob_discrete)
David Zeuthen 17c4cc7
-	return 0;
David Zeuthen 17c4cc7
+	return NULL;
David Zeuthen 17c4cc7
     else
David Zeuthen 17c4cc7
-	return (int)scounts.list.head();
David Zeuthen 17c4cc7
+	return scounts.list.head();
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
-int EST_DiscreteProbDistribution::item_end(int idx) const
David Zeuthen 17c4cc7
+int EST_DiscreteProbDistribution::item_end(EST_Litem *idx) const
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     if (type == tprob_discrete)
David Zeuthen 17c4cc7
-	return (idx >= icounts.length());
David Zeuthen 17c4cc7
+	return (tprob_int(idx) >= icounts.length());
David Zeuthen 17c4cc7
     else
David Zeuthen 17c4cc7
-	return ((EST_Litem *)idx == 0);
David Zeuthen 17c4cc7
+	return (idx == 0);
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
-int EST_DiscreteProbDistribution::item_next(int idx) const
David Zeuthen 17c4cc7
+EST_Litem *EST_DiscreteProbDistribution::item_next(EST_Litem *idx) const
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     if (type == tprob_discrete)
David Zeuthen 17c4cc7
-	return ++idx;
David Zeuthen 17c4cc7
+	return (EST_Litem *)(((unsigned char *)idx)+1);
David Zeuthen 17c4cc7
     else
David Zeuthen 17c4cc7
-	return (int)next((EST_Litem *)idx);
David Zeuthen 17c4cc7
+	return next(idx);
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
-const EST_String &EST_DiscreteProbDistribution::item_name(int idx) const
David Zeuthen 17c4cc7
+const EST_String &EST_DiscreteProbDistribution::item_name(EST_Litem *idx) const
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     if (type == tprob_discrete)
David Zeuthen 17c4cc7
-	return discrete->name(idx);
David Zeuthen 17c4cc7
+	return discrete->name(tprob_int(idx));
David Zeuthen 17c4cc7
     else
David Zeuthen 17c4cc7
-	return scounts.list((EST_Litem *)idx).k;
David Zeuthen 17c4cc7
+	return scounts.list(idx).k;
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
-void EST_DiscreteProbDistribution::item_freq(int idx,EST_String &s,double &freq) const
David Zeuthen 17c4cc7
+void EST_DiscreteProbDistribution::item_freq(EST_Litem *idx,EST_String &s,double &freq) const
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     if (type == tprob_discrete)
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-	s = discrete->name(idx);
David Zeuthen 17c4cc7
-	freq = icounts(idx);
David Zeuthen 17c4cc7
+	s = discrete->name(tprob_int(idx));
David Zeuthen 17c4cc7
+	freq = icounts(tprob_int(idx));
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
     else
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-	s = scounts.list((EST_Litem *)idx).k;
David Zeuthen 17c4cc7
-	freq = scounts.list((EST_Litem *)idx).v;
David Zeuthen 17c4cc7
+	s = scounts.list(idx).k;
David Zeuthen 17c4cc7
+	freq = scounts.list(idx).v;
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
-void EST_DiscreteProbDistribution::item_prob(int idx,EST_String &s,double &prob) const
David Zeuthen 17c4cc7
+void EST_DiscreteProbDistribution::item_prob(EST_Litem *idx,EST_String &s,double &prob) const
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     if (type == tprob_discrete)
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-	prob = probability(idx);
David Zeuthen 17c4cc7
-	s = discrete->name(idx);
David Zeuthen 17c4cc7
+	prob = probability(tprob_int(idx));
David Zeuthen 17c4cc7
+	s = discrete->name(tprob_int(idx));
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
     else
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-	s = scounts.list((EST_Litem *)idx).k;
David Zeuthen 17c4cc7
-	prob = (double)scounts.list((EST_Litem *)idx).v/num_samples;
David Zeuthen 17c4cc7
+	s = scounts.list(idx).k;
David Zeuthen 17c4cc7
+	prob = (double)scounts.list(idx).v/num_samples;
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 ostream & operator<<(ostream &s, const EST_DiscreteProbDistribution &pd)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     // Output best with probabilities
David Zeuthen 17c4cc7
-    int i;
David Zeuthen 17c4cc7
+    EST_Litem *i;
David Zeuthen 17c4cc7
     double prob;
David Zeuthen 17c4cc7
     double sum=0;
David Zeuthen 17c4cc7
     EST_String name;
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/stats/EST_viterbi.cc festival/speech_tools/stats/EST_viterbi.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/stats/EST_viterbi.cc	2006-07-07 17:26:11.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/stats/EST_viterbi.cc	2006-09-27 09:19:35.000000000 -0400
David Zeuthen 17c4cc7
@@ -165,7 +165,7 @@
David Zeuthen 17c4cc7
 	return (a < b);
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
-static void init_dynamic_states(EST_VTPoint *p, EST_VTCandidate *cands)
David Zeuthen 17c4cc7
+static int init_dynamic_states(EST_VTPoint *p, EST_VTCandidate *cands)
David Zeuthen 17c4cc7
 {
David Zeuthen 17c4cc7
     // In a special (hmm maybe not so special), the number of "states"
David Zeuthen 17c4cc7
     // is the number of candidates
David Zeuthen 17c4cc7
@@ -175,6 +175,8 @@
David Zeuthen 17c4cc7
     for (i=0, c=cands; c != 0; c=c->next,i++)
David Zeuthen 17c4cc7
 	c->pos = i;
David Zeuthen 17c4cc7
     init_paths_array(p,i);
David Zeuthen 17c4cc7
+    
David Zeuthen 17c4cc7
+    return i;
David Zeuthen 17c4cc7
 }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 void EST_Viterbi_Decoder::set_pruning_parameters(float beam, float
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/stats/wagon/wagon_aux.cc festival/speech_tools/stats/wagon/wagon_aux.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/stats/wagon/wagon_aux.cc	2006-08-20 13:02:39.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/stats/wagon/wagon_aux.cc	2006-12-12 10:45:19.000000000 -0500
David Zeuthen 17c4cc7
@@ -422,16 +422,19 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 #if 1
David Zeuthen 17c4cc7
     /* simple distance */
David Zeuthen 17c4cc7
-    for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
+    for (j=0; j
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-        b.reset();
David Zeuthen 17c4cc7
-        for (pp=members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
+        if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
         {
David Zeuthen 17c4cc7
-            i = members.item(pp);
David Zeuthen 17c4cc7
-            b += wgn_VertexTrack.a(i,j);
David Zeuthen 17c4cc7
+            b.reset();
David Zeuthen 17c4cc7
+            for (pp=members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
+            {
David Zeuthen 17c4cc7
+                i = members.item(pp);
David Zeuthen 17c4cc7
+                b += wgn_VertexTrack.a(i,j);
David Zeuthen 17c4cc7
+            }
David Zeuthen 17c4cc7
+            a += b.stddev();
David Zeuthen 17c4cc7
+            count = b.samples();
David Zeuthen 17c4cc7
         }
David Zeuthen 17c4cc7
-        a += b.stddev();
David Zeuthen 17c4cc7
-        count = b.samples();
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
 #endif
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -440,26 +443,37 @@
David Zeuthen 17c4cc7
     /* worse in listening experiments */
David Zeuthen 17c4cc7
     EST_SuffStats **cs;
David Zeuthen 17c4cc7
     int mmm;
David Zeuthen 17c4cc7
-    cs = new EST_SuffStats *[wgn_VertexTrack_end+1];
David Zeuthen 17c4cc7
-    for (j=0; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-        cs[j] = new EST_SuffStats[wgn_VertexTrack_end+1];
David Zeuthen 17c4cc7
+    cs = new EST_SuffStats *[wgn_VertexTrack.num_channels()+1];
David Zeuthen 17c4cc7
+    for (j=0; j<=wgn_VertexTrack.num_channels(); j++)
David Zeuthen 17c4cc7
+        cs[j] = new EST_SuffStats[wgn_VertexTrack.num_channels()+1];
David Zeuthen 17c4cc7
     /* Find means for diagonal */
David Zeuthen 17c4cc7
-    for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
+    for (j=0; j
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-        for (pp=members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
-            cs[j][j] += wgn_VertexTrack.a(members.item(pp),j);
David Zeuthen 17c4cc7
-    }
David Zeuthen 17c4cc7
-    for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-        for (i=j+1; i
David Zeuthen 17c4cc7
+        if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+        {
David Zeuthen 17c4cc7
             for (pp=members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
+                cs[j][j] += wgn_VertexTrack.a(members.item(pp),j);
David Zeuthen 17c4cc7
+        }
David Zeuthen 17c4cc7
+    }
David Zeuthen 17c4cc7
+    for (j=0; j
David Zeuthen 17c4cc7
+    {
David Zeuthen 17c4cc7
+        for (i=j+1; i
David Zeuthen 17c4cc7
+            if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
             {
David Zeuthen 17c4cc7
-                mmm = members.item(pp);
David Zeuthen 17c4cc7
-                cs[i][j] += (wgn_VertexTrack.a(mmm,i)-cs[j][j].mean())*
David Zeuthen 17c4cc7
-                    (wgn_VertexTrack.a(mmm,j)-cs[j][j].mean());
David Zeuthen 17c4cc7
-            }
David Zeuthen 17c4cc7
-    for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-        for (i=j+1; i
David Zeuthen 17c4cc7
-            a += cs[i][j].stddev();
David Zeuthen 17c4cc7
+                for (pp=members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
+                {
David Zeuthen 17c4cc7
+                    mmm = members.item(pp);
David Zeuthen 17c4cc7
+                    cs[i][j] += (wgn_VertexTrack.a(mmm,i)-cs[j][j].mean())*
David Zeuthen 17c4cc7
+                        (wgn_VertexTrack.a(mmm,j)-cs[j][j].mean());
David Zeuthen 17c4cc7
+                }
David Zeuthen 17c4cc7
+            }
David Zeuthen 17c4cc7
+    }
David Zeuthen 17c4cc7
+    for (j=0; j
David Zeuthen 17c4cc7
+    {
David Zeuthen 17c4cc7
+        for (i=j+1; i
David Zeuthen 17c4cc7
+            if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                a += cs[i][j].stddev();
David Zeuthen 17c4cc7
+    }
David Zeuthen 17c4cc7
     count = cs[0][0].samples();
David Zeuthen 17c4cc7
 #endif
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -476,11 +490,12 @@
David Zeuthen 17c4cc7
         for (qq=next(pp); qq != 0; qq=next(qq))
David Zeuthen 17c4cc7
         {
David Zeuthen 17c4cc7
             y = members.item(qq);
David Zeuthen 17c4cc7
-            for (q=0.0,j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-            {
David Zeuthen 17c4cc7
-                d = wgn_VertexTrack(x,j)-wgn_VertexTrack(y,j);
David Zeuthen 17c4cc7
-                q += d*d;
David Zeuthen 17c4cc7
-            }
David Zeuthen 17c4cc7
+            for (q=0.0,j=0; j
David Zeuthen 17c4cc7
+                if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                {
David Zeuthen 17c4cc7
+                    d = wgn_VertexTrack(x,j)-wgn_VertexTrack(y,j);
David Zeuthen 17c4cc7
+                    q += d*d;
David Zeuthen 17c4cc7
+                }
David Zeuthen 17c4cc7
             a += sqrt(q);
David Zeuthen 17c4cc7
         }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -562,7 +577,7 @@
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
         /* a list of SuffStats on for each point in the trajectory */
David Zeuthen 17c4cc7
         trajectory = new EST_SuffStats *[l];
David Zeuthen 17c4cc7
-        width = wgn_VertexTrack_end+1;
David Zeuthen 17c4cc7
+        width = wgn_VertexTrack.num_channels()+1;
David Zeuthen 17c4cc7
         for (j=0; j
David Zeuthen 17c4cc7
             trajectory[j] = new EST_SuffStats[width];
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
@@ -574,16 +589,22 @@
David Zeuthen 17c4cc7
             for (ti=0,n=0.0; ti
David Zeuthen 17c4cc7
             {
David Zeuthen 17c4cc7
                 ni = (int)n;  // hmm floor or nint ??
David Zeuthen 17c4cc7
-                for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-                    trajectory[ti][j] += wgn_VertexTrack.a(s+ni,j);
David Zeuthen 17c4cc7
+                for (j=0; j
David Zeuthen 17c4cc7
+                {
David Zeuthen 17c4cc7
+                    if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                        trajectory[ti][j] += wgn_VertexTrack.a(s+ni,j);
David Zeuthen 17c4cc7
+                }
David Zeuthen 17c4cc7
             }
David Zeuthen 17c4cc7
         }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
         /* find sum of sum of stddev for all coefs of all traj points */
David Zeuthen 17c4cc7
         stdss.reset();
David Zeuthen 17c4cc7
         for (ti=0; ti
David Zeuthen 17c4cc7
-            for (j=wgn_VertexTrack_start+1; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-                stdss += trajectory[ti][j].stddev();
David Zeuthen 17c4cc7
+            for (j=0; j
David Zeuthen 17c4cc7
+            {
David Zeuthen 17c4cc7
+                if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                    stdss += trajectory[ti][j].stddev();
David Zeuthen 17c4cc7
+            }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
         // This is sum of all stddev * samples
David Zeuthen 17c4cc7
         score = stdss.mean() * members.length();
David Zeuthen 17c4cc7
@@ -597,7 +618,7 @@
David Zeuthen 17c4cc7
         /* a list of SuffStats on for each point in the trajectory */
David Zeuthen 17c4cc7
         trajectory = new EST_SuffStats *[l];
David Zeuthen 17c4cc7
         for (j=0; j
David Zeuthen 17c4cc7
-            trajectory[j] = new EST_SuffStats[wgn_VertexTrack_end+1];
David Zeuthen 17c4cc7
+            trajectory[j] = new EST_SuffStats[wgn_VertexTrack.num_channels()+1];
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
         for (pp=members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
         {   /* for each unit */
David Zeuthen 17c4cc7
@@ -617,22 +638,26 @@
David Zeuthen 17c4cc7
             for (ti=0,n=0.0; s1l > 0 && ti
David Zeuthen 17c4cc7
             {
David Zeuthen 17c4cc7
                 ni = s + (((int)n < s1l) ? (int)n : s1l - 1);
David Zeuthen 17c4cc7
-                for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-                    trajectory[ti][j] += wgn_VertexTrack.a(ni,j);
David Zeuthen 17c4cc7
+                for (j=0; j
David Zeuthen 17c4cc7
+                    if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                        trajectory[ti][j] += wgn_VertexTrack.a(ni,j);
David Zeuthen 17c4cc7
             }
David Zeuthen 17c4cc7
             ti = l1; /* do it explicitly in case s1l < 1 */
David Zeuthen 17c4cc7
-            for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-                trajectory[ti][j] += -1;
David Zeuthen 17c4cc7
+            for (j=0; j
David Zeuthen 17c4cc7
+                if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                    trajectory[ti][j] += -1;
David Zeuthen 17c4cc7
             /* Second half */
David Zeuthen 17c4cc7
             s += s1l+1;
David Zeuthen 17c4cc7
             for (ti++,n=0.0; s2l > 0 && ti
David Zeuthen 17c4cc7
             {
David Zeuthen 17c4cc7
                 ni = s + (((int)n < s2l) ? (int)n : s2l - 1);
David Zeuthen 17c4cc7
-                for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-                    trajectory[ti][j] += wgn_VertexTrack.a(ni,j);
David Zeuthen 17c4cc7
-            }
David Zeuthen 17c4cc7
-            for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-                trajectory[ti][j] += -2;
David Zeuthen 17c4cc7
+                for (j=0; j
David Zeuthen 17c4cc7
+                    if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                        trajectory[ti][j] += wgn_VertexTrack.a(ni,j);
David Zeuthen 17c4cc7
+            }
David Zeuthen 17c4cc7
+            for (j=0; j
David Zeuthen 17c4cc7
+                if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                    trajectory[ti][j] += -2;
David Zeuthen 17c4cc7
         }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
         /* find sum of sum of stddev for all coefs of all traj points */
David Zeuthen 17c4cc7
@@ -640,12 +665,14 @@
David Zeuthen 17c4cc7
         stdss.reset();
David Zeuthen 17c4cc7
         m = 1.0/(float)l1;
David Zeuthen 17c4cc7
         for (w=0.0,ti=0; ti
David Zeuthen 17c4cc7
-            for (j=wgn_VertexTrack_start+1; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
+            for (j=0; j
David Zeuthen 17c4cc7
+                if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
                 stdss += trajectory[ti][j].stddev() * w;
David Zeuthen 17c4cc7
         m = 1.0/(float)l2;
David Zeuthen 17c4cc7
         for (w=1.0,ti++; ti
David Zeuthen 17c4cc7
-            for (j=wgn_VertexTrack_start+1; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-                stdss += trajectory[ti][j].stddev() * w;
David Zeuthen 17c4cc7
+            for (j=0; j
David Zeuthen 17c4cc7
+                if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                    stdss += trajectory[ti][j].stddev() * w;
David Zeuthen 17c4cc7
     
David Zeuthen 17c4cc7
         // This is sum of all stddev * samples
David Zeuthen 17c4cc7
         score = stdss.mean() * members.length();
David Zeuthen 17c4cc7
@@ -824,25 +851,27 @@
David Zeuthen 17c4cc7
             int bestp = 0;
David Zeuthen 17c4cc7
             EST_SuffStats *cs;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
-            cs = new EST_SuffStats [wgn_VertexTrack_end+1];
David Zeuthen 17c4cc7
+            cs = new EST_SuffStats [wgn_VertexTrack.num_channels()+1];
David Zeuthen 17c4cc7
             
David Zeuthen 17c4cc7
-            for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-            {
David Zeuthen 17c4cc7
-                cs[j].reset();
David Zeuthen 17c4cc7
-                for (p=imp.members.head(); p != 0; p=next(p))
David Zeuthen 17c4cc7
+            for (j=0; j
David Zeuthen 17c4cc7
+                if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
                 {
David Zeuthen 17c4cc7
-                    cs[j] += wgn_VertexTrack.a(imp.members.item(p),j);
David Zeuthen 17c4cc7
+                    cs[j].reset();
David Zeuthen 17c4cc7
+                    for (p=imp.members.head(); p != 0; p=next(p))
David Zeuthen 17c4cc7
+                    {
David Zeuthen 17c4cc7
+                        cs[j] += wgn_VertexTrack.a(imp.members.item(p),j);
David Zeuthen 17c4cc7
+                    }
David Zeuthen 17c4cc7
                 }
David Zeuthen 17c4cc7
-            }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
             for (p=imp.members.head(); p != 0; p=next(p))
David Zeuthen 17c4cc7
             {
David Zeuthen 17c4cc7
-                for (x=0,j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-                {
David Zeuthen 17c4cc7
-                    d = (wgn_VertexTrack.a(imp.members.item(p),j)-cs[j].mean())
David Zeuthen 17c4cc7
-                        /* / b.stddev() */ ;
David Zeuthen 17c4cc7
-                    x += d*d;
David Zeuthen 17c4cc7
-                }
David Zeuthen 17c4cc7
+                for (x=0.0,j=0; j
David Zeuthen 17c4cc7
+                    if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
+                    {
David Zeuthen 17c4cc7
+                        d = (wgn_VertexTrack.a(imp.members.item(p),j)-cs[j].mean())
David Zeuthen 17c4cc7
+                        /* / cs[j].stddev() */ ;
David Zeuthen 17c4cc7
+                        x += d*d;
David Zeuthen 17c4cc7
+                    }
David Zeuthen 17c4cc7
                 if (x < best)
David Zeuthen 17c4cc7
                 {
David Zeuthen 17c4cc7
                     bestp = imp.members.item(p);
David Zeuthen 17c4cc7
@@ -853,7 +882,12 @@
David Zeuthen 17c4cc7
             {
David Zeuthen 17c4cc7
                 s << "( ";
David Zeuthen 17c4cc7
                 s << wgn_VertexTrack.a(bestp,j);
David Zeuthen 17c4cc7
-                s << " 0 "; // fake stddev
David Zeuthen 17c4cc7
+                //                s << " 0 "; // fake stddev
David Zeuthen 17c4cc7
+                s << " ";
David Zeuthen 17c4cc7
+                if (finite(cs[j].stddev()))
David Zeuthen 17c4cc7
+                    s << cs[j].stddev();
David Zeuthen 17c4cc7
+                else
David Zeuthen 17c4cc7
+                    s << "0";
David Zeuthen 17c4cc7
                 s << " ) ";
David Zeuthen 17c4cc7
                 if (j+1
David Zeuthen 17c4cc7
                     s << " ";
David Zeuthen 17c4cc7
@@ -900,7 +934,7 @@
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
     else if (imp.t == wnim_class)
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
-	int i;
David Zeuthen 17c4cc7
+	EST_Litem *i;
David Zeuthen 17c4cc7
 	EST_String name;
David Zeuthen 17c4cc7
 	double prob;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/stats/wagon/wagon.cc festival/speech_tools/stats/wagon/wagon.cc
David Zeuthen 17c4cc7
--- festival/speech_tools.old/stats/wagon/wagon.cc	2006-08-11 18:35:19.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/stats/wagon/wagon.cc	2006-12-02 13:13:43.000000000 -0500
David Zeuthen 17c4cc7
@@ -58,8 +58,7 @@
David Zeuthen 17c4cc7
 WDataSet wgn_test_dataset;
David Zeuthen 17c4cc7
 EST_FMatrix wgn_DistMatrix;
David Zeuthen 17c4cc7
 EST_Track wgn_VertexTrack;
David Zeuthen 17c4cc7
-int wgn_VertexTrack_start=0;
David Zeuthen 17c4cc7
-int wgn_VertexTrack_end=24;
David Zeuthen 17c4cc7
+EST_Track wgn_VertexFeats;
David Zeuthen 17c4cc7
 EST_Track wgn_UnitTrack;
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
 int wgn_min_cluster_size = 50;
David Zeuthen 17c4cc7
@@ -349,34 +348,35 @@
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
 	leaf = tree.predict_node((*dataset(p)));
David Zeuthen 17c4cc7
 	pos = dataset(p)->get_int_val(wgn_predictee);
David Zeuthen 17c4cc7
-        for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-        {
David Zeuthen 17c4cc7
-            b.reset();
David Zeuthen 17c4cc7
-            for (pp=leaf->get_impurity().members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
+        for (j=0; j
David Zeuthen 17c4cc7
+            if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
             {
David Zeuthen 17c4cc7
-                i = leaf->get_impurity().members.item(pp);
David Zeuthen 17c4cc7
-                b += wgn_VertexTrack.a(i,j);
David Zeuthen 17c4cc7
+                b.reset();
David Zeuthen 17c4cc7
+                for (pp=leaf->get_impurity().members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
+                {
David Zeuthen 17c4cc7
+                    i = leaf->get_impurity().members.item(pp);
David Zeuthen 17c4cc7
+                    b += wgn_VertexTrack.a(i,j);
David Zeuthen 17c4cc7
+                }
David Zeuthen 17c4cc7
+                predict = b.mean();
David Zeuthen 17c4cc7
+                actual = wgn_VertexTrack.a(pos,j);
David Zeuthen 17c4cc7
+                if (wgn_count_field == -1)
David Zeuthen 17c4cc7
+                    count = 1.0;
David Zeuthen 17c4cc7
+                else
David Zeuthen 17c4cc7
+                    count = dataset(p)->get_flt_val(wgn_count_field);
David Zeuthen 17c4cc7
+                x.cumulate(predict,count);
David Zeuthen 17c4cc7
+                y.cumulate(actual,count);
David Zeuthen 17c4cc7
+                /* Normalized the error by the standard deviation */
David Zeuthen 17c4cc7
+                if (b.stddev() == 0)
David Zeuthen 17c4cc7
+                    error = predict-actual;
David Zeuthen 17c4cc7
+                else
David Zeuthen 17c4cc7
+                    error = (predict-actual)/b.stddev();
David Zeuthen 17c4cc7
+                error = predict-actual; /* awb_debug */
David Zeuthen 17c4cc7
+                se.cumulate((error*error),count);
David Zeuthen 17c4cc7
+                e.cumulate(fabs(error),count);
David Zeuthen 17c4cc7
+                xx.cumulate(predict*predict,count);
David Zeuthen 17c4cc7
+                yy.cumulate(actual*actual,count);
David Zeuthen 17c4cc7
+                xy.cumulate(predict*actual,count);
David Zeuthen 17c4cc7
             }
David Zeuthen 17c4cc7
-            predict = b.mean();
David Zeuthen 17c4cc7
-            actual = wgn_VertexTrack.a(pos,j);
David Zeuthen 17c4cc7
-            if (wgn_count_field == -1)
David Zeuthen 17c4cc7
-                count = 1.0;
David Zeuthen 17c4cc7
-            else
David Zeuthen 17c4cc7
-                count = dataset(p)->get_flt_val(wgn_count_field);
David Zeuthen 17c4cc7
-            x.cumulate(predict,count);
David Zeuthen 17c4cc7
-            y.cumulate(actual,count);
David Zeuthen 17c4cc7
-            /* Normalized the error by the standard deviation */
David Zeuthen 17c4cc7
-            if (b.stddev() == 0)
David Zeuthen 17c4cc7
-                error = predict-actual;
David Zeuthen 17c4cc7
-            else
David Zeuthen 17c4cc7
-                error = (predict-actual)/b.stddev();
David Zeuthen 17c4cc7
-            error = predict-actual; /* awb_debug */
David Zeuthen 17c4cc7
-            se.cumulate((error*error),count);
David Zeuthen 17c4cc7
-            e.cumulate(fabs(error),count);
David Zeuthen 17c4cc7
-            xx.cumulate(predict*predict,count);
David Zeuthen 17c4cc7
-            yy.cumulate(actual*actual,count);
David Zeuthen 17c4cc7
-            xy.cumulate(predict*actual,count);
David Zeuthen 17c4cc7
-        }
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     // Pearson's product moment correlation coefficient
David Zeuthen 17c4cc7
@@ -437,34 +437,35 @@
David Zeuthen 17c4cc7
     {
David Zeuthen 17c4cc7
 	leaf = tree.predict_node((*dataset(p)));
David Zeuthen 17c4cc7
 	pos = dataset(p)->get_int_val(wgn_predictee);
David Zeuthen 17c4cc7
-        for (j=wgn_VertexTrack_start; j<=wgn_VertexTrack_end; j++)
David Zeuthen 17c4cc7
-        {
David Zeuthen 17c4cc7
-            b.reset();
David Zeuthen 17c4cc7
-            for (pp=leaf->get_impurity().members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
+        for (j=0; j
David Zeuthen 17c4cc7
+            if (wgn_VertexFeats.a(0,j) > 0.0)
David Zeuthen 17c4cc7
             {
David Zeuthen 17c4cc7
-                i = leaf->get_impurity().members.item(pp);
David Zeuthen 17c4cc7
-                b += wgn_VertexTrack.a(i,j);
David Zeuthen 17c4cc7
+                b.reset();
David Zeuthen 17c4cc7
+                for (pp=leaf->get_impurity().members.head(); pp != 0; pp=next(pp))
David Zeuthen 17c4cc7
+                {
David Zeuthen 17c4cc7
+                    i = leaf->get_impurity().members.item(pp);
David Zeuthen 17c4cc7
+                    b += wgn_VertexTrack.a(i,j);
David Zeuthen 17c4cc7
+                }
David Zeuthen 17c4cc7
+                predict = b.mean();
David Zeuthen 17c4cc7
+                actual = wgn_VertexTrack.a(pos,j);
David Zeuthen 17c4cc7
+                if (wgn_count_field == -1)
David Zeuthen 17c4cc7
+                    count = 1.0;
David Zeuthen 17c4cc7
+                else
David Zeuthen 17c4cc7
+                    count = dataset(p)->get_flt_val(wgn_count_field);
David Zeuthen 17c4cc7
+                x.cumulate(predict,count);
David Zeuthen 17c4cc7
+                y.cumulate(actual,count);
David Zeuthen 17c4cc7
+                /* Normalized the error by the standard deviation */
David Zeuthen 17c4cc7
+                if (b.stddev() == 0)
David Zeuthen 17c4cc7
+                    error = predict-actual;
David Zeuthen 17c4cc7
+                else
David Zeuthen 17c4cc7
+                    error = (predict-actual)/b.stddev();
David Zeuthen 17c4cc7
+                error = predict-actual; /* awb_debug */
David Zeuthen 17c4cc7
+                se.cumulate((error*error),count);
David Zeuthen 17c4cc7
+                e.cumulate(fabs(error),count);
David Zeuthen 17c4cc7
+                xx.cumulate(predict*predict,count);
David Zeuthen 17c4cc7
+                yy.cumulate(actual*actual,count);
David Zeuthen 17c4cc7
+                xy.cumulate(predict*actual,count);
David Zeuthen 17c4cc7
             }
David Zeuthen 17c4cc7
-            predict = b.mean();
David Zeuthen 17c4cc7
-            actual = wgn_VertexTrack.a(pos,j);
David Zeuthen 17c4cc7
-            if (wgn_count_field == -1)
David Zeuthen 17c4cc7
-                count = 1.0;
David Zeuthen 17c4cc7
-            else
David Zeuthen 17c4cc7
-                count = dataset(p)->get_flt_val(wgn_count_field);
David Zeuthen 17c4cc7
-            x.cumulate(predict,count);
David Zeuthen 17c4cc7
-            y.cumulate(actual,count);
David Zeuthen 17c4cc7
-            /* Normalized the error by the standard deviation */
David Zeuthen 17c4cc7
-            if (b.stddev() == 0)
David Zeuthen 17c4cc7
-                error = predict-actual;
David Zeuthen 17c4cc7
-            else
David Zeuthen 17c4cc7
-                error = (predict-actual)/b.stddev();
David Zeuthen 17c4cc7
-            error = predict-actual; /* awb_debug */
David Zeuthen 17c4cc7
-            se.cumulate((error*error),count);
David Zeuthen 17c4cc7
-            e.cumulate(fabs(error),count);
David Zeuthen 17c4cc7
-            xx.cumulate(predict*predict,count);
David Zeuthen 17c4cc7
-            yy.cumulate(actual*actual,count);
David Zeuthen 17c4cc7
-            xy.cumulate(predict*actual,count);
David Zeuthen 17c4cc7
-        }
David Zeuthen 17c4cc7
     }
David Zeuthen 17c4cc7
 
David Zeuthen 17c4cc7
     // Pearson's product moment correlation coefficient
David Zeuthen 17c4cc7
diff -ur festival/speech_tools.old/.time-stamp festival/speech_tools/.time-stamp
David Zeuthen 17c4cc7
--- festival/speech_tools.old/.time-stamp	2006-09-27 10:59:11.000000000 -0400
David Zeuthen 17c4cc7
+++ festival/speech_tools/.time-stamp	2007-03-14 11:18:07.000000000 -0400
David Zeuthen 17c4cc7
@@ -1,2 +1,2 @@
David Zeuthen 17c4cc7
 speech_tools 1.2.96
David Zeuthen 17c4cc7
-Wed Sep 27 10:59:11 EDT 2006
David Zeuthen 17c4cc7
+Wed Mar 14 11:18:07 EDT 2007