--- /dev/null
+#ifndef MAXSQ
+#include "param.h"
+#endif
+
+#ifndef MAXSAV
+#ifdef FASTS
+#define MAXSAV 25
+#else
+#define MAXSAV 10
+#endif
+#endif
+
+#if defined(IBM_AIX) && defined(MAXSEG)
+#undef MAXSEG
+#endif
+#define MAXSEG 30
+
+struct savestr {
+ int score; /* pam score with segment optimization */
+ int score0; /* pam score of best single segment */
+ int start0; /* score from global match */
+ int dp; /* diagonal of match */
+ int start; /* start of match in lib seq */
+ int stop; /* end of match in lib seq */
+ int exact; /* exact match */
+#if defined(FASTF)
+ int *used; /* array of positions in aa0 that were used */
+#endif
+};
+
+struct dstruct { /* diagonal structure for saving current run */
+ int score; /* hash score of current match */
+ int start; /* start of current match */
+ int stop; /* end of current match */
+ struct savestr *dmax; /* location in vmax[] where best score data saved */
+};
+
+struct tat_str {
+ double *probs;
+ int lowscore;
+ int highscore;
+};
+
+struct f_struct {
+ struct dstruct *diag;
+ struct savestr *vmax; /* best matches saved for one sequence */
+ struct savestr **vptr;
+ struct slink *sarr;
+ struct savestr *lowmax;
+ int maxsav; /* max number of peptide alignments saved in search */
+ int maxsav_w; /* max number of peptide alignments saved in alignment */
+ int shuff_cnt;
+ int nsave;
+ int ndo;
+ int noff;
+ int nm0; /* number of fragments */
+#if defined(FASTS) || defined(FASTM)
+ int *nmoff; /* offset number, start */
+ int *nm_u;
+ int *aa0b; /* beginning of each segment */
+ int *aa0e; /* end of each segment */
+ int *aa0i; /* index of each segment */
+ int *aa0s; /* max score of each segment */
+ int *aa0l; /* longest possible peptide match */
+#else
+ int nmoff; /* offset number, start */
+ unsigned char *aa0;
+ int aa0ix;
+#endif
+ unsigned char *aa0t; /* temp location for peptides */
+ int *aa0ti; /* temp index for peptides */
+ int hmask; /* hash constants */
+ int *pamh1; /* pam based array */
+ int *pamh2; /* pam based kfact array */
+#if defined(FASTS) || defined(FASTM)
+ int *link, *harr, *l_end; /* hash arrays */
+#else
+ struct hlstr *link, *harr; /* hash arrays */
+#endif
+ int kshft; /* shift width */
+ int nsav, lowscor; /* number of saved runs, worst saved run */
+ unsigned char *aa1x; /* contains translated codons 111222333 */
+ unsigned char *aa1y; /* contains translated codons 123123123 */
+ int n10;
+ int *waa;
+ int *res;
+ int max_res;
+ double *priors;
+#if defined(FASTS) || defined(FASTM)
+ struct tat_str **tatprobs; /* array of pointers to tat structs */
+ double **intprobs; /* array of integrated tatprobs */
+#endif
+ int dotat;
+ double spacefactor;
+};
+
+struct slink {
+ int score;
+ double tatprob;
+ struct tat_str *tat;
+ struct tat_str *newtat;
+ struct savestr *vp;
+ struct slink *next;
+ struct slink *prev;
+};
+
+struct segstr {
+ double tatprob;
+ int length;
+};
+
+void generate_tatprobs(const unsigned char *query,
+ int begin,
+ int end,
+ double *priors,
+ int **pam2,
+ int nsq,
+ struct tat_str **tatarg, struct tat_str *oldtat);
+
+double
+calc_tatusov ( struct slink *last,
+ struct slink *this,
+ const unsigned char *aa0, int n0,
+ const unsigned char *aa1, int n1,
+ int **pam2, int nsq,
+ struct f_struct *f_str,
+ int pseudocts,
+ int do_opt,
+ int zsflag
+ );
+
+double seg_tatprob(struct slink *start,
+ const unsigned char *aa0,
+ int n0,
+ const unsigned char *aa1,
+ int n1,
+ struct f_struct *f_str,
+ struct pstruct *ppst,
+ int do_opt);
+
+void calc_priors(double *priors,
+ struct pstruct *ppst,
+ struct f_struct *f_str,
+ const unsigned char *aa1,
+ int n1, int pseudocts);
+
+double factorial (int a, int b);
+
+int max_score(int *scores, int nsq);
+
+int min_score(int *scores, int nsq);
+
+double calc_spacefactor(struct f_struct *f_str);
+
+void linreg(double *lnx, double *x, double *lny,
+ int n,
+ double *a, double *b, double *c, int start);