作者anysomething (努力一点比在实在!)
看板Perl
标题[问题]有关资料撷取部分的一个小问题
时间Fri May 2 16:36:50 2008
小弟最近在写资料读取与输出的资料撷取部分,有一些问题想问各位高手该如何解决
原始档案内容(Homo.fa)
>ENSP00000332127 pep:novel chromosome:NCBI36:1:245196755:245237946:-1
gene:ENSG00000197472 transcript:ENST00000328519
MGLLAFRDVALEFSPEEWECLDPAQRSLYRDVMLENYRNLISLGEDSFNMQFLFHSLAMS
KPELIICLEARKEPWNVNTEKTARHSVLSSYLTEDILPEQGLQVSFQKVMLRRYERCCLE
KLRLRNDWEIPCEDVLASPLPSAMILSFLRPPQKQKHVKPTEPIQSKTLQWL
>ENSP00000355458 pep:novel chromosome:NCBI36:1:245328029:245332038:-1
gene:ENSG00000188295 transcript:ENST00000366502
DSVAFEDVAVNFTQEEWALLDSSQKNLYREVMQETCRNLASEANGKTRILKITSKNLGKI
....
我要的资料是下面这个形式
>ENSP00000332127
MGLLAFRDVALEFSPEEWECLDPAQRSLYRDVMLENYRNLISLGEDSFNMQFLFHSLAMS
KPELIICLEARKEPWNVNTEKTARHSVLSSYLTEDILPEQGLQVSFQKVMLRRYERCCLE
KLRLRNDWEIPCEDVLASPLPSAMILSFLRPPQKQKHVKPTEPIQSKTLQWL
将上面的结果写进到$openESPN.fas档案中
目前我的程式只能判别到第一行>ENSP00000332127的部分,至於第二行或下一个>的部分
,我就不知道该怎麽去写,因为我要将一个>後面的资料个别输出,请问要如何去判别读
到下一行,或是读到下一个>??
谢谢!!
source code如下:
#!/usr/bin/perl
open(IN, "/home/philippe/Homo_peptides/release-49/Homo.fa");
while(<IN>)
{
chomp;
if($_ =~ /^(>.*?)\s.*?/)
{
$ENSP = $1;
#print"$ENSP", "\n";
}
if ($_ =~ /^>(.*?)\s.*?/)
{
$openESPN = $1;
open(FILE, ">>/home/philippe/CutPeptide/$openESPN.fas");
print FILE $ENSP;
close FILE;
}
}
close IN;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.55.234