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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? seq.c

?? 一個類似于blast算法的基因數(shù)據(jù)快速搜索算法
?? C
字號:
/* seq.c -- procedures for reading a file of DNA sequences */static const char rcsid[] ="$Id: seq.c,v 1.11 2002/08/12 04:15:32 schwartz Exp $";#include "util.h"#include "seq.h"#include "nib.h"#include "charvec.h"#include <stdarg.h>#include <stdio.h>#include <errno.h>#define _ (-1)extern const signed char fasta_encoding[256];const signed char fasta_encoding[] = { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, _, 1, _, _, _, 2, _, _, _, _, _, _, _, _, _, _, _, _, 3, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _,};extern const signed char nfasta_encoding[256];const signed char nfasta_encoding[] = { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, _, 1, _, _, _, 2, _, _, _, _, _, _, _, _, _, _, _, _, 3, _, _, _, _, _, _, _, _, _, _, _, _, 0, _, 1, _, _, _, 2, _, _, _, _, _, _, _, _, _, _, _, _, 3, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _,};static const unsigned char nfasta_ctype[256];static const unsigned char nfasta_ctype[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 3, 0, 0, 1, 3, 0, 0, 3, 0, 3, 1, 0, 0, 0, 3, 3, 1, 0, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 3, 0, 0, 1, 3, 0, 0, 3, 0, 3, 1, 0, 0, 0, 3, 3, 1, 0, 3, 3, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};static const unsigned char dna_complement[] =   "                                                                "  " TVGH  CD  M KN   YSA BWXR       tvgh  cd  m kn   ysa bwxr      "  "                                                                "  "                                                                ";/* ................................................................ *//* @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~. *//* ................................................................ *//* ................................................................ */static const unsigned char fasta_decoding[] = "ACGT";static void Fatalfr(const char *fmt, ...){	va_list ap;	va_start(ap, fmt);	fflush(stdout);	print_argv0();	(void)vfprintf(stderr, fmt, ap);	(void)fprintf(stderr, ": %s\n", strerror(errno));	va_end(ap);	exit(1);}static SEQ *seq_mask_inplace(SEQ *seq);static int getpair(FILE *fp, int *a, int *b);static char *byte_fill_range(uchar *p, int l, int c, int a, int b);static int ws(int c);static int getnwc(FILE *fp);static void un_getc(int c, FILE *fp);static void char_append(charvec_t *s, int c);enum { Nfasta_bad=0, Nfasta_nt=1, Nfasta_ws=2, Nfasta_amb=3 };static int ws(int c){	return (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r');}static int getnwc(FILE *fp){	int c = EOF;	if (!feof(fp)) do c = getc(fp); while (c != EOF && ws(c));	return c;}static void un_getc(int c, FILE *fp){	if (c != EOF)		if (ungetc(c, fp) == EOF)			fatalf("cannot ungetc '%c'", c);}static void char_append(charvec_t *s, int c){	if (!charvec_append(s, (char)c))		fatal("cannot append");}int seq_read_fasta(SEQ *seq){	int b, c;	charvec_t shdr = charvec_INIT(ckrealloc,ckfree);	charvec_t sseq = charvec_INIT(ckrealloc,ckfree);	if (feof(seq->fp) || ferror(seq->fp))		return 0;	if (seq->count > 0) { 		if (seq->flags & SEQ_IS_SUBRANGE) {			return 0;		} else {			seq->from = 1;			seq->slen = -1; /* will be computed below */		}	}	if (seq->header) ZFREE(seq->header);	if (seq->seq) ZFREE(seq->seq);	seq->offset = ftell(seq->fp);	/* --- header --- */	c = getnwc(seq->fp);	if (c == '>') {		while (c != '\n' && c != EOF) {			char_append(&shdr, c);			c = getc(seq->fp);		}	} else {		un_getc(c, seq->fp);	}	if (ferror(seq->fp))		Fatalfr("seq_read(%s)", seq->fname);	char_append(&shdr, 0);	seq->header = shdr.a;	seq->hlen = shdr.len;	/* --- seq --- */	b = '\n';	c = getnwc(seq->fp);	while ((c != EOF) && !(b == '\n' && c == '>')) {		switch (nfasta_ctype[c]) {		case Nfasta_nt:			char_append(&sseq, c);			break;		case Nfasta_ws:			/* skip space */			break;		case Nfasta_amb:			if (seq->flags & SEQ_ALLOW_AMB) {				char_append(&sseq, c);				break;			}			/* FALLTHRU */		default:			fatalf("non-DNA character '%c' in sequence '%s'",			  c, seq->fname);			break;		}		b = c;		c = getc(seq->fp);	}	un_getc(c, seq->fp);	if (ferror(seq->fp))		Fatalfr("seq_read(%s)", seq->fname);	/* check conformance */	if (SEQ_LEN(seq) == -1) {		char_append(&sseq, 0);		charvec_fit(&sseq);		seq->seq = (uchar*)sseq.a;		seq->slen = sseq.len;		if (seq->slen > 0) --seq->slen;  /* don't include '\0' */	} else {		charvec_t ssub = charvec_INIT(ckrealloc,ckfree);		int i;		if (SEQ_FROM(seq) < 1 ||		    (int)sseq.len < SEQ_FROM(seq) ||		    SEQ_TO(seq) < 1 ||		    (int)sseq.len < SEQ_TO(seq) ||		    SEQ_TO(seq) < SEQ_FROM(seq))		    fatalf("range [%d,%d] incommensurate with sequence [%d,%d]",				SEQ_FROM(seq), SEQ_TO(seq), 1, sseq.len);				for (i = SEQ_FROM(seq); i <= SEQ_TO(seq); ++i)			char_append(&ssub, sseq.a[i-1]);		char_append(&ssub, 0);		charvec_fini(&sseq);		seq->seq = (uchar*)ssub.a;	}	seq->flags = seq->flags &~ SEQ_IS_REVCOMP;        if (seq->flags & SEQ_DO_REVCOMP) {	    (void)seq_revcomp_inplace(seq);	}	if (seq->flags & SEQ_HAS_MASK) {	    (void)seq_mask_inplace(seq);	}	seq->count++;	return 1;}static SEQ *seq_mask_inplace(SEQ *seq){        int a, b;          FILE *fp = fopen(seq->maskname, "r");        if (fp == 0) {                Fatalfr("cannot open '%s'", seq->maskname);                return 0;        } else {                while (getpair(fp, &a, &b))                        byte_fill_range(SEQ_CHARS(seq),SEQ_LEN(seq),'X',a,b);                fclose(fp);                seq->flags |= SEQ_HAS_MASK;                return seq;        }}#define BUF 128static int getpair(FILE *fp, int *a, int *b){        char buf[BUF];        /* XXX - should handle comments, etc */        if (fgets(buf, (int)sizeof(buf), fp) == 0)                return 0;        if (sscanf(buf, "%d%d", a, b) != 2)                return 0;        return 1;}static char *byte_fill_range(uchar *p, int l, int c, int a, int b){        /* fill [a,b] (1-indexed) in p with c */        a--; b = b-a; /* make it into a 0-indexed, open interval */        return (b < 0 || l < b) ? 0 : memset(p+a, c, (size_t)b);}static int parse_fname(const char* arg, 		char **fname, int *from, int *len, char **maskfile){        char *p = 0;        int flags = 0;	/* "seqfile{maskfile}[from,to]-" */        *fname = copy_string(arg);        p = (*fname)+strlen(*fname)-1;        if (*p == '-') {            *p = 0;            flags |= SEQ_DO_REVCOMP;        }        if ((p = strchr(*fname, '['))) {                int to;		if (sscanf(p+1, "%d,%d", from, &to) != 2)			return -1;		if (*from <= 0 || *from > to)			return -1;		*p = '\0';		*len = to - *from + 1;		flags |= (SEQ_DO_SUBRANGE|SEQ_IS_SUBRANGE);	} else {		*from = 1;		*len = -1;	}        if ((p = strchr(*fname, '{'))) {		char *q = strchr(p+1, '}');		if (q) {			*p = *q = 0;			if (maskfile) {				*maskfile = copy_string(p+1);				flags |= SEQ_DO_MASK;			}		}	} else {		*maskfile = copy_string(""); /* XXX ugh */	}	return flags;}static int check_flags(int flags){	switch (flags & (SEQ_DISALLOW_AMB|SEQ_ALLOW_AMB)) {	case 0: 		/* default is to allow ambiguious */		flags |= SEQ_ALLOW_AMB;		break;	case SEQ_ALLOW_AMB:	case SEQ_DISALLOW_AMB:		break;	case SEQ_DISALLOW_AMB|SEQ_ALLOW_AMB:		fatalf("seq_open: contradictory flags: SEQ_DISALLOW_AMB|SEQ_ALLOW_AMB");	}	return flags;}SEQ* seq_open_type(const char *fname, int type){	SEQ *s = ckallocz(sizeof(SEQ));	int r, flags = 0;	r = parse_fname(fname, 		&(s->fname), &(s->from), &(s->slen), &(s->maskname));	if (r == -1)		fatalf("improper positions specification: %s", fname);	s->type = type;	s->flags = check_flags(r|flags);	s->fp = ckopen(s->fname, "rb");	s->count = 0;	s->offset = 0;	return s;}SEQ* seq_open(const char *fname){	return seq_open_type(fname, SEQ_TYPE_GUESS);}SEQ *seq_copy(const SEQ *s){	SEQ *ss = ckallocz(sizeof(SEQ));	*ss = *s;	ss->seq = (uchar*)copy_string((const char*)s->seq);	ss->header = copy_string(s->header);	ss->fname = copy_string(s->fname);	ss->maskname = copy_string(s->fname);	ss->fp = 0; /* XXX - no subsequent seq_read operations allowed */	ss->offset = 0; /* XXX - no subsequent seq_read operations allowed */	return ss;}SEQ* seq_close(SEQ *s){	if (s) {		if (!(s->flags & SEQ_IS_SUBSEQ)) {			if (s->fp)				fclose(s->fp);			if (s->fname) ckfree(s->fname);			if (s->header) ckfree(s->header);			if (s->seq) ckfree(s->seq);			if (s->maskname) ckfree(s->maskname);		}		memset(s, 0, sizeof(SEQ));		ckfree(s);	}	return 0;}uchar dna_cmpl(uchar ch){	/* XXX - assumes ascii, returns space on error. */	return dna_complement[ch];}void do_revcomp(uchar *s, int len){	uchar *p = s + len - 1;	while (s<=p) {		uchar c;		c = dna_cmpl(*s); 		*s = dna_cmpl(*p); 		*p = c;		++s, --p;	}}SEQ *seq_revcomp_inplace(SEQ *seq) {	do_revcomp(SEQ_CHARS(seq), SEQ_LEN(seq));	seq->flags ^= SEQ_IS_REVCOMP;	return seq;}int seq_read_nib(SEQ *seq){	int n;	if (seq->header) ZFREE(seq->header);	if (seq->seq) ZFREE(seq->seq);	seq->offset = ftell(seq->fp);	seq->seq = seq_freadnib(seq->fp, seq->from-1, seq->slen, &(seq->slen));	if (seq->seq == 0) return 0;	n = strlen(seq->fname)+1+22+1+22+1;	seq->header = ckalloc(n);	seq->hlen = snprintf(seq->header, n, "%s:%d-%d",		seq->fname, seq->from, seq->from+seq->slen-1);	seq->count++;	return 1;}int seq_read(SEQ *seq){	if (seq->type == SEQ_TYPE_GUESS) {	    if (strstr(seq->fname, ".nib")) seq->type = SEQ_TYPE_NIB;	    else if (strstr(seq->fname, ".fa")) seq->type = SEQ_TYPE_FASTA;	}	switch (seq->type) {	case SEQ_TYPE_GUESS:	case SEQ_TYPE_FASTA: return seq_read_fasta(seq);	case SEQ_TYPE_NIB:   return seq_read_nib(seq);	default: fatalf("unknown file type (%d)", seq->type);	}	/*NOTREACHED*/	return 0;}SEQ *seq_get(const char *fname){	SEQ *s = seq_open(fname);	int r = seq_read(s);	if (r < 0)		Fatalfr("could not read from %s", fname);	else if (r == 0)		return 0;	else		return s;	/*NOTREACHED*/	return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频免费观看| 中文字幕亚洲视频| 青青草一区二区三区| 欧美理论电影在线| 日本强好片久久久久久aaa| 日韩欧美一卡二卡| 国产一区二区调教| 日韩美女啊v在线免费观看| 欧洲中文字幕精品| 日韩国产精品久久久久久亚洲| 91精品国产欧美一区二区成人 | 日韩一区在线免费观看| eeuss影院一区二区三区| 一区二区三区毛片| 日韩一二三区视频| 国产成人av电影在线| 亚洲一区在线观看视频| 日韩欧美一区在线| 成人av高清在线| 天天影视涩香欲综合网| 国产亚洲成av人在线观看导航| 99久久99久久综合| 日本视频一区二区三区| 日本一区二区高清| 欧美日韩国产高清一区二区三区 | 日韩高清一区在线| 久久久美女毛片| 欧美体内she精视频| 黄色资源网久久资源365| 国产精品电影一区二区三区| 欧美电影影音先锋| 成人午夜激情在线| 麻豆精品新av中文字幕| 国产精品久久久久一区| 日韩欧美一区电影| 欧美一a一片一级一片| 国产精品亚洲专一区二区三区| 一区二区三区资源| 中文字幕久久午夜不卡| 欧美日韩成人激情| 色综合天天综合网国产成人综合天| 青草国产精品久久久久久| ...xxx性欧美| 精品国产制服丝袜高跟| 欧美另类z0zxhd电影| 成人国产视频在线观看| 蜜臀99久久精品久久久久久软件| 亚洲人一二三区| 国产日韩成人精品| 精品福利av导航| 欧美精品三级日韩久久| 在线亚洲精品福利网址导航| 顶级嫩模精品视频在线看| 麻豆国产91在线播放| 亚洲综合色婷婷| 亚洲免费电影在线| 国产精品久久网站| 国产欧美一区二区精品久导航| 欧美一卡二卡在线| 欧美精品第1页| 精品污污网站免费看| 色婷婷av一区| 色婷婷综合久久久中文一区二区| 成人永久免费视频| 国产福利一区二区三区在线视频| 麻豆91在线播放| 青青青爽久久午夜综合久久午夜 | 精品国产乱码久久久久久牛牛| 欧美日韩精品二区第二页| 日本丰满少妇一区二区三区| 成人av在线资源网站| 成人免费毛片aaaaa**| 国产ts人妖一区二区| 成人丝袜18视频在线观看| 国产夫妻精品视频| 国产精品 欧美精品| 国产传媒一区在线| 国产成人亚洲综合色影视| 国产成人免费视频一区| 国产大片一区二区| 成人成人成人在线视频| 91在线丨porny丨国产| 色先锋aa成人| 7777精品伊人久久久大香线蕉的 | 欧美成人免费网站| 欧美成人一区二区| 久久久青草青青国产亚洲免观| 精品国产91九色蝌蚪| 国产婷婷色一区二区三区在线| 久久精品亚洲国产奇米99| 欧美国产精品专区| 亚洲男人的天堂一区二区| 亚洲一区二区三区四区在线免费观看| 亚洲一区欧美一区| 麻豆91在线看| 成人av资源网站| 欧美天天综合网| 精品久久久久久亚洲综合网| 欧美高清在线精品一区| 一区二区三区不卡视频| 天天av天天翘天天综合网| 美女国产一区二区| 成人激情视频网站| 欧美日韩国产成人在线91| 2023国产精品| 亚洲男同1069视频| 免费观看在线综合色| 高清不卡在线观看| 欧美三级中文字幕在线观看| 欧美va在线播放| 中文字幕一区二区视频| 天堂va蜜桃一区二区三区| 国产一区二区三区在线观看免费| 99精品视频在线观看免费| 91精品久久久久久久91蜜桃| 久久久久久电影| 亚洲福利一二三区| 国产传媒日韩欧美成人| 欧美久久免费观看| 国产精品网站在线| 日韩和欧美一区二区三区| 成人精品免费网站| 日韩一级黄色大片| 亚洲欧美一区二区三区久本道91| 久久精品国产精品亚洲综合| 99精品欧美一区二区三区综合在线| 日韩一区二区三区电影在线观看| 国产精品欧美久久久久一区二区| 日韩av电影免费观看高清完整版在线观看 | 欧美韩日一区二区三区四区| 一区二区三区四区蜜桃| 国产乱码精品一区二区三区av| 欧美亚洲尤物久久| 中文字幕精品一区二区三区精品| 日韩激情一二三区| 91视频一区二区三区| 久久精品在线观看| 奇米影视在线99精品| 欧美性做爰猛烈叫床潮| 国产精品剧情在线亚洲| 国产老女人精品毛片久久| 欧美夫妻性生活| 亚洲一区二区三区在线播放| 成人深夜在线观看| 精品成人a区在线观看| 日本欧美久久久久免费播放网| 色综合天天视频在线观看| 欧美经典一区二区| 精品综合久久久久久8888| 欧美另类videos死尸| 亚洲午夜免费视频| 色悠悠亚洲一区二区| 亚洲欧洲精品一区二区三区| 国产一区二区三区免费播放| 精品欧美一区二区久久| 蜜桃在线一区二区三区| 欧美精品日韩综合在线| 天堂精品中文字幕在线| 欧日韩精品视频| 亚洲国产另类精品专区| 色婷婷综合久久久久中文一区二区 | eeuss国产一区二区三区| 久久久亚洲欧洲日产国码αv| 久久激情综合网| 欧美电影精品一区二区| 极品美女销魂一区二区三区| 日韩欧美色电影| 久久综合综合久久综合| 欧美xxxxxxxx| 国产91富婆露脸刺激对白| 亚洲国产精品ⅴa在线观看| 国产成人自拍在线| 国产精品不卡在线观看| av高清久久久| 亚洲已满18点击进入久久| 欧美日韩一级二级三级| 免费观看在线综合| 国产亚洲精品中文字幕| 成人免费看视频| 一区二区三区av电影 | 视频在线观看91| 日韩一区二区电影在线| 九色porny丨国产精品| 久久影院午夜论| 成人av在线播放网址| 一区二区三区国产精华| 欧美疯狂性受xxxxx喷水图片| 日本不卡一区二区三区高清视频| 日韩精品一区二区三区在线播放| 国产激情一区二区三区桃花岛亚洲| 中文字幕一区三区| 欧美日韩国产123区| 久久99国内精品| 中文字幕一区二区在线播放| 欧美伊人精品成人久久综合97| 久久精品国产亚洲一区二区三区| 久久久久国产成人精品亚洲午夜| 99麻豆久久久国产精品免费优播| 亚洲一区二区三区视频在线播放| 日韩精品资源二区在线|