Een sequentielogo is een grafische voorstelling voor een meervoudige alignering van DNA-, RNA- of eiwitsequenties, waaruit onmiddellijk de regio's met geconserveerde residu's kunnen afgelezen worden. Sequentielogo's worden bijvoorbeeld gebruikt om geconserveerde regio's in het DNA op te sporen, omdat daar transcriptiefactoren kunnen binden.
Bij het maken van sequentielogo's vertrekt men van gerelateerde DNA-, RNA- of eiwitsequenties, of van DNA-sequenties met geconserveerde bindingsregio's. In een eerste stap worden deze sequenties ten opzichte van elkaar gealigneerd, waarbij de meest geconserveerde residu's onder elkaar gezet worden. Daarna wordt per positie in deze meervoudige alignering de frequentie van de residu's berekend. Het sequentielogo geeft voor elke positie weer hoe goed de residu's geconserveerd zijn: hoe meer residu's van een bepaald type, hoe groter de letter, omdat de conservering van het residu op die positie groter is. De letters van de residu's op eenzelfde positie worden geschaald volgens hun frequentie. De hoogte van alle letters op eenzelfde positie komt overeen met de informatie uitgedrukt in bits (entropie2).
FASTA is een tekstgebaseerd bestandsformaat dat gebruikt wordt in de bioinformatica om DNA of eiwitsequenties op te slaan. Individuele baseparen of eiwitresidu's worden daarbij voorgesteld door één-letter codes. Het formaat laat ook toe om de verschillende sequenties te laten voorafgaan door sequentienamen en andere informatievelden.
Een sequentie in FASTA formaat begint met een één-regel beschrijving, gevolgd door de eigenlijke sequentiegegevens die eventueel kunnen gesplitst worden over verschillende regels. De regel met de beschrijving wordt onderscheiden van de sequentiegegevens door een "groter dan" symbool (>) in de eerste kolom. Elke sequentie eindigt waar een nieuwe regel begint met een >-karakter, wat de start van een nieuwe sequentie aangeeft, of op het einde van het bestand. Een eenvoudig voorbeeld van één enkele sequentie in FASTA formaat:
>118480563|DQ207729|Bacillus cereus|16S ribosomal RNA gene
AGAGTTTGATCCTGGCTCAGGATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAATGGATTA
AGAGCTTGCTCTTATGAAGTTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCCATAAGACTGGG
ATAACTCCGGGAAACCGGGGCTAATACCGGATAACATTTTGAACCGCATGGTTCGAAATTGAAAGGCGGC
TTCGGCTGTCACTTATGGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCACCAAGGCAA
CGATGCGTA
Hieronder staat een voorbeeld van een FASTA bestand met meerdere sequenties. Let op het feit dat er in dit geval meerdere beschrijvingsregels — regels die starten met een >-karakter — zijn, die aangeven dat er daarna een nieuwe sequentie begint.
>571435|U16165|Clostridium acetobutylicum|16S ribosomal RNA gene
TGGCGGCGTGCTTAACACATGCAAGTCGAGCGATGAAGCTCCTTCGGGAGTGGATTAGCGGCGGACGGGT
GAGTAACACGTGGGTAACCTGCCTCATAGAGGGGAATAGCCTTTCGAAAGGAAGATTAATACCGCATAAG
ATTGTAGTGCCGCATGGCATAGCAATTAAAGGAGTAATCCGCTATGAGATGGACCCGCGTCGCATTAGCT
AGTTGGTGAGGTAACGGCTCACCAAGGCGACGATGCGTAGCCGACCTGAGAGGGTGATCGGCCACATTGG
GACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTG
>996091|L07834|Geobacter metallireducens|16S ribosomal RNA gene
AGAGTTTGATCCTGGCTCAGAACGAACGCTGGCGGAGTGCCTAACACATGCAAGTCGAACGTGAAGGGGG
CTTCGGTCCCCGGAAAGTGGCGCACGGGTGAGTAACGCGTGGATAATCTGCCCAGTGATCTGGGATAACA
TCTCGAAAGGGGTGCTAATACCGGATAAGCCCACGGAGTCCTTGGATTCTGCGGGAAAAGGGGGGGACCT
TCGGGCCTTTTGTCACTGGATGAGTCCGCGTACCATTAGCTAGTTGGTGGGGTAATGGCCCACCAAGGCT
ACGATGGTTAG
Na elke beschrijvingsregel volgen één of meerdere regels die de sequentie beschrijven. Sequenties kunnen zowel DNA-, RNA- of eiwitsequenties voorstellen, en ze kunnen gaten bevatten die worden voorgesteld door een minteken (-).
Schrijf een functie leesFasta waarmee de sequenties uit een FASTA bestand kunnen uitgelezen worden. De locatie van het FASTA bestand moet als string-argument aan de functie doorgegeven worden. De functie moet als resultaat een lijst van strings teruggeven, waarbij de opeenvolgende strings corresponderen met de opeenvolgende sequenties zoals ze in het bestand staan opgelijst. Een sequentie die over verschillende regels gesplitst werd in het bestand moet in de lijst als één enkele string zonder witruimte weergegeven worden.
Schrijf een functie sequentieLogo waaraan een lijst van
gealigneerde sequenties moet doorgegeven worden. Hierbij moeten alle
strings uit de lijst dus dezelfde lengte hebben. Bekijk onderstaand
voorbeeld om te zien hoe de functie moet reageren als deze voorwaarde
niet voldaan is. Als tweede optionele argument alfabet
(standaardwaarde ACGT) kan aan de functie nog een string
meegegeven worden, waarin de residuletters staan opgelijst waaruit de
sequenties bestaan. Bekijk onderstaand voorbeeld om te zien hoe de
functie moet reageren als er in de gegeven sequenties residu's
voorkomen die niet tot het gegeven alfabet behoren. De functie mag
geen onderscheid maken tussen hoofdletters en kleine letters bij de
lettervoorstelling van de residu's, noch in de gegeven sequenties,
noch in het gegeven alfabet.
De functie moet als resultaat een lijst teruggeven, waarvan elk
element op positie $$i$$ zelf ook een lijst is die de frequenties
bevat van de residu's op positie $$i$$ in de gealigneerde sequenties.
De volgorde van de residu's in elke frequentielijst is dezelfde als de
volgorde van de residu's in het gegeven alfabet.
Bij onderstaand voorbeeld gaan we ervan uit dat het bestand seq.fasta zich in de huidige directory bevindt.
>>> sequenties = leesFasta('seq.fasta')
>>> sequenties
['ATG', 'gtg', 'CTA', 'TTa', 'ATG']
>>> sequentieLogo(sequenties)
[[0.4, 0.2, 0.2, 0.2], [0.0, 0.0, 0.0, 1.0], [0.4, 0.0, 0.6, 0.0]]
>>> sequentieLogo(sequenties, alfabet='gcta')
[[0.2, 0.2, 0.2, 0.4], [0.0, 0.0, 1.0, 0.0], [0.6, 0.0, 0.0, 0.4]]
>>> sequentieLogo(sequenties, alfabet='GCUA')
Traceback (most recent call last):
AssertionError: ongeldig residu
>>> sequentieLogo(['AGCTGC', 'TCGT', 'CGTATGATAG'])
Traceback (most recent call last):
AssertionError: niet alle sequenties hebben dezelfde lengte
De constructie van het eerste sequentielogo uit bovenstaand voorbeeld wordt weergegeven in onderstaande tabel. Een dergelijke tabel — voor DNA sequenties soms ook ingekort tot de laatste vier kolommen — wordt in de bioinformatica een position-specific scoring matrix3 genoemd.
seq1 | seq2 | seq3 | seq4 | seq5 | Â | A | C | G | T |
---|---|---|---|---|---|---|---|---|---|
A | g | C | T | A | Â | 0.4 | 0.2 | 0.2 | 0.2 |
T | t | T | T | T | Â | 0.0 | 0.0 | 0.0 | 1.0 |
G | g | A | a | G | Â | 0.4 | 0.0 | 0.6 | 0.0 |