Nakreslete pomocí želví grafiky následující obrázek (nebo alespoň hodně podobný):
Jedním z mnoha formátů používaných v komputační lingvistice je tzv. vertikála. Příkladem budiž soubor phrases.vert
(kódování UTF-8).
Obsahem tohoto souboru je několik vět navzájem oddělených prázdnou řádkou. Každá věta je pak rozdělena po jednotlivých slovech (a interpunkci) na samostatné řádky, které zaznamenávají nejrůznější lingvistické údaje o daném slově (či interpunkci), navzájem oddělené tabulátorem.
Vaším úkolem je z daného souboru vyextrahovat jednotlivé věty a vypsat je tak, jak vypadaly původně, tzn. každou větu na samostatnou řádku a bez mezer před interpunkcí.
Při řešení předchozího příkladu můžete snadno spočítat, kolik vět se vlastně v souboru phrases.vert
nachází. Nicméně pro tento bonusový příklad předstírejte, že jste předchozí cvičení neřešili, a pokuste se vymyslet co nejjednodušší způsob, jak spočítat, kolik vět soubor obsahuje.
V CSV-souboru aminokyseliny.csv
jsou základní informace o aminokyselinách – jejich jednopísmenné i vícepísmenné zkratky, název a kodony (= trojice bází), kterými bývá daná aminokyselina kódována. Soubor je v kódování UTF-8, obsahuje hlavičkový řádek, jednotlivé údaje jsou odděleny středníkem a pole kodonů navíc ještě svislítkem.
Načtěte data ze souboru do vhodné pythoní datové struktury, abyste mohli snáze splnit následující úkoly. V obou máte za úkol vypsat data do nového souboru, ale pokaždé s jiným pořadím sloupečků a/nebo jinak seřazená:
aa_1.csv
zapište data seřazená podle názvu aminokyseliny a v pořadí sloupečků jméno;3-zkratka;1-zkratka;kodony.
aa_2.csv
zapište data seřazená podle počtu kodonů. Je-li stejný (což často je), dořaďte příslušné řádky navíc ještě podle vícepísmenné zkratky aminokyseliny.
FASTA
Jedním z nejpoužívanějších formátů pro záznam dat v bioinformatice je FASTA
. V souboru fasta.fa máte k dispozici jeho ukázku. Soubor obsahuje několik skupin hlaviček a k nim příslušejících sekvencí bází (pro potřeby úlohy značně zjednodušených – skutečná FASTA by měla dlouhé sekvence zalámané na více řádek), tedy každý samostatný záznam zabírá dvě řádky. Zde kupříkladu první záznam:
>HKEKW3O01B9HVO ACGATGCAGCTGCGAGACGATGACACGCTCGGTGCCGTTGATGACGAACGAGCC
Přepište data do souboru fasta_mod.fa
, přičemž doplňte každou hlavičku o údaj o délce příslušné sekvence (tedy počtu bází) a její pořadí v rámci souboru. Ukázkový záznam se tak změní na tvar:
>HKEKW3O01B9HVO length=54 pos=1 ACGATGCAGCTGCGAGACGATGACACGCTCGGTGCCGTTGATGACGAACGAGCC
FASTA
(bonusová)
Napište program, který na vyžádání z příkazové řádky vypíše příslušnou sekvenci ze souboru fasta_mod.fa
, např.:
> python fasta+.py 30 >HKEKW3O01DP28Q length=165 pos=30 GTGTCGAGATCGAGCGTCACGCCTTCCTGCGCGGCGACGATGTGCGGCGCGGCCGGCGCTTTCAGCAGGAACGGCGTGCGCAGCTCGGGCGGCAGCACGACGTTCGCGGCGGCGTCGAGCTGATCGGCATCCTCGTTGCGCCAGACGCCGTCGCGTTGATACGCG
PS: Pokud nevyřešíte předchozí úlohu, můžete samozřejmě použít původní soubor fasta.fa, ale v něm se to hůře kontroluje a stejně by se vám tahle úloha řešila bez zpracování předchozí stejně špatně.