perl語(yǔ)言---從參考蛋白庫(kù)中提取指定序列

需求:

GCF_016772045.1_ARS-UI_Ramb_v2.0_protein.faa(這是sheep的參考蛋白序列庫(kù))

PS:綠色部分為蛋白的名稱等信息,后面的黑色部分為對(duì)應(yīng)序列

我想把其中的某個(gè)蛋白信息連同它的序列提取出來(lái),變成這樣:

我想要的蛋白序列

這里介紹兩種方法:

第一個(gè)方法是不全面的,有不足之處:

一、

1.1 將原始參考庫(kù)文件中的換行符替換成文本中確定沒(méi)有的序列xxx,變成一行:

GCF_016772045.1_ARS-UI_Ramb_v2.0_protein1.faa
#! C:\other_disk\D_disk_software\perl64 -w
use utf8;
binmode(STDOUT,":utf8");
open(FH, "<GCF_016772045.1_ARS-UI_Ramb_v2.0_protein1.faa") or die "file cannot open, $!";
$_=<FH>;
#匹配的核心部分為.*?這里指匹配>NP_001009191.1和>中間的任意且最小匹配次數(shù)的字符串;非貪婪量詞
$_=~/>NP_001009191\.1.*?>/;
#$&指默認(rèn)變量:指匹配到的內(nèi)容,還有$`和$'分別指匹配內(nèi)容之前和之后的部分
print $&;
close FH;
接著我們命令行運(yùn)行:
#sift1.pl指寫(xiě)著這個(gè)perl程序,2.txt指將輸出的內(nèi)容寫(xiě)到2.txt這個(gè)文件;
 perl sift1.pl > 2.txt

1.2 我們得到一個(gè)滿足我們一定需求的文件:

2.txt (所有的東西都擠到了一行)

1.3 再將xxx替換成\n換行符,將>替換成空白即可:


1

2

二、

1.1只需要一個(gè)函數(shù):

#! C:\other_disk\D_disk_software\perl64 -w
use utf8;
binmode(STDOUT,":utf8");
open(FH, "<GCF_016772045.1_ARS-UI_Ramb_v2.0_protein.faa") or die "file cannot open, $!";
#將<FH>的每一行粘合在一起
$_ = join("",<FH>);
if($_ =~ />NP_001009191\.1.[\d\D]*?>/){
    print $&;
}
close FH;
接著我們命令行運(yùn)行:
#sift1.pl指寫(xiě)著這個(gè)perl程序,2.txt指將輸出的內(nèi)容寫(xiě)到2.txt這個(gè)文件;
 perl sift1.pl > 2.txt

直接得到結(jié)果:


2.txt

寫(xiě)到最后:

這實(shí)際上談不上是兩種方法,只不過(guò)是根據(jù)需求和掌握perl的程度,提升思維和改變代碼的過(guò)程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容