Nextflow -没有这样的变量:前缀



我试着运行我的nextflow脚本,前两个进程写得很好,但第三个进程Conbinevcf报告了一个错误,显示没有找到变量前缀。

process Annovar_genebased {
publishDir "${params.output}/annovar", mode: 'copy'
input:
path 'snp_anatation' from anatation1.flatMap()
val humandb
val refgene
output:
path "*.exonic_variant_function" into end
"""
prefix=$(basename $(readlink snp_anatation) .avinput)
perl $refgene -geneanno -dbtype refGene -out ${prefix}.anatation -buildver hg19 $snp_anatation $humandb -hgvs
rm *.log
rm *.variant_function
"""
}

process Annovar {
publishDir "${params.output}/annovar", mode: 'copy'
input:
path 'snp_anatation' from anatation2.flatMap()
val annovar_table
val humandb
output:
path "*.csv" into end1
"""
prefix=$(basename $(readlink snp_anatation) .avinput)
perl $annovar_table $snp_anatation $humandb -buildver hg19 -out ${prefix}.anatation -remove -protocol refGene,cytoBand,exac03,clinvar_20200316,gnomad211_exome -operation g,r,f,f,f -nastring . -csvout  -polish
"""
}

I got stuck on this process

process Combinevcf {
publishDir "${params.output}/combinevcf", mode: 'copy'
input:
path 'genebased' from end.flatMap()
path 'allbased' from end1.flatMap()
output:
path "*_3.csv" into end3
"""
prefix=$(basename $(readlink genebased) .exonic_variant_function)
prefix1=$(basename $(readlink allbased) .csv)
cat ${prefix}.exonic_variant_function | tr -s ‘[:blank:]’ ‘,’ | awk 'BEGIN{FS=",";OFS="," }{ print $3,$13,$22}' | awk ' BEGIN { OFS=", "; print "refGene", "refGene", "refGene", "refGene", "refGene", "Zogysity","chr", "filter" } { print $0, "" } ' > ${prefix}_1.csv
awk 'BEGIN{FS=",";OFS="," }{ print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$15,$21,$24,$25}' ${prefix1}.csv > ${prefix1}_2.csv
paste ${prefix}_1.csv ${prefix1}_2.csv > ${prefix}_3.csv
"""
}

我不知道哪里出了问题,请帮助我将不胜感激。

您需要用反斜杠转义${prefix},以告诉nextflow变量prefix在脚本块范围内,而不是在nextflow范围内。

参见https://www.nextflow.io/docs/latest/process.html#script获取更多信息:

由于Nextflow使用相同的Bash语法来替换字符串中的变量,因此您必须仔细管理它们,这取决于您是想计算Nextflow变量还是Bash变量

最新更新