macbookのメモリを4Gに増やした

相変わらず白いmacbook(2008 Intel Core 2 Duo 2.4GHz)を使っているが、そろそろ4年経つ

最近OSを10.6にあげたらスワップして固まることが頻発し、イライラさせられることが増えた。

そろそろ新しいのにチェンジかなぁと思っていたが、安いメモリを見つけたので増設してみた(といってもPC3だと同じ値段で8Gにできるのでお買い得かどうかは難しい判断)。

これでとりあえず固まってイライラさせられることはなくなったのでとりあえず良かったということにしよう。

PyMOL v1.5をosx10.6.8に入れた

リリースしている安定版はインストールできなかったので、svnのtrunk(r3983)を入れた。それからbrewを使っているのでsetup.pyをちょっと変える必要があった。

/opt/localはmacports用の設定だと思うので/usr/X11に変更しないとGL/gl.hがないとかそんなエラーを吐くはず。

156         EXT = "/usr/X11"
157         inc_dirs=["ov/src",
158                   "layer0","layer1","layer2",
159                   "layer3","layer4","layer5",
160                   EXT+"/include",
161                   EXT+"/include/GL",
162                   EXT+"/include/freetype2",
163                   "modules/cealign/src",
164                   "modules/cealign/src/tnt",
165                   "generated/include",
166                   "generated/src",
167                   ]

それからPmwはソースをダウンロードしてきて入れた。なくても動くと思うが、import errorが出るので気持ち悪かったから後から入れておいた。

OS Xでxzを使う

Pythonのソースをダウンロードしようとしたらxz形式のサイズが妙に小さかったので、なんじゃこれと思ったら昔見たことあったわと。

macbookでも使いたかったので

brew install xz
brew install gnu-tar

で入れた。ちなみにコマンドはtarじゃなくてgtarになる。

圧縮は

gtar Jcf sample.tar.xz sample

解凍は

gtar Jxf sample.tar.xz

コマンドもわかりやすいので今度からはこっちを使おうっと。

snow leopardにアップグレードした

PhoneGap1.2がMacOS10.6以降じゃないとダメらしいので、アップグレードした。この前の飲み会で誰かがLionだとメモリを食うから増設したとか言ってたのでLionにはしないでおいた。

ProductName MAC OS X 10.6.3 SNOW LEOPARD

アップル / ?円 ( 2010-04-21 )


ついでに、Traktorもtraktor pro2にしてみた。

ProductName Native Instruments TRAKTOR PRO 2

Native Instruments / 22340円 ( )


こっちはヘッドフォンから音が出なくてちょっとトラブったがoutputの設定をきちんと見なおして解決。

PEP8に従うとEmacs縦二分割が快適に使える

pep8をGrowlで通知させるようにして数日経つが、Emacsを左右に分割するようになった(今までは上下に分割)

pep8の一行79文字以内におさめるという規約のおかげで左右に分割すると読みやすい。

pep8emacs

ちょっと生産性が上がった感がある。

osxでHadoopのNameNodeが起動しない

macbookにHadoopを入れたのだけどきちんと起動してない。jpsで見てみるとNameNodeが起動していないことが原因のようだった。

ログを見てみると、設定ファイルに記述したlocalhostじゃなくてマシン名+".local"(hostnameで表示される文字列)で立ち上げようとしてた。理由は良くわからんがとりあえず設定ファイルをこちらの名前で書き直す。

さらに、パスワードなしsshアクセスできるように.ssh/authorized_keysに追加しておく。

ProductName Hadoop
Tom White
オライリージャパン / 4830円 ( 2010-01-25 )



これでうまくうごいたので、早速HadoopStreamingをやってみる。サンプルコードはHadoop Streaming - naoyaのはてなダイアリーから。

$ hadoop jar hadoop-0.20.2/contrib/streaming/hadoop-0.20.2-streaming.jar \
-input log.txt -output log.out -mapper map.pl -reducer reduce.pl
...
11/04/21 05:21:24 INFO streaming.StreamJob:  map 100%  reduce 0%
11/04/21 05:21:33 INFO streaming.StreamJob:  map 100%  reduce 100%
11/04/21 05:21:36 INFO streaming.StreamJob: Job complete: job_201104202054_0004
11/04/21 05:21:36 INFO streaming.StreamJob: Output: log.out

OKっぽいのでアウトプットを見てみる

$ hadoop fs -cat log.out/part-00000
403 3
304 3786
206 2
400 11
313 14
200 49190
302 48
301 223
404 2476

あとは擬似分散環境じゃなくてちゃんとした分散環境を構築すればいいですね。

バーチャルで化合物つくると組み合わせ爆発おこしてその先のハンドリングに難儀するのでchemoinformaticsでもMapReduceうまく使えないかなと思っているわけです。

参考

macbookにHadoopを入れた

オライリーの本みながら0.21.0使うとはまるので、0.20.2を入れる。

conf/hadoop-env.shのJAVA_HOMEを設定

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

動作確認でバージョンを表示させてみる。

$ hadoop-0.20.2/bin/hadoop version
Hadoop 0.20.2
Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707
Compiled by chrisdo on Fri Feb 19 08:07:34 UTC 2010

ちゃんと動いてれば.bashrcに追加

export HADOOP_INSTALL=/Users/kzfm/hadoop-0.20.2
export PATH=$HADOOP_INSTALL/bin:$PATH

あとはHadoop本の通りに擬似分散モードで動かす。ちなみにmacbookでsshアクセスできるようにするには「システム環境設定」→「共有」→「リモートログイン」で。

ProductName Hadoop
Tom White
オライリージャパン / 4830円 ( 2010-01-25 )


hdfsを起動させるときには

$ hadoop namenode -format
$ start-dfs.sh
$ start-mapred.sh

hdfsを停止させるときには

$ stop-mapred.sh 
$ stop-dfs.sh

Pythonでファイル更新検知して任意のコマンドを実行する簡易コマンドを作った

Sphinx使っているのだけどファイルを更新するたびにmake htmlと打って確認するのがめんどくさい。linuxだったらpyinotifyがあるんだけど、macbookでは使えない。

簡易コマンド書いた。

#!/usr/bin/env python

import os
from time import sleep, strftime, localtime
import sys
import commands

filename = sys.argv[1]
mycommand = sys.argv[2]

def get_mtime():
    return os.stat(filename).st_mtime

mtime = get_mtime()
while 1:
    sleep(1)
    new_mtime = get_mtime()
    if mtime != new_mtime:
        mtime = new_mtime
        commands.getoutput(mycommand)
    print "done: %s ( %s )" % (mycommand, strftime("%a, %d %b %Y %H:%M:%S", localtime(mtime)))

監視対象のファイルを第一引数に、更新されたら実行するコマンドを第二引数に。

$ wdo docutils.rst "make html"
done: make html ( Wed, 06 Apr 2011 05:12:30 )
done: make html ( Wed, 06 Apr 2011 05:26:27 )
done: make html ( Wed, 06 Apr 2011 05:28:36 )
done: make html ( Wed, 06 Apr 2011 05:33:35 )
done: make html ( Wed, 06 Apr 2011 05:33:45 )

そうです、お分かりの通り早朝からdocutilsのソースを読んでいるのです。

ちなみにpyhttpd='python -m SimpleHTTPServer'っていうalias切っているので、makeで生成されたhtmlはlocalhost:8000で見てる

参考

RemoteDroid

来週プレゼンするのにandroidリモコンが欲しいなぁと検索していたのだけど、macにbluetoothで通信するのが見つからなかった。

会場でWiFi使えるならRemoteDroidでいいのかもしれないけど、bluetoothでつなげたいのう。

windowsだったらPPT Remoteが使えるらしいんだけど。

1277119263

MacBookにBLAST+をいれた

今日は子守で会社を休んでいるのでPRMLのサンプリングの章でもじっくり読んでやるかという有意義そうな予定を組んでいたのだけど、なぜかmacbookにblast入れたりしていた。

しかもportで入れたblastが古くてあれやなぁと。調べたら今時はBLAST+(ブラプラって読むの?)らしくて、Biopythonのほうも対応しているらしいのでこっち入れなあかんやろと、何が目的だっけ?そもそもblast入れる目的なんだっけ的なよくあるパターンに。

NCBIのダウンロードサイトからMac OSX用のをダウンロードすればよい。

/usr/loca/ncbi/binにインストールされるのでパスを切っておく。

コマンドは引数も含めていろいろ変更されていて、blastallのpオプションで指定していたのがそのままコマンドになっている。formatdbがmakeblastdbになっていたりとか。

引数も短縮形じゃなくて、意味がわかるようなものに変更されている。

blastp -query test.fasta -db pdbaa

あと、ホームディレクトリでblast実行すると以下のエラーが出るんだけど、最初どこに問題があるんだかわからなかった。

  what():  NCBI C++ Exception:
    "/am/ncbiapdata/release/blast/src/2.2.23/IntelMAC-universal/c++/GCC401-
ReleaseMT--IntelMAC-universal/../src/objtools/blast/seqdb_reader
/seqdbimpl.cpp", line 412: Error: OID not found

Abort trap

で、dbのファイルを絶対パスで指定してやると解決した。

blastp -query test.fasta -db /Users/kzfm/blast/db/pdbaa

ただしデータベースが見つからないときのエラーは

BLAST Database error: No alias or index file found for protein database

こんなんだからなぁ。

なんなんだろうね。バグ?

ProductName Bioinformatics Programming Using Python
Mitchell L. Model
Oreilly & Associates Inc / 5075円 ( 2009-12-23 )