Thread Übersetztung von DNA zu Protein für dummies (4 answers)
Opened by eraemien at 2010-01-06 22:35

renee
 2010-01-06 23:13
#130183 #130183
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hallo und Willkommen!

Ich fange einfach mal an...

Als erstes wäre es gut, wenn Du Dir mal das Wiki:strict-Pragma anschaust...

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
$DNA = <STDIN>;
chomp $DNA;

unless(open(DNAFILE, $DNA)){
                     print "File not found\n\n";
}

@DNA = <DNAFILE>;

$DNA = join('',@DNA);
$DNA =~ s/\s//g;


Was hier nicht so "schön" ist: Du benutzt $DNA für zwei unterschiedliche Sachen. Ich würde da lieber eine zweite Variable benutzen. Das erleichtert die Wartbarkeit von Programmen...

Dann gibt es mit globalen Filehandles so gewisse Probleme. Siehe auch http://reneeb-perlblog.blogspot.com/2009/09/versch...

Ich würde auch nicht die Fehlermeldung "File not found" ausgeben, sondern $!. Das ist eine Spezialvariable von Perl, in der Fehlermeldungen gespeichert werden. Denn das "open" kann aus mehreren Gründen fehlschlagen (z.B. nicht ausreichende Rechte).

Quote
$i_RNA += $i_DNA; #Da die RNA aus allen U plus den anderen Basen besteht


Ist nicht ganz richtig, da in der RNA das Uracil statt dem Thymin vorkommt. Aber beides zusammen darf nicht vorkommen...

Ich würde die Überprüfung, ob RNA oder DNA eher so aufbauen:

Ist irgendwas in dem String, das *nicht* A,C,G,T oder U ist ($string =~ /[^ACGTU]/), dann ist es weder RNA noch DNA. Genauso wenn es U *und* T enthält ( index( $string, 'U' ) != 1 and index( $string, 'T' ) != 1 ). Wenn der String dann ein U enthält, dann RNA, sonst DNA.

[quote]
Code (perl): (dl )
1
2
3
4
5
#DNA wird in RNA umgeschrieben
$RNA = $DNA;
$RNA =~ s/T/U/ig;[/perl][/quote]

Kürzer, schneller, besser:[code=perl](my $RNA = $DNA) =~ tr/tT/U/;


Quote
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#Initialisierung der CODONS
@Ala = ("GCU","GCC","GCA","GCG");
@Cys = ("UGU","UGC");
@Asp = ("GAU","GAC");
@Glu = ("GAA","GAG");
@Phe = ("UUU","UUC");
@Gly = ("GGU","GGC","GGA","GGG");
@His = ("CAU","CAC");

#...

foreach $trip ( @triplets ) {
 #...
}


Das würde ich als Hash aufbauen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my %hash = (
    GCU => 'A',
    GCC => 'A',
    #... usw
);

my %ergebnis;

for my $trip ( @triplets ) {
    my $key = $hash{$trip};
    $ergebnis{$key}++;
}

OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread Übersetztung von DNA zu Protein für dummies