##### #Defintion der Variablen ###### my %Optionen = ( 'htmlAusgabe' => "C:\Perl\Ergebnis.html", 'pdbaaZiel' => "pdbaa", 'SwissprotQuelle' => "uniprotsprot_clean.fasta", ); my $ergebnis = GetOptions(\%Optionen, 'SwissprotQuelle=s', 'pdbaa=s', 'htmlAusgabe=s'); # oeffnen der QuellenDatenbank open (SEQUENZ, $Optionen->{'SwissprotQuelle'}) or die "Die Datei $Optionen->{'SwissprotQuelle'} kann nicht geoeffnet werden."; # Define Variables my $parseparameter = { 'accessionNr' => 0, 'laenge_query' => 0, 'laenge_match' => 0, 'laenge_alignment' => 0, 'seq_query' => '', 'seq_match' => '', # in % 'identität' => '', # in % 'similarity' => 0, 'e_value' => 0, 'raw_score' => 0, 'hits' => '', 'match' => '', #link zu PDB 'query' => '', }; #Link zu Swissprot my $Sequenze = { 'anno' => '', 'sequenze' => ''} #Schleife um nach Human Sequenzes zu selektieren #mit Merkparametern um Übersicht zu waren und schreiben in Datei while () { $line = $_; chomp($line); if ($line =~ /^(>\w*)\|(\w+HUMAN)/) { if (defined $Sequenze->{'sequenze'} && defined($Sequenze->{'anno'}))&& { if (length($Sequenze->{'sequenze'}) < 150){ &printblast(); } $Sequenze->{'anno'} = $line; # merkt sich den Identifier $parseparameter->{'accessionNr'} = $1; $Sequenze->{'sequenze'} = " "; #speichert } else { $Sequenze->{'sequenze'} .= $line; #verbindet die Sequenzen } } # we still need to print the last sequenc &printblast(); # close Input File close SEQUENZ; ##### #blasten ###### sub blasten { system( "blastall -i temp.fasta -d $Optionen{'pdbaaZiel'} -p blastp -o C:\Perl\blast\Sequenze" .$parseparameter->{'acc'} .'.blastp'; ); #blastall, inputfile auswählen, ZielDB angeben, und Outputfiles angeben &parseparameter(); }; } ##### #sub für die Analyse der Sequenzen + herausselektieren der $parseparameter ###### sub Analyse Sequenzen { # Anwendung BioPerl my $Seq_in = Bio::SearchIO->new (-format => 'blast', -file => 'C:\Perl\blast\Sequenze '.$parseparameter->{'accessionNr'} .'.blastp'); my $ergebnis = $Seq_in->next_ergebnis; ## #Links ## #Pdbaa my $AccessionNrQuery = $ergebnis->query_accession; $parseparameter->{'laenge_query'} = $ergebnis->query_length; $parseparameter->{'match'} = "http://www.rcsb.org/pdb/explore/explore.do?structureId=" .$hit->accession; # swissprot $parseparameter->{'query'} = "http://www.expasy.org/uniprot/$parseparameter->{'accessionNr'}"; #### #Restliche Infos ### my $AccessionNrHit = $ergebnis->hit_accession; my $hit = $ergebnis->next_hit; if (defined($hit)){ $parseparameter->{'hits'} = 'C:\Perl\blast'.$parseparameter->{'accessionNr'} .'.blastp'; $parseparameter->{'raw_score'} = $hit->raw_score; $parseparameter->{'length_match'} = $hit->length; my $hsp = $hit->next_hsp; $parseparameter->{'seq_query'} = $hsp->query_string; $parseparameter->{'seq_match'} = $hsp->hit_string; $parseparameter->{'identitaet'}= substr($hsp->percent_identity, 0, 5); $parseparameter->{'e_value'} = $hsp->evalue; $parseparameter->{'laenge_alignment'} =$hsp->length('total'); } ##### #Ausgabe in ein .fasta für die sub blasten ###### sub printblast { open (FH, ">temp.fasta"); #open File mit FileHandler print (FH $parseparameter->{'accessionNr'} . "\n" . $Sequenze->{'sequenze'} ); close FH; &blasten(); }