python 分析单细胞数据教程 scanpy---初探

本文介绍使用Python的Scanpy库分析单细胞RNA测序数据的过程。涵盖了数据预处理、主成分分析、聚类分析及标记基因鉴定等内容。

python 分析单细胞数据 scanpy

数据下载

# !mkdir data
# !wget http://cf.10xgenomics.com/samples/cell-exp/1.1.0/pbmc3k/pbmc3k_filtered_gene_bc_matrices.tar.gz -O data/pbmc3k_filtered_gene_bc_matrices.tar.gz
# !cd data; tar -xzf pbmc3k_filtered_gene_bc_matrices.tar.gz
# !mkdir write

流程分析

函数解释:
Preprocessing: pp
Tools: tl
Plotting: pl
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 18 14:15:49 2021

@author: dujidan
"""


import os
import numpy as np
import pandas as pd
import scanpy as sc


sc.settings.verbosity = 3             # verbosity: errors (0), warnings (1), info (2), hints (3)
sc.logging.print_header()
sc.settings.set_figure_params(dpi=80, facecolor='white')

results_file = 'write/pbmc3k.h5ad'  # the file that will store the analysis results


adata = sc.read_10x_mtx(
    './data/filtered_gene_bc_matrices/hg19/',  # the directory with the `.mtx` file
    var_names='gene_symbols',                # use gene symbols for the variable names (variables-axis index)
    cache=True)
adata.var_names_make_unique()  # this is unnecessary if using `var_names='gene_ids'` in `sc.read_10x_mtx`
adata
'''
Step1, 数据预处理
'''
# =============================================================================
# Preprocessing
# =============================================================================
# 查看占比最高的 20 个 gene
sc.pl.highest_expr_genes(adata, n_top=20, )
# Basic filtering
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)

# 线粒体的量是质控的一个重要标准,如果线粒体比例很高,表示细胞质中的 RNA 流失严重。(线粒体较大,更不易流出细胞膜)
adata.var['mt'] = adata.var_names.str.startswith('MT-')  # annotate the group of mitochondrial genes as 'mt'
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], percent_top=None, log1p=False, inplace=True)

# 计算质量的小提琴图。
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'],  # ['n_genes', 'n_counts', 'percent_mito']
             jitter=0.4, multi_panel=True)

# 做一个散点图,也可以直观地显示出一些异常分布的数据点
sc.pl.scatter(adata, x='total_counts', y='pct_counts_mt')
sc
以下是一些可用于分析单细胞Cut - Tag数据Python模块: #### Scanpy `Scanpy`是一个强大的单细胞RNA测序数据分析工具,虽然它主要侧重于RNA数据,但在单细胞Cut - Tag数据的处理中也有一定的应用。它可以进行数据的基本处理、降维、聚类等操作。以下是一个简单示例: ```python import scanpy as sc # 读取数据,假设数据为矩阵形式 adata = sc.AnnData(data_matrix) # 进行PCA降维 sc.tl.pca(adata) # 进行聚类 sc.pp.neighbors(adata) sc.tl.leiden(adata) ``` #### Scikit - learn `Scikit - learn`是一个通用的机器学习库,可用于单细胞Cut - Tag数据的降维、聚类和分类等任务。例如,使用PCA进行降维: ```python from sklearn.decomposition import PCA import numpy as np # 假设data是单细胞Cut - Tag数据矩阵 data = np.random.rand(100, 50) pca = PCA(n_components=2) pca_result = pca.fit_transform(data) ``` #### Seaborn和Matplotlib `Seaborn`和`Matplotlib`是Python中常用的可视化库,可用于展示单细胞Cut - Tag数据分析结果,如降维后的散点图、聚类结果的热图等。 ```python import seaborn as sns import matplotlib.pyplot as plt # 绘制PCA降维后的散点图 sns.scatterplot(x=pca_result[:, 0], y=pca_result[:, 1]) plt.show() ``` #### Pybedtools `Pybedtools`可以用于处理基因组区间数据,在单细胞Cut - Tag数据中,可能会涉及到基因组区域的操作,如重叠分析等。 ```python import pybedtools # 创建两个BedTool对象 bed1 = pybedtools.BedTool('file1.bed') bed2 = pybedtools.BedTool('file2.bed') # 进行重叠分析 intersection = bed1.intersect(bed2) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值