Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
nextflow [2025/02/05 14:45] – 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 |
<code yaml> | <code yaml> | ||
FROM debian: | FROM debian: | ||
Строка 16: | Строка 123: | ||
RUN apt-get update && apt-get install -y curl cowsay | RUN apt-get update && apt-get install -y curl cowsay | ||
</ | </ | ||
+ | |||
+ | == Запуск == | ||
<code bash> | <code bash> | ||
Строка 27: | Строка 136: | ||
</ | </ | ||
- | nextflow.config | + | ./nextflow.config |
< | < | ||
+ | </ | ||
+ | |||
+ | == Repositories == | ||
+ | |||
+ | <code bash> | ||
+ | $ docker pull quay.io/ | ||
</ | </ | ||
Строка 38: | Строка 153: | ||
Singularity реализует модель выполнения контейнера, | Singularity реализует модель выполнения контейнера, | ||
+ | ./ | ||
< | < | ||
Bootstrap: docker | Bootstrap: docker | ||
Строка 67: | Строка 183: | ||
</ | </ | ||
- | nextflow.config | + | ./nextflow.config |
< | < | ||
</ | </ | ||
- | ===== Docker Swarm ===== | + | == 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 ===== |
<code bash> | <code bash> | ||
Строка 82: | Строка 272: | ||
</ | </ | ||
- | ===== Slurm ===== | + | ===== # Slurm ===== |
- | Slurm — это отказоустойчивая и высокомасштабируемая система управления кластером и планирования заданий с открытым исходным кодом для больших и малых кластеров Linux. Slurm не требует никаких изменений ядра для своей работы и является относительно самодостаточной. Как менеджер рабочей нагрузки кластера, | + | [[application: |
- | Демоны slurmd обеспечивают отказоустойчивую иерархическую связь. Пользовательские команды включают: | + | Демоны slurmd обеспечивают отказоустойчивую иерархическую связь. |
+ | Пользовательские команды включают: | ||
+ | Все команды могут выполняться в любом месте кластера. | ||
- | * CharlieCloud и Singularity больше подходят для использования контейнеров в системе HPC с отдельным контроллером заданий (обычно Slurm) и устранения проблем безопасности в Docker в общей системе. | + | |
<code bash> | <code bash> | ||
Строка 98: | Строка 290: | ||
OAR — это универсальный менеджер ресурсов и задач (также называемый пакетным планировщиком) для кластеров HPC и других вычислительных инфраструктур (например, | OAR — это универсальный менеджер ресурсов и задач (также называемый пакетным планировщиком) для кластеров HPC и других вычислительных инфраструктур (например, | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
<code bash> | <code bash> | ||
Строка 103: | Строка 300: | ||
</ | </ | ||
- | ===== HyperQueue ===== | + | ===== # HyperQueue ===== |
HyperQueue — это инструмент, | HyperQueue — это инструмент, | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
<code bash> | <code bash> | ||
Строка 112: | Строка 313: | ||
</ | </ | ||
- | ===== HTCondor ===== | + | ===== # HTCondor ===== |
HTCondor — это программная система, | HTCondor — это программная система, | ||
+ | |||
+ | * https:// | ||
<code bash> | <code bash> | ||
Строка 121: | Строка 324: | ||
</ | </ | ||
- | ===== Flux ===== | + | ===== # Flux ===== |
Flux — это гибкая структура для управления ресурсами, | Flux — это гибкая структура для управления ресурсами, | ||
- | < | + | ./ |
+ | < | ||
+ | manifest { | ||
+ | mainScript = ' | ||
+ | homePage = ' | ||
+ | description = 'Demo using Nextflow with Flux' | ||
+ | } | ||
+ | process { | ||
+ | executor = ' | ||
+ | } | ||
</ | </ | ||
- | ===== Bridge ===== | + | ./main.nf |
+ | < | ||
+ | workflow { | ||
+ | breakfast | ||
+ | haveMeal(breakfast) | ||
+ | } | ||
+ | |||
+ | process haveMeal { | ||
+ | debug true | ||
+ | input: | ||
+ | val food | ||
+ | script: | ||
+ | """ | ||
+ | printf '$food for breakfast!' | ||
+ | """ | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ nextflow -c nextflow.config run main.nf | ||
+ | </ | ||
+ | |||
+ | ===== # Bridge ===== | ||
+ | |||
+ | Repo: https:// | ||
<code bash> | <code bash> | ||
</ | </ |