Het genoom van een levend organisme bestaat uit een opeenvolging van genen. Deze genen coderen voor de eiwitten die het functioneren van de cellen sturen waaruit het organisme is opgebouwd. Genen kunnen voorwaarts of achterwaarts georiënteerd zijn en we veronderstellen hier dat ze elkaar niet overlappen. Tussen twee genen kunnen fragmenten liggen die niet coderen voor eiwitten. Deze niet-coderende fragmenten worden soms ook junk DNA genoemd. Genoomfragmenten kunnen op twee manieren voorgesteld worden: grafisch of symbolisch. Een genoomfragment kan grafisch op de volgende manier voorgesteld worden:

Zo is de string ----==>--<===--<==|===>---- de grafische voorstelling van een genoomfragment met een voorwaarts gen, gevolgd door twee opeenvolgende achterwaartse genen, gevolgd door een voorwaarts gen. Alle genen worden hierbij gescheiden door niet-coderende fragmenten, behalve de laatste twee genen. Omdat deze laatste twee genen een voorbeeld vomen van het geval beschreven in het laatste puntje in bovenstaande lijst, moet er in de grafische voorstelling een verticale streep tussen beide genen geplaatst worden.

Bij de symbolische voorstelling van een genoomfragment wordt elk gen of niet-coderend fragment weergegeven als een code die bestaat uit een lettercode gevolgd door een getal. De lettercode geeft aan om welk type van fragment het gaat (zie onderstaande tabel), en het getal drukt de lengte van het fragment uit. Zo staat V4 voor een voorwaarts gen van lengte vier, A1 voor een achterwaarts gen van lengte één, en N3 voor een niet-coderend fragment van lengte drie. De codes van de opeenvolgende fragmenten uit het genoomfragment worden dan na elkaar geplaatst in één enkele string. Zo kan het genoomfragment dat hierboven grafisch werd weergegeven, symbolisch worden voorgesteld als N4V3N2A4N2A3V4N4.

fragment lettercode voorbeeld grafisch
voorwaarts gen V V4 ===>
achterwaarts gen A A1 <
niet-coderend fragment N N3 ---

 

Opgave

  1. Schrijf een functie code2graf, die een gegeven code die gebruikt wordt in de symbolische voorstelling van een genoomfragment omzet naar de corresponderende grafische voorstelling. Er moet dus een code als argument aan de functie doorgegeven worden, en de functie moet de corresponderende grafische voorstelling als resultaat teruggeven. Zo moet de functie bijvoorbeeld voor de gegeven code A3 de string <== als resultaat teruggeven.

  2. Gebruik de functie code2graf om een functie symb2graf te schrijven. Aan deze functie moet de symbolische voorstelling van een genoomfragment als argument doorgegeven worden. De functie moet dan de corresponderende grafische voorstelling van het genoomfragment als resultaat teruggeven. Zo moet de functie voor het argument N4V3N2A4N2A3V4N4 de waarde ----==>--<===--<==|===>---- teruggeven.

  3. Schrijf een functie graf2symb. Aan deze functie moet de grafische voorstelling van een genoomfragment als argument doorgegeven worden. De functie moet dan de corresponderende symbolische voorstelling van het genoomfragment als resultaat teruggeven. Zo moet de functie voor de argument ----==>--<===--<==|===>---- de waarde N4V3N2A4N2A3V4N4 teruggeven.

Voorbeeld

>>> code2graf('V4')
'===>'
>>> code2graf('A3')
'<=='
>>> symb2graf('N4V3N2A4N2A3V4N4')
'----==>--<===--<==|===>----'
>>> graf2symb('----==>--<===--<==|===>----')
'N4V3N2A4N2A3V4N4'
>>> symb2graf('N4V3N2A4N2A3V4N4')
'----==>--<===--<==|===>----'
>>> graf2symb('----==>--<===--<==|===>----')
'N4V3N2A4N2A3V4N4'
>>> symb2graf('N2V4N2V4N2V4N2')
'--===>--===>--===>--'
>>> graf2symb('--===>--===>--===>--')
'N2V4N2V4N2V4N2'
>>> symb2graf('A1V1A1V1A1V1A1V1')
'<><><><>'
>>> graf2symb('<><><><>')
'A1V1A1V1A1V1A1V1'
>>> symb2graf('A2V2A2V2A2V2A2V2')
'<=|=><=|=><=|=><=|=>'
>>> graf2symb('<=|=><=|=><=|=><=|=>')
'A2V2A2V2A2V2A2V2'
>>> symb2graf('A2V1A1V2A2V1A1V2')
'<=|><|=><=|><|=>'
>>> graf2symb('<=|><|=><=|><|=>')
'A2V1A1V2A2V1A1V2'