De genetische code beschrijft hoe de informatie in het genetisch materiaal (DNA1 of RNA2) van leven de cellen wordt gelezen om een eiwit3 te vormen. De genetische code werd ontrafeld in de jaren 1960, enkele jaren na de ontdekking van de DNA-helix. Het verklaart hoe de vierletterige code van het DNA (voorgesteld door de letters A, C, G en T) kan vertaald4 worden naar de twintig verschillende aminozuren5 (voorgesteld door 20 verschillende letters), de bouwstenen van eiwitten. Op enkele uitzonderingen na is de genetische code universeel geldig bij alle vormen van leven.

Stukken DNA die coderen voor eiwitten (genen6), worden in levende cellen overgeschreven naar een enkelstrengs RNA-molecuul. Dit molecuul — het messenger-RNA7 — is in wezen een kopie van het DNA en draagt instructies voor de aanmaak van een eiwit. In het ribosoom8 worden aminozuren aan elkaar gekoppeld in een volgorde die bepaald wordt door de nucleotidevolgorde in het mRNA. Het ribosoom leest daarbij steeds drie nucleotiden af van het mRNA, elk overeenkomend met een specifiek aminozuur. Dit proces wordt translatie9 genoemd.

De drie opeenvolgende nucleotiden, noemt men een codon10. Codons specificeren welke aminozuren er aan de eiwitketen toegevoegd worden, en daarnaast bepalen ze de start- en stopsignalen van het translatieproces. Meestal doelt men met de term codon op de nucleotiden zoals die voorkomen in messenger-RNA: adenine (A), cytosine (C), guanine (G) en uracil (U). Het codon ACU correspondeert bijvoorbeeld met het aminozuur threonine11, en CGG met arginine12. De genetische code kan samengevat worden in een simpele codontabel van 64 codes.

RNA codons
Een reeks codons13 in het messenger-RNA14 (mRNA). Elk codon bestaat uit drie nucleotiden, en de volgorde daarvan bepaalt de volgorde van aminozuren15, de bouwstenen van een eiwit16. In het mRNA worden de nucleotiden aangegeven met de letters A, U, G en C.
standaard genetische code
De standaard genetische code.

Lange tijd werd aangenomen dat de genetische code universeel is — een gegeven codon zou in elk organisme voor hetzelfde aminozuur coderen. Deze aanname is grotendeels waar: de genetische code is van toepassing bij alle drie de domeinen17 van het leven. Dit feit levert een belangrijk argument voor de gemeenschappelijke afstamming18 van alle levensvormen. Er zijn echter een paar uitzonderingen — variaties — op de genetische code ontdekt. De eencellige schimmel Candida albicans19 vertaalt het codon CUG bijvoorbeeld naar serine20, terwijl bijna alle andere organismen dit codon naar leucine21 vertalen. Bij sommige ciliaten22 (eencellige eukaryoten) werken de drie conventionele stopcodons anders — deze coderen namelijk gewoon voor aminozuren, en het eind van de translatie wordt gesignaleerd door het 3'-eind van het mRNA.

In mitochondriën23 van uiteenlopende soorten geldt ook een sterk variërende genetische code. In de mitochondriën van zoogdieren wordt het codon AUA bijvoorbeeld vertaald naar methionine24, in plaats van AUG. Mitochondriën hebben hun eigen genetisch materiaal en coderen hun eigen translatiemachinerie. Dergelijke variaties laten zien dat de genetische code niet zonder meer onwrikbaar vastgelegd is, maar evolutionaire veranderingen kan ondergaan.

Opgave

Het DNA-alfabet bestaat uit vier verschillende nucleotiden die voorgesteld worden door de letters A, C, G en T. Een DNA-sequentie (str) bestaat uit een reeks letters uit het DNA-alfabet. Het RNA-alfabet bestaat uit vier verschillende nucleotiden die voorgesteld worden door de letters A, C, G en U. Een RNA-sequentie (str) bestaat uit een reeks letters uit het RNA-alfabet. Bij de omzetting van DNA naar RNA, wordt thymine (T) omgezet naar uracil (U), waardoor de letter T in het DNA-alfabet een synoniem is voor de letter U in het RNA-alfabet. Een codon (str) is een sequentie (DNA of RNA) van lengte 3.

Het eiwit-alfabet bestaat uit 20 verschillende aminozuren (voorgesteld door 20 verschillende letters) en een stopcodon (voorgesteld door een sterretje: *). Een eiwitsequentie (str) bestaat uit een reeks karakters uit het eiwit-alfabet.

Een DNA- of RNA-sequentie wordt vertaald naar een eiwitsequentie door elk codon van drie opeenvolgende letters om te zetten naar het corresponderende aminozuur of stopcodon. Als de lengte van de DNA- of RNA-sequentie geen veelvoud is van drie, dan wordt de laatste letter of worden de laatste twee letters van de sequentie genegeerd bij de vertaling. De genetische code die gebruikt wordt voor die omzetting wordt vastgelegd in een vertaaltabel: een tekstbestand dat bestaat uit 64 regels. Elke regel bevat een uniek codon en het corresponderende aminozuur, van elkaar gescheiden door een spatie. Voor de codons gebruikt de vertaaltabel ofwel het DNA-alfabet (met T voor thymine) of het RNA-alfabet (met U voor uracil).

Definieer een klasse GenetischeCode waarmee genetische codes kunnen voorgesteld worden. Bij het aanmaken van een genetische code (GenetischeCode) moet de locatie (str) van de vertaaltabel van de genetische code doorgegeven worden. Op een genetische code $$\mathcal{C}$$ (GenetischeCode) moet je minstens de volgende methoden kunnen aanroepen:

Voorbeeld

Bij onderstaand voorbeeld gaan we ervan uit dat het tekstbestand standard_code.txt25 zich in de huidige directory bevindt. Dit bestand bevat de vertaaltabel van de standaard genetische code26, waarbij de specificatie van de codons het DNA-alfabet gebruikt.

>>> code = GenetischeCode('standard_code.txt27')

>>> code.aminozuur('AGT')
'S'
>>> code.aminozuur('cga')
'R'
>>> code.aminozuur('UCU')
'S'
>>> code.aminozuur('ABC')
Traceback (most recent call last):
AssertionError: ongeldig codon
>>> code.aminozuur('aagc')
Traceback (most recent call last):
AssertionError: ongeldig codon

>>> code.eiwit('ATGCTGATGATGGGCTATTATCGAT')
'MLMMGYYR'
>>> code.eiwit('uauccuaguguc')
'YPSV'
>>> code.eiwit('AAGTCGTAGCTACGXXXXGAGAAGGAT')
Traceback (most recent call last):
AssertionError: ongeldige sequentie