高分求助Perl的问题,生物信息学!

我需要做一个array,目前的数据如下:这个数据每四行属于一个基因,每个基因的四行里,第一行和第三行都是基因名称但是分别以“@”和“+”开头,第二行是基因序列,第四行是Q... 我需要做一个array,目前的数据如下:

这个数据每四行属于一个基因,每个基因的四行里,第一行和第三行都是基因名称但是分别以“@”和“+”开头,第二行是基因序列,第四行是Quals值。我现在有100个基因共400行,我要提取出每个基因的第一行(@开头的名称),第二行(序列)以及第四行(Quals值),并分别做成一个Array。我现在的问题是,用“=~”匹配到“@”开头的那行,并将接下来的三行看作循环1(以后每读到“@”才算作一个新的循环),然后我提取出第一行,剩下的三行分不开,如果我再单独匹配一下第三行,就会跳过第二行……总之很凌乱,求帮助。
展开
 我来答
835087020ccc
2010-10-09 · TA获得超过914个赞
知道小有建树答主
回答量:620
采纳率:50%
帮助的人:278万
展开全部
楼主的问题很简单,既然知道每个基因是四行,那就每个循环连续读入四行即可:
例子如下:
#!/usr/bin/perl
open(IN,"yourfile"); #输入文件
while(my $line1=<IN>){ #读第一行
my $line2=<IN>; #读第二行
<IN>; #第三行忽略
my $line4=<IN>; #读第四行
}
即可
不明白的话qq我 qq见我的名字
ba_du_co
2010-10-06 · TA获得超过937个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:276万
展开全部
#!/usr/bin/perl -w
#tt2
$/="@";
open FILE,"myfile";
while (<FILE>){
chomp;
@Array=(split /\n/,$_)[0,1,3];
print "@Array\n";
}

=================================
myfile:

@1line1line1line
2line2line2line
3line3line3line
4line4line4line
@5line5line5line
6line6line6line
7line7line7line
8line8line8line
@9line9line9line
10line10line10line
11line11line11line
12line12line12line
@13line13line13line
14line14line14line
15line15line15line
16line16line16line

./tt2

1line1line1line 2line2line2line 4line4line4line
5line5line5line 6line6line6line 8line8line8line
9line9line9line 10line10line10line 12line12line12line
13line13line13line 14line14line14line 16line16line16line
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ieonly
2010-10-05 · 超过21用户采纳过TA的回答
知道答主
回答量:118
采纳率:0%
帮助的人:66.8万
展开全部
$/="@";
while(<FILE>){
chomp;
@a=split /\n/,$_;
next if (@a < 4);
#$a[0],$a[1],$a[3]是你想要的东西
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式