【问题标题】:is there a way to subset an AnnData object after reading it in?有没有办法在读取 AnnData 对象后对其进行子集化?
【发布时间】:2021-09-19 09:03:25
【问题描述】:

我是这样读取 excel 文件的:

data = sc.read_excel('/Users/user/Desktop/CSVB.xlsx',sheet= 'Sheet1', dtype= object)

我需要将这个数据集中的 3 列作为 .obs 使用,但看起来一切都在 .X 数据矩阵中。

有人在读入文件后成功进行子集化,还是我需要事先做些什么?

【问题讨论】:

  • sc 是什么?描述dataAnnData?
  • sc 这里是 scanpy 的导入。

标签: pandas numpy scipy subset


【解决方案1】:

好的,所以假设sc 代表scanpy 包,read_excel 只是将第一行作为.var,将第一列作为 AnnData 对象的.obs

read_excel 返回的data 可以稍作调整以获得您想要的。

假设您想要在.obs 中的三列的索引存储在idx 变量中。

idx = [1,2,4]

现在,.obs 只是一个 Pandas DataFrame,data.X 只是一个 Numpy 矩阵 (see here)。因此,这项工作很简单。

# assign some names to the new columns
new_col_names = ['C1', 'C2', 'C3']

# add the columns to data.obs
data.obs[new_col_names] = data.X[:,idx]

如果您可能希望从 data.X 中删除 idx 列,我建议为此创建一个新的 AnnData 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多