#snakemake #singularity-container
#snakemake #сингулярность-контейнер
Вопрос:
Для snakemakev5.27
Есть ли способ запустить snakemake с директивой контейнера, которая указывает на локальный образ? Например. если я храню контейнеры Docker на Dockerhub, и у меня также есть локальная копия, при запуске snakemake я не хочу, чтобы правило извлекало копию образа singularity из DockerHub, если она уже существуетточная локальная копия. Ускоряет запуск.
Ответ №1:
Конечно, просто передайте относительный или абсолютный путь к файлу директиве.
Комментарии:
1. не могли бы вы привести пример? когда я создаю образ docker локально, он отображается в списке «список образов docker», но нет файла, на который можно указать.
2. Речь идет об изображениях Singularity, которые являются простыми файлами в локальной файловой системе.
Ответ №2:
Даже если в руководстве snakemake это явно не указано, можно использовать локальный образ singularity с помощью containerized
директивы.
Итак, вместо примера в ссылке выше:
containerized: "docker://username/myworkflow:1.0.0"
Вы можете указать путь к файлу singularity sif (который содержит изображение)
containerized: "/path/to/myimage.sif"
Убедитесь, что вы используете --use-singularity
при запуске snakemake.
Как создать образ singularity (sif):
Вы можете создать образ sif различными способами, как описано здесь, ошибка что касается вашего вопроса, вы можете создать его из локального образа docker.
Т.е. Вы можете перечислить свои локальные изображения docker images
и выбрать один для создания локального файла sif следующим образом:
SINGULARITY_NOHTTPS=1 singularity build /path/to/myimage.sif docker-daemon://mydockerimage:latest
Обратите внимание, что, похоже, он не работает прямо из локального контейнера docker, т. Е. Я ожидал, что это сработает:
containerized: "docker-daemon://scpipe_docker:latest"
… но это не так с версии snakemake 6.10.0