2015-09-04 104 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')或字典是存儲可以被解碼,比較等的參考的可行選項? –