Het bestand dna.txt1 bevat regels die telkens uit twee velden bestaan, gescheiden door een spatie. In het eerste veld staan woorden die geen hoofdletters bevatten, en in het tweede veld staan DNA sequenties van 100 basen. Een DNA sequentie wordt voorgesteld door een tekenreeks met lettertekens uit het alfabet $$\{A, G, C, T\}$$, waarbij elk letterteken een base genoemd wordt.
Bepaal reguliere expressies voor elk van de onderstaande verzamelingen, waarbij $$\mathcal{D}$$ de verzameling van alle DNA sequenties voorstelt. Probeer deze reguliere expressies zo kort mogelijk te houden.
$$ \alpha = \{ d \in \mathcal{D}\,|\,$$ $$d$$ bevat een triplet van basen dat minstens drie keer na elkaar herhaald wordt $$\}$$
voorbeeld: |
$$ \beta = \{ d \in \mathcal{D}\,|\,$$ aantal opeenvolgende basen C of T in $$d$$ is altijd even $$\}$$
$$ \gamma = \{ d \in \mathcal{D}\,|\,$$ gedegenereerde DNA sequentie AGKYANBTD matcht juist één keer in $$d$$ $$\}$$
uitleg: Een positie binnen een DNA sequentie die meerdere mogelijke alternatieve waarden kan hebben, wordt voorgesteld door een gedegenereerd basesymbool. Hieronder staat een lijst van alle gedegenereerde basesymbolen die internationaal werden vastgelegd.
base | betekenis |
---|---|
W | A of T |
S | G of C |
M | A of C |
K | G of T |
R | G of A |
Y | T of C |
B | G of T of C |
D | G of A of T |
H | A of C of T |
V | G of C of A |
N | A of G of C of T |
Gebruik een commando uit de grep familie om enkel die regels van het bestand dna.txt2 te selecteren met een DNA sequentie die tot de opgegeven verzameling behoort.
Beschouw de verzamelingen $$\alpha$$, $$\beta$$ en $$\gamma$$ zoals hierboven gedefinieerd. Gebruik nu deze verzamelingen om op de volgende manier een boodschap bestaande uit drie woorden te achterhalen:
Het eerste woord staat op de unieke regel met de DNA sequentie uit verzameling $$\alpha \cap \beta$$.
Het tweede woord staat op de unieke regel met de DNA sequentie uit verzameling $$\alpha \cap \gamma$$.
Het derde woord staat op de unieke regel met de DNA sequentie uit verzameling $$\beta \cap \gamma$$.
Geef telkens een Unix commando dat elk van deze woorden opzoekt in het bestand en uitschrijft naar standaard uitvoer (zonder het patroon dat aan het woord voorafgaat). Hierbij is het dus niet toegelaten om het woord letterlijk uit te schrijven (bv. echo xxx).