我正在研究单细胞RNA测序数据,最近的数据是10k-100k个样本(cell
s)x 20k特征(gene
s)的稀疏值,还包括很多元数据,例如起源的组织(“大脑”与“肝脏”)。元数据是~10-100列,我将其存储为pandas.DataFrame
。现在,我正在生成xarray.datasets
,方法是对元数据进行dictify并将它们添加为坐标。因为我是在笔记本之间复制片段,所以看起来很笨重而且容易出错。有更简单的方法吗?在
cell_metadata_dict = cell_metadata.to_dict(orient='list')
coords = {k: ('cell', v) for k, v in cell_metadata_dict.items()}
coords.update(dict(gene=counts.columns, cell=counts.index))
ds = xr.Dataset(
{'counts': (['cell', 'gene'], counts),
},
coords=coords)
编辑:
为了显示一些示例数据,下面是cell_metadata.head().to_csv()
:
和counts.iloc[:5, :20].to_csv()
cell,0610005C13Rik,0610007C21Rik,0610007L01Rik,0610007N19Rik,0610007P08Rik,0610007P14Rik,0610007P22Rik,0610008F07Rik,0610009B14Rik,0610009B22Rik,0610009D07Rik,0610009L18Rik,0610009O20Rik,0610010B08Rik,0610010F05Rik,0610010K14Rik,0610010O12Rik,0610011F06Rik,0610011L14Rik,0610012G03Rik
A1-MAA100140-3_57_F-1-1,308,289,81,0,4,88,52,0,0,104,65,0,1,0,9,8,12,283,12,37
A10-MAA100140-3_57_F-1-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
A11-MAA100140-3_57_F-1-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
A12-MAA100140-3_57_F-1-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
A2-MAA100140-3_57_F-1-1,375,325,70,0,2,72,36,13,0,60,105,0,13,0,0,29,15,264,0,65
回复:pandas.DataFrame.to_xarray()
-这是难以置信的慢,而且对我来说,将如此多的数字和分类数据编码为100级多索引似乎很奇怪。每次我尝试使用MultiIndex
时,总是会让我说“哦,这就是为什么我不使用多索引”并恢复到拥有单独的元数据和统计数据帧的情况。在
Xarray使用pandas索引/列标签作为默认元数据。当所有变量共享相同的维度时,您可以在单个函数调用中进行转换,但是如果不同的变量具有不同的维度,则需要分别从pandas转换它们,然后将它们放在xarray端。例如:
{cda>计算结果:
^{pr2}$如果你想要一个数据集,把DataArray对象放到数据集构造函数中,例如
^{3}$相关问题 更多 >
编程相关推荐