昨天发现在evidance.txt中 找到spectral counts @jywahaha/ms-maxquant-spectral-counts
但今天,统计的时候,发现部分存在出入,于是开始排查(google找不到相关资料。。。)
补充20201117:
这样统计光谱是没有问题,但是还需要几个过滤条件:
第一个框:oxidation 这里只保留0,其他修饰没有关系(公司给的数据中,似乎也同样是无oxidation的数据)
第二个框:所有的prey只考虑一种情况,如果出现了一条肽段对应多个蛋白的情况,则去掉这种蛋白
最后,就是虽然evidance.txt中给出了某个结果,但是其中的intensity存在“无/NA/0”的情况,则对应的肽段过滤。
目前就这些过滤结果,其中为什么要过滤氧化修饰的肽段,找机会问问相关领域同学。
留两个小脚本。
use warnings;
use strict;
die "perl $0 [evidence.txt] [spec.result]\n" unless @ARGV == 2;
my ($in_f, $out_f) = @ARGV;
die "Overlap In-Output...\n" if $in_f eq $out_f;
open IN, $in_f or die $!;
open OT,">$out_f" or die $!;
my %hash;
chomp(my $h = <IN>);
while(<IN>){
chomp;
my @a = split /\t/,$_;
my $name = $a[9];
my $sample = $a[16];
my $count = $a[45];
if ($a[50] eq ''){next;}
if ($a[7] > 0){next;}
$hash{"$name\t$sample"} += $count;
}
close IN;
my @arr = keys %hash;
foreach my $i (@arr){
print OT "$i\t$hash{$i}\n";
}
close OT;
maxquant 之后从evidence.txt中提取光谱信息
use warnings;
use strict;
die "perl $0 [spec.result] []\n" unless @ARGV == 2;
my ($in_f, $out_f) = @ARGV;
die "Overlap In-Output...\n" if $in_f eq $out_f;
open IN, $in_f or die $!;
open OT,">$out_f" or die $!;
my %sample;
my %prey;
my %total;
while(<IN>){
chomp;
my @a = split /\t/,$_;
if ($a[0] =~ /\;/){next;}
$total{$a[0].$a[1]} += $a[2];
$prey{$a[0]} = 1;
$sample{$a[1]} = 1;
}
my @arr_s = keys %sample;
my @arr_p = keys %prey;
foreach my $m (@arr_s){
foreach my $n (@arr_p){
if (exists $total{$n.$m}){
print OT "$m\t$n\t$total{$n.$m}\n";
}
}
}
close IN;
close OT;
整理并统计结果。
目前就这样了,因为处理的公共数据集,这里就先这样了,之后有时间,把所有数据处理完,与文章比对一下看看是否还存在差异。