source: tags/initial/PHYLO/phylo.hxx

Last change on this file was 2, checked in by oldcode, 23 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.7 KB
Line 
1/////////////////////////////////////////////////////////////////
2/////////////////////////////////////////////////////////////////
3//                                                             //
4//                    FILENAME: phylo.hxx                      //
5//                                                             //
6/////////////////////////////////////////////////////////////////
7//                                                             //
8// contains: abstract classes and                              //
9//           global needed definitions,declarations and        //
10//           functions                                         //
11//                                                             //
12/////////////////////////////////////////////////////////////////
13/////////////////////////////////////////////////////////////////
14#define PH_DB_CACHE_SIZE        2000000
15
16#define AP_F_LOADED ((AW_active)1)
17#define AP_F_NLOADED ((AW_active)2)
18#define AP_F_SEQUENCES ((AW_active)4)
19#define AP_F_MATRIX ((AW_active)8)
20#define AP_F_TREE ((AW_active)16)
21#define AP_F_ALL ((AW_active)-1)
22#define PH_CORRECTION_BANDELT_STRING "bandelt"
23
24#define NIL 0
25#define GROUPED_SUM     3
26
27// matrix definitions
28#define PH_TRANSFORMATION_JUKES_CANTOR_STRING "J+C"
29#define PH_TRANSFORMATION_KIMURA_STRING "KIMURA"
30#define PH_TRANSFORMATION_TAJIMA_NEI_STRING "T+N"
31#define PH_TRANSFORMATION_TAJIMA_NEI_PAIRWISE_STRING "T+N-P"
32#define PH_TRANSFORMATION_BANDELT_STRING "B"
33#define PH_TRANSFORMATION_BANDELT_JC_STRING "B+J+C"
34#define PH_TRANSFORMATION_BANDELT2_STRING "B2"
35#define PH_TRANSFORMATION_BANDELT2_JC_STRING "B2+J+C"   
36
37typedef enum {
38        PH_CORRECTION_NONE,
39        PH_CORRECTION_BANDELT
40} PH_CORRECTION;
41
42
43enum {
44        PH_GC_0,
45        PH_GC_1,
46        PH_GC_0_DRAG
47};
48
49
50extern GBDATA *gb_main;
51extern class AP_root *ap_main; 
52
53// make awars :
54void create_matrix_variables(AW_root *aw_root, AW_default aw_def);
55void create_filter_variables(AW_root *aw_root, AW_default aw_def);
56
57AW_window *create_matrix_window(AW_root *aw_root);
58AW_window *create_filter_window(AW_root *aw_root);
59
60
61
62enum display_type {NONE,species_dpy,filter_dpy,matrix_dpy,tree_dpy}; 
63
64
65typedef double AP_FLOAT;
66
67typedef enum {
68        PH_TRANSFORMATION_NONE,
69        PH_TRANSFORMATION_JUKES_CANTOR,
70        PH_TRANSFORMATION_KIMURA,
71        PH_TRANSFORMATION_TAJIMA_NEI,
72        PH_TRANSFORMATION_TAJIMA_NEI_PAIRWISE,
73        PH_TRANSFORMATION_BANDELT,
74        PH_TRANSFORMATION_BANDELT_JC,
75        PH_TRANSFORMATION_BANDELT2,
76        PH_TRANSFORMATION_BANDELT2_JC} PH_TRANSFORMATION;
77
78
79
80/////////////////////////////////////////////////////////////////
81/////////////////////////////////////////////////////////////////
82//                                                             //
83//                      class definitions                      //
84//                                                             //
85/////////////////////////////////////////////////////////////////
86/////////////////////////////////////////////////////////////////
87
88       
89class PH_filter {
90        public:
91        char    *filter;        // 0 1
92        long    filter_len;
93        long    real_len;       // how many 1
94        long    update;
95        long    *options_vector;   // options used to calculate current filter
96//      float   *markerline;       // line to create filter (according to options_vector)
97        char    *init(char *filter, char *zerobases, long size);
98        char    *init(long size);
99       
100        PH_filter::PH_filter(void);
101        ~PH_filter(void);
102        float *calculate_column_homology(void);
103};     
104
105
106
107class AP_root {
108        private:
109        char    *use;
110
111        public:
112//      AP_tree *tree;                          // root of tree
113        class AWT_graphic *display;
114        char *open(const char *db_server);
115//      char *test(char *ratename, char *treename);
116        GBDATA *gb_main;
117};
118
119
120
121
122long AP_timer(void);
123
124extern GBDATA *gb_main;
125extern AP_root *ap_main;
126
127GBT_TREE *neighbourjoining(char **names, AP_FLOAT **m, long size, size_t structure_size);
128
129
130
131
132/////////////////////////////////////////////////////////////////
133//                                                             //
134// class_name : PHDATA                                         //
135//                                                             //
136// description: connection to database:                        //
137//              pointers to all elements and importand values  //
138//              of the database                                //
139//                                                             //
140// note:                                                       //
141//                                                             //
142// dependencies:                                               //
143//                                                             //
144/////////////////////////////////////////////////////////////////
145
146struct elem;
147
148class PHDATA {
149private:
150        struct PHENTRY
151             { unsigned int key;
152               char *name;
153               char *full_name;
154               GBDATA *gb_species_data_ptr;
155               struct PHENTRY *next;
156               struct PHENTRY *prev;
157               int group_members; /* >0: this elem is grouphead */
158               struct elem *first_member; /* !=NULL: elem is grouphead */
159                AW_BOOL selected;
160             };
161        unsigned int last_key_number;
162        long    seq_len;
163
164        AW_root *aw_root;               // only link
165
166public: 
167        GBDATA *gb_main;
168        char    *use;
169        struct PHENTRY *entries;
170        struct PHENTRY **hash_elements;
171        unsigned int nentries;      // total number of entries
172        static PHDATA *ROOT; // 'global' pointer
173        AP_smatrix *distance_table;  // weights between different characters
174        AP_smatrix *matrix;    // calculated matrix
175
176        PHDATA(AW_root *awr);
177        ~PHDATA(void);
178
179        char *load(char *use);  // open database and get pointers to it
180        char *unload(void);
181        GB_ERROR save(char *filename);
182        void print(void); 
183        GB_ERROR calculate_matrix(const char *cancel, double alpha, PH_TRANSFORMATION transformation);
184        long get_seq_len(void) { return seq_len; };
185        float *markerline;
186};
187
188   
Note: See TracBrowser for help on using the repository browser.