#!/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");