1 /* SQUID - A C function library for biological sequence analysis 2 * Copyright (C) 1992-1996 Sean R. Eddy 3 * 4 * This source code is distributed under terms of the 5 * GNU General Public License. See the files COPYING 6 * and GNULICENSE for further details. 7 * 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 24 /* 25 * from aligneval.c 26 */ 27 extern float ComparePairAlignments(char *known1, char *known2, char *calc1, char *calc2); 28 extern float CompareRefPairAlignments(int *ref, char *known1, char *known2, char *calc1, char *calc2); 29 extern float CompareMultAlignments(char **kseqs, char **tseqs, int N); 30 extern float CompareRefMultAlignments(int *ref, char **kseqs, char **tseqs, int N); 31 extern float PairwiseIdentity(char *s1, char *s2); 32 33 /* 34 * from alignio.c 35 */ 36 extern void AllocAlignment(int nseq, int alen, char ***ret_aseq, AINFO *ainfo); 37 extern void FreeAlignment(char **aseqs, AINFO *ainfo); 38 extern void ReadAlignedFASTA(char *filename, char *env, 39 char ***ret_aseq, AINFO *ainfo); 40 extern void WriteAlignedFASTA(FILE *fp, char **aseqs, AINFO *ainfo); 41 extern int MakeAlignedString(char *aseq, int alen, char *ss, char **ret_s); 42 extern int MakeDealignedString(char *aseq, int alen, char *ss, char **ret_s); 43 extern int DealignedLength(char *aseq); 44 extern int WritePairwiseAlignment(FILE *ofp, char *aseq1, char *name1, int spos1, 45 char *aseq2, char *name2, int spos2, 46 int **pam, int indent); 47 extern int MingapAlignment(char **aseqs, AINFO *ainfo); 48 extern int RandomAlignment(char **rseqs, SQINFO *sqinfo, int nseq, float pop, float pex, 49 char ***ret_aseqs, AINFO *ainfo); 50 51 /* from cluster.c 52 */ 53 extern int Cluster(float **mx, int N, enum clust_strategy mode, struct phylo_s **ret_tree); 54 extern struct phylo_s *AllocPhylo(int N); 55 extern void FreePhylo(struct phylo_s *tree, int N); 56 extern void MakeDiffMx(char **aseqs, int num, float ***ret_dmx); 57 extern void MakeIdentityMx(char **aseqs, int num, float ***ret_imx); 58 extern void PrintNewHampshireTree(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N); 59 extern void PrintPhylo(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N); 60 61 /* 62 * from dayhoff.c 63 */ 64 extern int ParsePAMFile(FILE *fp, int ***ret_pam, float *ret_scale); 65 extern void ScalePAM(int **pam, int scale); 66 67 68 /* from file.c 69 */ 70 extern char *FileDirname(char *filename); 71 extern char *FileTail(char *file, int noextension); 72 extern char *FileConcat(char *dir, char *file); 73 extern FILE *EnvFileOpen(char *fname, char *env); 74 extern int FileExists(char *filename); 75 76 77 /* from getopt.c 78 */ 79 extern int Getopt(int argc, char **argv, 80 struct opt_s *opt, int nopts, char *usage, 81 int *ret_optind, char **ret_optname, char **ret_optarg); 82 83 84 /* from interleaved.c 85 */ 86 extern int IsInterleavedFormat(int format); 87 extern int ReadInterleaved(char *seqfile, 88 int (*skip_header)(FILE *), 89 int (*parse_header)(FILE *, AINFO *), 90 int (*is_dataline)(char *, char *), 91 char ***ret_aseqs, AINFO *ainfo); 92 extern int ReadAlignment(char *seqfile, int format, char ***ret_aseqs, AINFO *ainfo); 93 94 /* 95 * from msf.c 96 */ 97 extern void WriteMSF(FILE *fp, char **aseqs, AINFO *ainfo); 98 99 /* from revcomp.c 100 */ 101 extern char *revcomp(char *comp, char *seq); 102 103 /* 104 * from selex.c 105 */ 106 extern int ReadSELEX(char *seqfile, char ***ret_aseqs, AINFO *ret_aliinfo); 107 extern void WriteSELEX(FILE *fp, char **aseqs, AINFO *ainfo, int cpl); 108 extern int DealignAseqs(char **aseqs, int num, char ***ret_rseqs); 109 extern int IsSELEXFormat(char *filename); 110 extern int TruncateNames(char **names, int N); /* OBSOLETE? */ 111 112 /* 113 * from seqencode.c 114 */ 115 extern int seqcmp(char *s1, char *s2, int allow); 116 extern int seqncmp(char *s1, char *s2, int n, int allow); 117 extern int seqencode(char *codeseq,char *str); 118 extern int coded_revcomp(char *comp, char *seq); 119 extern int seqdecode(char *str, char *codeseq); 120 extern int seqndecode(char *str, char *codeseq, int n); 121 122 /* 123 * from sqerror.c 124 */ 125 extern void Die(char *format, ...); 126 extern void Warn(char *format, ...); 127 128 /* 129 * from sqio.c 130 */ 131 extern void FreeSequence(char *seq, SQINFO *sqinfo); 132 extern int SetSeqinfoString(SQINFO *sqinfo, char *sptr, int flag); 133 extern void SeqinfoCopy(SQINFO *sq1, SQINFO *sq2); 134 extern void ToDNA(char *seq); 135 extern void ToRNA(char *seq); 136 extern int ReadMultipleRseqs(char *seqfile, int fformat, char ***ret_rseqs, 137 SQINFO **ret_sqinfo, int *ret_num); 138 extern SQFILE *SeqfileOpen(char *filename, int format, char *env); 139 extern void SeqfilePosition(SQFILE *sqfp, long offset); 140 extern void SeqfileRewind(SQFILE *sqfp); 141 extern void SeqfileClose(SQFILE *sqfp); 142 extern int ReadSeq(SQFILE *fp, int format, char **ret_seq, SQINFO *sqinfo); 143 extern int GCGBinaryToSequence(char *seq, int len); 144 extern int GCGchecksum(char *seq, int seqlen); 145 extern int GCGMultchecksum(char **seqs, int nseq); 146 extern int SeqfileFormat(char *filename, int *ret_format, char *env); 147 extern int WriteSeq(FILE *outf, int outfmt, char *seq, SQINFO *sqinfo); 148 extern int Seqtype(char *seq); 149 extern char *SeqFormatString(int code); 150 extern GSIFILE *GSIOpen(char *gsifile); 151 extern int GSIGetOffset(GSIFILE *gsi, char *key, char *sqfile, 152 int *fmt, long *ret_offset); 153 extern void GSIClose(GSIFILE *gsi); 154 155 156 /* from sre_ctype.c 157 */ 158 extern int sre_tolower(int c); 159 extern int sre_toupper(int c); 160 161 /* from sre_math.c 162 */ 163 extern float Gaussrandom(float mean, float stddev); 164 extern int Linefit(float *x, float *y, int N, 165 float *ret_a, float *ret_b, float *ret_r); 166 extern void WeightedLinefit(float *x, float *y, float *var, int N, 167 float *ret_m, float *ret_b); 168 extern float Gammln(float xx); 169 extern int DNorm(double *vec, int n); 170 extern int FNorm(float *vec, int n); 171 extern void DScale(double *vec, int n, double scale); 172 extern void FScale(float *vec, int n, float scale); 173 extern void DSet(double *vec, int n, double value); 174 extern void FSet(float *vec, int n, float value); 175 extern double DSum(double *vec, int n); 176 extern float FSum(float *vec, int n); 177 extern void DAdd(double *vec1, double *vec2, int n); 178 extern void FAdd(float *vec1, float *vec2, int n); 179 extern void DCopy(double *vec1, double *vec2, int n); 180 extern void FCopy(float *vec1, float *vec2, int n); 181 extern int DMax(double *vec, int n); 182 extern int FMax(float *vec, int n); 183 extern double DDot(double *vec1, double *vec2, int n); 184 extern float FDot(float *vec1, float *vec2, int n); 185 extern float **FMX2Alloc(int rows, int cols); 186 extern void FMX2Free(float **mx); 187 extern double **DMX2Alloc(int rows, int cols); 188 extern void DMX2Free(double **mx); 189 extern void FMX2Multiply(float **A, float **B, float **C, int m, int p, int n); 190 extern float sre_random(void); 191 extern void sre_srandom(int seed); 192 extern int DChoose(double *p, int n); 193 extern int FChoose(float *p, int n); 194 extern double DLogSum(double *logp, int n); 195 extern float FLogSum(float *logp, int n); 196 extern double IncompleteGamma(double a, double x); 197 198 /* from sre_string.c 199 */ 200 #ifdef NOSTR 201 extern char *strstr(char *s, char *subs); 202 #endif 203 extern char *Strdup(char *s); 204 extern void StringChop(char *s); 205 extern int Strinsert(char *s1, char c, int pos); 206 extern int Strdelete(char *s1, int pos); 207 extern void s2lower(char *s); 208 extern void s2upper(char *s); 209 extern void *MallocOrDie(size_t size); 210 extern void *ReallocOrDie(void *p, size_t size); 211 extern int Strparse(char *rexp, char *s, int ntok); 212 extern void SqdClean(void); 213 extern void StrShuffle(char *s1, char *s2); 214 extern void StrReverse(char *s1, char *s2); 215 extern void StrRegionalShuffle(char *s1, char *s2, int w); 216 extern char *RandomSequence(char *alphabet, float *p, int n, int len); 217 218 219 /* from stack.c 220 */ 221 extern struct intstack_s *InitIntStack(void); 222 extern void PushIntStack(struct intstack_s *stack, int data); 223 extern int PopIntStack(struct intstack_s *stack, int *ret_data); 224 extern void ReverseIntStack(struct intstack_s *stack); 225 extern int FreeIntStack( struct intstack_s *stack ); 226 227 /* 228 * from translate.c 229 */ 230 extern char *Translate(char *seq, char **code); 231 232 /* 233 * from types.c 234 */ 235 extern int IsInt(char *s); 236 extern int IsReal(char *s); 237 extern void Byteswap(char *swap, int nbytes); 238 239 /* 240 * from weight.c 241 */ 242 extern void GSCWeights(char **aseq, AINFO *ainfo); 243 extern void VoronoiWeights(char **aseq, AINFO *ainfo); 244 extern void BlosumWeights(char **aseq, AINFO *ainfo, float blosumlevel); 245 extern void FilterAlignment(char **aseq, int nseq, AINFO *ainfo, float cutoff, 246 char ***ret_anew, int *ret_nnew, 247 AINFO **ret_newinfo); 248 extern void SampleAlignment(char **aseq, int nseq, AINFO *ainfo, int sample, 249 char ***ret_anew, int *ret_nnew, 250 AINFO **ret_newinfo); 251 252 #endif /* SQFUNCSH_INCLUDED */ 253