Re: [問題]有關資料擷取部分的一個小問題
※ 引述《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)
討論串 (同標題文章)