合并fastq测序数据
不同泳道的同一个样品测序数据经过质量检查QC后是可以合并的。本例中文件命名情况如下:
示例文件名:83b_S156_L004_R1_001.fastq.gz
,其中83b_S156
是样品名,L004
是泳道,R1
是正向序列。
这时候只需要用这个小脚本即可:
ls *R1* | cut -d _ -f 1,2 | sort | uniq \ | while read id; do \ cat $id*R1*.fastq.gz > ../merged/$id.R1_001.fastq.gz; echo "Sample" $id "Merged"; done
注释
我这里只是取了R1的样品进行merge,所以ls只选取文件名中含有R1的文件;
cut
是将文件名以-d
后的参数_
进行分割,然后选取第1和第2个项(根据实际情况来)作为id
;
然后sort
进行排序,uniq
来去除重复;
最后用循环来合并所有的数据。
批量fastqc
这个就不用说了,就一行:
ls *fastq.gz | while read id ; do nohup fastqc $id & done
但是如果文件数量过多,且内存不足的话可能会出现错误,这时候运行目录下会出现形如hs_err_pid50531.log
的文件。
这种时候就需要限制运行的线程数量了:
ls *fastq.gz | xargs fastqc -P 32
其中-P
参数表示线程限制,这里是32线程,最好综合考虑内存和CPU的情况。
stringtie进行定量
ls *Aligned.sortedByCoord.out.bam | xargs -I bamfile -P 32 sh -c 'FILENAME=bamfile; stringtie -p 64 -G /ssd/gencode.v37.chr_patch_hapl_scaff.annotation.gtf -o /ssd/cleandata/EVA_Part2/${FILENAME::-69}.gtf bamfile'