Analiza dużych ilości danych często wymaga stałych, określonych zadań i skryptów. Dlatego możliwości jakie dają systemy zarządzania przepływem pracy są bezcenne w realizacji prac bioinformatycznych. W tym artykule opisujemy zasadę działania systemu Snakemake.
Czym są systemy zarządzania przepływem pracy?
Systemy zarządzania przepływem pracy (ang. workflow management system, SZPP) pozwalają na automatyzację procesów, a także tworzenie powtarzalnych i skalowalnych analiz danych. Zapewniają one doskonałą infrastrukturę do konfiguracji, kontrolowania wydajności i monitorowania zdefiniowanej sekwencji zadań. Z ich pomocą możemy tworzyć gotowe schematy reguł co ułatwi nam uruchomienie wybranych procesów w dowolnym momencie.
Snakemake – warto, czy nie warto?
Przykładowym systemem zarządzania przepływem pracy, który często wykorzystywany jest w działach bioinformatycznych, jest Snakemake. Wyróżnia go przede wszystkim:
• intuicyjne użycie oparte na regułach i zależnościach między nimi (input/output),
• czytelny kod, oparty na języku skryptowym Python,
• wsparcie dla równoległych obliczeń na wielu serwerach (SLURM, Kubernetes) oraz obliczeń “w chmurze” (Google Cloud Computing),
• integracja ze środowiskiem pracy Conda (możliwość deklaracji zależności dla środowiska uruchamiania reguł),
• aktywny rozwój (developer support).
Jak działa system zarządzania przepływem pracy Snakemake?
Wszystko opiera się o reguły, które opisują co należy zrobić, aby z danych plików wejściowych (input), przeprowadzając konkretne działania, powstały określone pliki wyjściowe (output).
Przykład prostej reguły:
rule example: input: infile="input_{custom}.tsv" output: outfile="output_{custom}.tsv" shell: """ cat “{input.infile}” | process.sh > “{output.outfile}” """
Wywołanie takiej reguły odbywa się poprzez określenie pliku docelowego, w tym przypadku:
snakemake output_genXone.tsv -n
Snakemake sprawdzi, czy któraś z dostępnych reguł pasuje do wybranego pliku docelowego. W naszej przykładowej regule “example” w nazwie plików wejściowych i wyjściowych pojawiła się deklaracja tzw. symboli wieloznacznych (ang. wildcards) poprzez klamrowe nawiasy. Taki zabieg pozwala na przypisanie pod zmienną wildcards, w tym przypadku o nazwie “custom”, dowolnego ciągu znaków, który wystąpi między “input_”/”output_” a “.tsv”. W powyższym przykładowym wywołaniu tej reguły pod zmienną wildcards “custom” został przypisany tekst “genXone”.
Idąc dalej – aby utworzyć plik “output_genXone.tsv”, potrzebujemy pliku wejściowego “input_genXone.tsv”. Jeżeli taki plik jest dostępny, reguła może zostać uruchomiona, o czym poinformuje nas Snakemake. Dzięki przełącznikowi “-n” możemy podejrzeć jakie reguły zostaną uruchomione i jakie występują między nimi zależności w formie tekstowej, bez uruchamiania samych reguł.
Jeżeli utworzenie pliku wymaga uruchomienia innych reguł od siebie zależnych, Snakemake nas o tym również poinformuje.
Wizualny graf zależności możemy utworzyć poleceniem:
snakemake output_genXone.tsv --dag | dot -Tsvg > dag.svg
Przykładowy graf zależności Snakemake [https://snakemake.readthedocs.io]
Wywołanie Snakemake bez przełącznika “-n” spowoduje uruchomienie potoku zadań i powstanie oczekiwanych plików.
Po skonfigurowaniu SLURM (ang. Slurm Workflow Manager) z systemem Snakemake tę samą regułę możemy wywołać dyrektywą “ssnakemake” (podwójne “s”).
Od Make’a do Snakemake’a
Snakemake został stworzony na podstawie paradygmatu Make GNU – przepływy pracy są definiowane zgodnie z regułami określającymi sposób tworzenia plików wyjściowych z plików wejściowych. Zależności między regułami są określane automatycznie, tworząc DAG (ukierunkowany wykres acykliczny) zadań, które mogą być automatycznie zrównoleglone.
Systemy zarządzania przepływem pracy w bioinformatyce
W analizach bioinformatycznych wykorzystywane są różne systemy zarządzania przepływem pracy. Oprócz Snakemake, są na przykład Nextflow wykorzystujący kontenery z oprogramowaniem, czy Python Celery, który w prosty sposób przetwarza dużą liczbę wiadomości. Wszystkie z nich pozwalają ustrukturyzować cykliczne analizy (pipelines) znacząco przyspieszając pracę bioinformatyków. Dzięki nim nie musimy czekać na zakończenie każdej z reguł, aby uruchomić następną – wybrany system zrobi to za nas. Snakemake dzięki kompatybilności z językiem Python i prostocie działania jest łatwo przyswajalny, a wsparcie dla obliczeń równoległych i rozwiązań chmurowych czyni go jednym z najchętniej używanych SZPP w dziedzinie bioinformatyki i nie tylko.