0%

FCA数据库中的原始reads文件之uBAM文件

本文介绍uBAM文件:

  • 什么是uBAM文件
  • uBAM vs fastq
  • uBAM转换为fastq

1.什么是uBAM文件?

uBAM文件,即unmapped or unaligned BAM文件,里面的reads是没有经过比对的,目的是为了储存原始的reads信息。

2.uBAM vs fastq

相比于fastq文件来说,uBAM文件储存的信息更加丰富。由于fastq文件的格式原因,很多信息都不能存放在fastq文件中。而BAM文件中只需要加上tag信息即可。以FlyCellAtlas中的原始BAM文件为例:

1
1	4	*	0	255	*	*	0	91	ATTGGCGACAGAT...CGGAATATATATATATGTATATAT	FFFFFFFFFFFFFFFFFFF...FFFFFFFFFFFFFFFFFF	on:Z:A00428:211:H77T5DSXY:3:1101:1090:1000@2:N:0:GCTCAACC	op:Z:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFF,FFFFFFFFF:FFFFFF	RX:Z:CATCTATTATAT	QX:Z:FFFFFFFFFF:F	CR:Z:TTGGGTAAGGAGGCAG	CY:Z:#FFFFFFFFFFFFFFF

RX tag即UMI信息,QX tag为UMI测序质量信息,CR tag为cell barcode序列,CY tag为cell barcode的测序质量信息。对于单细胞测序而言,一个uBAM文件即将R1(cell barcode + UMI)和R2(真正的reads)的fastq信息都包含在内。

3.uBAM转换为cellranger需要的fastq

cellranger处理的fastq文件,有两个reads文件和index文件,index文件不是必需的。R1文件中储存的是cell barcode+UMI序列相关信息,R2文件中储存的是真正的测序序列。对于R2文件来说,直接用samtools fastq即可完成转换。

1
samtools  fastq sample1.bam > fastq/sample1-1_S1_L001_R2_001.fastq.gz

对于R1文件而言,就有些复杂,我们可以首先将BAM文件中的UMI、barcode序列信息进行提取,然后再用samtools完成转换。这是一个笨方法,而且耗费资源,速度也比较慢,但是不需要写脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for i in sample1-1 sample1-2 sample1-3
do
samtools view $i.bam | awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6"\t"$7"\t"$8"\t"$9"\t"$16$14"\t"$17$15}' > $i.tmp; #提取序列基本信息和barcode(16列)和UMI(14列)信息,17、15列为相对应的质量信息
sed -i '1,$s/CR:Z://g' $i.tmp; #处理文件,去掉tag标签,只保留序列
sed -i '1,$s/CY:Z://g' $i.tmp;
sed -i '1,$s/RX:Z://g' $i.tmp;
sed -i '1,$s/QX:Z://g' $i.tmp;
cat header $i.tmp > $i.sam; #加上头文件
rm $i.tmp;
samtools view -@ 10 -bS $i.sam -o $i.R1.bam; #转换为bam文件,节省空间
rm $i.sam;
samtools fastq $i.R1.bam > fastq/$i_S1_L001_R1_001.fastq; #BAM转换为fastq(reads1)
samtools fastq $i.bam > fastq/$i_S1_L001_R2_001.fastq; #(reads2)
gzip fastq/$i.R1_001.fastq;
gzip fastq/$i.R2_001.fastq;
done

完成转换之后就可以走接下来的cellranger流程啦!