blob: f4d1c18c4e670b4528475ef1ce10d151fbec6282 [file] [log] [blame]
/* $Id$
*
* Christian Iseli, LICR ITO, Christian.Iseli@licr.org
*
* Copyright (c) 2001-2006 Swiss Institute of Bioinformatics.
* Copyright (C) 1998-2001 Liliana Florea.
*/
#ifndef SIM4_H
#define SIM4_H
#define DIST_CUTOFF 3
#define DEFAULT_GAPPCT 10
#define MIN_INTRON 30
#define MAX_GRINIT 500
#define MATCH_CUTOFF 50
#define DEFAULT_FILTER 75
#define DEFAULT_W 12
#define DEFAULT_X 12
#define DEFAULT_K 15
#define DEFAULT_C 15
#define P (.2)
#define MATCH 1
#define MISMATCH (-5)
#define DELETE 1
#define INSERT 2
#define SUBSTITUTE 3
#define BUF_SIZE 4096
#define NACHARS 128
#define HASH_SIZE (1 << 19)
#define HASH_MASK (HASH_SIZE - 1)
#define min(x, y) ((x > y) ? (y) : (x))
#define max(x, y) ((x < y) ? (y) : (x))
/* data structures */
typedef unsigned char uchar;
typedef struct _hash_node_t {
unsigned int ecode; /* integer encoding of the word */
int pos; /* positions where word hits query sequence */
} hash_node_t, *hash_node_p_t;
typedef struct _hash_env_t {
void **hashtab;
uchar *seq;
unsigned int len;
int *next_pos;
unsigned int mask;
unsigned int W;
} hash_env_t, *hash_env_p_t;
typedef struct _read_buf_t {
char *line;
unsigned int lmax;
unsigned int lc;
unsigned int ic;
char in[BUF_SIZE];
} read_buf_t, *read_buf_p_t;
typedef struct _seq_t {
const char *fName;
char *header;
unsigned char *seq;
read_buf_t rb;
int fd;
unsigned int len;
unsigned int maxHead;
unsigned int max;
} seq_t, *seq_p_t;
typedef struct _exon_t {
unsigned int from1, from2, to1, to2;
unsigned int score;
unsigned int Score;
unsigned int top : 1;
unsigned int bot : 1;
int prev : 30;
int direction : 2;
unsigned int splScore : 22;
int type : 8;
} exon_t, *exon_p_t;
typedef struct _sim4_stats {
unsigned int nmatches;
int polyA_cut;
int polyT_cut;
} sim4_stats_t, *sim4_stats_p_t;
/* used only in the alignment stage */
typedef struct _edit_script {
struct _edit_script *next;
int num; /* Number of operations */
char op_type; /* SUB, INS, or DEL */
} edit_script_t, *edit_script_p_t;
typedef struct _edit_script_list {
struct _edit_script_list *next_script;
edit_script_p_t script;
unsigned int offset1, offset2;
unsigned int len1, len2;
int score;
} edit_script_list_t, *edit_script_list_p_t;
typedef union _collec_elt_t {
void **elt;
exon_p_t *exon;
struct _result_t **result;
} collec_elt_t;
typedef struct _collec_t {
collec_elt_t e;
unsigned int nb;
unsigned int size;
} collec_t, *collec_p_t;
typedef struct _result_t {
edit_script_list_p_t sList;
collec_t eCol;
unsigned int dStart;
unsigned int dLen;
int direction;
sim4_stats_t st;
} result_t, *result_p_t;
typedef struct _junction_t {
uchar fwd[4];
uchar rev[4];
} junction_t, *junction_p_t;
typedef struct _splice_score_t {
unsigned int to1;
unsigned int to2;
unsigned int nFrom1;
unsigned int type;
unsigned int score;
unsigned int splScore;
int direction;
} splice_score_t, *splice_score_p_t;
typedef struct _options_t {
char *splice_type_list;
junction_p_t splice;
unsigned int nbSplice;
int ali_flag;
unsigned int C;
int cutoff;
unsigned int gapPct;
unsigned int intron_window;
unsigned int K;
unsigned int scoreSplice_window;
int mismatchScore;
int reverse;
int matchScore;
int W;
int X;
unsigned int dnaOffset;
unsigned int filterPct;
unsigned int minScore_cutoff;
} options_t;
extern options_t options;
extern char *argv0;
#endif