【发布时间】:2014-03-15 09:11:19
【问题描述】:
我得到了 2 个 P3DB 格式的文本文件(第一个称为“位点”具有蛋白质 ID,第二个称为“蛋白质”具有相应蛋白质 ID 的序列)。我必须使用 Perl 脚本将这两个转换为单个 PhosphoSitePlus 文本文件。
我已经弄清楚如何转换大部分信息。现在我必须在“蛋白质”文件中找到序列和生物体名称。我有来自“站点”文件的某个蛋白质 ID 号(例如,2329)。现在我必须在“蛋白质”文件中搜索这个数字。我找到了这个数字,但在它下面有很多不必要的数据,在某个地方是有机体名称后面的序列。我不确定如何获取序列,因为我不知道它什么时候开始或停止。
有一种模式,所有序列都以制表符空格和“M”开头。但是,最后一个残基可以是任何东西。此外,有机体名称可能紧跟在序列之后(不带空格)或在序列之后的多个空格之后。
我希望能够保存与蛋白质 ID 对应的完整序列,以便能够在该序列中的给定位置(编号)找到单个残基。或者能够找到一个残基而无需先保存序列。
这大概是我想出的。
#!/usr/bin/perl
use strict;
use warnings;
my $filename = $ARGV[0];
my $filename2 = $ARGV[1];
open AFILE, "$filename"; #open file - sites file
open BFILE, "$filename2"; #open second file - proteins file
open NEWFILE, ">PhosphoSitePlus.txt"; #make a new file to save
my @chunks = ();
my @blines = <BFILE>;
my $sequence;
my $res;
my $organism;
my $PID;
my $ACC;
my $Psite;
print NEWFILE "Accession Modified Residue Site Group ID Organism Sequence";
while (defined(my $line = <AFILE>)) { #iterate through lines of the _sites file
my @chunks = split ' ', $line; #split columns into an array
next if ( $chunks[0] =~ /P3DB/ ); #skip the first line (the headers)
$PID = $chunks[0]; #save the Protein ID
$ACC = $chunks[1]; #save the Accession number
$Psite = $chunks[3]; #save the site that is phosphorylated
foreach (0 .. $#blines){ #iterate through p3db_proteins
my @b = split ' ', $blines[$_]; #split columns of lines into array
if ($b[0] =~/^$PID$/){ #if the first column is equal to the protein ID the sequence is under
next if ($blines[$_] !~ /^\s+M\w{20,}$/);
if ( $blines[$_] =~ /^\tM\w{20,}$/ ){ #the start of the sequence(tab and an M, followed by 20 or more characters?)
#save this sequence, or find the residue that is at the position of $Psite
}
}
}
}
以下是蛋白质文件中序列的一些示例(2329 和 2330 是蛋白质 ID,以 M 开头的是序列和生物名称)。
2329 EMBL:AAM13013.1;EMBL:AAM65937.1;EMBL:AAP13391.1;EMBL:AEC10514.1;Ensembl Genomes:AT2G45140;TAIR:At2g45140;TAIR:AT2G45140.1;Ensembl Genomes:AT2G45140.1;TAIR:AT2G45140.1;PIR:H84886;IPI:IPI00531520.1;Refseq:NM_130077.2;Refseq:NP_182039.1;Swissport:Q9SHC8.1;UniParc:UPI00000A0803;Swissport:VAP12_ARATH plant VAP homolog 12 MSNELLTIDPVDLQFPFELKKQISCSLYLGNKTDNYVAFKVKTTNPKKYCVRPNTGVVHPRSSSEVLVTMQAQKEAPADLQCKDKFLLQCVVASPGATPKDVTHEMFSKEAGHRVEETKLRVVYVAPPRPPSPVREGSEEGSSPRASVSDNGNASDFTAAPRFSADRVDAQDNSSEARALVTKLTEEKNSAVQLNNRLQQELDQLRRESKRSKSGGIPFMYVLLVGLIGLILGYIMKRT Arabidopsis thaliana 19376835;19253305;19245862;18463617;17651370;17317660;15308754
2330 EMBL:AEE76598.1;Ensembl Genomes:AT3G22180;TAIR:At3g22180;TAIR:AT3G22180.1;Ensembl Genomes:AT3G22180.1;TAIR:AT3G22180.1;EMBL:BAB03066.1;IPI:IPI00547221.2;Refseq:NM_113115.3;Refseq:NP_188857.1;Swissport:Q9LIE4.2;UniParc:UPI00001634CF;Swissport:ZDHC8_ARATH DHHC-type zinc finger family protein MVRKHGWQLPAHTLQVIAITVFCLLVVAFYAFFAPFVGGRIWEYVLIGVYSPVAILVFVLYVRCTAINPADPRIMSIFDTGVNGDGMVRGLSRNYDETGSQLQASPSVVSRSSTVAGNSSVKGSVEDAQRVESVSRRSCYNPLAVFCYVFVVEDCRKKEGPAEEQGNSEEALFCTLCNCEVRKFSKHCRSCDKCVDCFDHHCKWLNNCVGRKNYVTFVSLMSASLLWLIIEAAVGIAVIVRVFVNKQTMETEIVNRLGNSFSRAPLAAVVGLCTAVAIFACFPLGELLFFHMLLIKKGITTYEYVVAMRAMSEAPDGASVDEEIQNVLYSPTGSATTGFSGGSSLGLPYRGVWCTPPRVFDNQDEVIPHLDPCMVPSTVDPDAPGSEKGTKALKRPVKRNAWKLAKLDPNEAARAAARARASSSVLRPIDNRHLPDNDLSSIGTVSIISSVSTDANVAASKEIRNNDLRSSLSRNSFAPSQGSRDEYDTGSHGMSNLSSPSHVHESVTLAPLPQNPTIVGNRFTATSHHMHSTFDDKVLHRGNDADPLFLFAPATSHLRDVRKTSVVWDPEAGRYVSAPVTTTSEVRNRLLNPSSQTASTQNPRPILPAHDSSSGSSALRDPLPLHQAERRLTYTGDSIFYGGPLINIPTRDTPRSGRGLVRDVQDRLASTVHRDARIRRDSTSNQLPVFAPGGLGANSQTGSNIK Arabidopsis thaliana 17317660
【问题讨论】:
-
请您编辑您的问题以便正确显示数据?您使用了直角括号
>,用于引用散文部分。它将多个空格减少为单个空格,并将行一起运行而不会中断以及使用可变宽度字体,因此很难看到原始数据的样子。您可以通过将块的每一行缩进四个空格来标记一段代码或数据。如果您直接从文件中粘贴文本,选择它,然后按CTRL-K,可能会更简单。这将为您缩进整个块。 -
我已经使用 CTRL-K 编辑了数据。谢谢。
-
@Borodin 感谢
CTRL-K的把戏。
标签: perl