Voor deze opgave wordt gevraagd om een aantal Python functies te schrijven die kunnen gebruikt worden om een overzicht te genereren met het %GC van elke DNA sequentie uit een gegeven bestand in FASTA formaat. Termen die in voorgaande zin met een cursief lettertype werden weergegeven worden hierna in detail uitgelegd.
>118480563|DQ207729|Bacillus cereus|16S ribosomal RNA gene
AGAGTTTGATCCTGGCTCAGGATGAACGCTGGCGGCGTGCCTAATACATGCAAGTCGAGCGAATGGATTA
AGAGCTTGCTCTTATGAAGTTAGCGGCGGACGGGTGAGTAACACGTGGGTAACCTGCCCATAAGACTGGG
ATAACTCCGGGAAACCGGGGCTAATACCGGATAACATTTTGAACCGCATGGTTCGAAATTGAAAGGCGGC
TTCGGCTGTCACTTATGGATGGACCCGCGTCGCATTAGCTAGTTGGTGAGGTAACGGCTCACCAAGGCAA
CGATGCGTA
>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
Schrijf een functie leesFasta waaraan een bestandslocatie als argument moet doorgegeven worden. Op deze locatie moet een tekstbestand terug te vinden zijn, dat één of meerdere DNA sequenties in FASTA formaat bevat. Als resultaat moet de functie een lijst teruggeven, die voor elke record uit het FASTA bestand een tuple bevat met daarin het accession number, de soortnaam en de DNA sequentie.
Schrijf een functie procentGC die voor een gegeven DNA sequentie — die als argument aan de functie moet doorgegeven worden — het %GC berekent en als een reële waarde teruggeeft.
Schrijf een functie toonOverzicht waaraan een lijst van tuples zoals die gegenereerd wordt door de functie leesFasta als argument moet doorgegeven worden. Deze functie moet een overzicht weergeven dat in eerste instantie voor elke sequentie uit het gegeven FASTA bestand (ingelezen als een lijst van tuples) een regel uitschrijft met daarop de soortnaam (waarvoor 30 lettertekens gereserveerd worden, links uitgelijnd), gevolgd door het %GC van de sequentie (afgerond tot op twee cijfers na de komma), een spatie en het accession number tussen ronde haakjes. Daarna volgt een lege regel, en worden achtereenvolgens ook het minimum, maximum en gemiddelde %GC van alle sequenties op afzonderlijke regels uitgeschreven. Zie onderstaande voorbeelden voor een illustratie van het formaat waarin het overzicht moet weergegeven worden.
Onderstaande interactieve Pythonsessie maakt gebruik van het bestand seq1.fasta1.
>>> fasta = leesFasta('seq1.fasta')
>>> fasta
[('ABCDE', 'olifant', 'AGAGTTTGATAGAGCTTGCT'), ('FGHIJ', 'ezel', 'GAACGCTGGCGGCATGCCTT')]
>>> procentGC('AGAGTTTGATAGAGCTTGCT')
40.0
>>> toonOverzicht(fasta)
olifant 40.00% (ABCDE)
ezel 65.00% (FGHIJ)
minimum 40.00%
maximum 65.00%
gemiddelde 52.50%
Onderstaande interactieve Pythonsessie maakt gebruik van het bestand seq2.fasta2.
>>> fasta = leesFasta('seq2.fasta')
>>> toonOverzicht(fasta)
Bacillus cereus 53.49% (DQ207729)
Burkholderia xenovorans 56.41% (U86373)
Clostridium acetobutylicum 52.68% (U16165)
Geobacter metallireducens 56.40% (L07834)
Listeria welshimeri 53.61% (X98532)
Methanosarcina acetivorans 56.63% (M59137)
Oceanobacillus iheyensis 52.85% (AB010863)
Thermus thermophilus 63.96% (X07998)
Xanthomonas campestris 55.13% (X95917)
Bacillus sporothermodurans 54.38% (U49078)
minimum 52.68%
maximum 63.96%
gemiddelde 55.55%