In februari 2013 werden de broers Elwin en Yohan in Frankrijk gearresteerd voor een reeks van zes verkrachtingen. Beide ontkennen ze echter alle beschuldigingen. Uitmaken wie van de twee schuldig is, is echter niet zo eenvoudig — het zijn immers identieke tweelingen1, waardoor de genetische verschillen tussen de twee miniem zijn. Politiechef Emmanual Kiehl van Marseille zei hierover: "Er zullen waarschijnlijk duizenden verschillende testen nodig zijn voor we kunnen beslissen wie van de twee de dader is."

Deze zaak is de zoveelste in een reeks juridische verwikkelingen waarbij DNA-materiaal wordt aangewend als bewijslast tegen identieke tweelingen. Tijdens een juwelenroof in Duitsland in januari 2009 lieten de dieven een druppel zweet achter op een latex handschoen. In een databank van misdadigers werden twee hits gevonden — identieke tweelingen Hassan en Abbas O. (de Duitse wet vereist geheimhouding van de familienaam van verdachten). Beide broers hebben een strafblad voor diefstal en fraude, maar toch werden ze alletwee vrijgelaten2. De rechtbank oordeelde immers: "Uit de bewijslast die voorhanden is, kunnen we afleiden dat ten minste één van de twee broers bij de misdaad betrokken was, maar het was niet mogelijk om uit te maken wie van de twee."

Later dat jaar ontsnapte de identieke tweeling Sathis Raj en Sabarish Raj in Maleisië aan dood door ophanging3, toen een rechter oordeelde dat het onmogelijk was om te bepalen wie van de twee schuldig was aan drugssmokkel. "Hoewel één van de twee zou moeten opgeroepen worden om zich te komen verdedigen, kan ik het niet maken om de verkeerde op te roepen", oordeelde de rechter. "Ik kan het ook niet maken om de verkeerde persoon naar de galg te sturen."

In 2003 had een vrouw uit Missouri binnen het tijdsbestek van enkele uren afzonderlijk sex met de identieke tweeling Raymon and Richard Miller. Toen ze zwanger bleek te zijn, ontkenden beide mannen de vader te zijn van het kind4. In Missouri wordt een man enkel als de wettelijke vader erkend als een vaderschapstest een kans aangeeft van 98 procent of meer op een DNA-match. In dit geval toonde die voor de Miller-tweeling echter tweemaal een kans van meer dan 99.9 procent.

"Bij identieke tweelingen zou je zelfs geen verschil vinden als je hun volledige genoom zou sequeneren", vertelde de forensische wetenschapper Bob Gaensslen toentertijd aan ABC News. Recenter onderzoek toont echter aan dat dit niet het geval is5, maar het uitpluizen van de verschillen kan wel een dure aangelegenheid zijn — in de zaak uit Marseille werd aan de politie verteld dat een dergelijke test €996,000 zou kosten.

En de reeks gaat verder. In Augustus 2013 probeerden de Briste autoriteiten uit te maken hoe ze iemand zouden kunnen vervolgen voor een verkrachting waarbij DNA-materiaal zowel Mohammed als Aftab Asghar had geidentificeerd6. "Het is een ongewone zaak", zei officier van justitie Sandra Beck. "Het zijn identieke tweelingen. De beschuldiging is er één van verkrachting, maar er is bijkomend onderzoek nodig."

Opgave

De grootste verschillen in het genoom van identieke tweelingen zijn toe te schrijven aan copy-number variaties (CNV). Bij deze structurele variaties wordt het DNA van een genoom gewijzigd zodat cellen een abnormale of — voor bepaalde genen — een normale variatie hebben in het aantal herhalingen van één of meer DNA-fragmenten. CNVs corresponderen met relatief grote fragmenten van het genoom die verwijderd (deletie) of gedupliceerd (insertie) werden op bepaalde chromosomen. Zo kan een chromosoom dat normaal de fragmenten A-B-C-D heeft, in plaats daarvan de fragmenten A-B-C-C-C-D (een duplicatie van C) of A-B-D (een deletie van C) hebben.

Om CNVs op te sporen, veronderstellen we dat een DNA-sequentie is opgebouwd uit een prefix, gevolgd door een infix en een suffix, waarbij de infix bestaat uit $$n \in \mathbb{N}$$ herhalingen van een DNA-fragment dat we de kopie noemen.

CNV structuur

In deze opgave stellen we DNA-sequenties voor als strings die enkel bestaan uit de hoofdletters A, C, G en T. Veronderstel nu dat we beschikken over twee DNA-sequenties die enkel verschillen in het aantal herhalingen van de kopie. Dan kunnen we op basis van een vergelijking tussen de twee sequenties, de verschillende onderdelen identificeren waaruit ze zijn opgebouwd. Hiervoor gaan we als volgt te werk:

Voorbeeld

>>> repliceer('GATC')
'GATC'
>>> repliceer('GATC', aantal=4)
'GATCGATCGATCGATC'
>>> repliceer('GATC', aantal=2, prefix='TAGCC')
'TAGCCGATCGATC'
>>> repliceer(kopie='GATC', aantal=3, suffix='AAGCTC')
'GATCGATCGATCAAGCTC'
>>> repliceer(kopie='GATC', aantal=3, prefix='TAGCC', suffix='AAGCTC')
'TAGCCGATCGATCGATCAAGCTC'
>>> repliceer(kopie='GATC', aantal=5, suffix='AAGCTC', prefix='TAGCC')
'TAGCCGATCGATCGATCGATCGATCAAGCTC'

>>> kopie_aantal('CTCTCTCTCTCTCTCTCTCTCTCT')  # repliceer(kopie='CT', aantal=12)
('CT', 12)
>>> kopie_aantal('GATCGATCGATCGATC')          # repliceer(kopie='GATC', aantal=4)
('GATC', 4)
>>> kopie_aantal(repliceer('GATCGATC', aantal=2))
('GATC', 4)
>>> kopie_aantal('GATCGATCGATCGATCG')         # repliceer(kopie='GATC', aantal=4) + 'G'
('GATCGATCGATCGATCG', 1)

>>> seq1 = 'TAGCCGATCGATCGATCAAGCTC'          # repliceer(kopie='GATC', aantal=3, prefix='TAGCC', suffix='AAGCTC')
>>> seq2 = 'TAGCCGATCGATCGATCGATCGATCAAGCTC'  # repliceer(kopie='GATC', aantal=5, suffix='AAGCTC', prefix='TAGCC')
>>> LGU(seq1, seq2)
'TAGCCGATCGATCGATC'
>>> LGU(seq1, seq2, suffix=True)
'CGATCGATCGATCAAGCTC'
>>> LGU(seq1, seq1)
'TAGCCGATCGATCGATCAAGCTC'

>>> seq1 = 'TAGCCGATCGATCGATCAAGCTC'          # repliceer(kopie='GATC', aantal=3, prefix='TAGCC', suffix='AAGCTC')
>>> seq2 = 'TAGCCGATCGATCGATCGATCGATCAAGCTC'  # repliceer(kopie='GATC', aantal=5, suffix='AAGCTC', prefix='TAGCC')
>>> CNV(seq1, seq2)
('GATC', 3, 5)
>>> CNV(seq2, seq1)
('GATC', 5, 3)
>>> CNV(seq1, seq1)
Traceback (most recent call last):
AssertionError: geen CNV gevonden
>>> seq3 = 'TAGCGATCGATCGATCGATCGATCAAGCTC'   # repliceer(kopie='GATC', aantal=5, prefix='TAGC', suffix='AAGCTC')
>>> CNV(seq1, seq3)
('GATCGAT', 0, 1)
>>> seq4 = 'TAGCCGATCGATCGATCGATCGATCAGCTC'   # repliceer(kopie='GATC', aantal=5, suffix='AGCTC', prefix='TAGCC')
>>> CNV(seq1, seq4)
Traceback (most recent call last):
AssertionError: geen CNV gevonden