用于从异质单细胞 RNA-seq 数据分析和识别细胞类型的工具包
项目描述
数字细胞分选机
Digital Cell Sorter (DCS):用于聚类、细胞类型识别和异常检测的单细胞 RNA-seq 分析工具包。
注意:我们目前正在准备一份手稿,描述位于此存储库的工具包。如果您想访问我们最新发布的 Polled Digital Cell Sorter 中详细介绍的软件包,请访问https://zenodo.org/record/2603265并下载该软件包 (v1.1)。
描述细胞类型识别方法的最新出版物: 轮询数字细胞分选仪 (p-DCS):从单细胞 RNA 测序簇中自动识别血液细胞类型 Sergii Domanskyi、Anthony Szedlak、Nathaniel T Hawkins、Jiayin Wang、Giovanni Paternostro & Carlo Piermarocchi, BMC 生物信息学第 20 卷,文章编号:369(2019 年)
该文档可在https://digital-cell-sorter.readthedocs.io/获得。
入门
这些说明将为您提供一份项目副本,并在您的机器上运行,以进行数据分析、开发或测试。
先决条件
环境设置
该软件在 Python >= 3.7 中运行
强烈建议安装 Anaconda。安装程序可在https://www.anaconda.com/distribution/获得 无论您已经安装了 Anaconda 还是刚刚安装了它,我们都建议您通过运行以下命令来更新所有软件包:
conda update conda
使用 conda,您可以创建、导出、列出、删除和更新安装了不同版本的 Python 和/或包的环境。在环境之间切换或移动称为激活环境。
conda create --name DCS
conda activate DCS
现在,在您的新环境中,可以安装或更新软件包,而不会影响您的其他环境。请注意,环境使用不是必需的,(base)如果您不设置任何其他,则使用默认值。有关更多信息,请参阅
https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
注意:在批处理作业中(即不在开发节点上但提交到 SLURM 队列)中使用 conda 环境(例如上面示例的 DCS)和高性能计算机(例如 MSU HPCC)需要以下步骤。在 slurm 脚本中,在调用您的 python 脚本之前,添加
conda deactivate以停用基本环境和conda activate DCS. 调用脚本后执行conda deactivate. 示例测试脚本如下所示。
SLURM 脚本示例:
#!/bin/bash --login
########## Define Resources Needed with SBATCH Lines ##########
#SBATCH --time=00:01:00 # limit of wall clock time - how long the job will run (same as -t)
#SBATCH --ntasks=1 # number of tasks - how many tasks (nodes) that you require (same as -n)
#SBATCH --cpus-per-task=1 # number of CPUs (or cores) per task (same as -c)
#SBATCH --mem=1G # memory required per node - amount of memory (in bytes)
##SBATCH --job-name Name_of_Job # you can give your job a name for easier identification (same as -J)
########## Command Lines to Run ##########
conda deactivate
conda activate DCS
cd ./ ### change to the directory where your code is located
python test.py ### call your executable
scontrol show job $SLURM_JOB_ID ### write job information to output file
conda deactivate
test.py您导入和使用的 python 脚本在
哪里DigitalCellSorter?
安装 DigitalCellSorter 包
安装。DigitalCellSorter_ pip大多数依赖包都是在安装最新版本时自动安装的DigitalCellSorter:
pip install DigitalCellSorter
或者,您可以使用以下命令直接从 GitHub 克隆和安装此模块:
pip install git+https://github.com/sdomanskyi/DigitalCellSorter
同样,可以为开发目的创建该项目的本地副本,并从克隆目录安装包:
git clone https://github.com/sdomanskyi/DigitalCellSorter
python setup.py install
我们的软件使用包numpy、pandas、matplotlib、
scikit-learn、scipy、mygene、fftw、
fitsne和adjustText其他一些标准 Python 包。中使用的某些软件包DigitalCellSorter默认情况下未安装,如果使用 Digital Cell Sorter 的某些功能,则应单独安装。例如,对于基于网络的集群安装包pynndescent, networkx, python-louvain. 其他必须单独安装的软件包是fitsne、umap和
。详细说明如下。phateorca
t-SNE
使用包含少于 2000 个单元sklearn.manifold.TSNE的数据集。对于大型数据集,使用由KlugerLab实现的基于快速傅里叶变换加速插值的 t-SNE (FIt-SNE) ( https://github.com/KlugerLab/FIt-SNE )。要使用 FIT-SNE,需要安装以下内容。cython第一次更新
pip install --upgrade cython
然后fftw从conda-forge频道安装添加conda-forge到您的频道,然后安装fftw:
conda config --add channels conda-forge
conda install fftw
下一个安装步骤是特定于平台的。为 Linux 安装 FI-tSNE:
pip install fitsne
在 macOS Mojave 上,必须明确指定 C++ 编译器:
env CC=clang CXX=clang++ pip install fitsne
在 Windows 上,FI-tSNE 包装器和可执行文件已包含在DigitalCellSorter.
其他布局
使用 UMAP 布局
pip install umap-learn
使用 PHATE
pip install phate
注意,如果既没有
fitsne,umap也没有phate安装DigitalCellSorter默认为 PCA 可视化布局的两个最大主成分。
交互式 HTML 图形
要使用作为 Digital Cell Sorter 一部分的 Sankey 图,请安装plotly并orca:
conda install -c plotly plotly-orca
conda install -c anaconda psutil
在浏览器中查看 交互式 Hopfield 风景图 和 交互式桑基图。
orca 将桑基图转换为静态图像是必要的。如果由于任何原因orca不可用,桑基图将被保存为非交互式 HTML 图,可以在浏览器(Chrome、Firefox 等)中打开并保存为静态图像。的可视化DigitalCellSorter是用 实现的matplotlib,允许以光栅或 vactor 格式保存所有图形。由于plotly可以将简单matplotlib图形(散点图、线图、条形图,但不能将热图、样条线或其他复杂的补丁对象)转换为非交互式 HTML 格式,DigitalCellSorter因此可以尝试将其任何图形保存为 HTML。这对Projection绘图特别有用,即使颜色条未在 HTML 图形中呈现。
加载包
使用最新版本的 PyPI 包。
对于具有约 5k PBMC 数据集的快速入门演示,请在终端中执行并按照提示操作:
python -m DigitalCellSorter
第二个更详细的演示分析以及分步说明在此处和本自述文件末尾的演示部分中进行了讨论。在您的脚本中导入包:
import DigitalCellSorter
创建一个类的实例DigitalCellSorter。这里,为简单起见,我们使用默认参数值:
DCS = DigitalCellSorter.DigitalCellSorter()
在初始化期间,可以指定许多参数。有关详细列表,请参阅文档。许多这些参数被传输到 DCS 属性,因此可以在初始化后使用,例如:
DCS.toggleMakeStackedBarplot = False
基因表达数据格式
输入基因表达数据应采用以下格式之一:
- 逗号分隔值的电子表格,
csv包含形式为 的压缩矩阵('cell', 'gene', 'expr')。如果数据中有批次,则矩阵的格式必须为('batch', 'cell', 'gene', 'expr')。列顺序可以是任意的。
例子:
| 细胞 | 基因 | 表达式 |
|---|---|---|
| C1 | G1 | 3 |
| C1 | G2 | 2 |
| C1 | G3 | 1 |
| C2 | G1 | 1 |
| C2 | G4 | 5 |
| ... | ... | ... |
或者:
| 批 | 细胞 | 基因 | 表达式 |
|---|---|---|---|
| 批次0 | C1 | G1 | 3 |
| 批次0 | C1 | G2 | 2 |
| 批次0 | C1 | G3 | 1 |
| 批次1 | C2 | G1 | 1 |
| 批次1 | C2 | G4 | 5 |
| ... | ... | ... | ... |
- 逗号分隔值的电子表格,
csv其中行是基因,列是具有基因表达计数的细胞。如果数据中有批次,则电子表格的第一行应该是'batch'第二行'cell'。
例子:
| 细胞 | C1 | C2 | C3 | C4 |
|---|---|---|---|---|
| G1 | 3 | 1 | 7 | |
| G2 | 2 | 2 | 2 | |
| G3 | 3 | 1 | 5 | |
| G4 | 10 | 5 | 4 | |
| ... | ... | ... | ... | ... |
或者:
| 批 | 批次0 | 批次0 | 批次1 | 批次1 |
|---|---|---|---|---|
| 细胞 | C1 | C2 | C3 | C4 |
| G1 | 3 | 1 | 7 | |
| G2 | 2 | 2 | 2 | |
| G3 | 3 | 1 | 5 | |
| G4 | 10 | 5 | 4 | |
| ... | ... | ... | ... | ... |
Pandas DataFrame哪里axis 0是基因,哪里是axis 1细胞。如果在数据中分批处理,则索引axis 1应该具有两个级别,例如('batch', 'cell'),第一级别指示对该细胞进行测序的患者、批次或实验,第二级别包含用于识别的细胞条形码。
例子:
df = pd.DataFrame(data=[[2,np.nan],[3,8],[3,5],[np.nan,1]],
index=['G1','G2','G3','G4'],
columns=pd.MultiIndex.from_arrays([['batch0','batch1'],['C1','C2']], names=['batch', 'cell']))
Pandas Series其中 index 应该有两个级别,例如('cell', 'gene'). 如果数据中有批次,则第一级应指示对该细胞进行测序的患者、批次或实验,第二级用于识别的细胞条形码和第三级基因名称。
例子:
se = pd.Series(data=[1,8,3,5,5],
index=pd.MultiIndex.from_arrays([['batch0','batch0','batch1','batch1','batch1'],
['C1','C1','C1','C2','C2'],
['G1','G2','G3','G1','G4']], names=['batch', 'cell', 'gene']))
上面列出的任何数据类型都需要使用 function 准备/验证prepare()。让我们在类型 1 的输入上证明这一点:
df_expr = DCS.prepare('data/testData/dataFileCondensedWithBatches.tsv')
其他数据
markersDCS.xlsx:带有标记数据的excel书。行是标记,列是单元格类型。“1”表示该基因是该细胞类型的标记,“-1”表示该基因不在该细胞类型中表达,否则为“0”。默认使用包中包含的这个基因标记文件。如果您使用自己的文件,则必须以相同的格式准备它(包括两行标题)。请注意,只会读取第一个工作表,其名称可以是任意的。第一列应包含基因名称。第二行应包含单元格类型,第一行应包含这些单元格类型的分组方式。如果需要跳过任何单元格类型,请在该单元格类型的第一行的相应单元格中添加“NA”。
例子:
| 一个 | 乙 | C | D | 乙 | F | G | H | 我 | Ĵ | ķ | 大号 | 米 | ... |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| B细胞 | B细胞 | B细胞 | T细胞 | T细胞 | T细胞 | T细胞 | T细胞 | T细胞 | T细胞 | NK细胞 | NK细胞 | ... | |
| 标记 | B细胞幼稚 | B细胞记忆 | 浆细胞 | T细胞CD8 | T 细胞 CD4 幼稚 | T细胞CD4记忆休息 | T细胞CD4记忆激活 | T细胞滤泡辅助 | 调节性 T 细胞 (Tregs) | T细胞γδ | NK细胞休息 | NK细胞被激活 | ... |
| ABCB4 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ABCB9 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ACAP1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| 疼痛 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ACP5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| 亚当28 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ADAMDEC1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| 亚当斯3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ADRB2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| AIF1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| 目标2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ALOX15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ALOX5 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| AMPD1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ANGPT4 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
Human.MitoCarta2.0.csv:csv在工作
MitoCarta2.0 中创建的包含人类线粒体基因的电子表格:哺乳动物线粒体蛋白的更新清单
Sarah E. Calvo、Karl R. Clauser、Vamsi K. Mootha,核酸研究,第 44 卷,第 D1 期,2016 年 1 月 4 日.
功能性
全面的
主类 DigitalCellSorter 包括以下工具:
- 预处理
- 质量控制
- 批量效果校正
- 细胞异常评分评估
- 降维
- 聚类
- 注释细胞类型
- 可视化
- 后处理。
可视化
函数visualize()将生成大部分必要的文件,用于数据的后期分析。
请参阅下面的可视化工具示例。
可视化工具包括:
makeMarkerExpressionPlot():显示所有标记及其在集群中的表达水平的热图,此外该图还包含相对 (%) 和绝对 (细胞计数) 集群大小
getIndividualGeneExpressionPlot(): 由单个基因的表达着色的 2D 布局
makeVotingResultsMatrixPlot():每个输入单元类型和每个集群的投票结果的 z 分数,此外,该图还包含相对 (%) 和绝对 (单元计数) 集群大小
makeHistogramNullDistributionPlot():每个集群和每个细胞类型的空分布说明了数字细胞分选器的“机械”
makeQualityControlHistogramPlot():质量控制直方图
makeProjectionPlot():2D 布局,由表达的独特基因数量、测量的计数数量和线粒体基因的一部分着色。
批量校正对组合 BM1、BM2、BM3 并在没有(左)和(右)批量校正选项的情况下联合处理数据的影响:
makeStackedBarplot(): 绘制各种细胞类型的分数
makeSankeyDiagram():河图比较各种结果
getAnomalyScoresPlot(): 每个单元格的异常分数图
计算并绘制任意细胞类型或集群的异常分数:
getIndividualGeneTtestPlot():生成 t 检验 p 值的热图图,从带注释的集群中成对地计算基因对
makePlotOfNewMarkers():在注释细胞类型中显着表达的基因
演示
用法
我们制作了一个示例执行文件demo.py,展示了如何使用DigitalCellSorter.
在演示中,文件夹data故意留空。数据文件 (cc95ff89-2e68-4a08-a234-480eca21ce79.homo_sapiens.mtx.zip) 大小约为 2.4Gb,将与demo.py脚本一起下载。
以前,HCA 预览数据合并在文件中
ica_bone_marrow_h5.h5,可
从https://preview.data.humancellatlas.org/(原始计数矩阵 - 骨髓)下载。该文件约为 485Mb,包含来自 8 个骨髓供体 (BM1-BM8) 的 378000 个细胞。
在以下位置查看脚本demo.py的详细信息:
要执行完整的脚本demo.py运行:
python demo.py
*请注意,HCA BM1 数据包含约 50000 个测序单元,需要超过 60Gb 的 RAM(我们建议使用高性能计算机)。如果您想在普通 PC 或笔记本电脑上运行我们的示例,您可以使用随机选择的单元数:
df_expr.sample(n=5000, axis=1)
输出
所有输出文件都保存在脚本output所在目录内的目录中。demo.py如果您指定任何其他目录,结果将在其中生成。如果您不提供任何目录,则结果将显示在执行脚本的根目录中。