Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| nextflow [2025/02/05 14:40] – создано mirocow | nextflow [2025/02/26 20:36] (текущий) – mirocow | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Nextflow ====== | ====== Nextflow ====== | ||
| - | ===== Docker ===== | + | ===== Основные компоненты ===== |
| + | |||
| + | ==== Директивы ==== | ||
| + | |||
| + | ./main.nf | ||
| + | < | ||
| + | process FASTQC { | ||
| + | container ' | ||
| + | tag " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * https:// | ||
| + | |||
| + | ==== Каналы ==== | ||
| + | |||
| + | ./main.nf | ||
| + | < | ||
| + | ch = Channel.of(1, | ||
| + | ch.view() | ||
| + | </ | ||
| + | |||
| + | * https:// | ||
| + | |||
| + | ==== Процессы ==== | ||
| + | |||
| + | < | ||
| + | process < name > { | ||
| + | [ directives ] | ||
| + | |||
| + | input: | ||
| + | < process inputs > | ||
| + | |||
| + | output: | ||
| + | < process outputs > | ||
| + | |||
| + | when: | ||
| + | < condition > | ||
| + | |||
| + | [script|shell|exec]: | ||
| + | """ | ||
| + | < user script to be executed > | ||
| + | """ | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * directives/ | ||
| + | * input/ | ||
| + | * output/ | ||
| + | * when/ | ||
| + | * script|shell|exec/ | ||
| + | |||
| + | * https:// | ||
| + | |||
| + | ==== Операторы ==== | ||
| + | |||
| + | < | ||
| + | Channel | ||
| + | .of(1, 2, 3, 4) | ||
| + | .map { it -> it * it } | ||
| + | .view() | ||
| + | </ | ||
| + | |||
| + | * https:// | ||
| + | |||
| + | ==== Модули ==== | ||
| + | |||
| + | < | ||
| + | include { SPLITLETTERS | ||
| + | include { SPLITLETTERS; | ||
| + | include { CONVERTTOUPPER as CONVERTTOUPPER_one } from ' | ||
| + | </ | ||
| + | |||
| + | * https:// | ||
| + | |||
| + | ==== Конфигурация ==== | ||
| + | |||
| + | ./ | ||
| + | < | ||
| + | propertyOne = ' | ||
| + | anotherProp = "Hello $propertyOne" | ||
| + | customPath = " | ||
| + | // comment a single line | ||
| + | params.foo = ' | ||
| + | env.ALPHA = 'some value' | ||
| + | |||
| + | process.container = ' | ||
| + | docker.enabled = true | ||
| + | |||
| + | // Настройки пакетного планировщика | ||
| + | process { | ||
| + | cpus = 10 | ||
| + | memory = 8.GB | ||
| + | container = ' | ||
| + | withName: FOO { | ||
| + | memory = { 4.GB * task.cpus } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * library:// загрузите образ контейнера из сервиса Singularity Library. | ||
| + | * shub:// загрузите образ контейнера из Singularity Hub. (не работает) | ||
| + | * docker:// загрузите образ контейнера из Docker Hub и преобразуйте его в формат Singularity. | ||
| + | * docker-daemon:// | ||
| + | |||
| + | * https:// | ||
| + | |||
| + | ===== # Docker ===== | ||
| ==== Варианты работы: | ==== Варианты работы: | ||
| Строка 7: | Строка 114: | ||
| === Dockerfile === | === Dockerfile === | ||
| - | Dockerfile | + | ./Dockerfile |
| - | ```yaml | + | < |
| FROM debian: | FROM debian: | ||
| Строка 16: | Строка 122: | ||
| RUN apt-get update && apt-get install -y curl cowsay | RUN apt-get update && apt-get install -y curl cowsay | ||
| - | ```` | + | </ |
| - | ```bash | + | == Запуск == |
| - | docker build -t my-image . | + | |
| - | docker run my-image cowsay Hello Docker! | + | |
| - | docker run -it my-image bash | + | |
| - | ``` | + | |
| - | ```bash | + | < |
| - | nextflow run script2.nf | + | $ docker build -t my-image . |
| - | ``` | + | $ docker |
| + | $ docker run -it my-image bash | ||
| + | </ | ||
| - | nextflow.config | + | <code bash> |
| - | ``` | + | $ nextflow run script2.nf -with-docker my-image |
| - | ``` | + | </ |
| + | |||
| + | ./nextflow.config | ||
| + | < | ||
| + | |||
| + | </ | ||
| + | |||
| + | == Repositories == | ||
| + | |||
| + | <code bash> | ||
| + | $ docker pull quay.io/ | ||
| + | </ | ||
| === Singularity/ | === Singularity/ | ||
| Строка 38: | Строка 153: | ||
| Singularity реализует модель выполнения контейнера, | Singularity реализует модель выполнения контейнера, | ||
| - | ``` | + | ./ |
| + | < | ||
| Bootstrap: docker | Bootstrap: docker | ||
| From: debian: | From: debian: | ||
| Строка 54: | Строка 170: | ||
| && mv / | && mv / | ||
| && mv / | && mv / | ||
| - | ``` | + | </ |
| - | ```bash | + | < |
| $ sudo singularity build my-image.sif Singularity | $ sudo singularity build my-image.sif Singularity | ||
| $ singularity exec my-image.sif cowsay 'Hello Singularity' | $ singularity exec my-image.sif cowsay 'Hello Singularity' | ||
| $ singularity shell my-image.sif | $ singularity shell my-image.sif | ||
| - | ``` | + | $ singularity pull docker:// |
| + | </ | ||
| - | ===== Docker Swarm ===== | + | <code bash> |
| + | $ nextflow run script7.nf -with-singularity | ||
| + | </ | ||
| + | |||
| + | ./ | ||
| + | < | ||
| + | |||
| + | </ | ||
| + | |||
| + | == Repositories | ||
| + | |||
| + | <code bash> | ||
| + | $ singularity run https:// | ||
| + | </ | ||
| + | |||
| + | === Conda === | ||
| + | |||
| + | Conda — популярный менеджер пакетов и сред. Встроенная поддержка Conda позволяет рабочим процессам Nextflow автоматически создавать и активировать среду(ы) Conda, учитывая зависимости, | ||
| + | |||
| + | <code bash> | ||
| + | conda init | ||
| + | </ | ||
| + | |||
| + | ./env.yml | ||
| + | < | ||
| + | name: nf-tutorial | ||
| + | channels: | ||
| + | - conda-forge | ||
| + | - defaults | ||
| + | - bioconda | ||
| + | dependencies: | ||
| + | - bioconda:: | ||
| + | - bioconda:: | ||
| + | - bioconda:: | ||
| + | - conda-forge:: | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | $ conda env create --file env.yml | ||
| + | $ conda env list | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | $ nextflow run script7.nf -with-conda ./ | ||
| + | </ | ||
| + | |||
| + | Другой способ создания сред, подобных conda, — это использование Dockerfile и micromamba. | ||
| + | |||
| + | ./ | ||
| + | < | ||
| + | FROM mambaorg/ | ||
| + | |||
| + | COPY --chown=$MAMBA_USER: | ||
| + | |||
| + | RUN micromamba create -n nf-tutorial | ||
| + | |||
| + | RUN micromamba install -y -n nf-tutorial -f / | ||
| + | micromamba clean --all --yes | ||
| + | |||
| + | ENV PATH / | ||
| + | </ | ||
| + | |||
| + | == Repositories == | ||
| + | |||
| + | <code bash> | ||
| + | $ conda install -c conda-forge -c bioconda ubuntu==24.04 | ||
| + | </ | ||
| + | |||
| + | === BioContainers === | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | </ | ||
| + | |||
| + | == Repositories == | ||
| + | |||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== # Docker Swarm ===== | ||
| Отсутствует поддержка в Nextflow | Отсутствует поддержка в Nextflow | ||
| - | ===== Kubernetes ===== | + | ===== # Kubernetes ===== |
| - | ```bash | + | < |
| - | ``` | + | </ |
| - | ===== Slurm ===== | + | ===== # Slurm ===== |
| - | Slurm — это отказоустойчивая и высокомасштабируемая система управления кластером и планирования заданий с открытым исходным кодом для больших и малых кластеров Linux. Slurm не требует никаких изменений ядра для своей работы и является относительно самодостаточной. Как менеджер рабочей нагрузки кластера, | + | [[application: |
| - | Демоны slurmd обеспечивают отказоустойчивую иерархическую связь. Пользовательские команды включают: | + | Демоны slurmd обеспечивают отказоустойчивую иерархическую связь. |
| + | Пользовательские команды включают: | ||
| + | Все команды могут выполняться в любом месте кластера. | ||
| - | * CharlieCloud и Singularity больше подходят для использования контейнеров в системе HPC с отдельным контроллером заданий (обычно Slurm) и устранения проблем безопасности в Docker в общей системе. | + | |
| - | ```bash | + | < |
| - | ``` | + | </ |
| ===== OAR ===== | ===== OAR ===== | ||
| Строка 89: | Строка 291: | ||
| OAR — это универсальный менеджер ресурсов и задач (также называемый пакетным планировщиком) для кластеров HPC и других вычислительных инфраструктур (например, | OAR — это универсальный менеджер ресурсов и задач (также называемый пакетным планировщиком) для кластеров HPC и других вычислительных инфраструктур (например, | ||
| - | ```bash | + | * https:// |
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| - | ``` | + | <code bash> |
| - | ===== HyperQueue ===== | + | </ |
| + | |||
| + | ===== # HyperQueue ===== | ||
| HyperQueue — это инструмент, | HyperQueue — это инструмент, | ||
| - | ```bash | + | * https:// |
| + | * https:// | ||
| + | * https:// | ||
| - | ``` | + | <code bash> |
| - | ===== HTCondor ===== | + | </ |
| + | |||
| + | ===== # HTCondor ===== | ||
| HTCondor — это программная система, | HTCondor — это программная система, | ||
| - | ```bash | + | * https:// |
| - | ``` | + | <code bash> |
| - | ===== Flux ===== | + | </ |
| + | |||
| + | ===== # Flux ===== | ||
| Flux — это гибкая структура для управления ресурсами, | Flux — это гибкая структура для управления ресурсами, | ||
| - | ```bash | + | ./ |
| + | < | ||
| + | manifest { | ||
| + | mainScript = ' | ||
| + | homePage = ' | ||
| + | description = 'Demo using Nextflow with Flux' | ||
| + | } | ||
| + | |||
| + | process { | ||
| + | executor = ' | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ./main.nf | ||
| + | < | ||
| + | workflow { | ||
| + | breakfast = Channel.of ' | ||
| + | haveMeal(breakfast) | ||
| + | } | ||
| + | |||
| + | process haveMeal { | ||
| + | debug true | ||
| + | input: | ||
| + | val food | ||
| + | script: | ||
| + | """ | ||
| + | printf '$food for breakfast!' | ||
| + | """ | ||
| + | } | ||
| + | </ | ||
| - | ``` | + | <code bash> |
| + | $ nextflow -c nextflow.config run main.nf | ||
| + | </ | ||
| - | ===== Bridge ===== | + | ===== # Bridge ===== |
| + | Repo: https:// | ||
| - | ```bash | + | < |
| - | ``` | + | </ |