DebianでigraphとそのPython bindingsをインストールする。
Newmanが論文“Fast algorithm for detecting community structure in networks.”で提案した階層的クラスタリングのアルゴリズムが実装されているらしいので、
igraphっていうグラフライブラリを使ってみたくなった。
2008年10月現在、たぶん上記でNewmanが提案したと思われるFast greedy community detectionを図示した絵が、igraphのプロジェクトページのトップを飾ってる。
間違ってたらゴメンよ。
i386版はビルド済みパッケージがあるけど、amd64版はない。
ソースパッケージを取得してビルドする。
# fetch元 vim /etc/apt/sources.list --- deb http://cneurocvs.rmki.kfki.hu /packages/binary/ deb-src http://cneurocvs.rmki.kfki.hu /packages/source/ --- # パッケージ作りに必要なパッケージ入れる sudo aptitude install fakeroot debhelper python-all-dev python-epydoc # debパッケージ作る apt-get source libigraph python-igraph cd igraph-0.5.1 dpkg-buildpackage -rfakeroot -uc -b cd ../python-igraph-0.5.1 dpkg-buildpackage -rfakeroot -uc -b # インストール sudo dpkg -i libigraph_0.5.1_amd64.deb libigraph-dev_0.5.1_amd64.deb python-igraph_0.5.1_amd64.deb
ちなみに、RやRubyからも使えるみたい。
これらのdocumentを見つつテスト…しようと思ったけど、めんどうだなー。
というわけで、ipyhon使ってdirと?で適当に使い方を探ってみた。
試しに、Barabasiのスケールフリーネットワークってのを作ってみる。
「新ネットワーク思考」とか読んでないんだよねー。
g = igraph.Graph.Barabasi(100) # |V|=100 print g print g.maxdegree() g.write_dot('barabasi.dot')
んでgraphvizで表示してみると…おおお!それっぽい!それっぽいすよ。
というわけで、来年コレ使ってなにか発表します。
PyTC 0.3をリリースしました!
PyTC 0.3をリリース。
- MacPortsでTokyoCabinetを入れた人でも、すんなりインストールできるようになった…はず
- TCBDB.range/TCBDB.rangefwmを実装した
Marshal関係はまだやってねっす。
DBMにPythonのオブジェクトを保存する@C言語
cPickleをC言語から呼び出すのはどうやらめんどくさそうだ。
素直にPythonでラップするのがいいな。
複雑じゃないオブジェクトだったら、Marshalが使える。
MarshalだったらC言語から呼び出せる。
PyMarshal_WriteObjectToStringとPyMarshal_ReadObjectFromString。
んで、DBMにPythonオブジェクトを保存するための
shelveっていうライブラリがあるのね。知らんかった。
保存先はanydbmでどれが選ばれるかによるようだ。
とりあえず、PyTCではMarshalで書いてみよう。
MarshalXDBってオブジェクトにするか、
XDB.put_marshal/get_unmarshalっていう関数名にするか悩む。
easy_installでMac Portsのディレクトリを探さなくて困るよ問題
適当に対応してみた。
次回リリースからたぶんeasy_install一発でいけるはずです。
全くテストしてないのでやっぱり一発でいけない可能性アリ(笑
PyTCでUnicodeのvalueが保存できない
解決黒頭巾!PythonのC拡張でcleanup用のコードを呼びたい!
Pythonのatexitにあたるものがないかな〜、とは思っていましたが、
ありました。Py_AtExit。
VideoCaptureのソースを見ていて気づいた。