单细胞聚类评估框架

SCCAF的Python项目详细描述


使用bioconda安装

sccaf:单细胞聚类评估框架

单细胞聚类评估框架(sccaf)是一种从单细胞rna-seq(scrna-seq)数据中自动识别假定细胞类型的新方法。通过迭代地将聚类和机器学习方法应用于给定细胞集的基因表达谱,sccaf同时识别不同的细胞群和每组的加权特征基因列表。在特定细胞群中过度表达的特征基因共同将特定细胞群与其他细胞区分开来。每一组这样的细胞都对应于一种假定的细胞类型或状态,其特征是特征基因作为标记。

要求

此软件包的要求因您要安装的方式而异(三者都是独立的,您不需要所有这些要求):

  • pip:如果通过pip进行安装,则需要安装python3和pip3。
  • bioconda:如果安装通过bioconda,则需要安装conda并将其配置为使用bioconda频道
  • Docker容器:要从Docker容器中使用SCCAF,您需要安装Docker
  • 源代码:要直接从源代码使用和安装,您需要有git、python3和pip。

该工具依赖于其他python/conda包,但这些包会通过不同的安装方法自动解决。

该工具已通过以下版本的测试:

  • Conda:版本4.7.5和4.7.10,但它应该与大多数其他版本一起工作。
  • Docker:18.09.2版,但应该可以与大多数其他版本一起使用。
  • python:3.6.5和3.7版。我们不希望它与Python2.x一起工作。
  • pip3:9.0.3版,但pip3的任何版本都可以工作。

此软件不需要任何非标准硬件。

安装

PIP

您可以使用pip安装sccaf:

pip install sccaf

在配备16 GB RAM和学术(LAN)互联网连接的笔记本电脑上的安装时间:<;10分钟。

生物保密

您可以使用bioconda安装sccaf(如果您没有首先安装conda和bioconda频道,请按照此处的说明设置conda和bioconda频道:):

conda install sccaf

在配备16 GB RAM和学术(LAN)互联网连接的笔记本电脑上的安装时间:<;5分钟。

可用作容器

您可以在Docker容器上使用SCCAF工具。您需要从可用的标签中选择在这里并在下面的调用中替换它,其中显示<;tag>;

docker pull quay.io/biocontainers/sccaf:<tag>

注意:BioContainer的容器没有最新的标记,因此Docker在未定义标记的情况下拉/运行将失败。例如,有效的调用将是(对于0.0.3版):

docker run -it quay.io/biocontainers/sccaf:0.0.3--py_0

在容器内部,您可以使用python交互式shell或命令行版本(见下文)。

在配备16 GB RAM和学术(LAN)互联网连接的笔记本电脑上安装(拉动)时间:约10分钟。

使用最新的源代码

或者,对于最新版本,克隆此repo并进入其目录,然后执行pip3安装。:

git clone https://github.com/SCCAF/sccaf
cd sccaf
# you might want to create a virtualenv for SCCAF before installing
pip3 install .

如果您的python环境是为python 3配置的,那么您应该能够替换python3仅用于python(尽管需要保留pip3)。通过简单的PIP呼叫,这一点将得到及时简化。

在配备16 GB RAM和学术(LAN)互联网连接的笔记本电脑上安装(拉动)时间:约10分钟。

在python环境中使用

与scanpy包中的预先聚集的anndata对象一起使用

sccaf的主要方法可以直接应用于python中的anndata(anndata是scanpy)对象使用的主要数据格式。

在应用SCCAF之前,请确保排除了双重效应,并且有效地回归了批处理效果。

聚类质量评估

假设一个集群存储在anndata对象adata的键louvain下,我们想用sccaf来理解质量(集群之间的区别):

fromSCCAFimportSCCAF_assessment,plot_rocimportscanpyasscadata=sc.read("path-to-clusterised-and-umapped-anndata-file")y_prob,y_pred,y_test,clf,cvsm,acc=SCCAF_assessment(adata.X,adata.obs['louvain'],n=100)

返回的精度在acc变量中。

可以绘制ROC曲线:

importmatplotlib.pyplotaspltplot_roc(y_prob,y_test,clf,cvsm=cvsm,acc=acc)plt.show()

准确度越高,分辨力越强。roc曲线显示了有问题的集群。

优化过度群集

给定一个过度聚类的结果,sccaf通过合并机器学习无法识别的单元簇来优化聚类:

# The batch effect MUST be regressed before applying SCCAFadata=sc.read("path-to-clusterised-and-umapped-anndata-file")# An initial over-clustering needs to be assigned in consistent with the prefix for the optimization.# i.e., the optimization prefix is `L2`, the starting point of the optimization of `%s_Round0`%prefix, which is `L2_Round0`.sc.tl.louvain(adata,resolution=1.5,key_added='L2_Round0')# i.e., we aim to achieve an accuracy >90% for the whole dataset, optimize based on the PCA space:SCCAF_optimize_all(ad=adata,plot=False,min_acc=0.9,prefix='L2',use='pca')

在上面的运行中,所有更改都将保留在adataanndata对象上,并且不打印 将生成。如果要查看绘图(在关闭之前阻止进度) 然后删除plots=false

在anndata对象中,将在adata.obs['<;prefix>;\u round<;roundnumber>;']中保留单元格到簇的分配。

笔记本演示

您可以在这里找到一些演示性的Jupyter笔记本

从命令行使用

我们在shell的命令行参数中添加了一些方便的方法。 这也有助于将其纳入工作流系统。

优化和通用用途

给定一个预先计算了louvain聚类的anndata数据集(如果需要,可以对其进行批处理):

sccaf -i <ann-data-input-file> --optimise --skip-assessment -s louvain -a 0.89 -c 8 --produce-rounds-summary

这将在名为output.h5的新文件中保留结果,该文件可以通过-o设置。在当前设置中,这将 生成名为rounds.txt的文件,并在输出中保留所有优化轮次的名称。此文件 用于评估过程的后期并行化(在不同机器之间),以确定要选择的步骤 作为最终群集。

要了解所有选项,只需执行sccaf--help

并行评估

一旦进行了优化,选择作为最终结果的回合的策略是观察 在评估过程的多次迭代中,每个迭代的精度分布。流程是如何分布的 本地hpc或云系统的实现问题。基本上,每一轮都可以重复的过程, 是:

pip install sccaf
0

将上述程序运行多个不同的轮次会将文件保留在results文件夹中。

合并并行运行以生成绘图

完成所有评估运行后,可以运行合并和打印步骤:

pip install sccaf
1

这将产生如下结果: plot

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我可以使用Hibernate连接不同的数据库并从表中导入数据吗?没有预定义的对象类   java为什么getBoundsInLocal获取错误的坐标?   java在处理并发哈希映射时必须使用锁   java将过滤的JTable数据导出到文本文件   从命令行编译java不使用库   Java使用方法和构造函数绘制图形   java理解优先级队列中的排序方法   尝试解密文件时,java CipherInputStream为空   在Java中将字符串解析为长字符串   java我想在raspberry pi重新启动时在crontabe中执行arecord命令   弹性搜索弹性搜索Lucene公式的Java计算   java使用apachepoi和docx4j读取doc文件   swing显示JavaGUI是否需要特殊处理?   java使用字符串进行数学运算   java在SpringMVC中用JSP初始化菜单项选择表单数据的最佳方法   无多线程的java多客户端程序   swing如何在Java中对BuffereImage进行去饱和?   java在安卓中创建自定义地图