#!/usr/bin/perl -w #Markus Westphal 09.01.2006 ###################################################### # Markus Westphal sawmblocks.pl # ###################################################### use strict; my($pf,$j,$i,$datei,@alles,%links,$ind,%sequ,$sequ,$id,$aberg,%sort,@hilf,$ac,%idac,$pu,$erw); $i = 1; #GLOBALEN VARIABELN $datei = "swissblocks.txt"; #Datei mit den Einträgen aus Blocks $i = 0; $pu = 0; #EINLESEN Dateinamen der Swissprot-Einträge FASTA for($j = -1; $j < $#ARGV; $j++) { if($ARGV[$j] =~ /^datei/) { ($pf, $datei) = split("=", $ARGV[$j]); } } #AUSGABEDATEI open(TF, ">ata_sw.txt") || die ("Die Ausgabedatei kann nicht erstellt werden!\n"); #EINLESEDATEI open(DT,"<$datei") || die ("$datei kann nicht geoeffnet werden!"); $/ = "\n//\n"; while(
) { open(VV, ">varidat.txt") || die ("Die variable Wechseldatei kann nicht erstellt werden!\n"); print VV $_; close(VV); print "$pu\n"; my $water = qx(water -asequence varidat.txt -bsequence swissblocks.txt -gapopen 10 -gapextend 0.5 -outfile stdout); print TF $water; $_ =~ /ID\s+(\w+).*AC\s+(\w+);.*SQ\s+.*;\n(.*)\/\//s; $id = $1; $ac = $2; $sequ = $3; $sequ =~ s/ //g; $sequ =~ s/\n//g; $ac =~ s/\n//g; $sequ{$id} = $sequ; $idac{$id} = $ac; $pu++; } close(DT); close(TF); #AUSWERTUNG print "START DER AUSWERTUNG...\n"; #AUSGABEDATEI 2 open(TF2, ">percid4blast.txt") || die ("Die Ausgabedatei 2 kann nicht erstellt werden!\n"); #EINLESEN DER SW-ERGEBNISSE open(SWA,") { #print TF2 "$_"."XXXXXXXXXXXXXXXXX\n"; if($_ =~ /^# Aligned_sequences:/) { $_ =~ /# 1: (\w+)\n# 2: (\w+).*# Length:\s+(\d+)\n#\s+Identity:\s+\d+\/\d+ \((\d+.\d+)%\)/s; if(!($1 eq $2)) { $aberg = 31*($3**(-0.124)) + 3 * 18.2 * ($3**(-0.305)); $aberg = $4-$aberg; $erw = $4; $ind = $2; if(!(defined $sort{$erw})) { $sort{$erw} = ">$ind -$1 $idac{$1}- $3 $4 AS:$aberg\n$sequ{$ind}\n"; } else { while(defined($sort{$erw})) { $erw = $erw + 0.0000001; } $sort{$erw} = ">$ind -$1 $idac{$1}- $3 $4 AS:$aberg\n$sequ{$ind}\n"; } } } } #SORTIEREN NACH PERCID UND AUSGEBEN @hilf = sort {$a<=>$b} keys %sort; foreach(@hilf) { if($_ < 34.8) #nimmt nur Einträge bis 51,8 % Identität { print TF2 "$sort{$_}"; } } close(SWA); close(TF2); print "AUSWERTUNG ABGESCHLOSSEN!\npercid4blast.txt wird geoeffnet"; system("percid4blast.txt");