graph-tool(のMacへのインストールに挫折してvagrantと戯れるの巻)
Pythonでグラフの最小カットを計算しようと思ったのだけれど、Wikipediaから拝借してきた最大フローを求めるFord-Fulkersonコードを元に書いたものでイマイチ速度が出なかった*1ので、速いと噂の
graph-tool
を試してみることにした。
brewで入れるとか、easy_installで入れるとか色々試したけれど自分のMac環境では依存関係のあちこち(Boost, CGAL, cairo, ...)で軒並み引っかかってビルドに失敗する。
Ubuntuだとapt-getで一発で入ったのに。
時間も気力も溶けて行くので、諦めてローカルにUbuntuのvirtualboxを立てて使うことにした。vagrant便利だし。
http://qiita.com/awakia/items/895b3d61311b19737237 あたりを見て
boxの選択は Ubuntu Quantal 64 (12.10) Vanilla (※389MB) にしてみる。
$ vagrant box add quantal64-vanilla https://dl.dropboxusercontent.com/u/165709740/boxes/quantal64-vanilla.box $ vagrant init quantal64-vanilla $ vagrant up
これで
$ vagrant ssh
ローカルのvirtualboxに入れる。
Pythonは2.7.3, 3.2.3が入っていた。
本家ダウンロードページにある指示どおりに /etc/apt/sources.list を編集し、apt-get update した後
vagrant@quantal64-vanilla:~$ sudo apt-get install python-graph-tool
など実行。graph-tool がさくっと入った。
Mac側のホームディレクトリでvagrantを立てたので、virtualbox側の /vagrant/ 以下にホームの内容が見える。個人的に使うにはとても便利。
Mac側でスクリプトを編集して
$ vim foo.py
中身はこんな感じ。ここの最初のプログラムから。
from graph_tool.all import * g = Graph() v1 = g.add_vertex() v2 = g.add_vertex() e = g.add_edge(v1, v2) graph_draw(g, vertex_text=g.vertex_index, vertex_font_size=18, output_size=(200, 200), output="two-nodes.pdf") print(v1.out_degree())
これをvirtualbox側で実行
vagrant@quantal64-vanilla:~$ python graph.py ** (graph.py:25309): WARNING **: Could not open X display
うーむ。
Xが開けないのはMac側に繋いでやればいいはずなので*2Mac側で
$ vim ~/.vagrant.d/boxes/quantal64-vanilla/virtualbox/Vagrantfile
Vagrant::Config.run do |config| # This Vagrantfile is auto-generated by `vagrant package` to contain # the MAC address of the box. Custom configuration should be placed in # the actual `Vagrantfile` in this box. config.vm.base_mac = ... config.ssh.forward_x11 = true ## ←この1行を追加 end ...
これでvagrantを立ち上げなおしたら行けるんじゃね
vagrant@quantal64-vanilla:~$ exit logout Connection to 127.0.0.1 closed. $ vagrant halt $ vagrant up $ vagrant ssh ... Last login: Wed Jun 26 07:11:08 2013 from 10.0.2.2 vagrant@quantal64-vanilla:~$ python graph.py 1
今度はうまく行った。
Mac側で
$ open two-nodes.pdf
すると
ちゃんと出来てた。