STAR
从version2.7
开始支持对scRNA-seq
的定量,随着版本的升级,从一开始只支持Droplet
类型到现在可以涵盖几乎所有类型。下面内容以version2.9
版本为基础来讲解。
首先,定量前先要搞清楚scRNA-seq
文库的类型,对应控制文库类型的参数为--soloType
,目前市面上常见的几个建库方式如10x
、Smart-seq
,STAR
都有相应的参数来匹配。
10X (Drop-seq)
标准的Drop-seq
文库类型如10x
,则soloType
的参数设置为CB_UMI_Simple
,再配合与Barcode
和UMI
相关的四个参数,代码示例如下:
STAR --runThreadN 10 \
--genomeDir reference_data \
--readFilesIn Read2.fastq.gz Read1.fastq.gz \
--readFilesCommand zcat \
--outFileNamePrefix sample \
--soloType CB_UMI_Simple \
--soloCBstart 1 \
--soloCBlen 16 \
--soloUMIstart 17 \
--soloUMIlen 10 \
--soloCBwhitelist whitelist \
--soloFeatures GeneFull
上面的代码适用于10x V2
试剂盒,如果是10x V3
试剂盒则需要修改一下UMI
长度:--soloUMIlen 12
。这里需要特别注意fastq
的输入顺序,第一个fastq
必须是真实的cDNA
序列,第二个fastq
是Barcode
和UMI
序列,如10x
的read1
里面为Barcode
和UMI
,所以此处的fastq
顺序为Read2
、Read1
。
如果想让STAR
的结果与CellRanger 3.x.x
版本的结果吻合,可以在上面初始代码的基础上再追加一些代码:
--soloCBmatchWLtype 1MM_multi_Nbase_pseudocounts \
--soloUMIfiltering MultiGeneUMI_CR \
--soloUMIdedup 1MM_CR
或者,想让STAR
的结果与CellRanger >= 4.0
版本的结果吻合,可以在上面初始代码的基础上追加如下代码:
--clipAdapterType CellRanger4 \
--outFilterScoreMin 30 \
--soloCBmatchWLtype 1MM_multi_Nbase_pseudocounts \
--soloUMIfiltering MultiGeneUMI_CR \
--soloUMIdedup 1MM_CR
对于Drop-seq
类型来说,还有一些特殊情况,如可能某一个fastq
文件不仅包含Barcode
和UMI
序列,还有cDNA
序列。这时,还需要额外一些参数来对应调整,这类情况比较少见,这里就不详细介绍了,知道STAR
也可以应对即可,如果真的需要可以去查阅官方文档。
Smart-seq
Smart-seq
跟普通的bulk RNA
类似,每一个细胞的fastq
都是独立的,所以没有Barcode
和UMI
,需要设置一些其他参数来适应。为了方便完成所有细胞的定量,可以事先准备一个sample sheet
内容以制表符分隔,格式如下:
sample1_R1.fastq.gz sample1_R2.fastq.gz Cell-id1
sample2_R1.fastq.gz sample2_R2.fastq.gz Cell-id2
完整的示例代码如下:
STAR --runThreadN 10 \
--genomeDir reference_data \
--readFilesCommand zcat \
--outFileNamePrefix sample \
--soloType SmartSeq \
--readFilesManifest manifest.tsv \
--soloUMIdedup Exact \
--soloStrand Unstranded \
--soloFeatures GeneFull
Smart-seq
通常是非链特异性的文库,如果是链特异性的文库,可以相应地修改soloStrand
参数的值为Forward
或者Reverse
,默认为Forward
。
万能公式
为了应对更为复杂的建库方式,STAR
有一个复杂模式,不仅可以应对像10x
这样的Drop-seq
,还能应对一些个性化的文库方案。其实,单细胞文库的复杂本质上是由于Barcode
和UMI
的加入。为了应对复杂的Barcode
和UMI
情况,可以将参数soloType
的值修改为CB_UMI_Complex
,这样就会启用一些配套的参数来寻找细胞对应的Barcode
和UMI
,由此完成定量。
其中,涉及到两个很重要的参数soloCBposition
和soloUMIposition
,这两个参数的值规则一致且相当灵活,参数值的形式为startAnchor_startPosition_endAnchor_endPosition
,搞明白了参数值的意义,基本上就可以搞定所有Drop-seq
类型文库的定量了。
如此,Barcode
和UMI
序列就可以用四个值来确定,分别为startAnchor
、startPosition
、endAnchor
、endPosition
。其中startAnchor
和startPosition
确定序列的起始位置,startPosition
为相对startAnchor
的位置;endAnchor
和endPosition
确定序列的结束位置,endPosition
为相对endAnchor
的位置。例如startPosition
为2时,即startAnchor
的后面第二位为起始点,endPosition
同理。另外,Anchor
的类型分为0-3
四种情况,分别为0: read start
; 1: read end
; 2: adapter start
; 3: adapter end
。
所以,就可以用这四个值的组合来确定序列,需要注意的是,这些参数值都是0-based
,并且Adapter
可有可无,如果有且只能有一个,如果有需要使用参数soloAdapterSequence
来提供。
下面用一个具体的例子来说明,如上图展示了一种复杂的文库类型,其中read
包含了两个Barcode
,一个Adapter
,一个UMI
。例如Barcode1
长度为8bp
,那么,如下的代码为一种可以确定其序列的方法:
--soloCBposition 0_0_0_7
0_0_0_7
代表的含义就是:startAnchor
和endAnchor
值都为0,即分别以read
的起始位置做为Barcode
的起始和结束的Anchor
;startPosition
的值为0,也就是以startAnchor
的位置为起点,也即read
的起始位置;endPosition
值为7,即endAnchor
后面的第7位为结束。所以,也就是说Barcode1
为read
序列的前8个碱基。
此外,还可以应对更复杂一点的情况,比如Barcode1
的长度是不确定的,此时就可以利用Adapter
作为结束的Anchor
来确定序列,代码示例如下:
--soloCBposition 0_0_2_-1
endAnchor
值为2,即以Adapter
的起点作为Barcode1
的结束Anchor
;endPosition
值为-1,即Adapter
起点的前一位为结束。所以,Barcode1
序列为从read
起始位置开始到Adapter
起点的前一位结束。这样就实现了Barcode
序列长度不确定时的提取。
同理,通过参数soloUMIposition
以同样的方式来确定UMI
序列。下面给出一个完整版的代码示例:
STAR --runThreadN 10 \
--genomeDir reference_data \
--readFilesIn Read1.fastq.gz Read2.fastq.gz \
--readFilesCommand zcat \
--outFileNamePrefix sample \
--soloType CB_UMI_Complex \
--soloCBposition 0_0_0_7 3_1_3_8 \
--soloUMIposition 3_9_3_14 \
--soloAdapterSequence adapter_sequence \
--soloCBwhitelist whitelist \
--soloFeatures GeneFull
soloCBposition
参数可以提供多个值,与文库中Barcode
的顺序保持一致。为什么说这个是万能公式?此时大家应该可以想象到,如上面的文库示意图,若没有Barcode1
和Adapter
的话就是普通的Drop-seq
类型,与10x
文库一致。注意,此时fastq
的输入顺序还是与上面提到的规则一致。
其他事项
最后,补充一点,如果后续需要使用bam
文件做一些其他分析,有可能会使用到一些额外的属性如CB
、UB
属性,最好在定量时就添加一个参数,在bam
里面生成这些属性,如下所示:
--outSAMattributes CB UB
STAR
做为分析转录组的知名软件,功能十分强大,这从软件惊人的参数数量上也可以体现出来。大部分参数都可以根据软件的帮助文档了解其用途,但有些参数理解起来还是有些吃力,比如单细胞定量复杂模式下的soloCBposition
,对于该参数的理解得感谢办公室小伙伴的帮助。至此,用STAR
就可以轻松搞定所有类型的scRNA-seq
定量了。更多帮助见官方文档。
网友评论