(이전에는 CWLAB으로 알려져 있습니다.)
빅 데이터 워크 플로우의 단순화 된 배포를위한 오픈 소스 클라우드 레디 웹 애플리케이션.
CI/CD :
포장 :
인용 및 기여 :
주의 : Workflux는 베타 상태에 있으며 향후 변화가 도입 될 수 있습니다. 그러나 테스트를 원하거나 생산에서 실행하고 싶다면 우리는 귀하를 지원할 것입니다.
PIP를 사용하여 설치를 수행 할 수 있습니다.
python3 -m pip install workflux
사용 가능한 옵션에 대한 논의는 "구성"섹션을 참조하십시오.
사용자 정의 구성으로 웹 서버를 시작하거나 (기본 구성을 사용하려면 --config 플래그를 제외하십시오) :
workflux up --config config.yaml
종속성 관리를 위해 컨테이너를 사용하려면 Docker 또는 Singularity 또는 Udocker와 같은 Docker 호환 컨테이너 화 솔루션을 설치해야합니다. Windows 또는 MacOS에서 실행하려면 전용 Docker 버전 : Docker for Windows, Docker for Mac을 설치하십시오.
웹 인터페이스의 사용은 빌드 인 명령으로 자체 설명해야합니다. 다음 섹션에서는 기본 사용 시나리오에 대한 개요를 제공합니다.
Workflux는 플랫폼 공수 파이썬으로 작성되므로 다음에서 실행할 수 있습니다.
명령 줄 인터페이스가있는 모든 CWL 러너는 CWL 워크 플로 또는 도구 랩퍼를 실행하기 위해 Workflux에 통합 될 수 있습니다.
따라서 워크 플럭스는 다음을 포함하여 이러한 CWL 러너가 지원하는 모든 인프라에서 사용할 수 있습니다.
* 참고 : 참고 :
Windows에서의 실행은 CWLTool에서만 지원되는 Windows를 위해 Docker와 대화합니다. 따라서 원래 Linux/MacOS 용으로 설계된 CWL 포장 도구 및 워크 플로우는 Workflux에서 제공하는 그래픽 인터페이스를 사용하여 Windows에서 실행할 수 있습니다.
워크 플럭스를 사용하여 두 명의 환자 코호트에서 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 :
웹 서버에서 사용하는 포트를 지정하십시오.
기본값 : 5000
temp_dir :
임시 파일의 디렉토리.
기본값 : 홈 디렉토리의 하위 폴더 "Workflux/Temp"
WorkFlow_dir :
CWL 문서를 저장하기위한 디렉토리.
기본값 : 홈 디렉토리의 하위 폴더 "Workflux/Temp"
exec_dir :
출력 파일을 포함한 실행 데이터를 저장하기위한 디렉토리.
기본값 : 홈 디렉토리의 하위 폴더 "Workflux/Temp"
default_input_dir :
사용자가 입력 파일을 검색 할 수있는 기본 디렉토리. " add_input_dirs "매개 변수를 사용하여 추가 입력 디렉토리를 지정할 수 있습니다. 기본값 : 홈 디렉토리의 하위 폴더 "Workflux/Temp"
DB_DIR :
데이터베이스 디렉토리.
기본값 : 홈 디렉토리의 하위 폴더 "Workflux/Temp"
add_input_dirs :
" default_input_dir "외에도 이러한 디렉토리를 입력 파일을 검색 할 수 있습니다.
이 예제에 표시된 것처럼 " 이름 : Path "형식으로 지정하십시오.
ADD_INPUT_DIRS:
GENOMES_DIR: '/ngs_share/genomes'
PUBLIC_GEO_DATA: '/datasets/public/geo'
기본값 : 추가 입력 디어가 없습니다.
add_input_and_upload_dirs :
사용자는 입력 파일 ( " default_input_dir "외에도 입력 파일을 검색 할 수 있으며 하나의 파일을 업로드 할 수도 있습니다.
이 예제에 표시된 것처럼 " 이름 : Path "형식으로 지정하십시오.
ADD_INPUT_AND_UPLOAD_DIRS:
UPLOAD_SCRATCH: '/scratch/upload'
PERMANEN_UPLOAD_STORE: '/datasets/upload'
기본값 : 추가 입력 디어가 없습니다.
디버그 :
true로 설정되면 디버깅 모드가 켜집니다. 생산 시스템에는 사용하지 마십시오.
기본값 : False
이곳에서 시스템에서 CWL 작업을 실행하는 방법을 구성합니다. 프로파일은 4 단계로 구성됩니다 : 준비, 실행, 평가 및 마무리 (Exec Learted 만 필요하고 나머지는 선택 사항입니다). 각 단계마다 Bash 또는 CMD 터미널에서 실행 된 명령을 지정할 수 있습니다.
아래 구성 예에 표시된대로 다중 실행 프로파일을 정의 할 수 있습니다. 이를 통해 Frontend 사용자는 서로 다른 실행 옵션 (예 : 다른 CWL 러너, 다른 종속성 관리 시스템 사용 또는 LSF, PBS와 같은 여러 배치 실행 인프라 중에서 A를 선택할 수 있습니다. 각 실행 프로파일에 대해 다음 구성 매개 변수를 사용할 수 있습니다 ( 유형 및 실행 만 필요합니다).
유형 :
사용할 쉘/통역사를 지정하십시오. Linux 또는 MacOS의 경우 bash 사용하십시오. Windows의 경우 powershell 사용하십시오.
필수의 .
MAX_RETRIES : 실행을 실패한 것으로 표시하기 전에 실행 (모든 단계)이 몇 번이나 retried 횟수를 지정하십시오.
시간 초과 :
실행 프로파일의 각 단계마다 시간 초과 한도를 설정할 수 있습니다.
기본 :
prepare : 120
exec : 86400
eval : 120
finalize : 120 준비하다 *:
실제 CWL 실행 전에 실행되는 명령. 예를 들어 필요한 파이썬/콘다 환경을로드합니다.
선택 사항 .
exec *:
CWL 실행을 시작하는 명령. 일반적으로 이것은 CWL 러너를 실행하기위한 명령 줄입니다. CWL 러너의 stdout 및 stderr는 사전 정의 된 로그 파일로 리디렉션해야합니다.
필수의 .
평가 *:
EXEC 단계의 끝에있는 종료 상태가 자동으로 확인됩니다. 여기서 실행 로그의 내용을 추가로 평가하기 위해 명령을 지정하여 실행이 성공했는지 확인할 수 있습니다. 워크 플럭스 실패를 전달하려면 SUCCESS 변수를 False 로 설정하십시오.
선택 사항 .
마무리 *: exec and eval 이후에 실행되는 명령. 예를 들어, 이것은 임시 파일을 정리하는 데 사용할 수 있습니다.
* 실행 프로필 단계에 관한 추가 메모 :
JOB_IDRUN_ID (참고 : 직업 내에서만 독특합니다)WORKFLOW (중고 CWL 문서의 경로)RUN_INPUT (입력 매개 변수가 포함 된 Yaml 파일의 경로)OUTPUT_DIR (실행 별 출력 디렉토리의 경로)LOG_FILE (CWL 러너의 stdout 및 stderr를 수신 해야하는 로그 파일의 경로)SUCCESS ( False 로 설정된 경우 실행은 실패 및 종료 된 것으로 표시됩니다)PYTHON_PATH (워크 플럭스를 실행하는 데 사용되는 Python 통역사로가는 경로)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 라이센스에 따라 무료로 사용하고 수정할 수 있습니다.
이 멋진 사람들에게 감사합니다 (이모티콘 키) :
커스틴 브레 우어 ? | Pavlo Lutsik ? ? | Sven Twardziok | 마리우스 ? | Lukas Jelonek | 마이클 프랭클린 | 알렉스 카니츠 |
Yoann Pageaud | Yassen Assenov ? | 유유 린 ? |
이 프로젝트는 All-Contritors 사양을 따릅니다. 모든 종류의 공헌을 환영합니다!