亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? readmat.c

?? 是有關基因比對的經典算法的實現。這對于初學計算生物學的人是非常重要的算法。
?? C
字號:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "clustalw.h"
#include "matrices.h"


/*
 *   Prototypes
 */
static Boolean commentline(char *line);


/*
 *   Global variables
 */

extern char 	*amino_acid_codes;
extern sint 	gap_pos1, gap_pos2;
extern sint 	max_aa;
extern short 	def_dna_xref[],def_aa_xref[];
extern sint 	mat_avscore;
extern sint 	debug;
extern Boolean  dnaflag;

extern Boolean user_series;
extern UserMatSeries matseries;
extern short usermatseries[MAXMAT][NUMRES][NUMRES];
extern short aa_xrefseries[MAXMAT][NUMRES+1];


void init_matrix(void)
{

   char c1,c2;
   short i, j, maxres;

   max_aa = strlen(amino_acid_codes)-2;
   gap_pos1 = NUMRES-2;          /* code for gaps inserted by clustalw */
   gap_pos2 = NUMRES-1;           /* code for gaps already in alignment */

/*
   set up cross-reference for default matrices hard-coded in matrices.h
*/
   for (i=0;i<NUMRES;i++) def_aa_xref[i] = -1;
   for (i=0;i<NUMRES;i++) def_dna_xref[i] = -1;

   maxres = 0;
   for (i=0;(c1=amino_acid_order[i]);i++)
     {
         for (j=0;(c2=amino_acid_codes[j]);j++)
          {
           if (c1 == c2)
               {
                  def_aa_xref[i] = j;
                  maxres++;
                  break;
               }
          }
         if ((def_aa_xref[i] == -1) && (amino_acid_order[i] != '*'))
            {
                error("residue %c in matrices.h is not recognised",
                                       amino_acid_order[i]);
            }
     }

   maxres = 0;
   for (i=0;(c1=nucleic_acid_order[i]);i++)
     {
         for (j=0;(c2=amino_acid_codes[j]);j++)
          {
           if (c1 == c2)
               {
                  def_dna_xref[i] = j;
                  maxres++;
                  break;
               }
          }
         if ((def_dna_xref[i] == -1) && (nucleic_acid_order[i] != '*'))
            {
                error("nucleic acid %c in matrices.h is not recognised",
                                       nucleic_acid_order[i]);
            }
     }
}

sint get_matrix(short *matptr, short *xref, sint matrix[NUMRES][NUMRES], Boolean neg_flag, sint scale)
{
   sint gg_score = 0;
   sint gr_score = 0;
   sint i, j, k, ix = 0;
   sint ti, tj;
   sint  maxres;
   sint av1,av2,av3,min, max;
/*
   default - set all scores to 0
*/
   for (i=0;i<=max_aa;i++)
      for (j=0;j<=max_aa;j++)
          matrix[i][j] = 0;

   ix = 0;
   maxres = 0;
   for (i=0;i<=max_aa;i++)
    {
      ti = xref[i];
      for (j=0;j<=i;j++)
       {
          tj = xref[j]; 
          if ((ti != -1) && (tj != -1))
            {
               k = matptr[ix];
               if (ti==tj)
                  {
                     matrix[ti][ti] = k * scale;
                     maxres++;
                  }
               else
                  {
                     matrix[ti][tj] = k * scale;
                     matrix[tj][ti] = k * scale;
                  }
               ix++;
            }
       }
    }

   --maxres;

   av1 = av2 = av3 = 0;
   for (i=0;i<=max_aa;i++)
    {
      for (j=0;j<=i;j++)
       {
           av1 += matrix[i][j];
           if (i==j)
              {
                 av2 += matrix[i][j];
              }
           else
              {
                 av3 += matrix[i][j];
              }
       }
    }

   av1 /= (maxres*maxres)/2;
   av2 /= maxres;
   av3 /= ((float)(maxres*maxres-maxres))/2;
  mat_avscore = -av3;

  min = max = matrix[0][0];
  for (i=0;i<=max_aa;i++)
    for (j=1;j<=i;j++)
      {
        if (matrix[i][j] < min) min = matrix[i][j];
        if (matrix[i][j] > max) max = matrix[i][j];
      }

if (debug>1) fprintf(stdout,"maxres %d\n",(pint)max_aa);
if (debug>1) fprintf(stdout,"average mismatch score %d\n",(pint)av3);
if (debug>1) fprintf(stdout,"average match score %d\n",(pint)av2);
if (debug>1) fprintf(stdout,"average score %d\n",(pint)av1);

/*
   if requested, make a positive matrix - add -(lowest score) to every entry
*/
  if (neg_flag == FALSE)
   {

if (debug>1) fprintf(stdout,"min %d max %d\n",(pint)min,(pint)max);
      if (min < 0)
        {
           for (i=0;i<=max_aa;i++)
            {
              ti = xref[i];
              if (ti != -1)
                {
                 for (j=0;j<=max_aa;j++)
                   {
                    tj = xref[j];
/*
                    if (tj != -1) matrix[ti][tj] -= (2*av3);
*/
                    if (tj != -1) matrix[ti][tj] -= min;
                   }
                }
            }
        }
/*
       gr_score = av3;
       gg_score = -av3;
*/

   }



  for (i=0;i<gap_pos1;i++)
   {
      matrix[i][gap_pos1] = gr_score;
      matrix[gap_pos1][i] = gr_score;
      matrix[i][gap_pos2] = gr_score;
      matrix[gap_pos2][i] = gr_score;
   }
  matrix[gap_pos1][gap_pos1] = gg_score;
  matrix[gap_pos2][gap_pos2] = gg_score;
  matrix[gap_pos2][gap_pos1] = gg_score;
  matrix[gap_pos1][gap_pos2] = gg_score;

  maxres += 2;

  return(maxres);
}


sint read_matrix_series(char *filename, short *usermat, short *xref)
{
   FILE *fd = NULL, *matfd = NULL;
   char mat_filename[FILENAMELEN];
   char inline1[1024];
   sint  maxres = 0;
   sint nmat;
   sint n,llimit,ulimit;

   if (filename[0] == '\0')
     {
        error("comparison matrix not specified");
        return((sint)0);
     }
   if ((fd=fopen(filename,"r"))==NULL) 
     {
        error("cannot open %s", filename);
        return((sint)0);
     }

/* check the first line to see if it's a series or a single matrix */
   while (fgets(inline1,1024,fd) != NULL)
     {
        if (commentline(inline1)) continue;
	if(linetype(inline1,"CLUSTAL_SERIES"))
		user_series=TRUE;
	else
		user_series=FALSE;
        break;
     }

/* it's a single matrix */
  if(user_series == FALSE)
    {
	fclose(fd);
   	maxres=read_user_matrix(filename,usermat,xref);
   	return(maxres);
    }

/* it's a series of matrices, find the next MATRIX line */
   nmat=0;
   matseries.nmat=0;
   while (fgets(inline1,1024,fd) != NULL)
     {
        if (commentline(inline1)) continue;
	if(linetype(inline1,"MATRIX"))
	{
		if(sscanf(inline1+6,"%d %d %s",&llimit,&ulimit,mat_filename)!=3)
		{
			error("Bad format in file %s\n",filename);
   			fclose(fd);
			return((sint)0);
		}
		if(llimit<0 || llimit > 100 || ulimit <0 || ulimit>100)
		{
			error("Bad format in file %s\n",filename);
   			fclose(fd);
			return((sint)0);
		}
		if(ulimit<=llimit)
		{
			error("in file %s: lower limit is greater than upper (%d-%d)\n",filename,llimit,ulimit);
   			fclose(fd);
			return((sint)0);
		}
   		n=read_user_matrix(mat_filename,&usermatseries[nmat][0][0],&aa_xrefseries[nmat][0]);
		if(n<=0)
		{
			error("Bad format in matrix file %s\n",mat_filename);
   			fclose(fd);
			return((sint)0);
		}
		matseries.mat[nmat].llimit=llimit;
		matseries.mat[nmat].ulimit=ulimit;
		matseries.mat[nmat].matptr=&usermatseries[nmat][0][0];
		matseries.mat[nmat].aa_xref=&aa_xrefseries[nmat][0];
		nmat++;
	}
    }
   fclose(fd);
   matseries.nmat=nmat;

   maxres=n;
   return(maxres);

}

sint read_user_matrix(char *filename, short *usermat, short *xref)
{
   double f;
   FILE *fd;
   sint  numargs,farg;
   sint i, j, k = 0;
   char codes[NUMRES];
   char inline1[1024];
   char *args[NUMRES+4];
   char c1,c2;
   sint ix1, ix = 0;
   sint  maxres = 0;
   float scale;

   if (filename[0] == '\0')
     {
        error("comparison matrix not specified");
       	return((sint)0);
     }

   if ((fd=fopen(filename,"r"))==NULL) 
   {
       	error("cannot open %s", filename);
       	return((sint)0);
   }
   maxres = 0;
   while (fgets(inline1,1024,fd) != NULL)
     {
        if (commentline(inline1)) continue;
	if(linetype(inline1,"CLUSTAL_SERIES"))
   	{
       		error("in %s - single matrix expected.", filename);
		fclose(fd);
       		return((sint)0);
   	}
/*
   read residue characters.
*/
        k = 0;
        for (j=0;j<strlen(inline1);j++)
          {
             if (isalpha((int)inline1[j])) codes[k++] = inline1[j];
             if (k>NUMRES)
                {
                   error("too many entries in matrix %s",filename);
		   fclose(fd);
                   return((sint)0);
                }
          }
        codes[k] = '\0';
        break;
    }

   if (k == 0) 
     {
        error("wrong format in matrix %s",filename);
  	fclose(fd);
        return((sint)0);
     }

/*
   cross-reference the residues
*/
   for (i=0;i<NUMRES;i++) xref[i] = -1;

   maxres = 0;
   for (i=0;(c1=codes[i]);i++)
     {
         for (j=0;(c2=amino_acid_codes[j]);j++)
           if (c1 == c2)
               {
                  xref[i] = j;
                  maxres++;
                  break;
               }
         if ((xref[i] == -1) && (codes[i] != '*'))
            {
                warning("residue %c in matrix %s not recognised",
                                       codes[i],filename);
            }
     }


/*
   get the weights
*/

   ix = ix1 = 0;
   while (fgets(inline1,1024,fd) != NULL)
     {
        if (inline1[0] == '\n') continue;
        if (inline1[0] == '#' ||
            inline1[0] == '!') break;
        numargs = getargs(inline1, args, (int)(k+1));
        if (numargs < maxres)
          {
             error("wrong format in matrix %s",filename);
  	     fclose(fd);
             return((sint)0);
          }
        if (isalpha(args[0][0])) farg=1;
        else farg=0;

/* decide whether the matrix values are float or decimal */
	scale=1.0;
	for(i=0;i<strlen(args[farg]);i++)
		if(args[farg][i]=='.')
		{
/* we've found a float value */
			scale=10.0;
			break;
		}

        for (i=0;i<=ix;i++)
          {
             if (xref[i] != -1)
               {
                  f = atof(args[i+farg]);
                  usermat[ix1++] = (short)(f*scale);
               }
          }
        ix++;
     }
   if (ix != k+1)
     {
        error("wrong format in matrix %s",filename);
  	fclose(fd);
        return((sint)0);
     }


  maxres += 2;
  fclose(fd);

  return(maxres);
}

int getargs(char *inline1,char *args[],int max)
{

	char	*inptr;
/*
#ifndef MAC
	char	*strtok(char *s1, const char *s2);
#endif
*/
	int	i;

	inptr=inline1;
	for (i=0;i<=max;i++)
	{
		if ((args[i]=strtok(inptr," \t\n"))==NULL)
			break;
		inptr=NULL;
	}

	return(i);
}


static Boolean commentline(char *line)
{
        int i;
 
        if(line[0] == '#') return TRUE;
        for(i=0;line[i]!='\n' && line[i]!=EOS;i++) {
                if(!isspace(line[i]))
			return FALSE;
        }
        return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美欧美午夜aⅴ在线观看| 久久久久国产精品人| 国产美女精品人人做人人爽| 婷婷国产在线综合| 亚洲国产精品一区二区久久恐怖片 | 成+人+亚洲+综合天堂| 国产一区二区伦理片| 国产一区二区三区在线观看免费视频| 蜜桃久久久久久| 国产一区二区三区四| 国产精品中文字幕一区二区三区| 韩国av一区二区| av电影在线观看一区| 色94色欧美sute亚洲线路一ni | 国产一区免费电影| 国产精品亚洲人在线观看| 老司机午夜精品| 91丨porny丨国产| 亚洲成人福利片| 国产一区二区三区在线观看精品| 日韩一区二区三区免费看| 日韩欧美激情一区| 2020国产精品自拍| 国产精品不卡在线观看| 亚洲一区在线电影| 老司机精品视频线观看86| 国产高清在线精品| 欧美色窝79yyyycom| 欧美成人精品二区三区99精品| 久久麻豆一区二区| 亚洲精品免费播放| 久久电影网站中文字幕| 成人激情黄色小说| 欧美一级欧美三级在线观看| 国产亚洲欧美日韩俺去了| 国产在线观看免费一区| 日本一区免费视频| 亚洲美女区一区| 日韩在线一区二区| www.欧美日韩| 91精品在线观看入口| 久久九九久久九九| 五月激情综合婷婷| 成人激情校园春色| 在线播放欧美女士性生活| 国产日韩欧美在线一区| 五月天视频一区| 色综合久久99| 欧美经典三级视频一区二区三区| 性做久久久久久久久| 成人午夜av电影| 欧美成人午夜电影| 亚洲老妇xxxxxx| 成人永久aaa| 精品久久免费看| 午夜精品久久久久| 91猫先生在线| 中文字幕的久久| 国产一区二区三区四区五区入口 | 中文字幕一区不卡| 午夜在线成人av| 青青草国产成人av片免费| 亚洲国产日韩精品| 成人国产精品免费| 亚洲精品亚洲人成人网在线播放| 免费观看在线综合| 欧美久久高跟鞋激| 同产精品九九九| 欧美日韩综合不卡| 一区二区在线观看免费| 99精品欧美一区二区三区小说| 欧美成人性战久久| 久久99最新地址| 日韩午夜三级在线| 激情久久五月天| 欧美变态tickling挠脚心| 久久精品免费观看| 亚洲精品在线电影| 裸体健美xxxx欧美裸体表演| 欧美一区二区三区在线观看视频 | 精品日韩在线一区| 久久99久久99| 亚洲精品一区二区三区在线观看| 另类的小说在线视频另类成人小视频在线 | 精品日韩欧美一区二区| 精品一区二区三区免费观看| 2024国产精品| 风间由美一区二区av101| 国产精品三级av在线播放| 91在线看国产| 一二三区精品视频| 日韩一区二区免费电影| 国产精品亚洲一区二区三区妖精 | 97精品国产露脸对白| 中文字幕佐山爱一区二区免费| 色94色欧美sute亚洲13| 视频一区中文字幕| 久久久国产一区二区三区四区小说 | 日韩欧美在线影院| 国产麻豆视频一区二区| 最好看的中文字幕久久| 8x8x8国产精品| 国内外成人在线| 一区二区三区在线视频免费| 在线91免费看| 成人性生交大片免费看视频在线| 亚洲欧美另类小说| 91精品国产免费久久综合| 韩国午夜理伦三级不卡影院| 国产精品久久久久久久第一福利| 欧美视频精品在线| 白白色 亚洲乱淫| 婷婷亚洲久悠悠色悠在线播放 | 亚洲欧美日韩久久精品| 666欧美在线视频| 成人国产精品视频| 日韩专区在线视频| 国产精品女同一区二区三区| 欧美另类高清zo欧美| 成人国产一区二区三区精品| 爽好多水快深点欧美视频| 综合久久久久综合| 精品精品国产高清a毛片牛牛 | 日本高清视频一区二区| 九色综合狠狠综合久久| 亚洲成年人影院| 中文字幕一区二区在线播放| 日韩一区二区免费电影| 在线观看欧美精品| 岛国精品一区二区| 久久成人免费电影| 天天综合色天天| 亚洲欧美另类在线| 国产精品你懂的在线欣赏| 欧美大片日本大片免费观看| 91久久精品国产91性色tv| 成人av在线电影| 国产剧情一区二区| 国产制服丝袜一区| 免费观看在线色综合| 午夜精品久久久久久久久| 亚洲裸体xxx| 中文字幕一区二区三| 国产午夜一区二区三区| 久久久久久夜精品精品免费| 日韩一区二区视频在线观看| 欧美日韩视频一区二区| 97久久精品人人澡人人爽| 成人h动漫精品一区二区| 国产suv精品一区二区6| 国产精品一区二区免费不卡| 国产自产视频一区二区三区| 黑人巨大精品欧美一区| 经典三级视频一区| 国产一区二区三区av电影| 精品一区二区三区视频在线观看| 蜜桃视频在线一区| 狠狠色狠狠色综合系列| 国产精品一区二区免费不卡| 国产成人精品一区二区三区四区 | 欧美久久久久久久久久| 91精品国产综合久久久蜜臀粉嫩| 欧美日韩性生活| 欧美人伦禁忌dvd放荡欲情| 欧美另类久久久品| 日韩精品中文字幕一区| 久久综合久久99| 国产精品夫妻自拍| 亚洲激情五月婷婷| 天天影视色香欲综合网老头| 日韩成人av影视| 国内国产精品久久| 99久久久久久| 在线成人午夜影院| 久久―日本道色综合久久| 国产精品久久福利| 亚洲尤物在线视频观看| 日韩精品91亚洲二区在线观看 | 欧美日本在线播放| 欧美视频中文字幕| 精品国产一区二区三区不卡| 国产欧美精品一区二区色综合朱莉| 国产精品白丝在线| 日本va欧美va欧美va精品| 国产精品一区二区在线播放| 99国产精品99久久久久久| 精品视频一区三区九区| 国产丝袜在线精品| 亚洲不卡av一区二区三区| 国产在线麻豆精品观看| 91豆麻精品91久久久久久| 欧美刺激脚交jootjob| 国产精品国产自产拍在线| 婷婷综合五月天| 91一区一区三区| 亚洲精品一区二区精华| 亚洲永久免费av| 不卡一区二区三区四区| 日韩三区在线观看| 亚洲免费资源在线播放|