2015-09-04 30 views
0

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

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

但由于集群是嵌套的,那么存储的基因对每个簇是没有效率的,我想。

如果任何人有一个更好的主意如何保持这种信息,我将不胜感激:)

+0

你可以看看[这种层次聚类的实现](http://www.nltk.org/_modules/nltk/cluster/gaac.html)。它将信息存储在[Dendogram类](http://www.nltk.org/_modules/nltk/cluster/util.html)中。如果你看一下'Dendogram'类的'show'方法,你可能会知道它在做什么。我不知道你正在谈论的基因有多少,可能很多,以及这种实现的效率如何......希望它有帮助。 – lrnzcig

回答

0

短写自己的数据结构中,collections.defaultdict可能适合的树。请参阅here

+0

谢谢! 我不确定我能从这个结构中得到'集群'。 问题是,我有23000个基因作为叶子,根簇有所有基因,下一个子簇从这些23000等有更少的基因... 如果我知道我想看到具有ID的簇中的基因:3,那该怎么办? 我认为最好只保留基因名称一次作为叶子,然后根据群集ID我会得到名称。 我对这种结构很陌生。 –

+0

对不起,我只是对你的反对有一个模糊的概念,但是散列一个集合('frozenset')或字典是存储可以被解码,比较等的参考的可行选项? –

相关问题