【问题标题】:Where to keep data from hierarchical clustering in python?python中层次聚类的数据在哪里保存?
【发布时间】:2015-09-04 11:38:20
【问题描述】:

我正在对基因表达数据进行层次聚类。我的结果数据形状像树状图。我想将整个树保存在python中的某个数据结构中,并在每个节点中进行一些计算(我认为是递归的)。对于每个节点,我都知道那里的基因和一些额外的信息(GO、p 值等) 你对如何以我可以遍历整个树的方式在 python 中存储这种数据有什么建议吗? 我的第一个想法是字典列表:

clusters=[{'id': 1, 'cluster': [gen1, gen2,...], 'size': ... , 'ChildIDs': ... , 'ParentID': ... , 'distance': ..., 'score': ...}, {'id': 2, ...}, ... ]

但由于集群是嵌套的,所以我认为存储每个集群的基因效率不高。

如果有人对如何保存此类信息有更好的了解,我将不胜感激:)

【问题讨论】:

  • 你可以看看this implementation of hierarchical clustering。它将信息存储在Dendogram class 中。如果您查看Dendogram 类的方法show,您可能会了解它在做什么。我不知道你在谈论多少个基因,可能很多,以及这种实现的效率如何......无论如何希望它有所帮助。

标签: python dictionary


【解决方案1】:

没有编写自己的数据结构,collections.defaultdict 可能适合一棵树。见here

【讨论】:

  • 谢谢!我不确定我能否从这个结构中取出“集群”。问题是,我有 23000 个基因作为叶子,根簇具有所有基因,下一个子簇具有来自这 23000 个等的较少基因......如果我知道我想查看来自 id:3 簇的基因,那怎么办呢?我认为最好只将基因名称保留一次作为叶子,然后根据集群 ID 我会得到名称。我对这种结构很陌生。
  • 抱歉,我对您反对的内容只有一个模糊的概念,但是散列一组 (frozenset) 或字典是存储可以解码、比较等的引用的可行选项.?
猜你喜欢
  • 2021-07-21
  • 2012-10-10
  • 2011-02-25
  • 2012-07-07
  • 2010-12-20
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 2020-06-28
相关资源
最近更新 更多