10X单细胞(10X空间转录组)轨迹分析之CStreet
2021-07-15 本文已影响0人
单细胞空间交响乐
hello,大家好,今天我们来分享一个轨迹分析的软件----CStreet,文章在CStreet: a computed Cell State trajectory inference method for time-series single-cell RNA sequencing data ,我们来看看这个软件能给我们带来什么新的分析点。
软件开发的动机
越来越多的时间序列单细胞 RNA 测序(scRNA-seq)数据提出了连接细胞状态(即细胞cluster或细胞类型)以获得转录的连续时间动态的关键问题,这可以突出统一的生物学参与细胞状态转换的机制。 然而,现有的大多数轨迹方法都是专门为单个细胞设计的,难以满足准确推断细胞类型轨迹拓扑的需要,同一细胞类型通常分配到不同分支的细胞。(做过monocle2的同学应该深有体会吧。)
结果
CStreet,一种用于时间序列 scRNA-seq 数据的计算细胞状态轨迹推断方法。 它使用时间序列信息来构建每个时间点内和相邻时间点之间的单元格之间的 k 最近邻连接。 然后,CStreet 估计细胞状态的连接概率并使用力导向图可视化轨迹,其中可能包括多个起点和路径。 通过在模拟数据和真实数据上比较 CStreet 与六种常用的细胞状态轨迹重建方法的性能,我们证明了 CStreet 的高精度和高容错性。
来看看分析案例
![](https://img.haomeiwen.com/i18814178/dca85f2c32a4bf44.png)
分析流程图,一目了然。
CStreet 使用时间序列信息来构建时间点内和时间点之间的 k 最近邻连接。 然后,CStreet 计算细胞状态的连接概率并使用力导向布局方法可视化轨迹,其中可能包括多个起点和路径。
![](https://img.haomeiwen.com/i18814178/63234f69fc79f324.png)
![](https://img.haomeiwen.com/i18814178/634af1bbd8299f1f.png)
Performance of Monocle2, TSCAN, Tempora, SCUBA, PAGA, and CSHMM on the time-series scRNA-seq data during mouse hepatoblast differentiation using the label strategy of intermediate cells
![](https://img.haomeiwen.com/i18814178/15159f713a40ed68.png)
Performance of CStreet, Monocle2, TSCAN, Tempora, SCUBA, PAGA, and CSHMM on the time-series scRNA-seq data during mouse hepatoblast differentiation using the label strategy of directed links
![](https://img.haomeiwen.com/i18814178/00aaf953169bfc8e.png)
Performance Monocle2, TSCAN, Tempora, SCUBA, and PAGA on the first three time points of time-series scRNA-seq data during mouse embryogenesis
![](https://img.haomeiwen.com/i18814178/931b775699e0e321.png)
Performance of CStreet and PAGA on the nine time points of time-series scRNA-seq data during mouse embryogenesis
![](https://img.haomeiwen.com/i18814178/b62a17f0414106aa.png)
Performance of Monocle2, TSCAN, Tempora, SCUBA, PAGA, and CSHMM on the time-series scRNA-seq data during the embryonic murine cerebral cortex development
![](https://img.haomeiwen.com/i18814178/067147e65fd37155.png)
最后看看示例代码
from cstreet import *
import pandas as pd
##Expression data: Expression matrix containing the time-series expression level as reads counts or normalized values in tab delimited format, and anndata format are accepted as the input of CStreet.
data_t1=pd.read_table('ExpressionMatrix_t1.txt',header=0, sep="\t",index_col=0)
data_t2=pd.read_table('ExpressionMatrix_t2.txt',header=0, sep="\t",index_col=0)
data_t3=pd.read_table('ExpressionMatrix_t3.txt',header=0, sep="\t",index_col=0)
##Cell states info: The cell states information can be inputted by the user or generated using the internal clustering function of CStreet
state_t1=pd.read_table('CellStates_t1.txt',header=None, sep="\t",index_col=0)
state_t2=pd.read_table('CellStates_t2.txt',header=None, sep="\t",index_col=0)
state_t3=pd.read_table('CellStates_t3.txt',header=None, sep="\t",index_col=0)
##Create a new CStreet object
cdata=CStreetData()
##Add data into CStreet object
cdata.add_new_timepoint_scdata(data_t1,list(state_t1[1]))
cdata.add_new_timepoint_scdata(data_t2,list(state_t2[1]))
cdata.add_new_timepoint_scdata(data_t3,list(state_t3[1]))
##AnnData object can be inputted as well
#cdata.timepoint_scdata_dict[1]=anndata_t1
#cdata.timepoint_scdata_dict[2]=anndata_t2
#cdata.timepoint_scdata_dict[3]=anndata_t3
##Run CStreet
###one step
cdata.run_cstreet()
###step by step
##cdata.cell_clusters(CellClusterParam_PCAn=10,CellClusterParam_k=15,CellClusterParam_Resolution=1,Switch_Normalize=True,Switch_LogTransform=True)
##cdata.filter_dead_cell(Threshold_MitoPercent=0.2)
##cdata.filter_lowcell_gene(Threshold_LowCellNum=3)
##cdata.filter_lowgene_cells(Threshold_LowGeneNum=200)
##cdata.normalize_data(Threshold_NormalizeBase=1000000)
##cdata.log_transform()
##cdata.get_knn_within(WithinTimePointParam_PCAn=10,WithinTimePointParam_k=15)
##cdata.get_knn_between(BetweenTimePointParam_PCAn=10,BetweenTimePointParam_k=15)
##cdata.get_knn_graph()
##cdata.filter_knn_graph()
##cdata.get_state_trajectory(ProbParam_SamplingSize=5,ProbParam_RandomSeed=0)
##cdata.get_knn_nxG(Threshold_MaxOutDegree=10,Threshold_MinCellNumofStates=1)
##cdata.draw_nxG(FigureParam_FigureSize=(6,7),FigureParam_LabelBoxWidth=8)
##cdata.output_results()
![](https://img.haomeiwen.com/i18814178/705d293189bf6113.png)
![](https://img.haomeiwen.com/i18814178/751a4d809c323c3b.png)
![](https://img.haomeiwen.com/i18814178/9112b68e6c2aab85.png)
有点意思,值得一试