作者LinusChen (骗自己)
看板Perl
标题Re: [问题]有关资料撷取部分的一个小问题
时间Fri May 2 18:27:06 2008
※ 引述《anysomething (努力一点比在实在!)》之铭言:
: 小弟最近在写资料读取与输出的资料撷取部分,有一些问题想问各位高手该如何解决
: 原始档案内容(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.18.173
※ 编辑: LinusChen 来自: 140.109.18.173 (05/02 18:27)