⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lsim4.h

📁 序列对齐 Compare a protein sequence to a protein sequence database or a DNA sequence to a DNA sequenc
💻 H
字号:
/* global definitions, #defines, for lsim4.c */typedef int bool;void *ckalloc(size_t amount, size_t size);#define maxi(x, y)  (((x) > (y)) ? x: y)typedef struct ONE {int COL ; struct ONE  *NEXT ;} pair, *pair_ptr;#define PAIRNULL (pair_ptr)NULLtypedef struct NODE{ int  SCORE;  int  STARI, STARJ;  int  ENDI,  ENDJ;  int  TOP,   BOT;  int  LEFT,  RIGHT;   struct NODE *next;}  vertex, *vertex_p;		struct lrr_str {  int CC, DD;			/* saving row matrix scores */  int RR, SS, EE, FF;		/* saving row start-points */};  struct lcc_str {  int HH, WW;			/* saving col matrix scores HH=CC, */  int II, JJ, XX, YY; 		/* saving col start-points , II=RR, JJ=EE */};typedef struct spa {  int CC, RR, EE, DD, SS, FF; } space;typedef struct spa *space_ptr;struct vert_str {  int numnode;  vertex_p LIST, most;};struct l_struct {  space_ptr CCC;  struct lrr_str *r_ss;  struct lcc_str *c_ss;  pair_ptr *row;		/* for saving used aligned pairs */  int  m1, mm, n1, nn;	/* boundaries of recomputed area */  int  rl, cl;		/* left and top boundaries */  int I, J;		/* current positions of A ,B - used by diff() */};static void big_pass(const unsigned char *A,		     const unsigned char *B,		     int M, int N,		     int mini_score,		     int **pam2, int Q, int R,		     int nseq,		     struct vert_str *v_ptr,		     struct l_struct *l_ptr);static void locate(const unsigned char *A,		   const unsigned char *B,		   int mini_score,		   int **pam2, int Q, int R,		   int nseq,		   int *flag_p,		   struct vert_str *v_ptr,		   struct l_struct *l_ptr);static void small_pass(const unsigned char *A,		       const unsigned char *B,		       int mini_score,		       int **pam2, int Q, int R,		       int nseq,		       struct vert_str *v_ptr,		       struct l_struct *l_ptr);static void addnode(int c, int ci, int cj, int i, int j,		    struct vert_str *v_ptr);static bool no_cross(int *flag_p, vertex_p LIST, struct l_struct *l_ptr);static int diff(const unsigned char *A,		const unsigned char *B,		int M, int N, int tb, int te,		int **pam2, int q, int r,		int **sapp, int *last,		struct l_struct *l_ptr);static int CHECK_SCORE(const unsigned char *A, const unsigned char *B,		       int M, int N,		       int *S, int **W, int G, int H, int *nres);static vertex_p findmax(struct vert_str *v_ptr);/* DIAG() assigns value to x if (ii,jj) is never used before */#define DIAG(ii, jj, x, value)	\{ for ( z = l_ptr->row[(ii)]; z != 0 && z->COL != (jj); z = z->NEXT ) ; \  if ( !z )   x = ( value );	\  }/* replace (ss1, xx1, yy1) by (ss2, xx2, yy2) if the latter is large */#define ORDER(ss1, xx1, yy1, ss2, xx2, yy2) \{ if ( ss1 < ss2 ) \  { ss1 = ss2; xx1 = xx2; yy1 = yy2; } \else \if ( ss1 == ss2 ) \  { if ( xx1 < xx2 ) { xx1 = xx2; yy1 = yy2; } \    else \       if ( xx1 == xx2 && yy1 < yy2 )  yy1 = yy2; \  } \}#define ORDER1(ss1, xx1, yy1, ss2, xx2, yy2)  \{ if (ss1 <= ss2) {  \    if (ss1 == ss2) {  \	if (xx1 < xx2) {  \           xx1 = xx2; yy1 = yy2; \    } else {                           \      if (xx1 == xx2 && yy1 < yy2)  \         yy1 = yy2; \    } \    } else {  \      ss1 = ss2; xx1 = xx2; yy1 = yy2;  \    } \  } \}#define ORDER2(ss1, xx1, ss2, xx2) \{  \   if (ss1 <= ss2) { \      if (ss1 == ss2) {  \         if (xx1 < xx2) xx1 = xx2; \      } else { \      ss1 = ss2; xx1 = xx2; \      } \ } \}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -