initial commit
[jalview.git] / forester / archive / RIO / others / phylip_mod / src / seq.h
1 /*Modified by Christian Zmasek. Use at your own risk.*/
2
3 /* version 3.6. (c) Copyright 1993-2000 by the University of Washington.
4    Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe.
5    Permission is granted to copy and use this program provided no fee is
6    charged for it and provided that this copyright notice is not removed. */
7
8 /*
9     seq.h:  included in dnacomp, dnadist, dnainvar, dnaml, dnamlk, dnamove,
10             dnapars, dnapenny, protdist, protpars, & restml
11 */
12
13 /* move */
14 /* All the below moved here in the Great TreeRead Migration of '96 */
15
16 #define ebcdic          EBCDIC
17 #define MAXNCH          26  /*changed from to 20 to 26 by CZ 2006-07-28 */
18
19 /* All of this came over from cons.h    -plc*/ 
20 #define OVER              7
21 #define ADJACENT_PAIRS    1
22 #define CORR_IN_1_AND_2   2
23 #define ALL_IN_1_AND_2    3
24 #define NO_PAIRING        4
25 #define ALL_IN_FIRST      5
26 #define TREE1             8
27 #define TREE2             9
28
29 #define FULL_MATRIX       11
30 #define VERBOSE           22
31 #define SPARSE            33
32
33 /* Used in proml, promlk, dnaml, dnamlk for undefined bestyet*/
34 #define UNDEFINED 1.0
35
36
37 /* Number of columns per block in a matrix output */
38 #define COLUMNS_PER_BLOCK 10
39
40
41 /*end move*/
42
43
44 typedef struct gbases {
45   baseptr base;
46   struct gbases *next;
47 } gbases;
48
49 typedef struct nuview_data {
50   /* A big 'ol collection of pointers used in nuview */
51   double *yy, *wwzz, *vvzz, *vzsumr, *vzsumy, *sum, *sumr, *sumy;
52   sitelike *xx;
53 } nuview_data;
54
55 struct LOC_hyptrav {
56   boolean bottom;
57   node *r;
58   long *hypset;
59   boolean maybe, nonzero;
60   long tempset, anc;
61 } ;
62
63
64 extern long nonodes, endsite, outgrno, nextree, which;
65
66 extern boolean interleaved, printdata, outgropt, treeprint, dotdiff, transvp;
67 extern steptr weight, category, alias, location, ally;
68 extern sequence y;
69
70 #ifndef OLDC
71 /* function prototypes */
72 void   alloctemp(node **, long *, long);
73 void   freetemp(node **);
74 void   freetree2 (pointarray, long);
75 void   inputdata(long);
76 void   alloctree(pointarray *, long, boolean);
77 void   allocx(long, long, pointarray, boolean);
78
79 void   prot_allocx(long, long, pointarray, boolean);
80 void   allocx2(long, long, long, pointarray, boolean);
81 void   setuptree(pointarray, long, boolean);
82 void   setuptree2(tree);
83 void   alloctip(node *, long *);
84 void   freetrans(transptr *, long ,long );
85 void   getbasefreqs(double, double, double, double, double *, double *,
86                         double *, double *, double *, double *, double *,
87             double *xi, double *, double *, boolean, boolean);
88 void   empiricalfreqs(double *,double *,double *,double *,steptr,pointarray);
89 void   sitesort(long, steptr);
90 void   sitecombine(long);
91
92 void   sitescrunch(long);
93 void   sitesort2(long, steptr);
94 void   sitecombine2(long, steptr);
95 void   sitescrunch2(long, long, long, steptr);
96 void   makevalues(pointarray, long *, boolean);
97 void   makevalues2(long, pointarray, long, long, sequence, steptr);
98 void   fillin(node *, node *, node *);
99 long   getlargest(long *);
100 void   multifillin(node *, node *, long);
101 void   sumnsteps(node *, node *, node *, long, long);
102
103 void   sumnsteps2(node *, node *, node *, long, long, long *);
104 void   multisumnsteps(node *, node *, long, long, long *);
105 void   multisumnsteps2(node *);
106 boolean alltips(node *, node *);
107 void   gdispose(node *, node **, pointarray);
108 void   preorder(node *, node *, node *, node *, node *, node *, long);
109 void   updatenumdesc(node *, node *, long);
110 void   add(node *,node *,node *,node **,boolean,pointarray,node **,long *);
111 void   findbelow(node **below, node *item, node *fork);
112
113 void   re_move(node *item, node **fork, node **root, boolean recompute,
114                 pointarray, node **, long *);
115 void   postorder(node *p);
116 void   getnufork(node **, node **, pointarray, long *);
117 void   reroot(node *, node *);
118 void   reroot2(node *, node *);
119 void   reroot3(node *, node *, node *, node *, node **);
120 void   savetraverse(node *);
121 void   newindex(long, node *);
122 void   flipindexes(long, pointarray);
123 boolean parentinmulti(node *);
124
125 long   sibsvisited(node *, long *);
126 long   smallest(node *, long *);
127 void   bintomulti(node **, node **, node **, long *);
128 void   backtobinary(node **, node *, node **);
129 boolean outgrin(node *, node *);
130 void   flipnodes(node *, node *);
131 void   moveleft(node *, node *, node **);
132 void   savetree(node *, long *, pointarray, node **, long *);
133 void   addnsave(node *, node *, node *, node **, node **,boolean,
134                 pointarray, long *, long *);
135 void   addbestever(long *, long *, long, boolean, long *, bestelm *);
136
137 void   addtiedtree(long, long *, long, boolean,long *, bestelm *);
138 void   clearcollapse(pointarray);
139 void   clearbottom(pointarray);
140 void   collabranch(node *, node *, node *);
141 boolean allcommonbases(node *, node *, boolean *);
142 void   findbottom(node *, node **);
143 boolean moresteps(node *, node *);
144 boolean passdown(node *, node *, node *, node *, node *, node *,
145                 node *, node *, node *, boolean);
146 boolean trycollapdesc(node *, node *, node *, node *, node *,
147                 node *, node *, node *, node *, boolean , long *);
148 void   setbottom(node *);
149
150 boolean zeroinsubtree(node *, node *, node *, node *, node *,
151                 node *, node *, node *, boolean, node *, long *);
152 boolean collapsible(node *, node *, node *, node *, node *,
153                 node *, node *, node *, boolean, node *, long *, pointarray);
154 void   replaceback(node **, node *, node *, node **, long *);
155 void   putback(node *, node *, node *, node **);
156 void   savelocrearr(node *, node *, node *, node *, node *, node *,
157                 node *, node *, node *, node **, long, long *, boolean,
158                 boolean , boolean *, long *, bestelm *, pointarray ,
159                 node **, long *);
160 void   clearvisited(pointarray);
161 void   hyprint(long, long, struct LOC_hyptrav *,pointarray, Char *);
162 void   gnubase(gbases **, gbases **, long);
163 void   chuckbase(gbases *, gbases **);
164 void   hyptrav(node *, long *, long, long, boolean,pointarray,
165                 gbases **, Char *);
166
167 void   hypstates(long , node *, pointarray, gbases **, Char *);
168 void   initbranchlen(node *p);
169 void   initmin(node *, long, boolean);
170 void   initbase(node *, long);
171 void   inittreetrav(node *, long);
172 void   compmin(node *, node *);
173 void   minpostorder(node *, pointarray);
174 void   branchlength(node *,node *,double *,pointarray);
175 void   printbranchlengths(node *);
176 void   branchlentrav(node *,node *,long,long,double *,pointarray);
177
178 void   treelength(node *, long, pointarray);
179 void   coordinates(node *, long *, double, long *);
180 void   drawline(long, double, node *);
181 void   printree(node *, double);
182 void   writesteps(long, boolean, steptr, node *);
183 void   treeout(node *, long, long *, node *);
184 void   treeout3(node *, long, long *, node *);
185 void   drawline2(long, double, tree);
186 void   drawline3(long, double, node *);
187 void   copynode(node *, node *, long);
188
189 void   prot_copynode(node *, node *, long);
190 void   copy_(tree *, tree *, long, long);
191 void   prot_copy_(tree *, tree *, long, long);
192 void   standev(long, long, long, double, double *, long **, longer);
193 void   standev2(long, long, long, long, double, double *, double **,
194               steptr, longer);
195 void   freetip(node *);
196 void   freenontip(node *);
197 void   freenodes(long, pointarray);
198 void   freenode(node **);
199 void   freetree(long, pointarray);
200
201 void   freex(long, pointarray);
202 void   freex_notip(long, pointarray);
203 void   freex2(long, pointarray);
204 void   prot_freex_notip(long nonodes, pointarray treenode);
205 void   prot_freex(long nonodes, pointarray treenode);
206 void   freegarbage(gbases **);
207 void   freegrbg(node **);
208
209 void   collapsetree(node *, node *, node **, pointarray, long *);
210 void   collapsebestrees(node **, node **, pointarray, bestelm *, long *,
211                       long *, long, boolean, boolean);
212 void   fix_x(node* p,long site, double maxx, long rcategs);
213 void   fix_protx(node* p,long site,double maxx, long rcategs);
214 /*function prototypes*/
215 #endif
216