19032010 music
明日から
19032010 music
明日から
18032010 chemoinformatics Python
ほとんど化合物情報をTokyo Cabinetで管理してみると同じノリで出し入れできそう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/usr/bin/env python # -*- encoding:utf-8 -*- import pybel import couchdb sdffile = "pc_sample.sdf" couch = couchdb.Server() db = couch.create('pubchem') mols = pybel.readfile("mol",sdffile) for mol in mols: title = mol.OBMol.GetTitle() molstring = mol.write("mol") db[title] = {"mol":molstring} |
化合物情報みたいな、RDBで管理しやすいようなデータよりは、in vivoの薬理試験とか動態試験みたいな、プロトコル間で比較があまりなくて、かつ所見とかの文章データが重要なもののほうが向いているのかもしれんなぁと思った。PKデータなんてIDで探して、時点と個体のデータがJSONで引っ張ってこれるようにしとけばナイスすぎる!
javascriptからRの関数呼べんかな?そうすればJSONでデータ受け取ってPKfitとか使えんのにな。それかbrewとか
書籍もいくつか出てるけど、日本語ないなぁ。そのうち出るんかな?
18032010 Python matplotlib machinelearning
遺伝アルゴリズム
Machine Learning: An Algorithmic Perspective (Chapman & Hall/Crc Machine Learning & Patrtern Recognition)Four Peaks Problemってのがあるらしい。目的関数が
目的関数はこんな感じ。
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
from itertools import takewhile
def o(bits):
return len(list(takewhile(lambda x: x == 1,bits)))
def z(bits):
return len(list(takewhile(lambda x: x == 0,reversed(bits))))
def f(bits):
reward = 100 if o(bits) > 10 and z(bits) > 10 else 0
return max(o(bits),z(bits)) + reward
if __name__ == "__main__":
bits1 = [1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
bits2 = [1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
for bits in [bits1,bits2]:
print "score: %d %s" % (f(bits),bits)
#score: 20 [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#score: 114 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
要するに素直に探索していくとローカルミニマムに落ちるようになっていて、ピークの数が4つあるのでFour Peaks Problem
連続した1,0の長さでcontour plotを描いた。

#!/usr/bin/env python
# -*- encoding:utf-8 -*-
def sim_score():
for x in range(100):
for y in range(100):
if x + y > 100:
yield 0
else:
score = four_peak(x,y)
yield score
def four_peak(x,y):
reward = 100 if (x > 10 and y > 10) else 0
score = max(x,y) + reward
return score
if __name__ == "__main__":
from pylab import *
delta = 1
x = arange(0, 100, delta)
y = arange(0, 100, delta)
X, Y = meshgrid(x, y)
Z = array([z for z in sim_score()])
Z.shape = 100,100
im = imshow(Z,origin='lower' ,alpha=.9)
colorbar(im)
cset = contour(X,Y,Z)
clabel(cset,inline=1,fmt='%1.1f',fontsize=10)
hot()
savefig('4peaks.png')
17032010 java
二年近く積んであったが、最近javaで書いてるので読んでみたら想像以上に面白かった。厚さの割にスラスラ読めたので、二日程度で読み終わった。
良書
後半は、パターンが解決したかった「もの」が多かったので、デザインパターンを知っていないと理解しにくいかもしない。逆に知っていればさらっと入ってくる。
17032010 macbook
macbookのHDDを交換したのでSoftware Design 総集編のpdfを入れてみた。
Spotlightで検索できるようになって便利。
16032010 macbook
結局半日かかった。
そろそろmacbookのHDDが一杯なので、交換しようと思い立ち、amazonでドライバ,ネジ、SATAケースを注文。ドライバは近所のホームセンターに売ってなかったのでめんどくさくなってamazon使ったけど、ダイソーとかにも売ってるらしい。
昨日ケース以外が届いたので、TimeMachineから復元すればいいかなぁと昼から交換作業を開始した。HDD交換してDVDインストールに2時間くらい、そのあとTimeMachineからの復元に5時間くらいかかった。
ケースはwindowsで管理していた写真をmacbookに移すために必要だったので、これが届いたら写真のデータをmacbookに移してwindowsからの以降が完全に完了する。
この方法だとXcodeは入れなおさないといけない。
16032010 Python
mixiにあったはずなのに消えてた。
皆さんこんにちは。Linuxのwhoコマンドのアウトプットを時間昇降順にソート(qsort()を使って)したいと思っています。
pyutmpを使って。
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
from pyutmp import UtmpFile
from time import ctime
utmps = [utmp for utmp in UtmpFile()]
for utmp in sorted(utmps,cmp=lambda x,y: cmp(ctime(x.ut_time),ctime(y.ut_time))):
print '%s %s %s' % (utmp.ut_user, utmp.ut_line, ctime(utmp.ut_time))
15032010 life
三毒追放。これにつきる。
妬まない、怒らない、愚痴らない
妬むとかそっち方面はあんまないんだけど、イライラすることは多いなぁ、特に向上心のないっていうか歴史に学ばない人と一緒のチームにされたりするとダメだなぁ。
まぁ、負の感情はゼンマイとしてまく動力としては効率的な場合があると思うのだけど、あんまネガティブすぎんのも良くないなぁとは思っている。
これとかもたまに読むとよいですな。
伊豆長岡のイチゴ狩り。苺はすぐに食べ飽きるので、大人1200はちと高いがまぁアミューズメントとしてはアリかな。

そのまま海沿いの414を遠って三津シーパラダイスへ。この時期寒いので防寒対策は必要。


イルカとかアシカのショーを見て満足。
帰りは中央道から、藤堂でラーメン。


楽しかった。