alignment - 语法错误:预期的操作数(错误标记是“))”)
问题描述
我正在尝试使用 bwa mem 将我的样本与参考基因组对齐。
我有超过 300 个样本,我从元数据文件创建了一个索引
但有些东西并没有真正起作用!
我正在使用的循环是这个(在 SLURM 中)
#SBATCH --export=ALL # export all environment variables to the batch job
#SBATCH -D . # set working directory to .
(...)
# Commands
module load BWA/0.7.17-foss-2018a
module load SAMtools/1.3.1-foss-2018a
module load BCFtools/1.6-intel-2017b
reference=/gpfs/ts0/home/jn378/mussels/snp/genomes/gallo_v6.snail.svg
input_reads=/gpfs/ts0/home/jn378/mussels/snp/3.fastp
align=/gpfs/ts0/home/jn378/mussels/snp/5.bam-files
metadata=/gpfs/ts0/home/jn378/mussels/snp/SNP-array-metadata.txt
metadata=/gpfs/ts0/home/jn378/mussels/snp/SNP-array-metadata.txt
read1=( `cat $metadata | cut -f 4` )
read1_array=$input_reads/${read1[(($SLURM_ARRAY_TASKID))]}
read2=( `cat $metadata | cut -f 5` )
read2_array=$input_reads/${read2[(($SLURM_ARRAY_TASKID))]}
outbam=( `cat $metadata | cut -f 1` )
out=${outbam[(($SLURM_ARRAY_TASKID))]}
echo "reference" $reference
echo "read1" $read1_array
echo "read2" $read2_array
echo "alignment" $align/${out}_unsorted.raw.sam
#### Align with bwa mem ###
####bwa mem -t 4 $reference $read1_array $read2_array > ${align}/${out}_unsorted.raw.sam
但我不断收到此错误:
bwa.sh:第 34 行:(()):语法错误:预期操作数(错误标记是“))”)
有人可以帮我解决这个问题吗?
非常感谢!
解决方案
您收到的错误消息
bwa.sh: line 34: (()): syntax error: operand expected (error token is "))")
是因为您要使用的变量是命名的SLURM_ARRAY_TASK_ID
,而不是SLURM_ARRAY_TASKID
. 后者未设置,表达式扩展为
read1_array=$input_reads/${read1[(())]}
哪个 Bash 无法解析。
所以替换SLURM_ARRAY_TASKID
为SLURM_ARRAY_TASK_ID
应该没问题。
另请注意,不需要双括号,如果路径变量包含特殊字符,双引号总是一个好主意,因此您可以编写
read1_array="$input_reads/${read1[$SLURM_ARRAY_TASK_ID]}"
推荐阅读
- c# - 在 C# 上尝试通过 powershell 安装打印机时遇到问题
- sql - 对于具有相同 A、B、C 值的行,如何在给定时间范围内仅选择“最早”行(由 D 列指定)?
- c# - 单元测试 Smtpclient 模拟发送方法
- c# - 数据源是 VB.net 中的无效类型
- php - 在 Laravel 中选择未进入控制器 $request 的数据
- amazon-s3 - 可以设置一个 minio 存储桶,以便存储的对象是不可变的和非版本化的吗?
- docker - Docker 在构建层(没有构建缓存)时可以忽略像 {a,m,c} 次这样的文件元数据吗?
- c++ - 张量线性化问题(C++ 向量)
- sql - 使用 SELECT 语句的结果添加新列
- javascript - Mongoose 使用带有函数 find() 的变量作为模型: