我目前正在撰寫一個蛇形管道,我想為此包含一個 perl 腳本。該腳本不是我撰寫的,而是來自github頁面。我以前從未使用過 perl。
我通過 conda 安裝了 perl (5.32.1)。我已經安裝了 miniconda,并且正在我的大學 unix 服務器上作業。
我的 perl 腳本規則的代碼如下所示:
rule r1_filter5end:
input:
config["arima_mapping"] "unprocessed_bam/{sample}_R1.sam"
output:
config["arima_mapping"] "filtered_bam/{sample}_R1.bam"
params:
conda:
"../envs/arima_mapping.yaml"
log:
config["logs"] "arima_mapping/r1_filter5end/{sample}_R1.log"
threads:
12
shell:
"samtools view --threads {threads} -h {input} -b | perl ../scripts/filter_five_end.pl | samtools -b -o {output} 2> log"
當我運行它時,我收到以下錯誤:
無法打開 perl 腳本“../scripts/filter_five_end.pl”:找不到這樣的檔案或目錄
從我在研究中了解到的是 perl 腳本的 1. 行設定了我的 perl 可執行檔案的路徑。我下載的腳本路徑如下:
#!/usr/bin/perl
由于我使用通過 conda 安裝的 perl,這可能是錯誤的。所以我將路徑設定為:
#!/home/mi/my_user/miniconda3/bin/perl
然而,這仍然不起作用,無論我是否打電話
perl ../scripts/filter_five_end.pl
或者
../scripts/filter_five_end.pl
也許不可能通過snakemake運行perl腳本?有誰遇到過這種具體的類似案例嗎?^^
uj5u.com熱心網友回復:
問題不在于shebang。shebang 中的解釋器路徑無關緊要,因為您perl ../path直接呼叫它。執行此命令的 shell 將決議perl程式的路徑(很可能是 conda 路徑),然后運行腳本,僅從腳本內部的 shebang 獲取標志(如-T或-w)。
錯誤訊息意味著它找不到實際的腳本檔案。我懷疑當您運行該 shell 命令時,它位于錯誤的目錄中。嘗試完全合格的路徑。
正如OP在他們的評論中所說:
我忘記了 snakemake 總是從 Snakemake 檔案而不是保存規則的目錄中查找檔案。
uj5u.com熱心網友回復:
不完全是一個答案,但也許是相關的:
我忘記了 snakemake 總是從 Snakemake 檔案而不是保存規則的目錄中查找檔案。
我認為這并不完全正確。參考點是-d/--directory默認情況下執行snakemake的目錄設定:
--directory DIR, -d DIR
Specify working directory (relative paths in the snakefile will use this as their origin). (default: None)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506244.html
