Bioinformatiikan ohjelmointikurssi Tentti 24.2.2005



  1. Selitä mitä tekevät seuraavat koodin pätkät (joukossa yksi python-koodikin):

    a) while(<>) {print}

    b) s/^(\S+)\s(\[acgtACGT]+)/$2€1/e;

    c) use strict;
    my @list=(1,2,4,5,6);
    my @list2 = map {if($_%2){$_*2} else {$_}} @list;
    print "@list\n@list2";

    d) my %sample=( org=>"Homo Sapiens",weight=>"45",width=>"45");
    print keys %sample,"\n";
    print values %sample,"\n";
    my %revs=reverse %sample;
    print keys %revs,"\n";
    print values %revs,"\n";

    e) def funktio (x,y,z):
    return x+y-z
    print funktio(2,3,5)
    print funktio(z=2,y=3,x=5)

    f) sub funktio {
    my ($x,$y,$f)=@_;
    return &$f($x,$y);
    }
    my @operations=(sub {my ($a,$b)=@_;$a*$b}, sub {my($a,$b)=@_;$a+$b},
    sub {my ($a,$b)=@_;$a-$b});
    foreach my $oper (@operations) {
    print funktio(2,3,$oper),"\n";
    }

  2. Tee aliohjelma, joka tuottaa DNA-sekvenssin käänteisen komplementin.

  3. Tee ohjelma, joka lukee komentoriviparametrina annettujen PDB-tiedostonimiä vastaavista tiedostoista kolmikirjaimiset proteiinisekvenssit ja tuottaa vastaavat yksikirjaimiset proteiinisekvenssit. Formaatti on kuvattu liitteessä SEQRES.
    Voidaan olettaa, että valmiina on demoissakin usein esiintynyt three2one-aliohjelma, joka muuntaa kolmikirjaimisen aminohappokoodin yksikirjaimiseksi.