我的大脑根本不能处理for循环,所以任何帮助都将不胜感激。
背景:我正在尝试分析一些RNAseq数据,需要编写一个for循环来通过STAR读取所有成对结束的fastq文件。
这是我现在拥有的代码:
#! /bin/bash
#PBS -l walltime=24:00:00
#PBS -l nodes=1:ppn=12
#PBS -l mem=48
# ENVIRONMENT
module load gcc/6.2.0
module load STAR/2.6.1d
prj=/gpfs/data/elf-lab/RNA_Seq/RNA_trial/sab_sandbox/
# INPUTS
sample=SE-QS-19-FC01_S*
staridx=${prj}/reference/hg38_gencode28_STAR
fq1=${prj}/data/${sample}.R1_001.fastq
fq2=${prj}/data/${sample}.R2_001.fastq
rgline="ID:${sample} PU:${sample} SM:${sample} PL:ILLUMINA LB:${sample}"
# OUTPUTS
outprefix=${prj}/alignment/${sample}.
# COMMAND
STAR \
--runThreadN 12 \
--genomeDir $staridx \
--readFilesIn $fq1 $fq2 \
--outSAMtype BAM Unsorted \
--outSAMunmapped Within \
--outFileNamePrefix $outprefix \
--outSAMattrRGline $rgline \
--outSAMattributes NH HI AS nM NM \
--quantMode GeneCounts下面是我的文件的样子:
SE-QS-19-FC01_S33_R1_001.fastq.gz
SE-QS-19-FC01_S33_R2_001.fastq.gz
SE-QS-20-FC01_S34_R1_001.fastq.gz
SE-QS-20-FC01_S34_R2_001.fastq.gz我想要编写一个for循环,以便fq1和fq2将成为每次读取的每一对,但是不确定将for循环放置在何处,以便在STAR命令中使用fq1和fq2。提前谢谢你。
发布于 2020-09-04 11:08:27
在使用数组之前,我已经遍历了R1.fastq/R2.fastq文件,假设您有相同数量的R1/R2文件,例如
#! /bin/bash
#PBS -l walltime=24:00:00
#PBS -l nodes=1:ppn=12
#PBS -l mem=48
# ENVIRONMENT
module load gcc/6.2.0
module load STAR/2.6.1d
prj=/gpfs/data/elf-lab/RNA_Seq/RNA_trial/sab_sandbox/
staridx=${prj}/reference/hg38_gencode28_STAR
## Make arrays named fq1 and fq2 ##
fq1=(${prj}/data/*.R1_001.fastq)
fq2=(${prj}/data/*.R2_001.fastq)
# COMMAND
for ((i=0;i<"${#fq1[@]}";i++)); do
sample="${fq1[$i]%%_R*}"
rgline="ID:${sample} PU:${sample} SM:${sample} PL:ILLUMINA LB:${sample}"
outprefix=${prj}/alignment/"${sample}"
STAR \
--runThreadN 12 \
--genomeDir $staridx \
--readFilesIn "${fq1[$i]}" "${fq2[$i]}" \
--outSAMtype BAM Unsorted \
--outSAMunmapped Within \
--outFileNamePrefix $outprefix \
--outSAMattrRGline $rgline \
--outSAMattributes NH HI AS nM NM \
--quantMode GeneCounts
done如果您的文件是按https://www.biostars.org/p/243683/进行gzipped压缩的(如示例中所示),您可能还想添加--readFilesCommand gunzip -c。
在这里进一步解释这个c风格的for循环:https://linuxize.com/post/bash-for-loop/#the-c-style-bash-for-loop
希望这会有所帮助--有很多方法可以解决这个问题--如果你需要更多的帮助,在你的问题中添加更多的细节,例如,包括你使用过的没有工作的代码。
https://stackoverflow.com/questions/63734067
复制相似问题