基于10X平台的scRNA-seq数据准备

本文介绍如何从GEO数据库下载单细胞RNA测序数据,并使用多种工具进行解压、压缩及重命名等预处理步骤,以适配cellranger软件的输入要求。

前言

本文记录了单细胞分析之前的数据准备过程,单细胞数据偏大,可能会耗时。


一、数据下载

首先,在GEO上找到自己需要的单细胞数据。利用 爬虫 提取数据对应的SRR号,然后通过 SRAToolkit 工具下载,单发现该工具下载速度太慢,所以用 aria2 下载。

爬虫 代码详见通过爬虫在GEO数据库上获取对应SRR号

SRAToolkit 代码如下:

prefetch SRR号

 aria2 代码如下:

aria2c -x16 -s16 -j16 --piece-length="16M" --min-split-size="16M" --dir="输出路径" --input-file="路径/downloadlink.txt"

 downloadlink.txt内容为SRR下载链接

二、数据处理

1.解压(sra到fastq)

通过 aria2 下载好的SRR文件是没有.sra后缀的,需要自己补全。sra文件需要解压变成fastq文件,SRAToolkit 里自带解压的工具 fastq-dump,fasterq-dump,解压速度太慢,推荐 pfastq-dump。代码如下:

安装路径/pfastq-dump/bin/pfastq-dump --threads 线程数 --split-3 --outdir 输出路径 存放sra路径/SRRxxxxxx.sra

 对于一个你不知道到底是单端还是双端的SRA文件,一律用--split-3。

2.压缩(fastq到fastq.gz)

普通的压缩命令为gzip,但是单线程进行,速度较慢,推荐用 pigz 多线程进行,节省时间。

pigz -p 线程数 filename
file1="/home/data/fastq.txt"
line=`cat "$file1" |wc -l`
for((i=1;i<="$line"+1;i++))
do
file=$(awk -v vi=$i 'NR==vi{print $1}' "$file1")
pigz -p 96 $file
done

3.修改fastq名(符合cellranger输入)

每个SRR文件会变成解压出三个文件,这三个文件10X官网文档有说明

Cellranger count 的fastq输入文件格式必须要求格式如下:

#[Sample Name]S1_L00[Lane Number][Read Type]_001.fastq.gz
#Where Read Type is one of:
#I1: Sample index read (optional)
#R1: Read 1(barcode+UMI)
#R2: Read 2(转录本reads)
#V2 版本: 26bp + 98bp (16bp 10XBC + 10bp UMI  + 98bp read2) V3 版本: 28bp + 91bp (16bp 10XBC + 12bp UMI + 91bp read2) 

接下来就按照10X的标准去对文件进行改名,在这之前可以查看fastq里序列长度,确定R1,R2

zless -SN SRR21437900_1.fastq.gz | head
cat 构建的fastq.gz的文件名.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

 大多数解压后是只有R1,R2两个文件,处理结果同上。


总结

到这里数据准备工作完毕,可以进行将数据输入到cellranger中进行下一步处理。

### 使用Python进行单细胞RNA测序(scRNA-seq)数据分析 在处理单细胞RNA测序数据时,每个细胞被视作一个独立样本。然而,原始表达矩阵不可直接用于下游分析,因为存在由系统误差和技术噪声引起的偏差,这些因素使得不同细胞间的表达水平难以比较[^1]。 为了有效管理这些问题并执行scRNA-seq数据分析工作流,可以采用多种基于Python的工具和库来完成这一过程。以下是几个关键步骤: #### 数据预处理 首先需要加载和清理数据集。这通常涉及去除低质量细胞以及过滤掉那些具有异常高水平基因计数或者线粒体比例过高的细胞。Scikit-learn 和 Scanpy 是两个广泛使用的包,它们提供了丰富的功能来进行此类操作。 ```python import scanpy as sc adata = sc.read_10x_h5('filtered_gene_bc_matrices.h5') # 加载数据 sc.pp.filter_cells(adata, min_genes=200) # 过滤细胞 sc.pp.normalize_total(adata, target_sum=1e4) # 归一化 sc.pp.log1p(adata) # 对数值转换 ``` #### 质量控制与标准化 针对因实验条件造成的变异问题,如文库大小变化(Library Size Variation),可以通过应用合适的归一化方法解决这个问题。Scanpy 提供了几种不同的策略实现这一点,包括总和缩放(Total Count Normalization)[^3]和其他高级选项。 #### 维度约减与聚类 接下来是对降维后的特征空间中的细胞群体结构建模。t-SNE、UMAP等算法可以帮助可视化高维度生物分子特性,并识别潜在亚群。Seurat项目也提供了一套完整的解决方案支持这类任务;不过这里继续以Scanpy为例展示具体做法: ```python sc.tl.pca(adata, svd_solver='arpack') sc.pl.pca_variance_ratio(adata, log=True) sc.pp.neighbors(adata, n_neighbors=10, use_rep='X_pca') sc.tl.umap(adata) sc.pl.umap(adata, color=['CST3', 'NKG7']) ``` #### 差异表达分析 最后一步是检测特定条件下显著上调或下调的基因列表。通过调用`sc.tl.rank_genes_groups()`函数能够轻松获取到这样的信息,这对于理解生物学机制至关重要。 综上所述,利用上述提及的技术栈——尤其是Scanpy及其配套组件——可以在很大程度上简化scRNA-seq数据解析的过程,同时保持高度灵活性以便适应各种研究需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值