【发布时间】:2022-02-23 04:16:08
【问题描述】:
我正在尝试创建用于分析生物数据的自动命令链。
为此,我在 Slurm 集群中使用 Samtools。下面这一行是我为分析运行的命令之一:samtools view -h file.sam | awk '$6 ~ /N/ || $1 ~ /^@/' | samtools view -h > spliced.file.sam
使用它,我得到了我的预期输出(简单)。
但是,当我想使用--wrap 将命令插入到作业中时,会出现语法错误。
如图所示:
sbatch --wrap "samtools view -h file.sam | awk '$6 ~ /N/ || $1 ~ /^@/' | samtools view -h > sp.file.sam"
awk: ~ /N/ || ~ /^@/
awk: ^ syntax error
在命令开头使用srun,在最后使用&,在提交时很有帮助,但是当我想创建命令管道时可以使用它吗?我可以为这个命令添加依赖项吗?有没有可能的方法来使用
--wrap 这个命令?
我的目标是创建一个自动的命令管道,如下面的链接所示 - https://gencore.bio.nyu.edu/building-an-analysis-pipeline-for-hpc-using-python/
提前致谢。
【问题讨论】:
-
您是否尝试过在 awk 命令中使用 ` \ ` 转义
’? -
在处理大到足以保证使用集群的工作时,使用诸如 nextflow、snakemake 或 Cromwell 之类的工作流框架 :) 这需要一些时间来学习,但最终会节省大量时间。
-
我从来没有听说过
sbatch,所以我可能会走得更远,但听起来好像有什么东西在解释$6和$1,然后awk 才能看到它们,所以试着把它们改成@987654332 @ 和\$1. -
那是因为你使用了双引号,并且那里有
$6和$1的 awk 并且那些$运算符需要被转义\$6和\$1以将它们扩展为父级@EdMorton 提到的外壳也很特别 -
感谢 Ed Morton 和 αғsнιη 的帮助,它成功了!
标签: awk bioinformatics slurm samtools