1 /*****************************************************************
2 * HMMER - Biological sequence analysis with profile HMMs
3 * Copyright (C) 1992-1999 Washington University School of Medicine
6 * This source code is distributed under the terms of the
7 * GNU General Public License. See the files COPYING and LICENSE
9 *****************************************************************/
11 #ifndef SQFUNCSH_INCLUDED
12 #define SQFUNCSH_INCLUDED
15 * Prototypes for squid library functions;
16 * also makes a good reference list for what the package contains.
18 * Warning: squid is a slowly evolving beast. Some functions are
19 * obsolete. Some functions are probably just wrong, dating to
20 * a primordial era before I knew anything about what I was doing.
21 * Some functions are both obsolete and wrong but still necessary
22 * to get legacy code to compile.
24 * RCS $Id: sqfuncs.h,v 1.1.1.1 2005/03/22 08:34:30 cmzmasek Exp $
30 extern float ComparePairAlignments(char *known1, char *known2, char *calc1, char *calc2);
31 extern float CompareRefPairAlignments(int *ref, char *known1, char *known2, char *calc1, char *calc2);
32 extern float CompareMultAlignments(char **kseqs, char **tseqs, int N);
33 extern float CompareRefMultAlignments(int *ref, char **kseqs, char **tseqs, int N);
34 extern float PairwiseIdentity(char *s1, char *s2);
35 extern float AlignmentIdentityBySampling(char **aseq, int L, int N, int nsample);
36 extern char *MajorityRuleConsensus(char **aseq, int nseq, int alen);
41 extern void AllocAlignment(int nseq, int alen, char ***ret_aseq, AINFO *ainfo);
42 extern void InitAinfo(AINFO *ainfo);
43 extern void FreeAlignment(char **aseqs, AINFO *ainfo);
44 extern void SAMizeAlignment(char **aseq, int nseq, int alen);
45 extern void SAMizeAlignmentByGapFrac(char **aseq, int nseq, int alen, float maxgap);
46 extern int MakeAlignedString(char *aseq, int alen, char *ss, char **ret_s);
47 extern int MakeDealignedString(char *aseq, int alen, char *ss, char **ret_s);
48 extern int DealignedLength(char *aseq);
49 extern int WritePairwiseAlignment(FILE *ofp, char *aseq1, char *name1, int spos1,
50 char *aseq2, char *name2, int spos2,
51 int **pam, int indent);
52 extern int MingapAlignment(char **aseqs, AINFO *ainfo);
53 extern int RandomAlignment(char **rseqs, SQINFO *sqinfo, int nseq, float pop, float pex,
54 char ***ret_aseqs, AINFO *ainfo);
55 extern void AlignmentHomogenousGapsym(char **aseq, int nseq, int alen, char gapsym);
59 extern int Cluster(float **mx, int N, enum clust_strategy mode, struct phylo_s **ret_tree);
60 extern struct phylo_s *AllocPhylo(int N);
61 extern void FreePhylo(struct phylo_s *tree, int N);
62 extern void MakeDiffMx(char **aseqs, int num, float ***ret_dmx);
63 extern void MakeIdentityMx(char **aseqs, int num, float ***ret_imx);
64 extern void PrintNewHampshireTree(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N);
65 extern void PrintPhylo(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N);
70 extern int ParsePAMFile(FILE *fp, int ***ret_pam, float *ret_scale);
71 extern void ScalePAM(int **pam, int scale);
76 extern char *FileDirname(char *filename);
77 extern char *FileTail(char *file, int noextension);
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);
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);
92 * Henry Spencer's regex() code
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);
101 /* from interleaved.c
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);
114 extern char *revcomp(char *comp, char *seq);
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? */
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);
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);
148 extern void Die(char *format, ...);
149 extern void Warn(char *format, ...);
150 extern void Panic(char *file, int line);
156 extern void FreeSequence(char *seq, SQINFO *sqinfo);
157 extern int SetSeqinfoString(SQINFO *sqinfo, char *sptr, int flag);
158 extern void SeqinfoCopy(SQINFO *sq1, SQINFO *sq2);
159 extern void ToDNA(char *seq);
160 extern void ToRNA(char *seq);
161 extern void ToIUPAC(char *seq);
162 extern int ReadMultipleRseqs(char *seqfile, int fformat, char ***ret_rseqs,
163 SQINFO **ret_sqinfo, int *ret_num);
164 extern SQFILE *SeqfileOpen(char *filename, int format, char *env);
165 extern SQFILE *SeqfileOpenForIndexing(char *filename, int format, char *env, int ssimode);
166 extern int SeqfileFormat(FILE *fp);
167 extern void SeqfilePosition(SQFILE *sfp, SSIOFFSET *offset);
168 extern void SeqfileRewind(SQFILE *sfp);
169 extern void SeqfileClose(SQFILE *sfp);
171 extern int ReadSeq(SQFILE *fp, int format, char **ret_seq, SQINFO *sqinfo);
172 extern int GCGBinaryToSequence(char *seq, int len);
173 extern int GCGchecksum(char *seq, int seqlen);
174 extern int GCGMultchecksum(char **seqs, int nseq);
175 extern void WriteSimpleFASTA(FILE *fp, char *seq, char *name, char *desc);
176 extern int WriteSeq(FILE *outf, int outfmt, char *seq, SQINFO *sqinfo);
177 extern int Seqtype(char *seq);
178 extern int GuessAlignmentSeqtype(char **aseq, int nseq);
179 extern int String2SeqfileFormat(char *s);
180 extern char *SeqfileFormat2String(int code);
181 extern SQINFO *MSAToSqinfo(MSA *msa);
185 extern void Banner(FILE *fp, char *banner);
190 extern int sre_tolower(int c);
191 extern int sre_toupper(int c);
195 extern float ExponentialRandom(void);
196 extern float Gaussrandom(float mean, float stddev);
197 extern int Linefit(float *x, float *y, int N,
198 float *ret_a, float *ret_b, float *ret_r);
199 extern void WeightedLinefit(float *x, float *y, float *var, int N,
200 float *ret_m, float *ret_b);
201 extern double Gammln(double xx);
202 extern int DNorm(double *vec, int n);
203 extern int FNorm(float *vec, int n);
204 extern void DScale(double *vec, int n, double scale);
205 extern void FScale(float *vec, int n, float scale);
206 extern void DSet(double *vec, int n, double value);
207 extern void FSet(float *vec, int n, float value);
208 extern double DSum(double *vec, int n);
209 extern float FSum(float *vec, int n);
210 extern void DAdd(double *vec1, double *vec2, int n);
211 extern void FAdd(float *vec1, float *vec2, int n);
212 extern void DCopy(double *vec1, double *vec2, int n);
213 extern void FCopy(float *vec1, float *vec2, int n);
214 extern int DMax(double *vec, int n);
215 extern int FMax(float *vec, int n);
216 extern double DDot(double *vec1, double *vec2, int n);
217 extern float FDot(float *vec1, float *vec2, int n);
218 extern float **FMX2Alloc(int rows, int cols);
219 extern void FMX2Free(float **mx);
220 extern double **DMX2Alloc(int rows, int cols);
221 extern void DMX2Free(double **mx);
222 extern void FMX2Multiply(float **A, float **B, float **C, int m, int p, int n);
223 extern float sre_random(void);
224 extern void sre_srandom(int seed);
225 extern int DChoose(double *p, int n);
226 extern int FChoose(float *p, int n);
227 extern double DLogSum(double *logp, int n);
228 extern float FLogSum(float *logp, int n);
229 extern double IncompleteGamma(double a, double x);
234 extern char *strstr(char *s, char *subs);
236 extern char *Strdup(char *s);
237 extern void StringChop(char *s);
238 extern int Strinsert(char *s1, char c, int pos);
239 extern int Strdelete(char *s1, int pos);
240 extern void s2lower(char *s);
241 extern void s2upper(char *s);
242 extern void *sre_malloc(char *file, int line, size_t size);
243 extern void *sre_realloc(char *file, int line, void *p, size_t size);
244 extern void Free2DArray(void **p, int dim1);
245 extern void Free3DArray(void ***p, int dim1, int dim2);
246 extern char *RandomSequence(char *alphabet, float *p, int n, int len);
247 extern char *sre_fgets(char **buf, int *n, FILE *fp);
248 extern int sre_strcat(char **dest, int ldest, char *src, int lsrc);
249 extern char *sre_strtok(char **s, char *delim, int *len);
250 extern char *sre_strdup(char *s, int n);
251 extern char *sre_strncat(char *s1, char *s2, int n);
252 extern int IsBlankline(char *s);
256 extern struct intstack_s *InitIntStack(void);
257 extern void PushIntStack(struct intstack_s *stack, int data);
258 extern int PopIntStack(struct intstack_s *stack, int *ret_data);
259 extern void ReverseIntStack(struct intstack_s *stack);
260 extern int FreeIntStack( struct intstack_s *stack );
265 extern char *Translate(char *seq, char **code);
270 extern int IsInt(char *s);
271 extern int IsReal(char *s);
272 extern void Byteswap(char *swap, int nbytes);
273 #ifndef USE_HOST_BYTESWAP_FUNCTIONS
274 extern sqd_uint16 sre_ntoh16(sqd_uint16 netshort);
275 extern sqd_uint32 sre_ntoh32(sqd_uint32 netlong);
276 extern sqd_uint16 sre_hton16(sqd_uint16 hostshort);
277 extern sqd_uint32 sre_hton32(sqd_uint32 hostlong);
278 #endif /*!USE_HOST_BYTESWAP_FUNCTIONS*/
279 extern sqd_uint64 sre_ntoh64(sqd_uint64 net_int64);
280 extern sqd_uint64 sre_hton64(sqd_uint64 host_int64);
285 extern void GSCWeights(char **aseq, int nseq, int alen, float *wgt);
286 extern void VoronoiWeights(char **aseq, int nseq, int alen, float *wgt);
287 extern void BlosumWeights(char **aseq, int nseq, int alen, float blosumlevel, float *wgt);
288 extern void PositionBasedWeights(char **aseq, int nseq, int alen, float *wgt);
289 extern void FilterAlignment(MSA *msa, float cutoff, MSA **ret_new);
290 extern void SampleAlignment(MSA *msa, int sample, MSA **ret_new);
291 extern void SingleLinkCluster(char **aseq, int nseq, int alen, float maxid,
292 int **ret_c, int *ret_nc);
293 #endif /* SQFUNCSH_INCLUDED */