De eerste stap bij het vinden van eiwit-coderende genen in DNA, is het vinden van Open Reading Frames, ofwel openleesramen. Een Reading Frame of leesraam is een startpunt vanaf waar je het DNA in codons, 3 letters, opdeelt. Je kan beginnen van de 1e, 2e of 3e letter in de voorwaartse DNA-streng of de 1e, 2e of 3e letter op de complementaire DNA-streng. Er zijn dus 6 leesramen in totaal. Een Open Reading Frame is een startcodon gevolgd door een aantal codons en dan een stopcodon in hetzelfde leesraam. Kijken we in een stuk DNA, dan vinden we meestal meerdere overlappende ORFs in de verschillende Reading Frames, het langste ORF is meestal een valide eiwit-coderend gen, terwijl de kortere overlappende ORFs niet voor eiwitten coderen. Er zijn nog bijkomende signalen nodig om te valideren dat de langste ORF inderdaad voor een eiwit codeert, zoals een RNA polymerase bindingsplaats en een ribosoombindingsplaats. In deze opdracht kijken we alleen naar langste ORFs.
Opdracht
Schrijf een functie lees_dna die een bestand inleest waar een DNA sequentie in zit. De DNA streng wordt in een string-variabele gezet, zonder alle witruimtes en nieuwe regels die eventueel in het bestand staan. De input voor de functie is de bestandsnaam, de output de string variabele. Je kan ervanuit gaan dat het bestand zich in de huidige directory bevindt.
Schrijf een functie reverse_complement die een string variabele als input heeft en de complementaire streng in de omgekeerde volgorde als output geeft.
Schrijf een functie vind_orfs die een lijst genereert van alle Open Reading Frames in een stuk DNA de twee richtingen. Ieder element uit de lijst is een string variable met de DNA sequentie. Binnen deze functie roep je de functie reverse_complement aan. We vinden alleen de ORFs die beginnen met start-codon ATG en een van de drie stop-codons TAG, TAA of TGA.
Schrijf een functie langste_orf die een lijst als input heeft, zoals gegenereerd met vind_orfs en de langst orf als output heeft.
Schrijf een functie transleer_orf die een orf omzet naar aminozuur-sequentie, je can daarvoor de tabel codon_tabel.txt gebruiken. Je kan ervanuit gaan dat het bestand codon_tabel.txt zich in de huidige directory bevindt.