# 5.2.2 CellRanger实战(二) 使用前注意事项

> 上次拿到了sra原始数据，接下来就要使用10X官方的软件cell ranger进行操作了，但使用前需要注意几个地方

#### 将SRA转为fastq

我们使用`fastq-dump`这款软件，它是sra-tool中的一个工具，使用conda安装即可

```
conda install -c bioconda sra-tools
```

关于这个软件，参数设置一般比较简单(虽然帮助文档写的不是那么好理解)

```
wkd=/home/project/single-cell/MCC
cd $wkd/raw/P2586-4
cat SRR_Acc_List-2586-4.txt |while read i
do
time fastq-dump --gzip --split-3 -A $i ${i}.sra && echo "** ${i}.sra to fastq done **"
done
```

其中主要使用了三个参数：

* `--gzip`将生成的结果fastq文件进行压缩
* `--split-3`其实有点复杂：首先它是分割的意思，`-3`实际上指的是分成3个文件，它诞生的时间比较早，是在1000 Genome的Phase1阶段产生的。

  <https://www.biostars.org/p/186741/>

  如果结果发现只有一个文件，说明数据不是双端(第三个文件太大会覆盖前两个)；

  如果结果有两个文件，说明是双端文件并且数据质量比较高(没有低质量的reads或者长度小于20bp的reads)；

  如果结果有三个文件，说明是双端文件，但是有的数据质量不高，存在trim的结果，第三个文件的名字一般是：`<srr_id>.fastq`， 而且文件也不大，基本可以忽略
* -A指定输出的文件名

**如果使用上面的参数`--split-3`，结果只有一个fq文件**

![](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030127.png)

利用cell ranger软件分析，一般需要两个输入文件，其中一个是测序reads，另一个是UMI+Barcode文件，那么只生成一个文件是不够的，因此可以换个参数

**使用另外一个参数`--split-files`来替代`--split-3` ，就可以生成三个文件**，其中第一个文件的所有序列都是8bp，第二个文件都是26bp，第三个文件都是91bp，初步判断，第三个文件是测序reads![image-20190920110138765](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030139.png)

> 这里可以对比下这两个参数输出的数据 ![image-20190920110146815](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030147.png)

但是前两个呢？哪一个是UMI+Barcode？

#### 如何解释生成的这三个fastq文件

单细胞转录组数据和普通的bulk转录组还是不太一样，bulk结果一般就是R1、R2，很容易区分；10X单细胞数据比较特殊，它的测序文库中包括index、barcode、UMI和测序reads。

文章使用的是10X Genomics 3' Chromium v2.0 平台，那么就看一下它的帮助手册（<https://assets.ctfassets.net/an68im79xiti/1CnKSfa7taoQwIEe0WaA4m/8635b2c9ee86c022e731b6fb2e13fed2/CG000080_10x_Technical_Note_Base_Composition_SC3_v2_RevB.pdf> ）

**先大概了解一下10X文库组成：**

![](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030154.png)

其中Read2：98那里的星号表示这个长度不是固定的，可以调整，比如文章中患者P2586-4的Read2长度就是98，而患者9245-3的Read2长度是91

**然后看看测序时每个run cycle做了什么事：**

> 利用illumina边合成变测序（sequencing by synthesis ,SBS），每一个cycle都是一个碱基，因此用cycle数可以表示测序长度

![](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030203.png)

首先，1-26个cycle就是测序得到了26个碱基，先是16个Barcode碱基，然后是10个UMI碱基；

然后，27-34这8个cycle得到了8个碱基，就是i7的sample index；

最后35-132个cycle得到了98个碱基，就是转录本reads

**看下Read1、i7 index、Read2的碱基分布：**

![](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030209.png)

可以看到转录本read前端有20多bp质量是存在波动的，因为5’端的前几个碱基为随机引物序列，存在一定的偏好性

**另外，index和barcode有什么区别，为什么用两个fq文件进行区分？**

找到10X官方给出的一个解答：<https://kb.10xgenomics.com/hc/en-us/articles/115002777072-How-do-I-demultiplex-by-sample-index-and-barcode->

* **i7 sample index（library barcode）**&#x662F;加到Illumina测序接头上的，保证多个测序文库可以在同一个flow-cell上或者同一个lane上进行混合测序(multiplexed)。当然可以自己指定index，但更多情况下会使用10X公司提供的index序列(bundled index sets)，针对不同项目使用的index也是不同的。不过共性就是：96孔板的每个孔中都加入了4种不同的index oligos混合(详见：<https://kb.10xgenomics.com/hc/en-us/articles/218168503-What-oligos-are-in-my-sample-index->)。![image-20190920110219008](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030219.png) 它的作用就是在CellRanger的`mkfastq` 功能中体现出来的，它自动识别样本index名称（例如：SA-GA-A1），将具有相同4种oligo的fq文件组合在一起，表示同一个样本。它保证了一个测序lane上可以容纳多个样本

  > 然后回过头，又看了看GEO的数据记录，发现的确记录了index信息，
  >
  > ![image-20190920110226731](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030227.png)
  >
  > 但是作者没有上传最原始的BCL文件，因此无法体验mkfastq的功能，但是官网有测试数据。这里了解大体的拆分流程就好
  >
  > ![image-20190920110232992](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030233.png)
* **10X Barcode（Cell barcode）** 是10X特有的，用来区分GEMs，也就是对细胞做了一个标记。一般在拆分混养测序数据（demultiplexing）这个过程后进行操作，当然这也很符合原文的操作

  ![image-20190920110239553](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030239.png)
* 在实验建库的过程中，barcoding过程(也就是GEM生成的过程)是早于indexing过程(它是PCR的最后阶段)，但是生信分析过程把这两个顺序颠倒过来了，我们需要先根据样本index，利用`mkfastq` 将reads进行demultiplex，分到各自的测序文库中去，然后对每个文库再处理barcodes信息

**UMI的作用呢？**

> 它是为处理PCR 扩增偏差而生

首先，不管是bulk RNA还是scRNA，都需要进行PCR扩增，但是不可避免有一些转录本会被扩增太多次，超过了真实表达量。当起始文库大小很小时（比如单细胞数据），就需要更多次的PCR过程，这个次数越多，引入的误差就越大

UMI就是Unique Molecular Identifier，由4-10个随机核苷酸组成，在mRNA反转录后，进入到文库中，每一个mRNA随机连上一个UMI，根据PCR结果可以计数不同的UMI，最终统计mRNA的数量。

![](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030257.png)

![](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030306.png)

UMI有几个要求：

* 不能是[均聚物](https://zh.wikipedia.org/zh-hans/%E5%9D%87%E8%81%9A%E7%89%A9) ，如AAAAAAAAAA
* 不能有N碱基
* 不能包含碱基质量低于10的碱基

**综上所述：raw fastq中包含以下信息**

> * **Library Barcode (Sample Index)** - Used to pool multiple samples on one sequencing lane
> * **Cell Barcode (10x Barcode)** – Used to identify the cell the read came from
> * **Unique Molecular Index (UMI)** – Used to identify reads that arise during PCR replication
> * **Sequencing Reads** – Used to identify the gene a read came from

**那么这三个文件的名称需要修改吗？**

> 我认为是需要修改的，因为命名太模糊，不容易指定文件进行下游分析。 然后看到官网给出的解答：<https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/2.0/using/fastq-input#wrongname> ，也的确说需要修改

![](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030315.png)

**那么怎么改？**

肯定要批量处理，就利用下载SRA的SRR ID好了

```
# 比如，将原来的SRR7692286_1.fastq.gz改成SRR7692286_S1_L001_I1_001.fastq.gz
# 依次类推，将原来_2的改成R1，将_3改成R2
cat  SRR_Acc_List-9245-3.txt | while read i ;do (mv ${i}_1*.gz ${i}_S1_L001_I1_001.fastq.gz;mv ${i}_2*.gz ${i}_S1_L001_R1_001.fastq.gz;mv ${i}_3*.gz ${i}_S1_L001_R2_001.fastq.gz);done
```

![](https://jieandze1314-1255603621.cos.ap-guangzhou.myqcloud.com/blog/2019-09-20-030323.png)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://jieandze1314.osca.top/05/5.1-cellranger-pian/5.1.2-cellranger-shi-zhan-er-shi-yong-qian-zhu-yi-shi-xiang.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
