(Sebelumnya dikenal sebagai CWLAB.)
Aplikasi web open-source, siap cloud untuk penyebaran alur kerja data besar yang disederhanakan.
CI/CD:
Kemasan:
Kutipan & Kontribusi:
Perhatian: Workflux dalam keadaan beta dan perubahan perubahan mungkin diperkenalkan di masa depan. Namun, jika Anda ingin mengujinya atau bahkan berjalan dalam produksi, kami akan mendukung Anda.
Instalasi dapat dilakukan dengan menggunakan PIP:
python3 -m pip install workflux
Silakan lihat bagian "Konfigurasi" untuk diskusi opsi yang tersedia.
Mulai server web dengan konfigurasi khusus Anda (atau tinggalkan bendera --config untuk menggunakan yang default):
workflux up --config config.yaml
Jika Anda ingin menggunakan wadah untuk manajemen ketergantungan, Anda perlu menginstal Docker atau solusi kontainerisasi yang kompatibel dengan Docker seperti singularitas atau udocker. Untuk menjalankan di Windows atau MacOS, silakan instal versi Docker khusus: Docker untuk Windows, Docker untuk Mac
Penggunaan antarmuka web harus jelas dengan instruksi build-in. Bagian berikut memberikan gambaran tentang skenario penggunaan dasar.
Workflux ditulis dalam platform-agnostik Python dan karenanya dapat dieksekusi pada:
Pelari CWL mana pun yang memiliki antarmuka baris perintah dapat diintegrasikan ke dalam workflux untuk menjalankan alur kerja CWL atau pembuat alat, seperti:
Oleh karena itu, workflux dapat digunakan pada infrastruktur apa pun yang didukung oleh pelari CWL ini, termasuk:
* Harap dicatat:
Eksekusi pada Windows hanya didukung oleh CWLTOOL yang berbicara kepada Docker untuk Windows. Oleh karena itu, alat dan alur kerja yang dibungkus CWL yang awalnya dirancang untuk Linux/MacOS dapat dieksekusi pada Windows dengan antarmuka grafis yang disediakan oleh workflux.
Silakan lihat tutorial kami, yang memandu Anda melalui contoh sederhana namun bermakna tentang bagaimana workflux dapat digunakan untuk membandingkan urutan protein spike dari COVID-19 dalam dua kelompok pasien.
Berikut adalah beberapa Apetizers: 

Workflux adalah paket yang sangat fleksibel dan hampir tidak membuat asumsi pada lingkungan keras dan perangkat lunak Anda yang digunakan untuk pelaksanaan CWL. Untuk menyesuaikannya dengan sistem Anda dan menggunakan kasing, satu set opsi konfigurasi tersedia:
Semua opsi konfigurasi dapat ditentukan dalam satu file YAML yang disediakan untuk workflux setelah mulai:
workflux up --config my_config.yaml
Untuk mendapatkan contoh file konfigurasi, jalankan perintah berikut:
workflux print_config > config.yaml (atau lihat contoh di bawah)
Web_server_host :
Tentukan host atau alamat IP yang akan dijalankan server web. Gunakan localhost untuk penggunaan lokal di mesin Anda saja. Gunakan 0.0.0.0 untuk memungkinkan aksesibilitas jarak jauh oleh mesin lain di jaringan yang sama.
Default : localhost
Web_Server_port :
Tentukan port yang digunakan oleh server web.
Default : 5000
Temp_dir :
Direktori untuk file sementara.
Default : subfolder "workflux/temp" di direktori home
Workflow_dir :
Direktori untuk menyimpan dokumen CWL.
Default : subfolder "workflux/temp" di direktori home
Exec_dir :
Direktori untuk menyimpan data eksekusi termasuk file output.
Default : subfolder "workflux/temp" di direktori home
Default_input_dir :
Direktori default di mana pengguna dapat mencari file input. Anda dapat menentukan direktori input tambahan menggunakan parameter " add_input_dirs ". Default : subfolder "workflux/temp" di direktori home
Db_dir :
Direktori untuk database.
Default : subfolder "workflux/temp" di direktori home
Add_input_dirs :
Selain " default_input_dir ", direktori ini dapat dicari oleh pengguna untuk file input.
Harap tentukan mereka dalam format " Name: Path " seperti yang ditunjukkan dalam contoh ini:
ADD_INPUT_DIRS:
GENOMES_DIR: '/ngs_share/genomes'
PUBLIC_GEO_DATA: '/datasets/public/geo'
Default : Tidak ada DIR input tambahan.
Add_input_and_upload_dirs :
Pengguna dapat mencari direktori ini untuk file input (selain " default_input_dir ") dan mereka juga dapat mengunggah satu file mereka.
Harap tentukan mereka dalam format " Name: Path " seperti yang ditunjukkan dalam contoh ini:
ADD_INPUT_AND_UPLOAD_DIRS:
UPLOAD_SCRATCH: '/scratch/upload'
PERMANEN_UPLOAD_STORE: '/datasets/upload'
Default : Tidak ada DIR input tambahan.
Debug :
Jika diatur ke True, mode debugging dihidupkan. Jangan gunakan pada sistem produksi.
Default : Salah
Di sinilah Anda mengkonfigurasi cara menjalankan pekerjaan CWL di sistem Anda. Profil terdiri dari empat langkah: Siapkan, Exec, Eval, dan Finalize (hanya EXEC yang diperlukan, sisanya opsional). Untuk setiap langkah, Anda dapat menentukan perintah yang dieksekusi di terminal bash atau CMD.
Anda dapat mendefinisikan beberapa profil eksekusi seperti yang ditunjukkan pada contoh konfigurasi di bawah ini. Ini memungkinkan pengguna Frontend untuk memilih antara opsi eksekusi yang berbeda (misalnya menggunakan pelari CWL yang berbeda, sistem manajemen ketergantungan yang berbeda, atau bahkan memilih antara beberapa infrastruktur eksekusi batch yang tersedia seperti LSF, PBS, ...). Untuk setiap profil eksekusi, parameter konfigurasi berikut tersedia (tetapi hanya jenis dan exec yang diperlukan):
jenis :
Tentukan shell/interpreter mana yang akan digunakan. Untuk Linux atau MacOS gunakan bash . Untuk Windows, gunakan powershell .
Diperlukan .
MAX_RETRIES : Tentukan berapa kali eksekusi (semua langkah) diulang sebelum menandai menjalankan sebagai gagal.
Timeout :
Untuk setiap langkah di profil eksekusi, Anda dapat menetapkan batas waktu tunggu.
Bawaan :
prepare : 120
exec : 86400
eval : 120
finalize : 120 mempersiapkan *:
Perintah yang dieksekusi sebelum eksekusi CWL yang sebenarnya. Misalnya memuat lingkungan Python/Conda yang diperlukan.
Opsional .
EXEC *:
Perintah untuk memulai eksekusi CWL. Biasanya, ini hanya baris perintah untuk mengeksekusi runner CWL. Stdout dan stderr dari pelari CWL harus dialihkan ke file log yang telah ditentukan.
Diperlukan .
Eval *:
Status keluar di akhir langkah EXEC secara otomatis diperiksa. Di sini Anda dapat menentukan perintah untuk juga mengevaluasi konten log eksekusi untuk menentukan apakah eksekusi berhasil. Untuk mengomunikasikan kegagalan untuk workflux, atur variabel SUCCESS menjadi False .
Opsional .
Finalisasi *: Perintah yang dieksekusi setelah Exec dan Eval . Misalnya, ini dapat digunakan untuk membersihkan file sementara.
* Catatan tambahan tentang langkah profil eksekusi:
JOB_IDRUN_ID (Harap dicatat: hanya unik dalam suatu pekerjaan)WORKFLOW (jalur ke dokumen CWL yang digunakan)RUN_INPUT (jalur ke file YAML yang berisi parameter input)OUTPUT_DIR (jalur direktori output spesifik run)LOG_FILE (jalur file log yang harus menerima stdout dan stderr dari cwl runner)SUCCESS (jika diatur ke False run akan ditandai sebagai gagal dan diakhiri)PYTHON_PATH (jalan menuju interpreter Python yang digunakan untuk menjalankan workflux)SUCCESS menjadi False .{...} ) harus berada di satu baris.Di bawah ini, Anda dapat menemukan konfigurasi contoh untuk eksekusi lokal alur kerja CWL atau alat dengan 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}"} Paket ini gratis untuk digunakan dan dimodifikasi di bawah lisensi Apache 2.0.
Terima kasih kepada orang -orang yang luar biasa ini (Kunci Emoji):
Kersten Breuer ? | Pavlo Lutsik ? ? | Sven Twardziok | Marius ? | Lukas Jelonek | Michael Franklin | Alex Kanitz |
Yoann pageaud | Yassen Assenov ? | Yuyu Lin ? |
Proyek ini mengikuti spesifikasi semua-kontributor. Kontribusi apa pun yang baik!