美文网首页单细胞转录组
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