WDL腳本實戰(一)-工作流、程序體、語法檢查、輸入輸出及運行「終于解決」WDL是由BroadInstitute開發的一種生物信息流程開發語言,與傳統的shell流程相比,具有復用性好、支持多種集群架構、便于多任務并行等優勢,初次接觸,寫了個簡易流程試水。1.WDL參考資料WDL語言的一些基本概念可參考以下教程:Cromwell+WDL學習:https://blog.csdn.net/qq_41551450/article/details/93486438GATKCromwell+WDL學習:https://blog.csdn.net/theomarker/ar
WDL是由Broad Institute開發的一種生物信息流程開發語言,與傳統的shell流程相比,具有復用性好、支持多種集群架構、便于多任務并行等優勢,初次接觸,寫了個簡易流程試水。
WDL語言的一些基本概念可參考以下教程:
Cromwell +WDL學習:https://blog.csdn.net/qq_41551450/article/details/93486438 GATK Cromwell +WDL學習:https://blog.csdn.net/theomarker/article/details/79627804 WDL學習筆記:https://www.jianshu.com/p/979fd06661cb 官方文檔:https://github.com/openwdl/wdl/blob/main/versions/development/SPEC.md#工作流:先創建新目錄,再創建一個空文件,最后在空文件中寫入內容。#聲明task create_workdir所需的參數workdir_path#call task create_workdir:傳入task create_workdir所需參數workdir#call task create_file:傳入task create_file所需參數filedir,內容為task create_workdir的輸出work_path#call task write_file:傳入task write_file所需參數workdir和filepath,其中filepath內容為task create_file的輸出file_pathworkflow myWorkflow { String workdir_path call create_workdir { input: workdir = workdir_path } call create_file { input: filedir = create_workdir.work_path } call write_file { input: workdir = workdir_path, filepath = create_file.file_path }}#創建目錄,并在目錄創建代表操作完成的workdir.SUCCESS文件,若目錄已存在,只創建workdir.EXIST文件。#輸入:待創建目錄路徑#輸出:創建的目錄路徑(輸入、輸出內容其實完全相同)#聲明:變量workdir類型為字符串#command:可執行的shell代碼,可用{}或<<<>>>括起,建議用<<<>>>,區分于代碼其他部分,提高可讀性#output:聲明并賦值后,可作為其他task的輸入task create_workdir { String workdir command <<< if [ ! -d ${ workdir} ]; then mkdir ${ workdir} touch ${ workdir}/workdir.SUCCESS else touch ${ workdir}/workdir.EXIST fi >>> output { String work_path = "${workdir}" }}#創建空文件,并在文件所在目錄創建代表操作完成的file.SUCCESS文件,若文件已存在,輸出語句“File exist!”,并創建file.EXIST文件#輸入:文件所在目錄(即task create_workdir的輸出目錄),文件路徑(文件所在目錄+文件名)#輸出:文件路徑task create_file { String filedir String filename = filedir + "/test1.txt" command <<< if [ ! -f ${ filename} ]; then touch ${ filename} touch ${ filedir}/file.SUCCESS else echo "File exist!" touch ${ filedir}/file.EXIST fi >>> output { String file_path = "${filename}" }}#向文件中寫入內容,并在文件所在目錄創建代表操作完成的write.SUCCESS文件,若文件不存在,輸出語句“File not exist!”,并創建write.FAIL文件#輸入:文件路徑#輸出:文件內容task write_file { String workdir String filepath String file_content = "Tomorrow is another day." command <<< if [ -f ${ filepath} ]; then echo "${file_content}" >${ filepath} touch ${ workdir}/write.SUCCESS else echo "File not exist!" touch ${ workdir}/write.FAIL fi >>> output { String file_txt = "${file_content}" }}
是否還在為Ide開發工具頻繁失效而煩惱,來吧關注以下公眾號獲取最新激活方式。親測可用!
【正版授權,激活自己賬號】:Jetbrains全家桶Ide使用,1年售后保障,每天僅需1毛
【官方授權 正版激活】:官方授權 正版激活 自己使用,支持Jetbrains家族下所有IDE…
安裝womtool:https://anaconda.org/bioconda/womtool
完成WDL流程后,可通過womtool進行語法檢查,有語法錯誤會輸出錯誤信息,無則輸出“Success!”
#無語法錯誤java -jar ../docker/womtool-46.jar validate workflow_test_pipe1.wdlSuccess!#語法錯誤:workflow缺少一個花括號java -jar ../docker/womtool-46.jar validate workflow_test_pipe1.wdlERROR: Unexpected symbol (line 21, col 1) when parsing '_gen10'.Expected rbrace, got task.task create_workdir { ^$e = :identifier <=> :dot :identifier -> MemberAccess( lhs=$0, rhs=$2 )
womtool還可根據task間的輸入輸出關系繪制流程圖,清晰地展示各task之間的依賴關系:
java -jar ../docker/womtool-46.jar graph workflow_test_pipe1.wdl >workflow_test_pipe1.wdl.dot#轉換為svg格式dot -Tsvg -o workflow_test_pipe1.wdl.svg workflow_test_pipe1.wdl.dot
參考:
Linux命令之dot – 繪制DOT語言腳本描述的圖形:https://www.cnblogs.com/zengkefu/p/5569649.html
womtool可解析WDL腳本,創建json格式的參數輸入文件,格式為:
{ "<workflow name>.<task name>.<variable name>": "<variable type>"}
示例:
java -jar ../docker/womtool-46.jar inputs workflow_test_pipe1.wdl >workflow_test_pipe1.wdl.jsoncat workflow_test_pipe1.wdl.json{ "myWorkflow.write_file.file_content": "String (optional, default = \"Tomorrow is another day.\")", "myWorkflow.workdir_path": "String"}
整個工作流中,需要輸入的參數僅為:workdir_path(需要創建的新目錄路徑)和task write_file中的file_content(寫入文件test1.txt的內容)。
且file_content已指定默認值,可在json文件中直接刪除該行,不傳入任何參數。
修改json文件,只輸入workdir_path:
vi workflow_test_pipe1.wdl.json{ "myWorkflow.workdir_path": "/home/test/wdl_test/test/test2/"}
運行需安裝cromwell:
https://github.com/broadinstitute/cromwell/releases
運行示例:
java -jar ../docker/cromwell-45.1.jar run workflow_test_pipe1.wdl --inputs workflow_test_pipe1.wdl.json
打開workdir_path,可見被寫入內容的test1.txt文件和3個表示運行正常的SUCCESS空文件:
cd /home/test/wdl_test/test/test2lsfile.SUCCESS test1.txt workdir.SUCCESS write.SUCCESScat test1.txt Tomorrow is another day.
再次運行腳本,由于目錄和文件已存在,會創建workdir.EXIST文件和file.EXIST文件,并再次寫入文件內容。
運行WDL腳本后,WDL文件所在目錄會新增cromwell-executions和cromwell-workflow-logs兩個目錄,標準輸出及錯誤均可在cromwell-executions中查看
#進入cromwell-executions目錄,可見以myWorkflow(工作流名稱)命名的目錄cd cromwell-executions/lshelloworld myWorkflow test#進入工作流目錄及其最新的運行目錄cd myWorkflow/ll -t |headtotal 0drwxrwxr-x 5 test test 96 Apr 27 11:13 26fe9d20-bb48-4beb-b992-1264002ed5fbcd 26fe9d20-bb48-4beb-b992-1264002ed5fb/#可見以"call-task名"命名的目錄lscall-create_file call-create_workdir call-write_file#進入call-create_file/execution,可見運行腳本,標準輸出,標準錯誤等文件lsrc script script.background script.submit stderr stderr.background stdout stdout.background#task create_file的標準輸出“File exist!”即在stdout文件中cat stdoutFile exist!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
交通銀行企業網銀怎么對賬?電子對賬一般有兩種,公司賬戶對賬和特約商戶對賬。如果是單位對賬,只要點擊上面的單位賬號進行對賬,右邊就會顯示登錄窗口。第一次,你必須安裝密碼插件。安裝后,您可以使用輸入的登錄名、密碼和驗證碼進行登錄。進入后,可以按照提示進行對賬。特約商戶的對賬登錄與公司登錄基本一致。以下是交易所電子對賬系統的幫助內容:1.電子對賬簽約成功后,您將收到手機短信,您的用戶名和初始密碼將通過電...
奧運會對中國的影響有哪些?一、2008年奧運會對中國經濟的影響1.為經濟發展提供穩定的社會環境2.這有利于進一步擴大開放,使中國經濟更好地適應經濟全球化的進程3.有利于在國際上打造“中國品牌”,更能帶動國內企業從產品管理向品牌管理的轉型二、2008年奧運會對首都經濟的影響1.舉辦奧運會將為新世紀初首都經濟的快速增長提供“核動力”2.舉辦奧運會將帶動首...
(資料圖片僅供參考)隨著社會越來越發達,大家都選擇在網絡上汲取相關知識內容,比如陳一發兒在哪直播,為了更好的解答大家的問題,小編也是翻閱整理了相應內容,下面就一起來看一下吧!陳一發兒原本在“斗魚”平臺直播。陳一發兒因一首《童話鎮》從而走紅,這首歌可謂火遍了大街小巷,一上線就受到了眾多人的喜愛,甚至力壓周杰倫的《告白氣球》和趙雷的《成都》。陳一發兒是一名網紅,日常生活中,她不僅喜歡唱歌,還經常玩游戲...