高分求助Perl的问题,生物信息学!
我需要做一个array,目前的数据如下:这个数据每四行属于一个基因,每个基因的四行里,第一行和第三行都是基因名称但是分别以“@”和“+”开头,第二行是基因序列,第四行是Q...
我需要做一个array,目前的数据如下:
这个数据每四行属于一个基因,每个基因的四行里,第一行和第三行都是基因名称但是分别以“@”和“+”开头,第二行是基因序列,第四行是Quals值。我现在有100个基因共400行,我要提取出每个基因的第一行(@开头的名称),第二行(序列)以及第四行(Quals值),并分别做成一个Array。我现在的问题是,用“=~”匹配到“@”开头的那行,并将接下来的三行看作循环1(以后每读到“@”才算作一个新的循环),然后我提取出第一行,剩下的三行分不开,如果我再单独匹配一下第三行,就会跳过第二行……总之很凌乱,求帮助。 展开
这个数据每四行属于一个基因,每个基因的四行里,第一行和第三行都是基因名称但是分别以“@”和“+”开头,第二行是基因序列,第四行是Quals值。我现在有100个基因共400行,我要提取出每个基因的第一行(@开头的名称),第二行(序列)以及第四行(Quals值),并分别做成一个Array。我现在的问题是,用“=~”匹配到“@”开头的那行,并将接下来的三行看作循环1(以后每读到“@”才算作一个新的循环),然后我提取出第一行,剩下的三行分不开,如果我再单独匹配一下第三行,就会跳过第二行……总之很凌乱,求帮助。 展开
3个回答
展开全部
#!/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
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$/="@";
while(<FILE>){
chomp;
@a=split /\n/,$_;
next if (@a < 4);
#$a[0],$a[1],$a[3]是你想要的东西
}
while(<FILE>){
chomp;
@a=split /\n/,$_;
next if (@a < 4);
#$a[0],$a[1],$a[3]是你想要的东西
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询