perl语言---从参考蛋白库中提取指定序列

需求:

GCF_016772045.1_ARS-UI_Ramb_v2.0_protein.faa(这是sheep的参考蛋白序列库)

PS:绿色部分为蛋白的名称等信息,后面的黑色部分为对应序列

我想把其中的某个蛋白信息连同它的序列提取出来,变成这样:

我想要的蛋白序列

这里介绍两种方法:

第一个方法是不全面的,有不足之处:

一、

1.1 将原始参考库文件中的换行符替换成文本中确定没有的序列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, ";
#匹配的核心部分为.*?这里指匹配>NP_001009191.1和>中间的任意且最小匹配次数的字符串;非贪婪量词
$_=~/>NP_001009191\.1.*?>/;
#$&指默认变量:指匹配到的内容,还有$`和$'分别指匹配内容之前和之后的部分
print $&;
close FH;
接着我们命令行运行:
#sift1.pl指写着这个perl程序,2.txt指将输出的内容写到2.txt这个文件;
 perl sift1.pl > 2.txt

1.2 我们得到一个满足我们一定需求的文件:

2.txt (所有的东西都挤到了一行)

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


1

2

二、

1.1只需要一个函数:

#! C:\other_disk\D_disk_software\perl64 -w
use utf8;
binmode(STDOUT,":utf8");
open(FH, "的每一行粘合在一起
$_ = join("",);
if($_ =~ />NP_001009191\.1.[\d\D]*?>/){
    print $&;
}
close FH;
接着我们命令行运行:
#sift1.pl指写着这个perl程序,2.txt指将输出的内容写到2.txt这个文件;
 perl sift1.pl > 2.txt

直接得到结果:


2.txt

写到最后:

这实际上谈不上是两种方法,只不过是根据需求和掌握perl的程度,提升思维和改变代码的过程。

你可能感兴趣的:(perl语言---从参考蛋白库中提取指定序列)