/* a header file for kohonen and embedding */ #ifndef _KOHONEN_H_ #define _KOHONEN_H_ #include "rogueviz.h" namespace rogueviz { namespace kohonen { typedef vector kohvec; static const flagtype KS_ROGUEVIZ = 1; static const flagtype KS_NEURONS = 2; static const flagtype KS_DISPERSION = 4; static const flagtype KS_SAMPLES = 8; static const flagtype KS_NEURONS_INI = 16; extern flagtype state; extern int tmax; extern int samples; extern int t, tmax, lpct, cells; extern int gaussian; extern int krad, kqty, kohrestrict; extern int qpct; extern int columns; extern double dispersion_end_at; extern int dispersion_count; extern double learning_factor, distmul; extern double ttpower; extern int min_group, max_group, columns; struct neuron { kohvec net; cell *where; double udist; int lpbak; color_t col; int allsamples, drawn_samples, csample, bestsample, max_group_here; int debug; neuron() { drawn_samples = allsamples = bestsample = 0; max_group_here = max_group; debug = 0; } }; struct sample { kohvec val; string name; }; inline void alloc(kohvec& k) { k.resize(columns); } extern kohvec weights; extern vector data; extern vector samples_to_show; extern vector net; extern vector colnames; void initialize_neurons(); void initialize_neurons_initial(); void initialize_dispersion(); void initialize_samples_to_show(); void clear(); void create_neurons(); void analyze(); void step(); void initialize_rv(); void set_neuron_initial(); bool finished(); vector gen_neuron_cells(); neuron& winner(int id); double vdot(const kohvec& a, const kohvec& b); void vshift(kohvec& a, const kohvec& b, ld i); double vnorm(kohvec& a, kohvec& b); } namespace embeddings { using kohonen::columns; using kohonen::kohvec; using kohonen::alloc; enum embedding_type { eProjection, eNatural, eLandscape, eSignpost, eHypersian }; extern embedding_type etype; void mark_signposts(bool full, const vector& ac); void mark_signposts_subg(int a, int b, const vector& ac); void generate_rug(int i, bool close); void init_landscape(int dimensions); extern map rug_coordinates; extern void get_coordinates(kohvec& v, cell *c, cell *c0); extern vector signposts; } } #endif