| 
| void  | DeleteBuildTreeStats (BuildTreeStatsType *stats) | 
|   | This frees the Clusterable* pointers in "stats", where non-NULL, and sets them to NULL.  More...
  | 
|   | 
| void  | WriteBuildTreeStats (std::ostream &os, bool binary, const BuildTreeStatsType &stats) | 
|   | Writes BuildTreeStats object. This works even if pointers are NULL.  More...
  | 
|   | 
| void  | ReadBuildTreeStats (std::istream &is, bool binary, const Clusterable &example, BuildTreeStatsType *stats) | 
|   | Reads BuildTreeStats object.  More...
  | 
|   | 
| bool  | PossibleValues (EventKeyType key, const BuildTreeStatsType &stats, std::vector< EventValueType > *ans) | 
|   | Convenience function e.g.  More...
  | 
|   | 
| void  | SplitStatsByMap (const BuildTreeStatsType &stats_in, const EventMap &e, std::vector< BuildTreeStatsType > *stats_out) | 
|   | Splits stats according to the EventMap, indexing them at output by the leaf type.  More...
  | 
|   | 
| void  | SplitStatsByKey (const BuildTreeStatsType &stats_in, EventKeyType key, std::vector< BuildTreeStatsType > *stats_out) | 
|   | SplitStatsByKey splits stats up according to the value of a particular key, which must be always defined and nonnegative.  More...
  | 
|   | 
| bool  | ConvertStats (int32 oldN, int32 oldP, int32 newN, int32 newP, BuildTreeStatsType *stats) | 
|   | Converts stats from a given context-window (N) and central-position (P) to a different N and P, by possibly reducing context.  More...
  | 
|   | 
| void  | FilterStatsByKey (const BuildTreeStatsType &stats_in, EventKeyType key, std::vector< EventValueType > &values, bool include_if_present, BuildTreeStatsType *stats_out) | 
|   | FilterStatsByKey filters the stats according the value of a specified key.  More...
  | 
|   | 
| Clusterable *  | SumStats (const BuildTreeStatsType &stats_in) | 
|   | Sums stats, or returns NULL stats_in has no non-NULL stats.  More...
  | 
|   | 
| BaseFloat  | SumNormalizer (const BuildTreeStatsType &stats_in) | 
|   | Sums the normalizer [typically, data-count] over the stats.  More...
  | 
|   | 
| BaseFloat  | SumObjf (const BuildTreeStatsType &stats_in) | 
|   | Sums the objective function over the stats.  More...
  | 
|   | 
| void  | SumStatsVec (const std::vector< BuildTreeStatsType > &stats_in, std::vector< Clusterable * > *stats_out) | 
|   | Sum a vector of stats.  More...
  | 
|   | 
| BaseFloat  | ObjfGivenMap (const BuildTreeStatsType &stats_in, const EventMap &e) | 
|   | Cluster the stats given the event map return the total objf given those clusters.  More...
  | 
|   | 
| void  | FindAllKeys (const BuildTreeStatsType &stats, AllKeysType keys_type, std::vector< EventKeyType > *keys) | 
|   | FindAllKeys puts in *keys the (sorted, unique) list of all key identities in the stats.  More...
  | 
|   | 
| EventMap *  | TrivialTree (int32 *num_leaves) | 
|   | Returns a tree with just one node.  More...
  | 
|   | 
| EventMap *  | DoTableSplit (const EventMap &orig, EventKeyType key, const BuildTreeStatsType &stats, int32 *num_leaves) | 
|   | DoTableSplit does a complete split on this key (e.g.  More...
  | 
|   | 
| EventMap *  | DoTableSplitMultiple (const EventMap &orig, const std::vector< EventKeyType > &keys, const BuildTreeStatsType &stats, int32 *num_leaves) | 
|   | DoTableSplitMultiple does a complete split on all the keys, in order from keys[0], keys[1] and so on.  More...
  | 
|   | 
| int  | ClusterEventMapGetMapping (const EventMap &e_in, const BuildTreeStatsType &stats, BaseFloat thresh, std::vector< EventMap * > *mapping) | 
|   | "ClusterEventMapGetMapping" clusters the leaves of the EventMap, with "thresh" a delta-likelihood threshold to control how many leaves we combine (might be the same as the delta-like threshold used in splitting.  More...
  | 
|   | 
| EventMap *  | ClusterEventMap (const EventMap &e_in, const BuildTreeStatsType &stats, BaseFloat thresh, int32 *num_removed) | 
|   | This is as ClusterEventMapGetMapping but a more convenient interface that exposes less of the internals.  More...
  | 
|   | 
| EventMap *  | ClusterEventMapRestrictedByKeys (const EventMap &e_in, const BuildTreeStatsType &stats, BaseFloat thresh, const std::vector< EventKeyType > &keys, int32 *num_removed) | 
|   | This is as ClusterEventMap, but first splits the stats on the keys specified in "keys" (e.g.  More...
  | 
|   | 
| EventMap *  | ClusterEventMapRestrictedByMap (const EventMap &e_in, const BuildTreeStatsType &stats, BaseFloat thresh, const EventMap &e_restrict, int32 *num_removed) | 
|   | This version of ClusterEventMapRestricted restricts the clustering to only allow things that "e_restrict" maps to the same value to be clustered together.  More...
  | 
|   | 
| EventMap *  | ClusterEventMapToNClustersRestrictedByMap (const EventMap &e_in, const BuildTreeStatsType &stats, int32 num_clusters, const EventMap &e_restrict, int32 *num_removed) | 
|   | This version of ClusterEventMapRestrictedByMap clusters to get a specific number of clusters as specified by 'num_clusters'.  More...
  | 
|   | 
| EventMap *  | RenumberEventMap (const EventMap &e_in, int32 *num_leaves) | 
|   | RenumberEventMap [intended to be used after calling ClusterEventMap] renumbers an EventMap so its leaves are consecutive.  More...
  | 
|   | 
| EventMap *  | MapEventMapLeaves (const EventMap &e_in, const std::vector< int32 > &mapping) | 
|   | This function remaps the event-map leaves using this mapping, indexed by the number at leaf.  More...
  | 
|   | 
| EventMap *  | ShareEventMapLeaves (const EventMap &e_in, EventKeyType key, std::vector< std::vector< EventValueType > > &values, int32 *num_leaves) | 
|   | ShareEventMapLeaves performs a quite specific function that allows us to generate trees where, for a certain list of phones, and for all states in the phone, all the pdf's are shared.  More...
  | 
|   | 
| EventMap *  | SplitDecisionTree (const EventMap &orig, const BuildTreeStatsType &stats, Questions &qcfg, BaseFloat thresh, int32 max_leaves, int32 *num_leaves, BaseFloat *objf_impr_out, BaseFloat *smallest_split_change_out) | 
|   | Does a decision-tree split at the leaves of an EventMap.  More...
  | 
|   | 
| void  | CreateRandomQuestions (const BuildTreeStatsType &stats, int32 num_quest, Questions *cfg_out) | 
|   | CreateRandomQuestions will initialize a Questions randomly, in a reasonable way [for testing purposes, or when hand-designed questions are not available].  More...
  | 
|   | 
| BaseFloat  | FindBestSplitForKey (const BuildTreeStatsType &stats, const Questions &qcfg, EventKeyType key, std::vector< EventValueType > *yes_set) | 
|   | FindBestSplitForKey is a function used in DoDecisionTreeSplit.  More...
  | 
|   | 
| EventMap *  | GetStubMap (int32 P, const std::vector< std::vector< int32 > > &phone_sets, const std::vector< int32 > &phone2num_pdf_classes, const std::vector< bool > &share_roots, int32 *num_leaves) | 
|   | GetStubMap is used in tree-building functions to get the initial to-states map, before the decision-tree-building process.  More...
  | 
|   |