(Ранее известный как Cwlab.)
Открытое, готовое к облаку веб-приложение для упрощенного развертывания рабочих процессов больших данных.
CI/CD:
Упаковка:
Цитация и вклад:
Внимание: Workflux находится в бета -состоянии, и в будущем могут быть введены нарушение изменений. Однако, если вы хотите проверить его или даже работать в производстве, мы поддержам вас.
Установка можно сделать с помощью PIP:
python3 -m pip install workflux
Пожалуйста, смотрите раздел «Конфигурация» для обсуждения доступных вариантов.
Запустите веб -сервер с вашей пользовательской конфигурацией (или оставьте флаг --config , чтобы использовать по умолчанию):
workflux up --config config.yaml
Если вам нравится использовать контейнеры для управления зависимостями, вам необходимо установить Docker или Docker-совместимое решение о контейнеризации, таком как Singularity или Udocker. Чтобы запустить на Windows или MacOS, установите выделенные версии Docker: Docker для Windows, Docker для Mac
Использование веб-интерфейса должно быть самоэкспланирующим с помощью инструкции. В следующем разделе дается обзор базового сценария использования.
Workflux написан на платформе-алкогольном питоне и поэтому может быть выполнен:
Любой бегун CWL, который имеет интерфейс командной строки, может быть интегрирован в Workflux, чтобы выполнить рабочие процессы CWL или инструменты, такие как:
Таким образом, Workflux может использоваться на любой инфраструктуре, поддерживаемой этими бегунами CWL, включая:
* Пожалуйста, обрати внимание:
Выполнение на Windows поддерживается только CWLTOOL, который разговаривает с Docker для Windows. Следовательно, CWL-обвоборные инструменты и рабочие процессы, где изначально разработаны для Linux/MacOS, могут быть выполнены в Windows с помощью графического интерфейса, предоставленного Workflux.
Пожалуйста, посмотрите наш учебник, который проведет вас через простой, но значимый пример того, как можно использовать Workflux для сравнения последовательностей белка Spike Covid-19 в двух группах пациентов.
Вот несколько аппетитов: 

Workflux- это очень универсальный пакет и практически не делает предположений о вашей жесткой и программной среде, используемой для выполнения CWL. Чтобы адаптировать его к вашей системе и вариант использования, доступен набор параметров конфигурации:
Все параметры конфигурации могут быть указаны в одном файле YAML, который предоставлен для рабочего места после начала:
workflux up --config my_config.yaml
Чтобы получить пример файла конфигурации, запустите следующую команду:
workflux print_config > config.yaml (или см. Пример ниже)
Web_server_host :
Укажите хост или IP -адрес, на котором должен работать веб -сервер. Используйте localhost только для местного использования на вашей машине. Используйте 0.0.0.0 , чтобы обеспечить удаленную доступность другими машинами в той же сети.
По умолчанию : localhost
Web_server_port :
Укажите порт, используемый WebServer.
По умолчанию : 5000
Temp_dir :
Каталог для временных файлов.
По умолчанию : подпапающий
Workflow_dir :
Каталог для сохранения документов CWL.
По умолчанию : подпапающий
Exec_dir :
Каталог для сохранения данных выполнения, включая выходные файлы.
По умолчанию : подпапающий
Default_input_dir :
Каталог по умолчанию, где пользователи могут искать входные файлы. Вы можете указать дополнительные входные каталоги, используя параметр « add_input_dirs ». По умолчанию : подпапающий
Db_dir :
Каталог для баз данных.
По умолчанию : подпапающий
Add_input_dirs :
В дополнение к « default_input_dir », пользователь может искать эти каталоги для входных файлов.
Пожалуйста, укажите их в формате « Имя: Путь », как показано в этом примере:
ADD_INPUT_DIRS:
GENOMES_DIR: '/ngs_share/genomes'
PUBLIC_GEO_DATA: '/datasets/public/geo'
По умолчанию : нет дополнительных вводов.
Add_input_and_upload_dirs :
Пользователи могут искать эти каталоги для входных файлов (в дополнение к « default_input_dir »), и они также могут загрузить свои один файл.
Пожалуйста, укажите их в формате « Имя: Путь », как показано в этом примере:
ADD_INPUT_AND_UPLOAD_DIRS:
UPLOAD_SCRATCH: '/scratch/upload'
PERMANEN_UPLOAD_STORE: '/datasets/upload'
По умолчанию : нет дополнительных вводов.
Отладка :
Если установить True, режим отладки включен. Не используйте в производственных системах.
По умолчанию : ложь
Здесь вы настраиваете, как выполнять задания CWL в вашей системе. Профиль состоит из четырех шагов: подготовка, EXEC, ENG и завершение (только требуется только EXEC, остальное не является обязательным). Для каждого шага вы можете указать команды, которые выполняются в терминале Bash или CMD.
Вы можете определить несколько профиля выполнения, как показано в примере конфигурации ниже. Это позволяет пользователям Frontend выбирать между различными параметрами выполнения (например, с использованием различных бегунов CWL, различных систем управления зависимостями или даже выбора между несколькими доступными инфраструктурами выполнения пакетов, таких как LSF, PBS, ...). Для каждого профиля выполнения доступны следующие параметры конфигурации (но требуется только тип и exec ):
тип :
Укажите, какую оболочку/интерпретатор использовать. Для Linux или MacOS используйте bash . Для Windows используйте powershell .
Необходимый .
MAX_RETRIES : Укажите, сколько раз выполняется выполнение (все шаги), прежде чем отмечать прогон как неудачный.
Тайм -аут :
Для каждого шага в профиле выполнения вы можете установить ограничение тайм -аута.
По умолчанию :
prepare : 120
exec : 86400
eval : 120
finalize : 120 подготовить *:
Команды, которые выполняются до фактического выполнения CWL. Например, чтобы загрузить необходимые среды Python/Conda.
Необязательный .
EXEC *:
Команды для запуска выполнения CWL. Обычно это только командная строка для выполнения бегуна CWL. Stdout и Stderr бегуна CWL должны быть перенаправлены на предопределенный файл журнала.
Необходимый .
Оценка *:
Статус выхода в конце шага EXEC автоматически проверяется. Здесь вы можете указать команды, чтобы дополнительно оценить содержимое журнала выполнения, чтобы определить, успешно ли выполнение. Чтобы сообщить о неспособности с работой, установите переменную SUCCESS на False .
Необязательный .
Завершить *: команды, которые выполняются после EXEC и Eval . Например, это можно использовать для очистки временных файлов.
* Дополнительные примечания относительно шагов профиля выполнения:
JOB_IDRUN_ID (обратите внимание: уникально уникально в работе)WORKFLOW (путь к использованному документу CWL)RUN_INPUT (путь к файлу YAML, содержащий входные параметры)OUTPUT_DIR (путь специфичного для выполнения каталога вывода)LOG_FILE (путь файла журнала, который должен получить STDOUT и STDERR CWL Runner)SUCCESS (если установлен на False прогон будет отмечен как неудачный и прекращен)PYTHON_PATH (путь к интерпретатору Python, используемому для запуска Workflux)SUCCESS в False .{...} ) должен быть в одной строке.Ниже вы можете найти пример конфигурации для локального выполнения рабочих процессов или инструментов CWL с CWLTOOL.
WEB_SERVER_HOST : localhost
WEB_SERVER_PORT : 5000
DEBUG : False
TEMP_DIR : ' /home/workflux_user/workflux/temp '
WORKFLOW_DIR : ' /home/workflux_user/workflux/workflows '
EXEC_DIR : ' /datasets/processing_out/ '
DEFAULT_INPUT_DIR : ' /home/workflux_user/workflux/input '
DB_DIR : ' /home/workflux_user/workflux/db '
ADD_INPUT_DIRS :
GENOMES_DIR : ' /ngs_share/genomes '
PUBLIC_GEO_DATA : ' /datasets/public/geo '
ADD_INPUT_AND_UPLOAD_DIRS :
UPLOAD_SCRATCH : ' /scratch/upload '
PERMANEN_UPLOAD_STORE : ' /datasets/upload '
EXEC_PROFILES :
cwltool_local :
type : bash
max_retries : 2
timeout :
prepare : 120
exec : 86400
eval : 120
finalize : 120
exec : |
cwltool --outdir "${OUTPUT_DIR}" "${WORKFLOW}" "${RUN_INPUT}"
>> "${LOG_FILE}" 2>&1
eval : |
LAST_LINE=$(tail -n 1 ${LOG_FILE})
if [[ "${LAST_LINE}" == *"Final process status is success"* ]]
then
SUCCESS=True
else
SUCCESS=False
ERR_MESSAGE="cwltool failed - ${LAST_LINE}"
fi WEB_SERVER_HOST : localhost
WEB_SERVER_PORT : 5000
DEBUG : False
TEMP_DIR : ' C:Usersworkflux_userworkfluxtemp '
WORKFLOW_DIR : ' C:Usersworkflux_userworkfluxworkflows '
EXEC_DIR : ' D:processing_out '
DEFAULT_INPUT_DIR : ' C:Usersworkflux_userworkfluxinput '
DB_DIR : ' C:Usersworkflux_userworkfluxdb '
ADD_INPUT_DIRS :
GENOMES_DIR : ' E:genomes '
PUBLIC_GEO_DATA : ' D:publicgeo '
ADD_INPUT_AND_UPLOAD_DIRS :
UPLOAD_SCRATCH : ' E:upload '
PERMANEN_UPLOAD_STORE : ' D:upload '
EXEC_PROFILES :
cwltool_windows :
type : powershell
max_retries : 2
timeout :
prepare : 120
exec : 86400
eval : 120
finalize : 120
exec : |
. "${PYTHON_PATH}" -m cwltool --debug --default-container ubuntu:16.04 --outdir "${OUTPUT_DIR}" "${CWL}" "${RUN_INPUT}" > "${LOG_FILE}" 2>&1
eval : |
$LAST_LINES = (Get-Content -Tail 2 "${LOG_FILE}")
if ($LAST_LINES.Contains("Final process status is success")){$SUCCESS="True"}
else {$SUCCESS="False"; $ERR_MESSAGE = "cwltool failed - ${LAST_LINE}"} Этот пакет может бесплатно использовать и изменять по лицензии Apache 2.0.
Спасибо этим замечательным людям (ключ эмодзи):
Керстен Брейер ? | Павло Латсик ? ? | Свен Твардзиок | Мариус ? | Лукас Джелонек | Майкл Франклин | Алекс Каниц |
Yoann pageaud | Яссен Асснов ? | Юйю Лин ? |
Этот проект следует за спецификацией всех контролей. Взносы любого вида приветствуются!