【Scanpy高手进阶手册】:掌握这8个隐秘函数,分析效率提升3倍

T2Pdecoder:基于深度学习的转录组到蛋白质组智能预测模型实践指南 在生物信息学与多组学整合分析领域,深度学习技术正成为破解复杂生物数据关联的关键。其核心原理在于通过多层神经网络学习高维数据中的非线性映射关系,从而实现对未知样本的精准推断。这一技术的核心价值在于能够以数据驱动的方式,弥补不同组学数据层间的信息鸿沟,显著提升数据利用效率与科研洞察力。在功能基因组学、疾病标志物发现及药物靶点筛选等应用场景中,深度学习模型能够整合海量转录组数据,智能预测难以直接大规模测量的蛋白质表达谱。本文聚焦的T2Pdecoder模型,正是这一技术范式的典型代表,它通过构建从转录组到蛋白质组的 阅读详情

第一章:Scanpy单细胞分析的核心优势与应用场景

Scanpy 是基于 Python 的开源工具包,专为单细胞 RNA 测序(scRNA-seq)数据的分析而设计。它构建在 AnnData 数据结构之上,能够高效处理大规模稀疏矩阵,并与 PyData 生态(如 NumPy、Pandas、Scikit-learn)无缝集成,显著提升数据分析效率。

灵活且可扩展的分析流程

Scanpy 支持从原始计数矩阵到细胞聚类、轨迹推断和基因表达可视化的一站式分析流程。其模块化设计允许用户自由组合处理步骤,例如标准化、高变基因筛选、PCA 降维和 UMAP 可视化。
# 导入 Scanpy 并读取数据
import scanpy as sc

# 读取10x Genomics格式数据
adata = sc.read_10x_h5('filtered_feature_bc_matrix.h5')

# 数据预处理:过滤低质量细胞和基因
sc.pp.filter_cells(adata, min_genes=200)        # 每个细胞至少表达200个基因
sc.pp.filter_genes(adata, min_cells=3)          # 每个基因至少在3个细胞中表达

# 标准化与对数变换
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)

# 计算高变基因并进行 PCA 降维
sc.pp.highly_variable_genes(adata)
sc.tl.pca(adata)
sc.pl.pca(adata, color='n_genes_by_counts')  # 按基因数量着色

广泛的应用场景

Scanpy 被广泛应用于多种生物学研究中,包括:
  • 细胞类型鉴定与注释
  • 肿瘤微环境解析
  • 发育轨迹与伪时间推断
  • 跨样本差异表达分析
  • 空间转录组数据整合
功能对应方法典型用途
降维与可视化UMAP, t-SNE细胞簇展示
聚类Louvain, Leiden识别新细胞亚群
轨迹分析Diffusion Map, PAGA发育路径重建
graph LR A[原始计数矩阵] --> B[质量控制] B --> C[标准化与特征选择] C --> D[降维 PCA] D --> E[邻域图构建] E --> F[聚类分析] F --> G[UMAP可视化] G --> H[标记基因识别]

第二章:数据预处理中的隐秘高效函数

2.1 理论解析:高变基因筛选背后的数学逻辑

在单细胞RNA测序分析中,高变基因(Highly Variable Genes, HVGs)的筛选是降维与聚类前的关键步骤。其核心目标是从数千个基因中识别出表达波动显著大于技术噪声的基因,从而保留生物学意义显著的变异。
方差分解模型
HVG筛选通常基于“均值-方差”关系建模。基因表达量的总方差可分解为技术噪声与生物变异两部分:
# 假设 expr_matrix 为基因表达矩阵 (genes × cells)
mean_expr = np.mean(expr_matrix, axis=1)
var_total = np.var(expr_matrix, axis=1)
var_tech = f(mean_expr)  # 拟合技术噪声曲线,如局部回归
var_bio = var_total - var_tech
上述代码计算每个基因的平均表达量与总方差,并通过拟合均值依赖的技术方差来估计生物方差。仅当 var_bio 显著高于零时,基因被判定为高变基因。
筛选策略对比
  • 基于离散度:选择偏离均值-方差趋势的基因
  • Top-N策略:保留生物方差最大的前N个基因
  • 统计阈值法:设定 var_bio 最小阈值

2.2 实践应用:使用 sc.pp.highly_variable_genes 提升特征选择效率

在单细胞RNA测序数据分析中,高变基因(Highly Variable Genes, HVGs)的选择是降维与聚类前的关键步骤。Scanpy 提供的 sc.pp.highly_variable_genes 函数能高效识别表达差异显著的基因,显著提升后续分析的信噪比。
基本用法与参数解析
sc.pp.highly_variable_genes(adata, min_mean=0.0125, max_mean=3, min_disp=0.5)
该代码基于基因的均值与离散度筛选高变基因。参数 min_mean 和 max_mean 限定基因平均表达量范围,避免低表达噪声;min_disp 确保筛选基因具有足够变异程度。
结果可视化与评估
筛选后可通过散点图观察基因分布:

横轴为log(mean),纵轴为log(dispersions),高变基因以不同颜色标出。

2.3 理论解析:批次效应校正的底层机制

批次效应源于实验条件、时间或操作人员差异,导致不同批次间数据分布偏移。为消除此类非生物性变异,需从统计与模型层面进行干预。
数据标准化与协变量调整
常用方法包括线性模型残差校正和ComBat算法。其中,ComBat通过估计批次均值与方差参数,对数据进行经验贝叶斯调整:

# ComBat 示例代码
library(sva)
combat_edata <- ComBat(dat = expression_matrix, 
                       batch = batch_vector, 
                       mod = model_matrix)
该过程首先拟合批次效应的先验分布,再利用后验估计对每个基因在各批次中进行均值-方差校准,保留生物学相关差异。
潜在因子建模
另一路径是引入隐变量(Latent Factors)解释未知协变量。SVA(Surrogate Variable Analysis)即基于此思想,通过奇异值分解识别并纳入潜在系统噪声因子,增强后续分析特异性。
  • 步骤一:拟合初始模型,提取残差
  • 步骤二:对残差执行SVD,获取主导变异方向
  • 步骤三:将前k个主成分作为协变量加入回归模型

2.4 实践应用:巧用 sc.pp.combat 实现无缝批次整合

在单细胞RNA测序数据分析中,批次效应是影响结果可靠性的关键干扰因素。Scanpy 提供的 sc.pp.combat 函数基于 COMBAT 算法,可有效校正不同实验批次带来的技术偏差,同时保留生物学差异。
基本使用方法
# 假设 adata.obs 中包含批次信息 'batch'
sc.pp.combat(adata, key='batch')
该代码会自动识别每一批次的表达模式,通过经验贝叶斯框架调整均值和方差,实现跨批次数据对齐。参数 key 指定用于分组的观测列名,支持多批次同时校正。
适用场景与注意事项
  • 适用于样本量较大、批次间重叠基因较多的数据集
  • 建议在校正前完成初步质控与高变基因筛选
  • 校正后需重新进行 PCA 或 UMAP 可视化以验证整合效果

2.5 综合实战:构建可复用的预处理流水线

设计模块化结构
为提升数据预处理的效率与一致性,需将清洗、转换、归一化等步骤封装为独立模块。通过函数或类实现各环节,便于在不同项目中复用。
代码实现示例
def create_preprocessing_pipeline():
    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import StandardScaler
    from sklearn.impute import SimpleImputer

    return Pipeline([
        ('imputer', SimpleImputer(strategy='mean')),   # 填补缺失值
        ('scaler', StandardScaler())                  # 标准化特征
    ])
该流水线首先使用均值填补数值型缺失字段,随后对特征进行Z-score标准化,确保模型输入的一致性。
优势与扩展性
  • 支持链式调用,简化训练流程
  • 可集成自定义转换器(如LogTransformer)
  • 兼容GridSearchCV,便于超参优化

第三章:降维与聚类阶段的关键技巧

3.1 理论解析:UMAP与t-SNE的适用边界

降维方法的核心差异
t-SNE 擅长保留局部结构,适合可视化高维数据的聚类形态,但对全局结构保持较弱。UMAP 在保持局部邻域的同时,更优地捕捉全局拓扑,适用于更大规模数据。
性能与可扩展性对比
  • t-SNE 时间复杂度为 O(N²),难以扩展至大规模数据集
  • UMAP 基于图优化,复杂度接近 O(N log N),支持增量学习和更高维度输入
import umap
reducer = umap.UMAP(n_neighbors=15, min_dist=0.1, metric='euclidean')
embedding = reducer.fit_transform(X)
该代码配置 UMAP 使用15个近邻控制局部精度,min_dist 调节簇间分离程度,适用于平衡聚集与分散的场景。

3.2 实践应用:通过 sc.tl.umap 自定义邻域结构优化可视化

在单细胞数据分析中,UMAP 可视化效果高度依赖于输入的邻域结构。Scanpy 提供了 sc.tl.umap 接口,允许用户基于自定义的邻接矩阵优化降维结果。
调整邻域图以增强聚类分辨率
通过修改 sc.pp.neighbors 中的 n_neighbors 参数,可控制局部与全局结构的权衡。较小的值强调局部细节,适合发现稀有细胞类型。
# 构建高分辨率邻域图
sc.pp.neighbors(adata, n_neighbors=15, use_rep='X_pca')
sc.tl.umap(adata)
上述代码首先构建 KNN 图,其中每个细胞连接最近的 15 个邻居,随后调用 UMAP 算法进行二维嵌入。参数 use_rep 指定使用 PCA 降维后的空间计算相似性,提升稳定性。
可视化对比策略
  • 默认参数(n_neighbors=10)适用于整体结构观察
  • 增大至 30 可平滑批次效应
  • 减小至 5 更易分离紧凑簇

3.3 综合实战:利用 sc.tl.leiden 实现分辨率动态调参

在单细胞聚类分析中,Leiden算法通过调节分辨率参数控制簇的粒度。过高易过分割,过低则欠分割。
动态调参策略
通过扫描多个分辨率值,观察聚类数量变化趋势,选择拐点作为最优参数:
import scanpy as sc
resolutions = [0.5, 1.0, 1.5, 2.0]
results = {}
for res in resolutions:
    sc.tl.leiden(adata, resolution=res)
    n_clusters = adata.obs['leiden'].nunique()
    results[res] = n_clusters
上述代码遍历不同分辨率,resolution控制社区划分严格度,值越大簇越多。建议结合UMAP可视化与生物学意义综合判断最佳值。
结果对比
分辨率簇数量
0.55
1.09
1.514
2.021

第四章:细胞注释与功能分析进阶策略

4.1 理论解析:标记基因识别的统计学基础

在单细胞转录组分析中,标记基因的识别依赖于统计学方法对基因表达差异的精准刻画。常用指标包括对数倍数变化(log fold-change)和假发现率(FDR)校正后的 p 值。
核心统计指标
  • Log Fold-Change (logFC):衡量基因在目标群体中的表达上调或下调程度;通常设定阈值 |logFC| > 0.25。
  • P-value 与 FDR 校正:通过多重检验校正控制假阳性率,FDR < 0.05 被视为显著。
典型分析代码示例

# 使用Seurat进行标记基因检测
FindMarkers(object, ident.1 = "ClusterA", ident.2 = "ClusterB", 
            logfc.threshold = 0.25, test.use = "wilcox", 
            min.pct = 0.1)
该函数调用采用Wilcoxon秩和检验比较两群细胞间基因表达差异,logfc.threshold 过滤低幅度变化,min.pct 要求至少10%细胞检出表达,提升结果可靠性。

4.2 实践应用:借助 sc.tl.rank_genes_groups 发现新型marker

在单细胞转录组分析中,识别不同细胞簇的特异性标记基因是功能注释的关键步骤。Scanpy 提供的 sc.tl.rank_genes_groups 方法基于统计检验(如 t-test、wilcoxon)量化基因在簇间的表达差异,辅助发现潜在 marker。
核心代码实现

sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon', corr_method='benjamini-hochberg')
该代码以 Leiden 聚类结果为分组依据,采用 Wilcoxon 秩和检验评估每组中高表达基因的显著性。参数 corr_method 指定多重假设检验校正方式,提升结果可靠性。
结果解析与展示
  • method 可选 't-test' 或 'logreg',适用于不同分布假设
  • 输出结果存储于 adata.uns['rank_genes_groups'],支持后续可视化提取
  • 结合 sc.pl.rank_genes_groups_heatmap 可直观展示 top marker 表达模式

4.3 理论解析:基因集富集分析在单细胞层面的适配性

传统GSEA与单细胞数据的冲突
经典基因集富集分析(GSEA)依赖于批量RNA-seq的均值表达谱,而单细胞数据具有高稀疏性、技术噪声和细胞异质性。直接应用会放大假阳性信号。
适配策略演进
为提升兼容性,需引入以下改进:
  • 使用伪 bulk 聚合表达以逼近群体均值
  • 采用 rank-based 方法增强对 dropout 的鲁棒性
  • 结合细胞类型注释进行分层富集

# 单细胞GSEA典型流程(基于AUCell)
library(AUCell)
aucell <- AUCell_buildRankings(log2_counts, numCores = 4)
aucell_scores <- AUCell_calcAUC(geneSets, aucell, plotStats = FALSE)
该代码段构建基因表达排序并计算AUC值。AUCell通过细胞内基因排名避免绝对表达量影响,适用于稀疏矩阵,其输出反映基因集在单个细胞中的活跃程度。
评估维度对比
维度批量GSEA单细胞GSEA
输入单位样本细胞
表达稳定性高低(dropout普遍)
富集粒度组织级细胞级

4.4 综合实战:结合 sc.tl.score_genes 进行功能状态评分

在单细胞转录组分析中,评估细胞的功能状态对理解其生物学行为至关重要。Scanpy 提供的 `sc.tl.score_genes` 方法能够基于一组给定的基因列表,为每个细胞计算功能活性得分。
功能评分原理
该方法通过比较目标基因集在细胞中的表达水平与对照基因集的差异,得出一个标准化分数,反映特定通路或功能的状态活跃程度。
代码实现

# 定义与炎症反应相关的基因列表
inflammatory_genes = ['IL1B', 'TNF', 'IL6']

# 计算每个细胞的炎症评分
sc.tl.score_genes(adata, gene_list=inflammatory_genes, score_name='inflammatory_score')
参数说明:`gene_list` 指定功能相关基因集合;`score_name` 为结果在 `.obs` 中的字段名;默认使用随机基因作为背景进行标准化。
结果应用
评分结果可直接用于后续可视化,如 UMAP 着色:
  • 识别高炎症响应亚群
  • 与其他表型联合分析,揭示功能异质性

第五章:从数据分析到生物学洞见的跃迁路径

整合多组学数据揭示疾病机制
现代生物信息学的核心挑战之一是如何将基因组、转录组与表观组数据整合,以识别潜在致病通路。例如,在癌症研究中,研究人员常结合TCGA数据库中的mRNA表达谱与DNA甲基化数据,通过差异分析筛选出显著失调的基因。
  • 使用DESeq2进行转录组差异表达分析
  • 应用limma包处理甲基化芯片数据
  • 通过WGCNA构建共表达网络
功能富集驱动生物学解释
获得候选基因列表后,需借助GO与KEGG通路富集提升解释力。以下Python代码片段展示了如何利用gseapy进行通路分析:

import gseapy as gp

# 候选基因列表
gene_list = ['TP53', 'BRCA1', 'MYC', 'EGFR']

# 执行KEGG通路富集
enr = gp.enrichr(gene_list=gene_list,
                gene_sets='KEGG_2021_Human',
                organism='Human')
print(enr.results.head())
可视化支持假设生成
工具用途输出格式
Cytoscape蛋白互作网络可视化交互式图谱
ggplot2差异表达热图绘制静态图像
流程图:原始测序数据 → 质控与比对 → 差异分析 → 富集测试 → 网络建模 → 实验验证
在阿尔茨海默病研究中,研究人员通过单细胞RNA-seq发现小胶质细胞中TREM2通路异常激活,并结合ATAC-seq确认其调控区域开放性增加,从而提出神经炎症的新机制。
Seurat 单细胞转录组测序数据分析教程(三)——python(scanpy) 文章参考至,做了一个更详细的解读。本教程探讨了 scanpy 的可视化可能性,分为三个部分:嵌入的散点图(例如 UMAP、t-SNE)使用已知标记基因鉴定簇差异表达基因的可视化在本教程中,我们将使用来自 10x 的数据集,其中包含来自PBMC的 68k 个细胞。Scanpy 在其分布中包括该数据集的简化样本,该数据集仅包含 700 个细胞和 765 个高度可变的基因。该数据集已经过预处理和 UMAP 计算。在本教程中,我们还将使用以下文献标记:B细胞:CD79A、MS4A1。 阅读详情

相关推荐

单细胞测序最好的教程(一):质量控制

目前,国内对于单细胞测序分析的教程五花八门,百花齐放,一个合适且准确的pipeline对于分析是很有价值的。2023年在 Nat Rev Genet上发表的一篇论文Best practices for single-cell analysis across modalities,详细介绍了单细胞最佳实践的流程。但是,其在国内的推广有两个不足:(一)全英文教程;(二)R语言与Python混合。二者限制了其在国内的推广,故笔者在原教程的基础上,结合自身的单细胞测序分析经验。

weixin_43682390的博客 3032

python小白入门单细胞分析scanpy

Scanpy 和 Seurat 基本上完全一样,Scanpy 构建的对象叫做 AnnData 对象,他的数据存储是以4 个模块存储

生信小博士的博客 6677

2025.03.13【读书报告】|Scanpy安装与使用

Scanpy 是一款基于 Python 的可扩展工具包,专为分析单细胞基因表达数据而设计。它提供了一套全面的工具,涵盖了单细胞数据分析的各个关键步骤,包括质量控制、标准化、基因过滤、变量基因选择、降维、聚类、差异表达分析、细胞排序、模拟和可视化。自 2017 年发布以来,Scanpy 凭借其强大的功能和易用性,在单细胞研究领域获得了广泛应用。截至目前,该工具已发表 2 篇正式论文和 2 篇预印本,总引用次数超过 6000 次,充分证明了其在学术界的活跃程度和影响力。

2840

最全的Scanpy教程笔记 Preprocessing and clustering 3k PBMCs

代码来源scanpy的官方教程代码的解释来源web本人也在学习scanpy分析单细胞数据,但是网络上对于scanpy的流程并没有太多详细的解释。这些是我上网搜索的相关解释,仅供参考,不喜勿视。

weixin_43314378的博客 3654

scanpy:Python中的单细胞分析。 扩展到> 1M个单元

scanpy:Python中的单细胞分析。 扩展到> 1M个单元

优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战

本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。

carrot的博客 257

scanpy画图

###/data/admin/yyp/yypold/scrna/HumanCellAtlasPreviewDatasets import numpy as np import pandas as pd import scanpy as sc 可以直接读取10Xgenomics的.h5格式数据 adata = sc.read_10x_h5("/data/admin/yyp/yypold/scrna/...

qq_39306047的博客 1619

CANdelaStudio实战:如何用19服务快速编辑DTC快照数据(附Excel模板)

本文详细介绍了在CANdelaStudio中利用19服务高效编辑DTC快照数据的进阶技巧。通过导出DTC池至Excel进行批量编辑,结合‘Copy from DTC Pool’功能实现配置复用,并分享了构建自定义Excel模板与字段映射的实用方法,帮助工程师将繁琐的手动配置转化为工程化的批量处理,大幅提升诊断数据库开发效率。

weixin_29230773的博客 191

生信小白学单细胞转录组(sc-RNA)测序数据分析——python语言

单细胞转录组基本分析流程——python语言

qq_46397705的博客 1984

ESWA投稿全流程避坑指南:从LaTeX模板到审稿状态查询(附最新资源链接)

本文提供了一份详尽的ESWA期刊投稿全流程指南,涵盖从LaTeX模板深度适配、Cover Letter撰写,到Editorial Manager系统操作、审稿状态解析等关键环节。重点解析了投稿准备中的常见“雷区”与文件合规性要求,并分享了收到审稿意见后的高效修改与回复策略,旨在帮助研究者规避流程陷阱,提升投稿效率与成功率。

9o8p7i6u5y的博客 838

MR2数据集实战:5步搞定多模态谣言检测模型训练(附完整代码)

本文详细介绍了如何使用MR2多模态数据集构建高精度谣言检测系统,涵盖环境配置、数据准备、多模态特征工程、模型架构设计、训练调优及部署优化等5个关键步骤。通过双线性融合技术处理文本、图像和网页三模态数据,解决特征对齐和模态冲突等工程难题,并提供完整代码实现和性能优化方案。

weixin_42657024的博客 239

基于python使用scanpy分析单细胞转录组数据

基于python使用scanpy分析单细胞转录组数据

探序基因的博客 1506

手把手教你用Nangate 45nm开源工艺库搞定数字电路仿真(附FreePDK资源)

本文详细介绍了如何使用Nangate 45nm开源工艺库进行数字电路仿真,包括环境搭建、关键文件解析、仿真环境配置及低功耗设计等实战内容。特别推荐FreePDK资源,帮助读者快速掌握从理论到实践的全流程操作,适用于学术研究和小规模数字电路设计。

weixin_30352645的博客 488

python单细胞分析scanp,小白入门必看!

基本概念介绍。

weixin_68789096的博客 2279

神州数码OSPF实战配置详解(手把手教学)

本文提供神州数码设备上OSPF基础配置的详细实战教程。通过搭建典型的两台三层交换机互联实验环境,手把手演示了VLAN创建、接口IP配置、OSPF进程启动、Router-ID设置及网络宣告等核心步骤,并分享了邻居状态验证、路由检查及常见排错方法,帮助网络工程师快速掌握神州数码OSPF的配置要点与操作技巧。

weixin_29210727的博客 79

SICK LMS111激光雷达数据解析实战:从原始帧到三维点云的完整流程

本文详细解析了SICK LMS111激光雷达从原始数据帧到三维点云的完整处理流程,包括数据帧结构解析、坐标转换、点云可视化及性能优化技巧。通过实战代码示例,展示了如何高效处理激光雷达数据,并应用于动态物体检测、地面分割等工业场景,为AGV和服务机器人开发者提供实用指南。

garlic的博客 769

单细胞分析的 Python 包 Scanpy(图文详解)

文章目录一、安装二、使用1、准备工作2、预处理过滤低质量细胞样本3、检测特异性基因4、主成分分析(Principal component analysis)5、领域图,聚类图(Neighborhood graph)6、检索标记基因7、保存数据8、番外 一、安装 如果没有conda 基础,参考: Conda 安装使用图文详解(2021版) pip install scanpy conda install -y -c conda-forge leidenalg 二、使用 1、准备工作 # 载入包 import

Baimoc 4万+

GPS天线结构、原理、测试

【有源陶瓷天线构成】GPS天线是由接收天线和前置放大器两个部件组成。GPS接收天线的作用,是将卫星来的无线电信号的电磁波能量变换成接收机电子器件可摄取应用的电流。绝大部分内置GPS天线为右旋极化陶瓷介质,其组成部分为:陶瓷天线、低噪音信号模块、线缆、[接头](h

数字世界 万物互联 2万+

scanpy: 空间转录组基因数据分析与可视化

本教程基于Scanpy展示10X空间转录组数据分析流程,包括数据读取、预处理、质控、可视化、聚类及差异分析。

weixin_45700352的博客 2523

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何使用UnInbox提升团队沟通效率:5个实用技巧

UnInbox是一款面向团队和专业人士的现代邮件工具,旨在替代过时的电子邮件技术和工具,作为hey.com、front.com、missiveapp.com等平台的优秀替代品。它通过现代化的设计和功能,帮助团队更高效地管理邮件沟通,减少信息延迟,提升协作效率。 ## 1. 利用空间分类功能实现邮件有序管理 📁 UnInbox提供了灵活的空间(Space)分类功能,允许团队根据项目、部门或客户

gitblog_00911的博客 777

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

单细胞测序笔记1:数据读取

我们先向R中安装如下包以确保准备工作的完成。

weixin_53104392的博客 7696

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

seurat读取文件的格式 10x文件内容 mtx格式scanpy.read_10x_mtx scanpy读取10x格式

Seurat包之导入单细胞数据方式汇总 - 简书挖掘公共单细胞数据集时,会遇到常见各种单细胞测序数据格式。现总结如下,方便自己日后调用,以创建Seurat对象(1)barcodes.tsv.gz、features.tsv....

生信小博士的博客 5100

Scanpy模块全解析:从数据预处理到可视化的完整指南(附实战代码)

本文全面解析Scanpy模块在单细胞RNA测序数据分析中的应用,从数据预处理到可视化的完整流程。通过实战代码演示,详细介绍pp、tl、pl等核心模块的协同工作逻辑,帮助研究者掌握单细胞分析的关键技术,提升科研效率。

weixin_29263201的博客 481

scanpy单细胞分析官网示例全解析(一)全网最详细及细节

scanpy使用分享

cuixueyi的博客 5786

scanpy单细胞分析官网示例全解析(二)全网最详细及细节

scanpy核心的画图功能介绍大全

cuixueyi的博客 4836
上一篇: 【前沿技术揭秘】:基于PennyLane的量子优化器如何在2小时内收敛模型?
下一篇: 【高通量数据处理秘籍】:Pandas结合Biopython的4种最佳实践方案
FastCompile
博客等级 码龄1年 164粉丝 2015原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值