[問題]有關資料擷取部分的一個小問題
小弟最近在寫資料讀取與輸出的資料擷取部分,有一些問題想問各位高手該如何解決
原始檔案內容(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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 5 篇):