Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / clustalo / src / squid / sqfuncs.h
1 /*****************************************************************
2  * SQUID - a library of functions for biological sequence analysis
3  * Copyright (C) 1992-2002 Washington University School of Medicine
4  * 
5  *     This source code is freely distributed under the terms of the
6  *     GNU General Public License. See the files COPYRIGHT and LICENSE
7  *     for details.
8  *****************************************************************/
9
10 #ifndef SQFUNCSH_INCLUDED
11 #define SQFUNCSH_INCLUDED
12 /* sqfuncs.h
13  * 
14  * Prototypes for squid library functions;
15  * also makes a good reference list for what the package contains.
16  *
17  * Warning: squid is a slowly evolving beast. Some functions are
18  * obsolete. Some functions are probably just wrong, dating to
19  * a primordial era before I knew anything about what I was doing.
20  * Some functions are both obsolete and wrong but still necessary
21  * to get legacy code to compile.
22  *
23  * CVS $Id: sqfuncs.h,v 1.28 2002/10/09 14:26:09 eddy Exp)
24  */
25
26 /* 
27  * from aligneval.c
28  */
29 extern float ComparePairAlignments(char *known1, char *known2, char *calc1, char *calc2);
30 extern float CompareRefPairAlignments(int *ref, char *known1, char *known2, char *calc1, char *calc2);
31 extern float CompareMultAlignments(char **kseqs, char **tseqs, int    N);
32 extern float CompareRefMultAlignments(int *ref, char **kseqs, char **tseqs, int    N);
33 extern float PairwiseIdentity(char *s1, char *s2);
34 extern float AlignmentIdentityBySampling(char **aseq, int L, int N, int nsample);
35 extern char *MajorityRuleConsensus(char **aseq, int nseq, int alen);
36
37 /* 
38  * from alignio.c
39  */
40 extern void AllocAlignment(int nseq, int alen, char ***ret_aseq, AINFO *ainfo);
41 extern void InitAinfo(AINFO *ainfo);
42 extern void FreeAlignment(char **aseqs, AINFO *ainfo);
43 extern void SAMizeAlignment(char **aseq, int nseq, int alen);
44 extern void SAMizeAlignmentByGapFrac(char **aseq, int nseq, int alen, float maxgap);
45 extern int  MakeAlignedString(char *aseq, int alen, char *ss, char **ret_s);
46 extern int  MakeDealignedString(char *aseq, int alen, char *ss, char **ret_s);
47 extern int  DealignedLength(char *aseq);
48 extern int  WritePairwiseAlignment(FILE *ofp, char *aseq1, char *name1, int spos1,
49                                    char *aseq2, char *name2, int spos2,
50                                    int **pam, int indent);
51 extern int  MingapAlignment(char **aseqs, AINFO *ainfo);
52 extern int  RandomAlignment(char **rseqs, SQINFO *sqinfo, int nseq, float pop, float pex,
53                             char ***ret_aseqs, AINFO *ainfo);
54 extern void AlignmentHomogenousGapsym(char **aseq, int nseq, int alen, char gapsym);
55
56 /* from cluster.c
57  */
58 extern int Cluster(float **mx, int N, enum clust_strategy mode, struct phylo_s **ret_tree);
59 extern struct phylo_s *AllocPhylo(int N);
60 extern void FreePhylo(struct phylo_s *tree, int N);
61 extern void MakeDiffMx(char **aseqs, int num, float ***ret_dmx);
62 extern void MakeIdentityMx(char **aseqs, int num, float ***ret_imx);
63 extern void PrintNewHampshireTree(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N);
64 extern void PrintPhylo(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N);
65
66 /* 
67  * from dayhoff.c
68  */
69 extern int  ParsePAMFile(FILE *fp, int ***ret_pam, float *ret_scale);
70 extern void ScalePAM(int **pam, int scale);
71
72
73 /* from file.c
74  */
75 extern char *FileDirname(char *filename);
76 extern char *FileTail(char *file, int noextension);
77 extern char *FileSameDirectory(char *full, char *file);
78 extern char *FileConcat(char *dir, char *file);
79 extern char *FileAddSuffix(char *filename, char *sfx);
80 extern FILE *EnvFileOpen(char *fname, char *env, char **ret_dir);
81 extern int   FileExists(char *filename);
82
83
84 /* from getopt.c
85  */
86 extern int  Getopt(int argc, char **argv, 
87                    struct opt_s *opt, int nopts, char *usage,
88                    int *ret_optind, char **ret_optname, char **ret_optarg);
89
90
91 /* from hsregex.c
92  * Henry Spencer's regex() code
93  */
94 extern int         Strparse(char *rexp, char *s, int ntok);
95 extern void        SqdClean(void);
96 extern sqd_regexp *sqd_regcomp(const char *re);
97 extern int         sqd_regexec(sqd_regexp *rp, const char *s);
98 extern void        sqd_regsub(const sqd_regexp *rp, const char *src, char *dst);
99 extern void        sqd_regerror(char *message);
100
101 /* from interleaved.c
102  */
103 extern int IsInterleavedFormat(int format);
104 extern int ReadInterleaved(char *seqfile, 
105                            int (*skip_header)(FILE *),
106                            int (*parse_header)(FILE *, AINFO *),
107                            int (*is_dataline)(char *, char *), 
108                            char ***ret_aseqs, AINFO *ainfo);
109 extern int ReadAlignment(char *seqfile, int format, char ***ret_aseqs, AINFO *ainfo);
110
111
112 /* from revcomp.c
113  */
114 extern char *revcomp(char *comp, char *seq);
115
116 /* 
117  * from selex.c
118  */
119 extern int  DealignAseqs(char **aseqs, int num, char ***ret_rseqs);
120 extern int  IsSELEXFormat(char *filename);
121 extern int  TruncateNames(char **names, int N); /* OBSOLETE? */
122
123 /* 
124  * from seqencode.c
125  */
126 extern int seqcmp(char *s1, char *s2, int allow);
127 extern int seqncmp(char *s1, char *s2, int n, int allow);
128 extern int seqencode(char *codeseq,char *str);
129 extern int coded_revcomp(char *comp, char *seq);
130 extern int seqdecode(char *str, char *codeseq);
131 extern int seqndecode(char *str, char *codeseq, int n);
132
133 /* 
134  * from shuffle.c
135  */
136 extern int  StrShuffle(char *s1, char *s2);
137 extern int  StrDPShuffle(char *s1, char *s2);
138 extern int  StrMarkov0(char *s1, char *s2);
139 extern int  StrMarkov1(char *s1, char *s2);
140 extern int  StrReverse(char *s1, char *s2);
141 extern int  StrRegionalShuffle(char *s1, char *s2, int w);
142 extern int  AlignmentShuffle(char **ali1, char **ali2, int nseq, int alen);
143 extern int  AlignmentBootstrap(char **ali1, char **ali2, int nseq, int alen);
144 extern int  QRNAShuffle(char *xs, char *ys, char *x, char *y);
145
146 /* 
147  * from sqerror.c
148  */
149 extern void Die(char *format, ...);
150 #ifdef CLUSTALO
151 extern void Warning(char *format, ...);
152 #else
153 extern void Warn(char *format, ...);
154 #endif
155 extern void Panic(char *file, int line);
156
157
158 /* 
159  * from sqio.c
160  */
161 extern void  FreeSequence(char *seq, SQINFO *sqinfo);
162 extern int   SetSeqinfoString(SQINFO *sqinfo, char *sptr, int flag);
163 extern void  SeqinfoCopy(SQINFO *sq1, SQINFO *sq2);
164 extern void  ToDNA(char *seq);
165 extern void  ToRNA(char *seq);
166 extern void  ToIUPAC(char *seq, int is_aseq);
167 extern int   ReadMultipleRseqs(char *seqfile, int fformat, char ***ret_rseqs, 
168                                SQINFO **ret_sqinfo, int *ret_num);
169 extern SQFILE *SeqfileOpen(char *filename, int format, char *env);
170 extern SQFILE *SeqfileOpenForIndexing(char *filename, int format, char *env, int ssimode);
171 extern int     SeqfileFormat(FILE *fp);
172 extern void    SeqfilePosition(SQFILE *sfp, SSIOFFSET *offset);
173 extern void    SeqfileRewind(SQFILE *sfp);
174 extern void    SeqfileClose(SQFILE *sfp);
175
176 extern int   ReadSeq(SQFILE *fp, int format, char **ret_seq, SQINFO *sqinfo);
177 extern int   GCGBinaryToSequence(char *seq, int len);
178 extern int   GCGchecksum(char *seq, int seqlen);
179 extern int   GCGMultchecksum(char **seqs, int nseq);
180 extern void  WriteSimpleFASTA(FILE *fp, char *seq, char *name, char *desc);
181 extern int   WriteSeq(FILE *outf, int outfmt, char *seq, SQINFO *sqinfo);
182 extern int   Seqtype(char *seq);
183 extern int   GuessAlignmentSeqtype(char **aseq, int nseq);
184 extern int   String2SeqfileFormat(char *s);
185 extern char *SeqfileFormat2String(int code);
186 extern SQINFO *MSAToSqinfo(MSA *msa); 
187
188 /* from squidcore.c
189  */
190 extern void Banner(FILE *fp, char *banner); 
191
192
193 /* from sre_ctype.c
194  */
195 extern int sre_tolower(int c);
196 extern int sre_toupper(int c);
197
198 /* from sre_math.c
199  */
200 extern int      Linefit(float *x, float *y, int N, 
201                         float *ret_a, float *ret_b, float *ret_r);
202 extern void     WeightedLinefit(float *x, float *y, float *var, int N,
203                              float *ret_m, float *ret_b);
204 extern double   Gammln(double xx);
205 extern float  **FMX2Alloc(int rows, int cols);
206 extern void     FMX2Free(float **mx);
207 extern double **DMX2Alloc(int rows, int cols);
208 extern void     DMX2Free(double **mx);
209 extern void     FMX2Multiply(float **A, float **B, float **C, int m, int p, int n);
210 extern double   IncompleteGamma(double a, double x);
211
212 /* from sre_string.c
213  */
214 #ifdef NOSTR
215 extern char *strstr(char *s, char *subs);
216 #endif
217 extern char *Strdup(char *s);
218 extern void  StringChop(char *s);
219 extern int   Strinsert(char *s1, char c, int pos);
220 extern int   Strdelete(char *s1, int pos);
221 extern void  s2lower(char *s);
222 extern void  s2upper(char *s);
223 extern void *sre_malloc(char *file, int line, size_t size);
224 extern void *sre_realloc(char *file, int line, void *p, size_t size);
225 extern void  Free2DArray(void **p, int dim1);
226 extern void  Free3DArray(void ***p, int dim1, int dim2);
227 extern char *RandomSequence(char *alphabet, float *p, int n, int len);
228 extern char *sre_fgets(char **buf, int *n, FILE *fp);
229 extern int   sre_strcat(char **dest, int ldest, char *src, int lsrc);
230 extern char *sre_strtok(char **s, char *delim, int *len);
231 extern char *sre_strdup(char *s, int n);
232 extern char *sre_strncat(char *s1, char *s2, int n);
233 extern int   IsBlankline(char *s);
234
235 /* from stack.c
236  */
237 extern struct intstack_s *InitIntStack(void);
238 extern void PushIntStack(struct intstack_s *stack, int data);
239 extern int  PopIntStack(struct intstack_s  *stack, int *ret_data);
240 extern void ReverseIntStack(struct intstack_s *stack);
241 extern int  FreeIntStack( struct intstack_s *stack );
242
243 /* 
244  * from translate.c
245  */
246 extern char *Translate(char *seq, char **code);
247
248 /* 
249  * from types.c
250  */
251 extern int  IsInt(char *s);
252 extern int  IsReal(char *s);
253 extern void Byteswap(char *swap, int nbytes);
254 #ifndef USE_HOST_BYTESWAP_FUNCTIONS
255 extern sqd_uint16 sre_ntoh16(sqd_uint16 netshort);
256 extern sqd_uint32 sre_ntoh32(sqd_uint32 netlong);
257 extern sqd_uint16 sre_hton16(sqd_uint16 hostshort);
258 extern sqd_uint32 sre_hton32(sqd_uint32 hostlong);
259 #endif /*!USE_HOST_BYTESWAP_FUNCTIONS*/
260 extern sqd_uint64 sre_ntoh64(sqd_uint64 net_int64);
261 extern sqd_uint64 sre_hton64(sqd_uint64 host_int64);
262
263 /* 
264  * from weight.c
265  */
266 extern void GSCWeights(char **aseq, int nseq, int alen, float *wgt);
267 extern void VoronoiWeights(char **aseq, int nseq, int alen, float *wgt);
268 extern void BlosumWeights(char **aseq, int nseq, int alen, float blosumlevel, float *wgt);
269 extern void PositionBasedWeights(char **aseq, int nseq, int alen, float *wgt);
270 extern void FilterAlignment(MSA *msa, float cutoff, MSA **ret_new);
271 extern void SampleAlignment(MSA *msa, int sample,   MSA **ret_new);
272 extern void SingleLinkCluster(char **aseq, int nseq, int alen, float maxid, 
273                   int **ret_c, int *ret_nc);
274 #endif /* SQFUNCSH_INCLUDED */