我已經知道恆立這個庫有一段時間了,但是我到現在還沒有嘗試過使用它,主要是因爲直到現在python對我來說足夠快。如何使用kseq.h解析FASTA文件
這裏是鏈接到報頭:用於長度爲序列行http://lh3lh3.users.sourceforge.net/kseq.shtml
當我嘗試使用以下方法來解析的fasta文件,則返回-1。我查看了李的代碼,這似乎主要是爲了FASTQ解析而設計的,但他在他的網頁上說過它也支持FASTA格式。
這裏是我的代碼:
#include <stdio.h>
#include <stdlib.h>
#include "kseq.h"
// STEP 1: declare the type of file handler and the read() function
KSEQ_INIT(FILE*, read)
int main(int argc, char** argv) {
FILE* fp = fopen(argv[1], "r"); // STEP 2: open the file handler
kseq_t *seq = kseq_init(fp); // STEP 3: initialize seq
int l;
while ((l = kseq_read(seq)) >= 0) { // STEP 4: read sequence
printf("name: %s\n", seq->name.s);
if (seq->comment.l) printf("comment: %s\n", seq->comment.s);
printf("seq: %s\n", seq->seq.s);
if (seq->qual.l) printf("qual: %s\n", seq->qual.s);
}
printf("return value: %d\n", l);
kseq_destroy(seq); // STEP 5: destroy seq
fclose(fp);
return (0);
}
我一直在使用與測試的FASTA可從多種來源,包括博德研究所的Hg19 GRCH37 ChrY.fa文件。
任何幫助,將不勝感激。
這似乎已經解決了這個問題的完整代碼。謝謝查理。如果我有更多的代表,我會upvote :) – N1ght
我收到以下錯誤'從kseq_test.1.c包含文件:3:0: kseq_test.1.c:函數'ks_getc': kseq_test.1.c :5:18:警告:隱式聲明函數'read';你的意思是'fread'? [-Wimplicit-function-declaration]' – viz12
@ viz12你應該用可讀的格式發佈一個新的問題,包括你的源代碼,命令行和錯誤信息。 –