美文网首页单细胞转录组
STAR如何搞定所有文库类型的scRNA-seq定量

STAR如何搞定所有文库类型的scRNA-seq定量

作者: 生信云笔记 | 来源:发表于2024-03-08 16:31 被阅读0次

  STARversion2.7开始支持对scRNA-seq的定量,随着版本的升级,从一开始只支持Droplet类型到现在可以涵盖几乎所有类型。下面内容以version2.9版本为基础来讲解。

  首先,定量前先要搞清楚scRNA-seq文库的类型,对应控制文库类型的参数为--soloType,目前市面上常见的几个建库方式如10xSmart-seqSTAR都有相应的参数来匹配。

10X (Drop-seq)

  标准的Drop-seq文库类型如10x,则soloType的参数设置为CB_UMI_Simple,再配合与BarcodeUMI相关的四个参数,代码示例如下:

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序列,第二个fastqBarcodeUMI序列,如10xread1里面为BarcodeUMI,所以此处的fastq顺序为Read2Read1

  如果想让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文件不仅包含BarcodeUMI序列,还有cDNA序列。这时,还需要额外一些参数来对应调整,这类情况比较少见,这里就不详细介绍了,知道STAR也可以应对即可,如果真的需要可以去查阅官方文档。

Smart-seq

  Smart-seq跟普通的bulk RNA类似,每一个细胞的fastq都是独立的,所以没有BarcodeUMI,需要设置一些其他参数来适应。为了方便完成所有细胞的定量,可以事先准备一个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,还能应对一些个性化的文库方案。其实,单细胞文库的复杂本质上是由于BarcodeUMI的加入。为了应对复杂的BarcodeUMI情况,可以将参数soloType的值修改为CB_UMI_Complex,这样就会启用一些配套的参数来寻找细胞对应的BarcodeUMI,由此完成定量。

  其中,涉及到两个很重要的参数soloCBpositionsoloUMIposition,这两个参数的值规则一致且相当灵活,参数值的形式为startAnchor_startPosition_endAnchor_endPosition,搞明白了参数值的意义,基本上就可以搞定所有Drop-seq类型文库的定量了。

  如此,BarcodeUMI序列就可以用四个值来确定,分别为startAnchorstartPositionendAnchorendPosition。其中startAnchorstartPosition确定序列的起始位置,startPosition为相对startAnchor的位置;endAnchorendPosition确定序列的结束位置,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代表的含义就是:startAnchorendAnchor值都为0,即分别以read的起始位置做为Barcode的起始和结束的AnchorstartPosition的值为0,也就是以startAnchor的位置为起点,也即read的起始位置;endPosition值为7,即endAnchor后面的第7位为结束。所以,也就是说Barcode1read序列的前8个碱基。

  此外,还可以应对更复杂一点的情况,比如Barcode1的长度是不确定的,此时就可以利用Adapter作为结束的Anchor来确定序列,代码示例如下:

--soloCBposition  0_0_2_-1

  endAnchor值为2,即以Adapter的起点作为Barcode1的结束AnchorendPosition值为-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的顺序保持一致。为什么说这个是万能公式?此时大家应该可以想象到,如上面的文库示意图,若没有Barcode1Adapter的话就是普通的Drop-seq类型,与10x文库一致。注意,此时fastq的输入顺序还是与上面提到的规则一致。

其他事项

  最后,补充一点,如果后续需要使用bam文件做一些其他分析,有可能会使用到一些额外的属性如CBUB属性,最好在定量时就添加一个参数,在bam里面生成这些属性,如下所示:

--outSAMattributes CB UB

  STAR做为分析转录组的知名软件,功能十分强大,这从软件惊人的参数数量上也可以体现出来。大部分参数都可以根据软件的帮助文档了解其用途,但有些参数理解起来还是有些吃力,比如单细胞定量复杂模式下的soloCBposition,对于该参数的理解得感谢办公室小伙伴的帮助。至此,用STAR就可以轻松搞定所有类型的scRNA-seq定量了。更多帮助见官方文档。

相关文章

网友评论

    本文标题:STAR如何搞定所有文库类型的scRNA-seq定量

    本文链接:https://www.haomeiwen.com/subject/znukzdtx.html