- bedtools工具包bamtofastq转换工具
name=my_sample
cd /Lustre02/mrBug/00.project/19.LKR_36_lnc/01STAR_mapping/${name}
samtools sort -n Aligned.sortedByCoord.out.bam -o sort.bam
cd /Lustre02/mrBug/00.project/19.LKR_36_lnc
/Lustre01/husilu/software/bedtools2/bin/bedtools bamtofastq -i /Lustre02/mrBug/00.project/19.LKR_36_lnc/01STAR_mapping/${name}/sort.bam -fq ${name}_1.fq -fq2 ${name}_2.fq
gzip ${name}*fq
ps:首先要对bam文件按照name进行sort。命令写的不够漂亮,纯属个人习惯,两次cd到目标路径并在当前路径下运行产生文件输出,就是为了减少整个运行命令的长度,另外也没有加管道直接输出到gz文件中(便于理解)。
- picard中的SamToFastq转换工具
name=my_sample
cd /Lustre02/mrBug/00.project/19.LKR_36_lnc/01STAR_mapping/${name}
samtools sort -n Aligned.sortedByCoord.out.bam -o sort.bam
cd /Lustre02/mrBug/00.project/19.LKR_36_lnc
java -Xmx2g -jar /Lustre01/husilu/software/picard.jar SamToFastq \
I=/Lustre02/mrBug/00.project/19.LKR_36_lnc/01STAR_mapping/${name}/sort.bam \
FASTQ=${name}_1.fastq.gz \
SECOND_END_FASTQ=${name}_2.fastq.gz \
UNPAIRED_FASTQ=${name}_0.fastq.gz
ps:同上,先按照name进行sort,picard直接生成gz文件。
- samtools亦可进行bam文件(到fq)的转换
name=my_sample
cd /Lustre02/mrBug/00.project/19.LKR_36_lnc/01STAR_mapping/${name}
samtools sort -n Aligned.sortedByCoord.out.bam -o sort.bam
cd /Lustre02/mrBug/00.project/19.LKR_36_lnc/new
samtools fastq /Lustre02/mrBug/00.project/19.LKR_36_lnc/01STAR_mapping/${name}/sort.bam -N -v 0 -c 1 -1 ${name}_1.fastq.gz -2 ${name}_2.fastq.gz
ps: samtools中用到的参数:*-N always append /1 and /2 to the read name(即给reads加上“/1 or /2”标签)*;*-v INT default quality score if not given in file [1](即对read按找给定的质量进行过滤,这里设置为0不过滤,尽量保留原有的reads)*;其后的-1和-2则是指定输出。其他参数自行--help。
总结一下
此三种方法,某均已试过,参数如上。进行转换的目的则是问了弥补fq文件的“丢失”,不知列位是否也有遇到丢失测序数据的情况。但是这三种转换并未都能如期达到我的目的。首先,第一种方法会将multi mapped reads过多的解读并输出到fq中,导致数据比原先增大,同时也过多产生一些unmapped reads,数据整体质量下降,不适合用来弥补fq。其次,第二和第三种方法仅仅将bam文件中mapped reads进行还原,产生的fq再次进行基因组比对时,均达到100%的map率,显然也不合理;后来我check了bam文件,发现原来STAR产生的bam文件不包含(包含uni mapped 和 multi mapped)unmapped;这就是源头的问题了。这也提醒了我,以后在分析时候保证数据完整(mapped和unmapped都输出),即使文件有所丢失也能弥补。同时某在biostar查阅了相似的问题,确实如某所言呐。(链接就不贴了,自行检索涨知识,更深刻)