#!/usr/bin/perl -w #Markus Westphal 09.01.2006 ###################################################### # Markus Westphal proteomics.pl # ###################################################### use strict; my($pf,$ifrag,$i,$j,$datei,%massen,$mas,%masind,$suche,$record,$ind,$seq,@frag,@fragmas,$treffer); $i = 1; #globale Variabeln füllen $datei = "proteoerg.txt"; $mas = "asmassen.txt"; my @suche = (1009.22,1552.51,976.15,953.11,957.06); $i = 0; #EINLESEN Dateinamen sprot und Massenliste for($j = -1; $j < $#ARGV; $j++) { if($ARGV[$j] =~ /^datei/) { ($pf, $datei) = split("=", $ARGV[$j]); } if($ARGV[$j] =~ /^mas/) { ($pf, $mas) = split("=", $ARGV[$j]); } } #AUSGABEDATEI open(TF, ">$datei") || die ("Die Ausgabedatei kann nicht erstellt werden!\n"); #EINLESEN DER HUMAN RECORDS UND MASSEN open(MA,"<$mas") || die ("$mas kann nicht geoeffnet werden!"); while() { $_ =~ /(\w)\s(.*)\n/; $massen{$1} = $2; } close(MA); open(SW,") { if($_ =~ /_HUMAN/i) { $record = $_; $record =~ /ID\s+(\w*)\s+.*.\nAC.*SQ\s+.*;\n(.*)\n\/\//s; $ind = $1; $seq = $2; $seq =~ s/ //g; $seq =~ s/\n//g; &mascalc($ind,$seq); } } close(SW); #FUNKTIONEN sub mascalc() { my($index,$sequ) = @_; my($letter,$zahl,$zahl2); print "CHECK: $index\n"; for($i = 0,$ifrag = 0;$i < length($sequ);$i++) { $letter = substr($sequ,$i,1); if(!(defined($frag[$ifrag]))){$frag[$ifrag] = 0} $frag[$ifrag] += $massen{$letter}|| print TF "FEHLER! MasseFrag: $frag[$ifrag] + MasseAS: $massen{$letter} Buchstabe: $letter\n"; if($letter =~ /K/ | $letter =~ /R/) { $ifrag++; } } #GRÖßENBEGRENZUNG $j = 0; foreach(@frag) { if($_ < 4000 && $_ > 800) { $fragmas[$j] = sprintf("%.2f", $_); #print TF "$fragmas[$j]\n"; $j++; } } #SUCHEN $treffer = 0; foreach(@suche) { for($i = 0; $i < $#fragmas; $i++) { if($_ =~ /$fragmas[$i]/) { #print TF "TREFFER: $_ <> $fragmas[$i]\n"; $treffer++; } } } if($treffer >= ($#suche-2)) { print TF "ID $index $treffer Treffer\n"; } undef(@fragmas); undef(@frag); } close(TF);