Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы====== Nextflow ====== ===== Основные компоненты ===== ==== Директивы ==== ./main.nf <code> process FASTQC { container 'biocontainers/fastqc:v0.11.5' tag "FASTQC on $sample_id" } </code> * https://training.nextflow.io/basic_training/containers/#software-directives ==== Каналы ==== ./main.nf <code> ch = Channel.of(1, 2, 3) ch.view() </code> * https://training.nextflow.io/basic_training/channels/#channel-factories ==== Процессы ==== <code> process < name > { [ directives ] input: < process inputs > output: < process outputs > when: < condition > [script|shell|exec]: """ < user script to be executed > """ } </code> * directives/Директивы — это начальные декларации, определяющие необязательные параметры. * input/Вход определяет ожидаемый входной канал(ы) * output/Выход определяет ожидаемый выходной канал(ы) * when/Когда является необязательным оператором предложения, разрешающим условные процессы * script|shell|exec/Скрипт — это строковый оператор, определяющий команду, которая должна быть выполнена задачей процесса. * https://training.nextflow.io/basic_training/processes ==== Операторы ==== <code> Channel .of(1, 2, 3, 4) .map { it -> it * it } .view() </code> * https://training.nextflow.io/basic_training/operators ==== Модули ==== <code> include { SPLITLETTERS } from './modules.nf' include { SPLITLETTERS; CONVERTTOUPPER } from './modules.nf' include { CONVERTTOUPPER as CONVERTTOUPPER_one } from './modules.nf' </code> * https://training.nextflow.io/basic_training/modules/ ==== Конфигурация ==== ./nextflow.config <code> propertyOne = 'world' anotherProp = "Hello $propertyOne" customPath = "$PATH:/my/app/folder" // comment a single line params.foo = 'Hello' env.ALPHA = 'some value' process.container = 'nextflow/rnaseq-nf' docker.enabled = true // Настройки пакетного планировщика process { cpus = 10 memory = 8.GB container = 'biocontainers/bamtools:v2.4.0_cv3' withName: FOO { memory = { 4.GB * task.cpus } } } </code> * library:// загрузите образ контейнера из сервиса Singularity Library. * shub:// загрузите образ контейнера из Singularity Hub. (не работает) * docker:// загрузите образ контейнера из Docker Hub и преобразуйте его в формат Singularity. * docker-daemon:// извлеките образ контейнера из локальной установки Docker и преобразуйте его в файл образа Singularity. * https://training.nextflow.io/basic_training/config/ ===== # Docker ===== ==== Варианты работы: ==== === Dockerfile === ./Dockerfile <code yaml> FROM debian:bullseye-slim LABEL image.author.name "Your Name Here" LABEL image.author.email "your@email.here" RUN apt-get update && apt-get install -y curl cowsay </code> == Запуск == <code bash> $ docker build -t my-image . $ docker run my-image cowsay Hello Docker! $ docker run -it my-image bash </code> <code bash> $ nextflow run script2.nf -with-docker my-image </code> ./nextflow.config <code> </code> == Repositories == <code bash> $ docker pull quay.io/biocontainers/ubuntu:24.04 </code> === Singularity/Apptainer === Singularity/Apptainer — это среда выполнения контейнера, предназначенная для работы в высокопроизводительных вычислительных центрах обработки данных, где использование Docker, как правило, не допускается из-за ограничений безопасности. Singularity реализует модель выполнения контейнера, похожую на Docker. Однако она использует совершенно другой дизайн реализации. ./my-image.sif <code> Bootstrap: docker From: debian:bullseye-slim %environment export PATH=$PATH:/usr/games/ %labels AUTHOR <your name> %post apt-get update && apt-get install -y locales-all curl cowsay curl -sSL https://github.com/COMBINE-lab/salmon/releases/download/v1.0.0/salmon-1.0.0_linux_x86_64.tar.gz | tar xz \ && mv /salmon-*/bin/* /usr/bin/ \ && mv /salmon-*/lib/* /usr/lib/ </code> <code bash> $ sudo singularity build my-image.sif Singularity $ singularity exec my-image.sif cowsay 'Hello Singularity' $ singularity shell my-image.sif $ singularity pull docker://debian:bullseye-slim </code> <code bash> $ nextflow run script7.nf -with-singularity nextflow/rnaseq-nf </code> ./nextflow.config <code> </code> == Repositories == <code bash> $ singularity run https://depot.galaxyproject.org/singularity/ubuntu:24.04 </code> === Conda === Conda — популярный менеджер пакетов и сред. Встроенная поддержка Conda позволяет рабочим процессам Nextflow автоматически создавать и активировать среду(ы) Conda, учитывая зависимости, указанные каждым процессом. <code bash> conda init </code> ./env.yml <code> name: nf-tutorial channels: - conda-forge - defaults - bioconda dependencies: - bioconda::salmon=1.5.1 - bioconda::fastqc=0.11.9 - bioconda::multiqc=1.12 - conda-forge::tbb=2020.2 </code> <code bash> $ conda env create --file env.yml $ conda env list </code> <code bash> $ nextflow run script7.nf -with-conda ./ </code> Другой способ создания сред, подобных conda, — это использование Dockerfile и micromamba. ./Dockerfile <code> FROM mambaorg/micromamba:0.25.1 COPY --chown=$MAMBA_USER:$MAMBA_USER env.yml /tmp/env.yml RUN micromamba create -n nf-tutorial RUN micromamba install -y -n nf-tutorial -f /tmp/env.yml && \ micromamba clean --all --yes ENV PATH /opt/conda/envs/nf-tutorial/bin:$PATH </code> == Repositories == <code bash> $ conda install -c conda-forge -c bioconda ubuntu==24.04 </code> === BioContainers === <code bash> </code> == Repositories == * https://biocontainers.pro/multipackage * https://biocontainers.pro/registry <code bash> </code> ===== # Docker Swarm ===== Отсутствует поддержка в Nextflow ===== # Kubernetes ===== <code bash> </code> ===== # Slurm ===== Slurm — это отказоустойчивая и высокомасштабируемая система управления кластером и планирования заданий с открытым исходным кодом для больших и малых кластеров Linux. Slurm не требует никаких изменений ядра для своей работы и является относительно самодостаточной. Как менеджер рабочей нагрузки кластера, Slurm имеет три ключевые функции. Во-первых, он выделяет пользователям эксклюзивный и/или неэксклюзивный доступ к ресурсам (вычислительным узлам) на определенный период времени, чтобы они могли выполнять работу. Во-вторых, он предоставляет фреймворк для запуска, выполнения и мониторинга работы (обычно параллельной работы) на наборе выделенных узлов. Наконец, он разрешает конфликты за ресурсы, управляя очередью ожидающих работ. Демоны slurmd обеспечивают отказоустойчивую иерархическую связь. Пользовательские команды включают: sacct, sacctmgr, salloc, sattach, sbatch, sbcast, scancel, scontrol, scrontab, sdiag, sh5util, sinfo, sprio, squeue, sreport, srun, sshare, sstat, strigger и sview. Все команды могут выполняться в любом месте кластера. * https://github.com/koroltim/NextFlow-on-SLURM/tree/main/examples <code bash> </code> ===== OAR ===== OAR — это универсальный менеджер ресурсов и задач (также называемый пакетным планировщиком) для кластеров HPC и других вычислительных инфраструктур (например, экспериментальных испытательных стендов распределенных вычислений, где универсальность является ключевым фактором). * https://oar.imag.fr/docs/2.5/ <code bash> </code> ===== # HyperQueue ===== HyperQueue — это инструмент, разработанный для упрощения выполнения больших рабочих процессов (графов задач) на кластерах HPC. Он позволяет выполнять большое количество задач простым способом, без необходимости вручную отправлять задания в пакетные планировщики, такие как Slurm или PBS. Вы указываете, что именно вы хотите вычислить, а HyperQueue автоматически запрашивает вычислительные ресурсы и динамически распределяет нагрузку задач по всем выделенным узлам и ресурсам. HyperQueue также может работать без Slurm/PBS как общий распределенный механизм выполнения задач. * https://github.com/It4innovations/hyperqueue * https://it4innovations.github.io/hyperqueue * https://github.com/jaantollander/workflows <code bash> </code> ===== # HTCondor ===== HTCondor — это программная система, которая создает среду высокопроизводительных вычислений (HTC). Она эффективно использует вычислительную мощность машин, подключенных через сеть, будь то отдельный кластер, набор кластеров в кампусе, облачные ресурсы, как автономные, так и временно присоединенные к локальному кластеру, или международные сети. Мощь исходит из способности эффективно использовать общие ресурсы с распределенным владением. * https://github.com/htcondor/htcondor <code bash> </code> ===== # Flux ===== Flux — это гибкая структура для управления ресурсами, созданная для вашего сайта. Структура состоит из набора проектов, инструментов и библиотек, которые могут использоваться для создания настраиваемых менеджеров ресурсов для центров высокопроизводительных вычислений. В отличие от традиционных менеджеров ресурсов, Flux может работать как параллельное задание в большинстве пусковых установок, поддерживающих MPI, в том числе в самом Flux. Это не только делает пакетные скрипты и рабочие процессы для Flux переносимыми на другие менеджеры ресурсов (просто запустите Flux как задание), но также означает, что пакетные задания имеют в своем распоряжении все функции полного менеджера ресурсов, как будто у них есть целый кластер. ./nextflow.config <code> manifest { mainScript = 'demo.nf' homePage = 'https://github.com/nextflow-io/nextflow/tree/master/docker/flux' description = 'Demo using Nextflow with Flux' } process { executor = 'flux' } </code> ./main.nf <code> workflow { breakfast = Channel.of '🥞️', '🥑️', '🥧️', '🍵️', '🍞️' haveMeal(breakfast) } process haveMeal { debug true input: val food script: """ printf '$food for breakfast!' """ } </code> <code bash> $ nextflow -c nextflow.config run main.nf </code> ===== # Bridge ===== Repo: https://github.com/cea-hpc/bridge <code bash> </code>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal