Guest User

Untitled

a guest
May 26th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 3.19 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. START:
  4. $Mutationsanzahl=0;
  5. print  "Geben Sie die DNA ein:\n";
  6. chomp($dna = <STDIN>);
  7. $dna=lc($dna);
  8. $dnakopie = $dna;
  9. $dna =~ tr/atgc/xxxx/c;
  10. if ($dna=~ m/x/) {
  11.      print "\a\nFalscher Buchstabe (Kein A,T,G oder C) im Code enthalten.\n\n";
  12.      goto START1;
  13. }
  14. print "\nHier ist die DNA:\n$dna\n\n";
  15. print "Hier ist die 1. Mutation der DNA:\n";
  16. print &mutate;
  17.  
  18. FRAGE:
  19. print "\n\nSollen noch weitere Mutationen simuliert werden?\n[1]\tJa\n[2]\tNein\n\nIhre Wahl: ";
  20. chomp($Antwort=<STDIN>);
  21. if ($Antwort eq 1) {goto WEITEREMUTATIONEN;
  22. } elsif ($Antwort eq 2) {goto MENU;
  23. } else { print "\nFalsche Antwort.";
  24.                goto FRAGE; }
  25.  
  26.  
  27. WEITEREMUTATIONEN:
  28. print "\n\nWie viele weitere Mutationen sollen simuliert werden?\n";
  29.  
  30. chomp($Mutationsanzahl = <STDIN>);
  31.  
  32. $Mutationsanzahl =~ tr/[1234567890]/x/c;
  33. if ($Mutationsanzahl=~ m/x/) {
  34.      print "\aFalsche Eingabe.\n\n";
  35.      goto WEITEREMUTATIONEN;}
  36.  
  37. print "\nHier sind $Mutationsanzahl weitere Mutationen:\n";
  38.  
  39. for ($i; $i<$Mutationsanzahl;) {
  40.       ++$i;
  41.  
  42.     print "0" x (length($Mutationsanzahl)-length($i));
  43.     print "$i. Mutation: ";
  44.     print &mutate;
  45.     print "\n";
  46.     }
  47.  
  48. print "\n\n\n";
  49.  
  50. MENU:
  51. print "Menue\n\n[1]\tStatistiken anzeigen\n[2]\tProgramm neu starten\n[3]\tProgramm beenden\n\nIhre Wahl: ";
  52. chomp($Antwort = <STDIN>);
  53. if ($Antwort eq 1) { goto STATISTIK;
  54. } elsif ($Antwort eq 2) {goto START;
  55.                          print "\n\n";
  56. } elsif ($Antwort eq 3) { print "Vielen Dank!\n\n";
  57.                           exit;
  58. } else {print "Falsche Antwort!\n\n";
  59.         goto MENU;
  60. }
  61.  
  62. sub randomposition {
  63.     $randomposition = int(rand(length($dna)));
  64.     return $randomposition;
  65. }
  66.  
  67. sub randomnucleotide {
  68.     @nucleotide = ('a', 'c', 'g', 't');
  69.     $randomnucleotide = $nucleotide[rand @nucleotide];
  70.     return $randomnucleotide;
  71. }
  72. sub mutate {
  73.  
  74.     $position = &randomposition;
  75.     $randomnucleotide = &randomnucleotide;
  76.     @array = split('',$dna);
  77.     $dna=lc($dna);
  78.     if ($array[$randomposition-1] ne $randomnucleotide) {
  79.          substr($dna,$position,1,uc($randomnucleotide));
  80.          return $dna;
  81.  
  82.     } else {$c = "$dna   keine Mutation";
  83.             return $c;
  84.     }
  85. }
  86.   STATISTIK:
  87.   $Mutationsanzahl = $Mutationsanzahl+1;
  88.   print "\n\nStatistik nach $Mutationsanzahl";
  89.   if ($Mutationsanzahl==1) {print " Mutation:\n\n";
  90.   } else {print " Mutationen:\n\n";
  91.   }
  92.   print "Uebersicht: Urspruengliche Dna zu mutierter Dna\n";
  93.   for ($a=0; $a<length($dnakopie);) {
  94.  
  95.         $b=substr($dnakopie,$a,1);
  96.         $c=substr($dna,$a,1);
  97.         print "$b ";
  98.         if ($b eq $c) {
  99.              print "=" x (length($Mutationsanzahl));
  100.         } else {
  101.              ++$mutierteBasen;
  102.              print "0" x (length($Mutationsanzahl)-length($mutierteBasen));
  103.              print "$mutierteBasen";
  104.         }
  105.         print " $c\n";
  106.         ++$a;
  107.   }
  108.  
  109.  
  110.   $Laenge=length($dna);
  111.   $nichtmutierteBasen=$Laenge-$d;
  112.   $Prozent=sprintf("%.2f",($mutierteBasen/$Laenge*100));
  113.   print "\n\nAnzahl aller Basen: $Laenge\nAnzahl nicht mutierter Basen: $nichtmutierteBasen\nAnzahl mutierter Basen: $mutierteBasen\nProzentuale Veraenderung durch Mutation: $Prozent%\n";
  114.   goto MENU;
Add Comment
Please, Sign In to add comment