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

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

?? showpair.c

?? 經典生物信息學多序列比對工具clustalw
?? C
字號:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include "clustalw.h"	static void make_p_ptrs(sint *tptr, sint *pl, sint naseq, sint l);static void make_n_ptrs(sint *tptr, sint *pl, sint naseq, sint len);static void put_frag(sint fs, sint v1, sint v2, sint flen);static sint frag_rel_pos(sint a1, sint b1, sint a2, sint b2);static void des_quick_sort(sint *array1, sint *array2, sint array_size);static void pair_align(sint seq_no, sint l1, sint l2);/**	Prototypes*//**	 Global variables*/extern sint *seqlen_array;extern char **seq_array;extern sint  dna_ktup, dna_window, dna_wind_gap, dna_signif; /* params for DNA */extern sint prot_ktup,prot_window,prot_wind_gap,prot_signif; /* params for prots */extern sint 	nseqs;extern Boolean 	dnaflag;extern double 	**tmat;extern sint 	max_aa;extern sint  max_aln_length;static sint 	next;static sint 	curr_frag,maxsf,vatend;static sint 	**accum;static sint 	*diag_index;static char 	*slopes;sint ktup,window,wind_gap,signif;    		      /* Pairwise aln. params */sint *displ;sint *zza, *zzb, *zzc, *zzd;extern Boolean percent;static void make_p_ptrs(sint *tptr,sint *pl,sint naseq,sint l){	static sint a[10];	sint i,j,limit,code,flag;	char residue;		for (i=1;i<=ktup;i++)           a[i] = (sint) pow((double)(max_aa+1),(double)(i-1));	limit = (sint) pow((double)(max_aa+1),(double)ktup);	for(i=1;i<=limit;++i)		pl[i]=0;	for(i=1;i<=l;++i)		tptr[i]=0;		for(i=1;i<=(l-ktup+1);++i) {		code=0;		flag=FALSE;		for(j=1;j<=ktup;++j) {			residue = seq_array[naseq][i+j-1];			if((residue<0) || (residue > max_aa)){				flag=TRUE;				break;			}			code += ((residue) * a[j]);		}		if(flag)			continue;		++code;		if(pl[code]!=0)			tptr[i]=pl[code];		pl[code]=i;	}}static void make_n_ptrs(sint *tptr,sint *pl,sint naseq,sint len){	static sint pot[]={ 0, 1, 4, 16, 64, 256, 1024, 4096 };	sint i,j,limit,code,flag;	char residue;		limit = (sint) pow((double)4,(double)ktup);		for(i=1;i<=limit;++i)		pl[i]=0;	for(i=1;i<=len;++i)		tptr[i]=0;		for(i=1;i<=len-ktup+1;++i) {		code=0;		flag=FALSE;		for(j=1;j<=ktup;++j) {			residue = seq_array[naseq][i+j-1];			if((residue<0) || (residue>4)){				flag=TRUE;				break;			}			code += ((residue) * pot[j]);  /* DES */		}		if(flag)			continue;		++code;		if(pl[code]!=0)			tptr[i]=pl[code];		pl[code]=i;	}}static void put_frag(sint fs,sint v1,sint v2,sint flen){	sint end;	accum[0][curr_frag]=fs;	accum[1][curr_frag]=v1;	accum[2][curr_frag]=v2;	accum[3][curr_frag]=flen;		if(!maxsf) {		maxsf=1;		accum[4][curr_frag]=0;		return;	}	        if(fs >= accum[0][maxsf]) {		accum[4][curr_frag]=maxsf;		maxsf=curr_frag;		return;	}	else {		next=maxsf;		while(TRUE) {			end=next;			next=accum[4][next];			if(fs>=accum[0][next])				break;		}		accum[4][curr_frag]=next;		accum[4][end]=curr_frag;	}}static sint frag_rel_pos(sint a1,sint b1,sint a2,sint b2){	sint ret;		ret=FALSE;	if(a1-b1==a2-b2) {		if(a2<a1)			ret=TRUE;	}	else {		if(a2+ktup-1<a1 && b2+ktup-1<b1)			ret=TRUE;	}	return ret;}static void des_quick_sort(sint *array1, sint *array2, sint array_size)/*  *//* Quicksort routine, adapted from chapter 4, page 115 of software tools *//* by Kernighan and Plauger, (1986) *//* Sort the elements of array1 and sort the *//* elements of array2 accordingly *//*  */{	sint temp1, temp2;	sint p, pivlin;	sint i, j;	sint lst[50], ust[50];       /* the maximum no. of elements must be*/								/* < log(base2) of 50 */	lst[1] = 1;	ust[1] = array_size-1;	p = 1;	while(p > 0) {		if(lst[p] >= ust[p])			p--;		else {			i = lst[p] - 1;			j = ust[p];			pivlin = array1[j];			while(i < j) {				for(i=i+1; array1[i] < pivlin; i++)					;				for(j=j-1; j > i; j--)					if(array1[j] <= pivlin) break;				if(i < j) {					temp1     = array1[i];					array1[i] = array1[j];					array1[j] = temp1;										temp2     = array2[i];					array2[i] = array2[j];					array2[j] = temp2;				}			}						j = ust[p];			temp1     = array1[i];			array1[i] = array1[j];			array1[j] = temp1;			temp2     = array2[i];			array2[i] = array2[j];			array2[j] = temp2;			if(i-lst[p] < ust[p] - i) {				lst[p+1] = lst[p];				ust[p+1] = i - 1;				lst[p]   = i + 1;			}			else {				lst[p+1] = i + 1;				ust[p+1] = ust[p];				ust[p]   = i - 1;			}			p = p + 1;		}	}	return;}static void pair_align(sint seq_no,sint l1,sint l2){	sint pot[8],i,j,l,m,flag,limit,pos,tl1,vn1,vn2,flen,osptr,fs;	sint tv1,tv2,encrypt,subt1,subt2,rmndr;	char residue;		if(dnaflag) {		for(i=1;i<=ktup;++i)			pot[i] = (sint) pow((double)4,(double)(i-1));		limit = (sint) pow((double)4,(double)ktup);	}	else {		for (i=1;i<=ktup;i++)           		pot[i] = (sint) pow((double)(max_aa+1),(double)(i-1));		limit = (sint) pow((double)(max_aa+1),(double)ktup);	}		tl1 = (l1+l2)-1;		for(i=1;i<=tl1;++i) {		slopes[i]=displ[i]=0;		diag_index[i] = i;	}	/* increment diagonal score for each k_tuple match */	for(i=1;i<=limit;++i) {		vn1=zzc[i];		while(TRUE) {			if(!vn1) break;			vn2=zzd[i];			while(vn2 != 0) {				osptr=vn1-vn2+l2;				++displ[osptr];				vn2=zzb[vn2];			}			vn1=zza[vn1];		}	}/* choose the top SIGNIF diagonals */	des_quick_sort(displ, diag_index, tl1);	j = tl1 - signif + 1;	if(j < 1) j = 1; /* flag all diagonals within WINDOW of a top diagonal */	for(i=tl1; i>=j; i--) 		if(displ[i] > 0) {			pos = diag_index[i];			l = (1  >pos-window) ? 1   : pos-window;			m = (tl1<pos+window) ? tl1 : pos+window;			for(; l <= m; l++) 				slopes[l] = 1;		}	for(i=1; i<=tl1; i++)  displ[i] = 0;		curr_frag=maxsf=0;		for(i=1;i<=(l1-ktup+1);++i) {		encrypt=flag=0;		for(j=1;j<=ktup;++j) {			residue = seq_array[seq_no][i+j-1];			if((residue<0) || (residue>max_aa)) {				flag=TRUE;				break;			}			encrypt += ((residue)*pot[j]);		}		if(flag) continue;		++encrypt;			vn2=zzd[encrypt];			flag=FALSE;		while(TRUE) {			if(!vn2) {				flag=TRUE;				break;			}			osptr=i-vn2+l2;			if(slopes[osptr]!=1) {				vn2=zzb[vn2];				continue;			}			flen=0;			fs=ktup;			next=maxsf;						/*		* A-loop		*/					while(TRUE) {				if(!next) {					++curr_frag;					if(curr_frag>=2*max_aln_length) {						info("(Partial alignment)");						vatend=1;						return;					}					displ[osptr]=curr_frag;					put_frag(fs,i,vn2,flen);				}				else {					tv1=accum[1][next];					tv2=accum[2][next];					if(frag_rel_pos(i,vn2,tv1,tv2)) {						if(i-vn2==accum[1][next]-accum[2][next]) {							if(i>accum[1][next]+(ktup-1))								fs=accum[0][next]+ktup;							else {								rmndr=i-accum[1][next];								fs=accum[0][next]+rmndr;							}							flen=next;							next=0;							continue;						}						else {							if(displ[osptr]==0)								subt1=ktup;							else {								if(i>accum[1][displ[osptr]]+(ktup-1))									subt1=accum[0][displ[osptr]]+ktup;								else {									rmndr=i-accum[1][displ[osptr]];									subt1=accum[0][displ[osptr]]+rmndr;								}							}							subt2=accum[0][next]-wind_gap+ktup;							if(subt2>subt1) {								flen=next;								fs=subt2;							}							else {								flen=displ[osptr];								fs=subt1;							}							next=0;							continue;						}					}					else {						next=accum[4][next];						continue;					}				}				break;			}		/*		* End of Aloop		*/					vn2=zzb[vn2];		}	}	vatend=0;}		 void show_pair(sint istart, sint iend, sint jstart, sint jend){	sint i,j,dsr;	double calc_score;		accum = (sint **)ckalloc( 5*sizeof (sint *) );	for (i=0;i<5;i++)		accum[i] = (sint *) ckalloc((2*max_aln_length+1) * sizeof (sint) );	displ      = (sint *) ckalloc( (2*max_aln_length +1) * sizeof (sint) );	slopes     = (char *)ckalloc( (2*max_aln_length +1) * sizeof (char));	diag_index = (sint *) ckalloc( (2*max_aln_length +1) * sizeof (sint) );	zza = (sint *)ckalloc( (max_aln_length+1) * sizeof (sint) );	zzb = (sint *)ckalloc( (max_aln_length+1) * sizeof (sint) );	zzc = (sint *)ckalloc( (max_aln_length+1) * sizeof (sint) );	zzd = (sint *)ckalloc( (max_aln_length+1) * sizeof (sint) );        if(dnaflag) {                ktup     = dna_ktup;                window   = dna_window;                signif   = dna_signif;                wind_gap = dna_wind_gap;        }        else {                ktup     = prot_ktup;                window   = prot_window;                signif   = prot_signif;                wind_gap = prot_wind_gap;        }	fprintf(stdout,"\n\n");		for(i=istart+1;i<=iend;++i) {		if(dnaflag)			make_n_ptrs(zza,zzc,i,seqlen_array[i]);		else			make_p_ptrs(zza,zzc,i,seqlen_array[i]);		for(j=jstart+2;j<=jend;++j) {			if(dnaflag)				make_n_ptrs(zzb,zzd,j,seqlen_array[j]);			else				make_p_ptrs(zzb,zzd,j,seqlen_array[j]);			pair_align(i,seqlen_array[i],seqlen_array[j]);			if(!maxsf)				calc_score=0.0;			else {				calc_score=(double)accum[0][maxsf];				if(percent) {					dsr=(seqlen_array[i]<seqlen_array[j]) ?							seqlen_array[i] : seqlen_array[j];				calc_score = (calc_score/(double)dsr) * 100.0;				}			}/*			tmat[i][j]=calc_score;			tmat[j][i]=calc_score;*/                        tmat[i][j] = (100.0 - calc_score)/100.0;                        tmat[j][i] = (100.0 - calc_score)/100.0;			if(calc_score>0.1) 				info("Sequences (%d:%d) Aligned. Score: %lg",               			(pint)i,(pint)j,calc_score);			else				info("Sequences (%d:%d) Not Aligned",						(pint)i,(pint)j);		}	}	for (i=0;i<5;i++)	   accum[i]=ckfree((void *)accum[i]);	accum=ckfree((void *)accum);	displ=ckfree((void *)displ);	slopes=ckfree((void *)slopes);	diag_index=ckfree((void *)diag_index);	zza=ckfree((void *)zza);	zzb=ckfree((void *)zzb);	zzc=ckfree((void *)zzc);	zzd=ckfree((void *)zzd);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国视频一区二区| 欧美三级日韩三级国产三级| 91在线无精精品入口| 欧美一级片免费看| 亚洲女人****多毛耸耸8| 久久国产剧场电影| 欧美日韩一二三| 欧美国产综合色视频| 麻豆精品精品国产自在97香蕉| 99精品欧美一区二区三区小说| 欧美大片在线观看| 亚洲电影在线播放| 91成人看片片| 国产精品国产三级国产有无不卡 | 不卡的电视剧免费网站有什么| 欧美精品亚洲二区| 一区二区三区高清不卡| 国产不卡在线一区| 久久婷婷国产综合精品青草| 美国十次了思思久久精品导航| 欧美在线免费视屏| 亚洲综合久久久| 一本高清dvd不卡在线观看| 国产区在线观看成人精品| 日本中文字幕一区二区有限公司| 在线视频欧美精品| 日韩毛片在线免费观看| a级高清视频欧美日韩| 久久久久久毛片| 激情欧美日韩一区二区| 精品日韩在线观看| 国产精品亚洲一区二区三区妖精 | 欧美精品一二三四| 香蕉影视欧美成人| 欧美久久久久久久久| 视频在线观看一区| 欧美一区二区视频在线观看2020 | 北条麻妃国产九九精品视频| 国产蜜臀av在线一区二区三区| 国产福利一区二区三区视频在线| 精品福利一区二区三区| 国产麻豆视频一区| 中文字幕乱码一区二区免费| 丁香亚洲综合激情啪啪综合| 中文字幕乱码亚洲精品一区| 99久久99久久久精品齐齐| |精品福利一区二区三区| 在线观看日韩毛片| 丝袜亚洲另类欧美综合| 欧美成人a视频| 国产大片一区二区| 中文字幕在线一区免费| 色噜噜狠狠成人中文综合| 亚洲与欧洲av电影| 91精品国产欧美一区二区| 国内精品伊人久久久久av一坑| 国产精品另类一区| 在线免费不卡电影| 精品影院一区二区久久久| 国产精品麻豆99久久久久久| 欧美日韩高清一区二区三区| 激情六月婷婷综合| 亚洲色图欧洲色图| 日韩欧美不卡在线观看视频| 国产成人鲁色资源国产91色综| 亚洲综合免费观看高清完整版在线| 91精品国产aⅴ一区二区| 成人免费看的视频| 日韩高清电影一区| 中文字幕一区二区三中文字幕| 欧美三日本三级三级在线播放| 韩国视频一区二区| 亚洲午夜精品在线| 国产免费久久精品| 7777精品伊人久久久大香线蕉完整版 | 日韩成人一级大片| 国产精品久久久久影视| 欧美福利一区二区| 91麻豆文化传媒在线观看| 九色porny丨国产精品| 樱花影视一区二区| 国产日韩欧美制服另类| 91麻豆精品国产91久久久久久久久 | 亚洲欧洲另类国产综合| 日韩免费高清av| 成人精品在线视频观看| 麻豆国产欧美一区二区三区| 亚洲综合久久久久| 中文字幕av免费专区久久| 欧美一区二区三区啪啪| 在线一区二区观看| 成人av电影在线| 国产乱码精品1区2区3区| 日韩在线a电影| 亚洲国产aⅴ天堂久久| 国产精品久久久久久久久快鸭| 日韩你懂的在线播放| 欧美四级电影网| 成人综合在线观看| 国产精品一区在线观看你懂的| 青椒成人免费视频| 日韩在线观看一区二区| 天涯成人国产亚洲精品一区av| 亚洲黄色小视频| 亚洲柠檬福利资源导航| 中文字幕在线不卡视频| 国产精品成人免费在线| 国产精品天干天干在线综合| 欧美国产综合一区二区| 国产欧美视频一区二区| 久久精品视频免费| 国产日韩欧美在线一区| 国产精品私房写真福利视频| 中文字幕+乱码+中文字幕一区| 久久蜜桃av一区二区天堂| 久久中文字幕电影| 国产丝袜欧美中文另类| 中文字幕一区二区三| 亚洲人吸女人奶水| 亚洲国产综合视频在线观看| 亚洲动漫第一页| 免费在线看成人av| 韩国毛片一区二区三区| 国模套图日韩精品一区二区| 丁香激情综合五月| 91麻豆精品在线观看| 欧美性生活大片视频| 91精品国产一区二区三区 | 欧美日韩国产三级| 欧美一区二区视频免费观看| 精品美女一区二区| 中文字幕av资源一区| 亚洲欧美在线视频| 亚洲不卡一区二区三区| 六月婷婷色综合| 国产不卡在线一区| 在线看日本不卡| 欧美一区二区黄| 欧美国产一区在线| 亚洲福利一区二区| 激情文学综合丁香| 色又黄又爽网站www久久| 欧美猛男gaygay网站| 久久人人97超碰com| 亚洲男同1069视频| 蜜臀av一级做a爰片久久| 成人性色生活片| 91精品国产综合久久婷婷香蕉| 26uuu精品一区二区三区四区在线| 日本一区二区高清| 亚洲高清久久久| 国产a精品视频| 91麻豆精品久久久久蜜臀 | 91美女在线看| 日韩精品一区二区三区蜜臀 | 99久久精品免费| 91麻豆精品国产综合久久久久久 | 在线国产亚洲欧美| 欧美xxxx在线观看| 亚洲黄色免费网站| 大尺度一区二区| 欧美日本韩国一区二区三区视频 | 2020国产精品久久精品美国| 亚洲日本电影在线| 另类小说视频一区二区| 色婷婷久久综合| 国产亚洲自拍一区| 蜜臀av性久久久久蜜臀aⅴ| 在线影视一区二区三区| 国产视频不卡一区| 麻豆成人在线观看| 欧美无砖砖区免费| 亚洲三级在线看| 国产成人在线网站| 精品免费视频.| 日韩国产欧美一区二区三区| 大美女一区二区三区| 欧美精品一区二区久久婷婷| 亚洲国产成人91porn| 日本精品免费观看高清观看| 国产欧美精品在线观看| 麻豆精品一区二区av白丝在线| 欧美日韩精品一区二区天天拍小说| 国产精品久久久久久久久免费丝袜| 国产自产v一区二区三区c| 日韩欧美123| 五月激情丁香一区二区三区| 色琪琪一区二区三区亚洲区| 亚洲国产高清在线观看视频| 激情欧美一区二区三区在线观看| 欧美一区欧美二区| 日韩成人av影视| 日韩精品一区二区三区swag| 美腿丝袜在线亚洲一区| 欧美精品久久天天躁| 日韩不卡一二三区| 欧美电影精品一区二区| 狠狠色丁香婷婷综合| 久久综合九色欧美综合狠狠| 极品少妇xxxx偷拍精品少妇|