Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- START:
- $Mutationsanzahl=0;
- print "Geben Sie die DNA ein:\n";
- chomp($dna = <STDIN>);
- $dna=lc($dna);
- $dnakopie = $dna;
- $dna =~ tr/atgc/xxxx/c;
- if ($dna=~ m/x/) {
- print "\a\nFalscher Buchstabe (Kein A,T,G oder C) im Code enthalten.\n\n";
- goto START1;
- }
- print "\nHier ist die DNA:\n$dna\n\n";
- print "Hier ist die 1. Mutation der DNA:\n";
- print &mutate;
- FRAGE:
- print "\n\nSollen noch weitere Mutationen simuliert werden?\n[1]\tJa\n[2]\tNein\n\nIhre Wahl: ";
- chomp($Antwort=<STDIN>);
- if ($Antwort eq 1) {goto WEITEREMUTATIONEN;
- } elsif ($Antwort eq 2) {goto MENU;
- } else { print "\nFalsche Antwort.";
- goto FRAGE; }
- WEITEREMUTATIONEN:
- print "\n\nWie viele weitere Mutationen sollen simuliert werden?\n";
- chomp($Mutationsanzahl = <STDIN>);
- $Mutationsanzahl =~ tr/[1234567890]/x/c;
- if ($Mutationsanzahl=~ m/x/) {
- print "\aFalsche Eingabe.\n\n";
- goto WEITEREMUTATIONEN;}
- print "\nHier sind $Mutationsanzahl weitere Mutationen:\n";
- for ($i; $i<$Mutationsanzahl;) {
- ++$i;
- print "0" x (length($Mutationsanzahl)-length($i));
- print "$i. Mutation: ";
- print &mutate;
- print "\n";
- }
- print "\n\n\n";
- MENU:
- print "Menue\n\n[1]\tStatistiken anzeigen\n[2]\tProgramm neu starten\n[3]\tProgramm beenden\n\nIhre Wahl: ";
- chomp($Antwort = <STDIN>);
- if ($Antwort eq 1) { goto STATISTIK;
- } elsif ($Antwort eq 2) {goto START;
- print "\n\n";
- } elsif ($Antwort eq 3) { print "Vielen Dank!\n\n";
- exit;
- } else {print "Falsche Antwort!\n\n";
- goto MENU;
- }
- sub randomposition {
- $randomposition = int(rand(length($dna)));
- return $randomposition;
- }
- sub randomnucleotide {
- @nucleotide = ('a', 'c', 'g', 't');
- $randomnucleotide = $nucleotide[rand @nucleotide];
- return $randomnucleotide;
- }
- sub mutate {
- $position = &randomposition;
- $randomnucleotide = &randomnucleotide;
- @array = split('',$dna);
- $dna=lc($dna);
- if ($array[$randomposition-1] ne $randomnucleotide) {
- substr($dna,$position,1,uc($randomnucleotide));
- return $dna;
- } else {$c = "$dna keine Mutation";
- return $c;
- }
- }
- STATISTIK:
- $Mutationsanzahl = $Mutationsanzahl+1;
- print "\n\nStatistik nach $Mutationsanzahl";
- if ($Mutationsanzahl==1) {print " Mutation:\n\n";
- } else {print " Mutationen:\n\n";
- }
- print "Uebersicht: Urspruengliche Dna zu mutierter Dna\n";
- for ($a=0; $a<length($dnakopie);) {
- $b=substr($dnakopie,$a,1);
- $c=substr($dna,$a,1);
- print "$b ";
- if ($b eq $c) {
- print "=" x (length($Mutationsanzahl));
- } else {
- ++$mutierteBasen;
- print "0" x (length($Mutationsanzahl)-length($mutierteBasen));
- print "$mutierteBasen";
- }
- print " $c\n";
- ++$a;
- }
- $Laenge=length($dna);
- $nichtmutierteBasen=$Laenge-$d;
- $Prozent=sprintf("%.2f",($mutierteBasen/$Laenge*100));
- print "\n\nAnzahl aller Basen: $Laenge\nAnzahl nicht mutierter Basen: $nichtmutierteBasen\nAnzahl mutierter Basen: $mutierteBasen\nProzentuale Veraenderung durch Mutation: $Prozent%\n";
- goto MENU;
Add Comment
Please, Sign In to add comment