一个 读取基因组文件的问题!
时间:2008-05-10 05:02:42
来源:论坛整理 作者: 编辑:chinaitzhe
{
static const int buffer_size=500000;
unsigned int current=0;
ifstream genome_file(filename);
if(!genome_file)
{
cout < <"Can not open input file" string(filename);
return;
}
else
{
vector <char> buffer;
char c='\0';
do
{
genome_file.get(c);
current;
}
while(c!='\n' && c!='\0');
while(!genome_file.eof())
{
genome_file.seekg(current);
genome_file.read(&buffer.front(),buffer_size);
int real_size=genome_file.gcount();
int loop=buffer_size-12;
for(int j=0;j <=loop;j )
{
unsigned int key=0;
for(short k=0;k <seed_size;k )
{
int tmp=char_to_int(buffer[current j k]);
key=key tmp*pow(4.0,12-k-1);
... ...
}
... ...
}
}
}
}
文件读取 有两个问题:
1. 死循环: while(!genome_file.eof()) 不会结束,执行无数次
假如改成 while(genome) 就只执行一次
2. 读取的东西为空:
genome_file.read(&buffer.front(),buffer_size);
int real_size=genome_file.gcount();
发现 buffer 为空, real_size=0
求助各位高手,俺是新手!
网友回复:所读取的文件是这样的:
>chr12frag
accagcatggcgaaaccccatctctactaaaaatacaaaaattatccagg
cgtggtggcacgtgcctgtaatcccagctactcaggagactgaggcagga
gaatcgcttgaacccaggaggcagaggttgcagtgagccaagattgcacc
agtgcactccagcctgggtgacagagtgagactccacctcaaaaaaaaac
aacctcaagtatcttctccatattgagaatcatcagagtaatcaaacttt
tacataaataggaaacttgtatagggatttgtgcaagaatacgaaggtgg
ttctgattagggaggaaacttgtaggcatgtctttgaaagataacaggta
ttatgtggagtcaggaaagtctggtttcaaattcctgccctaccacttcc
aactgtgataacaaactttaatttttaacctgtcttatgtgaagagtttt
cacctgtaaaacagtggaaattaaaggaccactgttattatcgggtggcg
ttaaatttccccttgaagtagaaatggcatactatgtcaaccaaactcca
gctccgtacttggatatttgttaattgataactcttcaagtttgttcttt
后面省略
网友回复:if ( genome_file.fail() )
判定下,是不是你的文件名写错了
网友回复:跟踪下current的数值
网友回复:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ do { genome_file.get(c); current; } while(c!='\n' && c!='\0'); 貌似你的逻辑错了,你是想先跳过一开始的换行和null吧? 那应该这样 do { genome_file.get(c); if(c=='\n' || c=='\0') current; } while(c=='\n' || c=='\0');
丑陋了点,不管了,你自己实现相同功能吧
网友回复:文件名 经检查 无误。
char c='\0';
do
{
genome_file.get(c);
current;
}
while(c!='\n' && c!='\0');
这段确实 是 跳过 前面一行
而且 也是 正确的, current 也增加了,
但是后面 while(!genome_file.eof())
{
进入 后 没有读到东西,current 无增加,real_size为0 ,
网友回复:关注 接分
网友回复:有问题请先GOOGLE,BAIDU
关键字:一个,读取,基因组,文件,问题,
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面