Onder leiding van Dr. Fred Sanger sequeneerde een groep onderzoekers van de Universiteit van Cambridge in de jaren '70 het mitochondriaal genoom (mtDNA) van een individu met Europese afkomst. De totale lengte van deze sequentie bedroeg 16.568 baseparen (0.0006% van het volledig menselijk genoom) waarin 37 genen waren gecodeerd. Deze sequentie werd voor het eerst gepubliceerd in 1981, en wordt algemeen aangeduid als de Cambridge Reference Sequence (CRS). De CRS wordt algemeen beschouwd als de eerste stap tot het in kaart brengen van het volledig menselijk genoom.

Toen andere onderzoekers ook mitochondriaal begonnen te sequeneren, doken enkele opvallende discrepanties op. De origineel gepubliceerde sequentie bleek niet minder dan 11 fouten te bevatten, waaronder één extra basepaar op positie 3107 en enkele foutieve bepalingen van individuele baseparen. Enkele van deze fouten waren het resultaat van contaminaties met celmateriaal van runderachtigen en HeLa cellen (onsterfelijke cellijnen die vaak worden gebruikt in wetenschappelijk onderzoek). Daarom publiceerde Richard Andrews in 1999 een gecorrigeerde versie van de referentiesequentie van het menselijk mtDNA, die wordt aangeduid als de revised CRS of kortweg rCRS.

Wanneer mitchondriaal DNA wordt geanalyseerd voor genealogische studies, worden de resultaten vaak gerapporteerd als waargenomen verschillen tegenover de rCRS. Deze notatievorm wordt geïllustreerd in onderstaand voorbeeld, waarbij gebruik wordt gemaakt van een fictieve referentiesequentie.

referentie: GCTGTCCAGATA

sequentie: GCTCTCTAGAGA $$\longrightarrow$$ 4C,7T,11G

In deze notatie geeft 4C aan dat de sequentie op de vierde positie verschilt van de referentiesequentie, in die zin dat daar de base C staat (waar op de overeenkomstige positie in de referentiesequentie de base G staat). Op precies dezelfde manier geeft 7T aan dat de sequentie op de zevende positie verschilt van de referentiesequentie omdat daar de base T staat (waar op de overeenkomstige positie in de referentiesequentie de base C staat). Waargenomen verschillen ten overstaan van de referentiesequentie worden van elkaar gescheiden door een komma. Indien de sequentie op geen enkele positie verschilt van de referentiesequentie, dan wordt dit genoteerd als een lege string.

Opgave

  1. Schrijf een functie seq2diff, die voor een gegeven sequentie seq en een gegeven referentiesequentie refseq de waargenomen verschillen tegenover de referentiesequentie teruggeeft in het formaat dat hierboven werd toegelicht. Beide sequenties moeten als parameter aan de functie doorgegeven worden.

  2. Schrijf een functie diff2seq, die voor een reeks waargenomen verschillen diff en een gegeven referentiesequentie refseq de originele sequentie als resultaat teruggeeft. Een string met de waargenomen verschillen en de referentiesequentie moeten als parameter aan de functie doorgegeven worden.

Voorbeeld

>>> seq2diff(seq='GCTCTCTAGAGA', refseq='GCTGTCCAGATA')
'4C,7T,11G'
>>> diff2seq(diff='4C,7T,11G', refseq='GCTGTCCAGATA')
'GCTCTCTAGAGA'