2012年1月31日火曜日

Debian で SDPA 7.3.6 の準備

昨日失敗していた pbuilder でのビルドは、debian/control のファイルで liblapack_pic に依存していることを明記したところ、問題なくビルドできるようになった。

Windows 版などのコンパイルも無事に成功したので、debian の mentors にファイルをアップロードしておいた。
http://mentors.debian.net/package/sdpa
にアップロードされたファイルがある。
これをあとはチェックしてもらって問題がなければ、7.3.6 が debian の sid(unstable) に登録されることとなる。

今日の作業内容: Debian パッケージの設定 3h + 論文読み 2h
今日のランチ:たちばな 真鯛
明日の予測作業時間:5h

2012年1月30日月曜日

SDPA 7.3.6 の準備

Debian 関係でメールがあり、MUMPS のバージョンアップにともなって、SDPA のパッケージも更新することとなった。
そこで、今までのスペルミスの修正などを反映したものを 7.3.6 とするために準備しているが、その過程で分かったことをメモしておく。

[1] Debian で dist-upgrade できなかったのを回避
see man 5 apt.conf
というエラーメッセージがでて、うまく upgrade できなかったが、これをなぜか回避できた。

細かく言うと、Debian Package 用の sid 環境を更新するために

# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
としたが、ここで
could not perform immediate configuration on 'libhdf5-serial-dev'.Please see man 5 apt.conf under APT::Immediate-Configure for details.
というメッセージで先に進めない。
いろいと試してみたが良くわからず。
そこで
# aptitude safe-upgrade
# apt-get dist-upgrade
としたら、大丈夫だった。
どうやら、問題になっている libhdf5-serial-dev が safe-upgrade で一度削除されたようで、これで大丈夫になったようである。
このときに同時に削除された octave3.2-headers をあとで再インストールしたら、libhdf5-serial-dev も再インストールされた。
(octave3.2-headers は libhdf5-serial-dev に依存している)

[2] libquadmath に関する warning が出る。
これは、libquadmath.so にリンクしているけど、この関数をひとつも使っていない、という警告が出る。
ただ、これは configure スクリプトのときに gfortran のところで自動的に付加されるように設定されているので、警告を除外するのが難しい。
この警告はそのまま残してある。

[3] lintian が helper-templates-in-copyright というエラーを出す。
lintian は Debian パッケージのファイルの中で不具合がないかチェックするのであるが、いまひとつエラーメッセージを読んでもどう対応しないといけないのか分からない。
今回は、
Upstream Author(s):
の() が残っていたのが原因であった。
lintian がこのエラーを出す条件について、より詳しくは
http://lists.debian.org/debian-mentors/2011/09/msg00451.html
に書かれていた。

[4] update-alternatives --config liblapack.so.3gf
BLAS をこれまでの ATLAS から OpenBLAS に切り替えることにした。
そこで、liblapack.so も切り替える必要があり、上記のコマンドで
ATLAS 由来ではない liblapack.so を選択するようにした。
なお、SDPA-M をコンパイルするには、liblapack.a に -fPIC が
必要であるが、/usr/lib/lapack/liblapack.a は -fPIC が付加されていない。
そこで、liblapack-dev に代わって liblapack-pic を apt-get でインストール
すると、-fPIC が付加された /usr/lib/lapack/liblapack_pic.a を使えるようになる。


今日はまだ pbuilder を通せていないので、これについては確認が必要だ。

今日の作業内容: Debian 準備 4h
今日のランチ:味庵 にんにくの芽と豚肉の細切り炒め \700
明日の予測作業時間:5h

2012年1月27日金曜日

Springer の Open Access が高かった

Math Prog の原稿をアップロードしたところ、Springer からメールがきて、従来通りの掲載か Open Access の掲載かを選ぶことができるようになっている、とのことであった。

従来通りであれば、読むことができるのは Math Prog を購読しているか、あるいは論文ごとに購入した場合に限られる。
逆に Open Access であれば、だれでも無料で読むことができる。

本来であれば、Open Access のほうがいいと思うのだが、Open Access にするには 2000 ユーロを支払う必要がある。
システム維持などに必要な金額、という意味では分かるが、さすがに 2000 ユーロは高すぎるので、今回は従来通りの掲載とした。

やはり、論文一本にパソコン2台ずつの金額を追加で支払うことになるのは厳しいし、Math Prog の場合は読む人はほぼ Math Prog を購読していると思われるので 2000 ユーロほどの追加価値があるとは考えにくかった。

今日の作業内容:論文読み 3h
今日のランチ:ちゅらさん ソーキのカレー煮定食
明日の予測作業時間:2h

2012年1月26日木曜日

MathProg に原稿ファイルを提出

以前に Accept された論文について、原稿ファイルを送ってほしいときたので、ファイルを最終調整して提出した。

ところで、MathProg の提出先はインドの FTP サイトになっているのだが、他の人も同じところにアップロードしているように見える。
ひょっとしたら、アカウント名とパスワードが共通なのかもしれない。
ちょっと不思議なシステムだ。

今日の作業内容:原稿提出 2h
今日のランチ:シッダルータ ベジタブルカレー
明日の予測作業時間:4h

2012年1月25日水曜日

mendeley が非常に便利

この前、bibtex 生成用に導入した mendeley であるが、bibtex だけでなく論文情報の共有が有益であることが分かった。

たとえば、SDP のサーベイでは Todd の semidefinite optimization があるが、この論文の情報は
http://www.mendeley.com/research/semidefinite-optimization/
にある。
ここで、下のほうを見ると分かるように、この論文をチェックしている人が他にどの論文もチェックしているかが分かるのである。
まだ利用人数が少ないのでチェックしている論文数も少ないが、この機能はかなり便利である。

今日の作業内容:論文読み 3h
今日のランチ:味庵 回鍋肉
明日の予測作業時間:3h

2012年1月24日火曜日

タンパク質データと量子化学の直感

今計算しているタンパク質の13個のデータのうち、1F39 だけが精度が低くなってしまう。
そこで、pymol で 1F39 を表示してみているが、量子化学の直感がないため、どうしてこれが開発中の手法でうまく計算できないかがよく分かっていない。
次のデータとして使っている 1RGS については、それなりの精度がでており、これと 1F39 の差のどういった点に注目すべきなのか、それが問題である。

それにしても、pymol の場合には、
PyMOL を使ってみよう
のサイトにあるスクリプトを使うと、タンパク質名が分かっていれば2行コマンドを実行するだけで3次元構造を表示してくれるので、とても便利である。
Ubuntu や Debian であれば、
$ sudo apt-get install pymol
だけでインストールできる。

今日の作業内容:pymol チェック 2h + 論文読み 3h
今日のランチ:らく 鶏の照り焼き定食
明日の予測作業時間:4h

2012年1月23日月曜日

vmware は、そろそろ潮時かもしれない

ここのところの流れで open-vm-tools などを調べていたが、今日調べたところでは、

1. Debian testing は、ethernetやHDDを見つけることができず、インストール失敗
2. Lubuntu 12.04 の alpha1 は、インストールまではできたが、起動時に X を実行できず

ということが分かった。
いままで vmplayer で Linux の動作環境などを調べていたが、vmplayer が64bit OS にしかホストが対応できなくなった、また open-vm-tools のように外側で支えるところも弱くなってきているなど、vmware の開発人材が足りないことがうかがい知れる場面が増えてきており、そろそろ vmware からの撤退も視野に入れるべきだと考えている。

そこで、代替として virtual box を検討することにしようと考えている。
いずれにしても、データのバックアップなどやるべきことは多いので、もう少し検討が必要ではある。

今日の作業内容:Debian などチェック 3h + 本読み 2h
今日のランチ:角笛 ミックスフライ
明日の予測作業時間:5h

2012年1月20日金曜日

Debian testing と open-vm-tools

Debian の testing を将来的なインストールに向けて調べてみているが、今日調べたところでは、vmplayer の共有フォルダがうまくいかないようである。

そもそも、testing には open-vm-source がなぜか入っていないので、これをapt-getでインストールすることができない。
そこで、squeeze で open-vm-source からインストールするとできるのであるが、Linux Kernel 3.1 に対応していないようで Kernel 3.1 にアップデートすると open-vm-source をコンパイルできなくなる。
このあたりの事情は sid に登録されている open-vm-source でも同じであった。

あとは、sourceforge からソースを持ってきてコンパイルに挑戦しているが、lib*-dev のインストールが多く、簡単にはできない。しかも、libgtk をインストールしたりすると、なぜか java がインストールされるなど、本来必要そうもないパッケージまでインストールされるようで、apt の情報が正しくないのかもしれない。

現状としては、squeeze で open-vm-source からコンパイルしておき、そのあと testing に移行しても kernel を 3 以上にしない、ということになる。


今日の作業内容:Debian チェック 3h
今日のランチ:味庵 鶏の唐辛子炒め
明日の予測作業時間:3h

2012年1月19日木曜日

LMDE 壊れた

昨日インストールした LMDE は xorg が消えてなくなり、xorg を apt-get できなくなったため破棄して、もう一度インストールし直すことにした。

参考のために、失敗するまでの過程を書いておく。
1. LMDE 自体は問題なくインストールできる
2. ただし、LMDE には vmware 用の open-vm-tools がレポジトリに含まれていないため、Debian の testing のレポジトリを追加し、これで open-vm-tools を発見
3. GUI で設定できる open-vm-toolbox を synaptic でインストールすると、xorg 関係がばっさりと削除される。

ちなみに、削除された後にコマンドラインから apt-get で修復しようと試みたが、パッケージの依存関係が複雑骨折したので、こちらも断念した。

現在、再インストール中であるが、今度は apt-get update だけでも時間が1時間程度かかるようになってしまい、まだまだ調べる必要がありそうである。

いっそのこと、Debian で LXDE の testing を作った方が簡単かもしれない。

今日の作業内容:LMDE インストール 5h
今日のランチ:らく 焼き魚定食
明日の予測作業時間:5h

2012年1月18日水曜日

タンパク質に submodular を使ってみた

まずは、昨日の LMDE の続きだが、PC がスリープに入っていてダウンロードが終わっていなかった。
今日の夜にもう一度ダウンロードをするように設定した。

今日のメインは submodular でタンパク質のデータでどこが最密部分グラフなのかわかるかを調べてみることにした。
結果としては、以下の図のようになった。

基本的には3次元の図であって、密度の高いと判定されているところほど濃い色となっている。
これを見ると、案外意外なことにタンパク質(1GM2)の原子はグラフ的に密な部分が分散されている。
つぎに、これが min_norm_point で出力された xhat の値をソートしたものである。これに基づいて、小さい値がでているところを濃く、大きい値を薄くしたのが上の図である。

まだ結果が出たばかりで分からないところもあるので、もう少し計算を進めたい。

今日の作業内容:submodular 4h
今日のランチ:信華園 レバー野菜炒め
明日の予測作業時間:3h

2012年1月17日火曜日

LMDE のインストール

今度インストールするのは、Ubuntu の Lubuntu にしようかと思っていたが、Unity の導入で Ubuntu が使いにくくなりつつあることも踏まえて、 Ubuntu から Linux Mint にすることを検討している。

そこで、今回はテストインストールをすることにした。
再インストールなど何回も行うのは手間なので、Debian の testing がベースとなっている LMDE を選んでみた。
インストールは、DVD イメージを使って Live DVD として起動することで、画面の左上のほうにインストール用のアイコンが出てくるようになっており、日本語を選択すれば簡単に日本語でインストールできる。

次に、セキュリティなども気になるので、早速アップデートマネージャでシステム全体をアップロードしようと試みたが、これが異常に時間がかかってしまい、今日はここから先へは進まなかった。
synaptic では jaist からのダウンロードを指定してあるのだが、多くのパッケージを Linux Mint の本体からダウンロードしようとしており、ダウンロードするだけで15時間程度が必要になるようである。

明日の続きで、アップデート終了から日本語入力などシステムを確認して行きたいし、必要のないソフトをアンインストールできるかどうかも確認したいところだ。


今日の作業内容:LMDE インストール 3h
今日のランチ:角笛 ハヤシライス
明日の予測作業時間:5h

2012年1月16日月曜日

submodular toolbox がちゃんと使えるようになった

先週、うまく行っていなかった submodular toolbox は単純に入力ミスだった。
やはり、1日置いてから考え直すと分かることも多い。

これによって、最密部分グラフを視覚的レベルではうまく取り出せることが分かった。
数学的に最適解かどうかは確認していないが、今回は厳密な最適解までは必要ないので、視覚的レベルのみで確認している。
ところで、submodular toolbox だと sfo_min_norm_point の関数で xhat を output としていない。
このままだと、

Nagano, K., Kawahara, Y., & Aihara, K. (2011). Size-constrained Submodular Minimization through Minimum Norm Base. Proceedings of the 28th International Conference on Machine Learning,. Bellevue, WA, USA: ICML. Retrieved from http://www.icml-2011.org/papers/506_icmlpaper.pdf

の方法がつかえないので、sfo_min_norm_point の関数冒頭の function 定義で xhat も output にするように変更した。(もともと xhat は内部計算に使われているので、output に追加しただけ。)


アルゴリズムとしてはこれでいいのだが、実用的なレベルではうまく行っていないことに気がついた。
最密部分グラフとしては連結グラフがほしいのだが、密となる部分が数箇所あると、それぞれが密として抽出されるのである。
それぞれの箇所のうち、最大連結成分のものをまずは最密部分グラフとして出力するように、これから改良して行こうと考えている。

今日の作業内容: submodular 3h + 本読み 2h
今日のランチ:つかさ 生サーモン照り焼き
明日の予測作業時間:5h

2012年1月13日金曜日

submodular toolbox がうまく使えていない様子

最密部分グラフを求める計算で、submodular 関数として計算することができるようなので、やってみているのであるが、現状ではうまくいっていない。

今回は submodular function optimization toolbox を利用している。
http://www.mathworks.com/matlabcentral/fileexchange/20504-submodular-function-optimization/content/sfo/sfo_min_norm_point.m
入力として作ったグラフは、前回と同じく

[0,1]x[0,1] の2次元正方形にランダムに100個のノードをばら撒いて、[0.1,0.5]x[0.2,0.6] に 20 個をばら撒く。
このとき、距離が 0.15 以下となるノード同士を枝でつなぐ。

これでできた距離行列を distanceMatrix としたときに、


    [m,n] = size(distanceMatrix);
    [findI,findJ,findV] = find(distanceMatrix);
    findV2 = ones(length(findV),1);
    distanceMatrix1 = sparse(findI, findJ, findV2, m, n);

    fn = @(nodeSet) -full(sum(sum(distanceMatrix1(nodeSet,nodeSet))));
    F = sfo_fn_wrapper(fn);

として関数ハンドラを生成している。
つまり、すべての枝の重さを1として、nodeSet で与えられたノードの集合に両端が含まれる枝の数をマイナスしたものを最小化する。
これで、
[bestSet] = sfo_min_norm_point(F,1:n);
とすると、最密部分グラフを構成するノード集合が得られる予定であったのだが、実際にやってみるとノードが2個か3個になってしまう。

Toolbox を正しく利用できていないのか、toolbox のアルゴリズムに間違いがあるのか、それをまずは切り分ける必要がある。

今日の作業内容: toolbox 2h + 論文読み 3h
今日のランチ:らく 鶏の照り焼き定食
明日の予測作業時間:4h

2012年1月12日木曜日

mendeley で bibtex 管理をしてみる

この前の SDPARA の原稿のときに bibtex の便利さに今更ながら気がついたが、今更過ぎてひとつひとつを bibtex で入力するのは面倒である。
できれば、論文の PDF を登録すると自動的に bibtex にしてくれるようなものが便利である。
Mac OS X なら bibdesk でできるのであるが、これを Windows か Linux でできる方法をさがしていたところ、mendeley という Web サービスを発見した。
(JabRef も試したが、PDF から bibtex に自動抽出する方法が良く分からず断念した。)

これは、500MB までならフリーで PDF をアップロードできて、それぞれの PDF から自動的に bibtex の情報を抽出できるというものである。
モノはためし、ということで SDPARA の論文で早速やってみたところ、問題なく bibtex に抽出できた。
ただし、リサーチレポートなど学術雑誌になっていないものや、古い学術雑誌でスキャナで取り込んで PDF になっているものなどは、うまく抽出できない部分があったため、手入力で情報を修正する必要があった。

いずれにしても、これから論文 PDF をダウンロードした場合には、ここにストックすることにしようと考えている。
登録した時間で時系列表示もできるので、いつごろにどんなことを勉強していたかの記録の代わりにもなりそうである。

今日の作業内容: mendeley チェック 3h
今日のランチ:味庵 麻婆豆腐
明日の予測作業時間:5h

2012年1月11日水曜日

最密グラフのヒューリスティクス

金曜日に聞いた話で、submodular を使うと与えられたグラフの最密部分グラフがわかる、ということで、これはSNLの計算につかえるのでは?と思って調べている。

まず、いきなり submodular だとハードルが高すぎるので、比較的わかりやすそうなヒューリスティクスで、雰囲気をつかむことにした。

今回実装したヒューリスティクスは、

http://www.cs.umd.edu/~barna/icalp-final.pdf
である。
アルゴリズムとしては、degree の低い node からはずしていって、外すごとに密度を計算する。
この過程で最大の密度を達成したところが、ヒューリスティクスの算出する最密部分グラフである。

このヒューリスティクスでは2倍の精度で最適解を出力する。
つまり、最大密度が 0.9 なら、このヒューリスティクスでは 0.45 から 0.9 の密度となる部分グラフが求まる。

実際にやってみるとわかったが、2倍の精度というのは自分の感覚と相当ずれている。
たとえば、
[0,1]x[0,1] の2次元正方形にランダムに100個のノードをばら撒いて、[0.1,0.5]x[0.2,0.6] に 20 個をばら撒く。
このとき、距離が 0.15 以下となるノード同士を枝でつなぐ。

想定としては [0.1,0.5]x[0.2,0.6]に集中配備だから、ここが最密部分グラフとなるかと思うのだが、乱数によって、ここが出力されたり、グラフ全体を出力したり、ということが、ままある。
あと、乱数の関係で2ノードだけが他から孤立していて、その2ノードは互いにつながっている、という孤島ができることがあるのだが、このとき何故か片方だけが最密部分グラフに取り込まれたりする。

やはり、2倍の精度というのは、SNL 計算には甘いのかもしれない。
いずれにしても、だいたいの雰囲気はわかったので、これで submodular についても検討してみようと思う。

今日の作業内容:最密部分グラフ 3h
今日のランチ:ちゅらさん
明日の予測作業時間:3h

2012年1月10日火曜日

sparsePOP の C++ 版の Windows バイナリを作成

sparsePOP には C++ 版があって、Matlab がなくても実行できるが、Windows バイナリは準備されていなかった。
sparsePOP-C++ で利用しているライブラリのライセンス関係を調べてみたところ、ライセンスについてまとめたものを作成すれば大丈夫ということが分かったので、Windows バイナリが作れるかどうかを試してみた。

結果的に、SDPA 同様に Debian のクロスコンパイルを使えば、sparsePOP-C++-Windows を作ることができる。
ただし、以下の2点には注意が必要と考えている。


(1) metis は 5.0 以降になると idxtype がなくなっていて、
sparsePOP からは利用できない。
(2) metis 4.0.3 は srand48, drand48 という、 Linux にはあるけど
Windows にはない関数をつかっているので、それぞれ srand, rand で
代用できるように libsdrand48.c を作成


最初のコンパイル成功までにはエラーを削除したりなどで5時間程度かかったが、一度できてしまうとコンパイル自体は3分しかかかっていなかった。


現状としては上記のライセンスをまとめたものを準備していないので配布はできないが、これを準備すれば公開できる手はずである。


今日の作業内容:sparsePOP コンパイル 5h
今日のランチ:らく 焼き魚定食
明日の予測作業時間:4h



2012年1月6日金曜日

psファイルのトリミング(bouding box)

TeX で図を入れるとなると eps ファイルとなるが、eps ファイルを Matlab などで生成した場合に軸をTeXの数式で表現したいといったことがある。

このときには、eps ファイルを取り込んだ tex ソースファイルを別途作り、ここで pstricks で数式なり文字列なりを任意の位置に挟み込み、普通にコンパイルした後、dvips で1ページ分だけの ps ファイルにする。
ただ、この方法だと ps ファイルで余白が大きくなり、余白のトリミングが必要である。

余白のトリミング ps ファイルをテキストエディタで開いて bouding box の数字を変更すればできるのだが、できるだけ自動で行いたい。
Ubuntu の場合には、
$ ps2epsi a.ps a.epsi
とすれば、トリミングがされた eps ファイルに変更される。
このあとで
$ mv a.epsi a.eps
とでもすればよい。

ただし、
$ ps2eps a.ps a.eps
とすると、トリミングは行われないようである。

今日の作業内容:SDPA 問い合わせ対応 3h + 論文校正 2h
今日のランチ:しなの 玉子丼セット
明日の予測作業時間:4h

2012年1月5日木曜日

SDPA関係問い合わせが3件

冬休み中に SDPA 関係で3件の問い合わせが来ていた。
ここでは、Q&Aっぽく2件をまとめてみる。

[Q1] SDPA-M を実行すると Matlab ごとクラッシュする。特に Schur が SPARSE になったときにクラッシュするようである。

[A1] この場合、原因は MUMPS の可能性が高い。
MUMPS は一部がスレッドセーフになっていないようで、マルチスレッド計算をするとクラッシュすることがある。
この場合は、
>>> maxNumCompThreads(1);
としておけば、シングルスレッドになるため、(計算時間はかかるが)計算は続行できる。

[Q2] SDPA の callable library を呼んだときと SDPA のバイナリファイルを読んだときだと、数値結果が若干異なることがある。

[A2] リンクしているライブラリ (BLASや LAPACK, GLIBC など)が異なると、数値誤差の影響が出やすい(入力行列が一次従属など)場合では数値結果にも影響が出くることがある。
たとえば、OpenBLAS でも、最新版を git で取ってきて、それまでの版と比較すると、入力行列が一次従属な問題では数値誤差の影響が表面化しやすい。

今日の作業内容:SDPA 対応 3h
今日のランチ:シッダルータ チキンカレー
明日の予測作業時間:4h