Upozornění k použití AI (LLM)

Používat AI je povoleno, pouze to poznamenejte to kódu. Úkoly se budou hodnotit podle toho, jak splní zadané požadavky.




Iterátor pro formáty FASTQ a FASTA

Začněte s jednodušším vstupním souborem fastq.fq a vyrobte program, který bude postupně splňovat následující úkoly:

  1. Program načítá a vrací jednotlivé záznamy z FASTQ nebo FASTA jako iterátor, tj. je možné použít (např.) následující kód:
    for header, sequnce, comment, quality in FASTQReader(SOUBOR):
        ...
        
    for header, sequnce in FASTAReader(SOUBOR):
        ...            
  2. Program dělá totéž co předchozí, ale místo „zadrátovaného“ názvu vstupního souboru je schopen přijmout soubor z příkazové řádky nebo přímo data ze standardního vstupu, čili je možné napsat např.
    type fastq.fq | program.py            
  3. Program je doplněn o testy (ať už pomocí interní knihovny nebo nějakého externího balíku), které umí přinejmenším:



Kontrolní součty pro sekvence

Napište následující tři programy, které všechny přebírají svůj vstup ze standardního vstupu operačního systému a posílají výstup na standardní výstup operačního systému (tzn. že je možné napsat následující sekvenci příkazů; předpokládáme, že vytvořené programy jsou spustitelné:

        DOS:  type fastq.fq | crc.py | kontrola.py
        Linux: cat fastq.fq | crc.py | kontrola.py    

). Požadované programy:

  1. crc.py – Program doplní do hlavičkového, resp. komentářového řádku vstupního FASTQ-souboru kontrolní součet sekvence, resp. kvality čtení. Ze záznamu..
    @HWI-ST169:212:B07Y7ABXX:2:1101:15198:2000 1:N:0:
    GAGAAAGAAGCAACTCTACTACGTCAGTACGGCCTTTGTAACATGCCCACATAAG
    +
    CCCFFFFFHHG?HIJJJJJJJJJGIJJIIHIJJJJIJJGIJJJJJJJJJJJJJJI            
    ..se tak stane např. záznam:
    @HWI-ST169:212:B07Y7ABXX:2:1101:15198:2000 1:N:0: crc32=3411694818
    GAGAAAGAAGCAACTCTACTACGTCAGTACGGCCTTTGTAACATGCCCACATAAG
    + crc32=1049268927
    CCCFFFFFHHG?HIJJJJJJJJJGIJJIIHIJJJJIJJGIJJJJJJJJJJJJJJI            
  2. kontrola.py – Program ověří, že sekvence a kvalita čtení ve vstupním souboru odpovídají kontrolním součtům z příslušných hlaviček, a chybné údaje vypíše (všechny čtyři řádky daného záznamu s vyznačením řádku obsahujícím chybu). Příklad (barevného) výpisu chyby:
    @HWI-ST169:212:B07Y7ABXX:2:1101:15537:1999 1:N:0: crc32=1684002928
    CCCCAACAAGATTGGACGTTTTGTGATCGAAGAGGTTCCTGGTGAGCTCATGCAG
    + crc32=2764384176
    @@CDDDFDHHFHHIJ@GHAHHJEDAEIIIGIIIJB?FGGIJJDHIGGCHIGIIIG            
  3. kopie.py – Program přepíše ze vstupu na výstup pouze ty záznamy, v nichž bude kontrolní součet sekvence i kvality čtení bez chyby (tzn. že na výstupu bude potenciálně menší, ale stále validní, FASTQ-soubor).



...

...