kikUUiki / サカナクション

明日から

ProductName kikUUiki(初回限定盤)
サカナクション
ビクターエンタテインメント / ¥ 2,800 (2010-03-17)
在庫あり。

CouchDBにsdfを突っ込む

ほとんど化合物情報を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とか

書籍もいくつか出てるけど、日本語ないなぁ。そのうち出るんかな?

ProductName CouchDB: The Definitive Guide
J. Chris Anderson
Oreilly & Associates Inc / 3390円 ( 2010-01-15 )


ProductName Beginning CouchDB
Joe Lennon
Apress / 3783円 ( 2009-12-30 )


ProductName Couchdb in Action
Christopher Chandler
Manning Pubns Co / 4180円 ( 2010-12-28 )


Machine Learning: An Algorithmic Perspective 12章

遺伝アルゴリズム

ProductName Machine Learning: An Algorithmic Perspective (Chapman & Hall/Crc Machine Learning & Patrtern Recognition)
Stephen Marsland
Chapman & Hall / ¥ 6,529 ()
通常2~3週間以内に発送

Four Peaks Problemってのがあるらしい。目的関数が

  • 最初のビットからの連続した1の長さか最後のビットから連続した0の長さの大きいほう
  • 但し、両端の1,0の連続した数が10以上の場合は100ポイント獲得する。

目的関数はこんな感じ。

#!/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を描いた。

4-peaks problem

#!/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')

Java言語で学ぶリファクタリング入門

二年近く積んであったが、最近javaで書いてるので読んでみたら想像以上に面白かった。厚さの割にスラスラ読めたので、二日程度で読み終わった。

良書

ProductName Java言語で学ぶリファクタリング入門
結城 浩
ソフトバンク クリエイティブ / ¥ 3,360 ()
在庫あり。

  • enumでシンボリック定数を表現
  • 名前重要
  • 双方向リンクは避ける
  • タイプコードを表す新しいクラスを作る
  • リスコフの置換原則
  • @override

後半は、パターンが解決したかった「もの」が多かったので、デザインパターンを知っていないと理解しにくいかもしない。逆に知っていればさらっと入ってくる。

ProductName 増補改訂版Java言語で学ぶデザインパターン入門
結城 浩
ソフトバンククリエイティブ / ¥ 3,990 ()
在庫あり。

Software Design 総集編をmacbookに突っ込んだ

macbookのHDDを交換したのでSoftware Design 総集編のpdfを入れてみた。

Spotlightで検索できるようになって便利。

ProductName Software Design 総集編 【2000~2009】(DVD付)

技術評論社 / ¥ 2,079 ()
在庫あり。

macbookのHDDを交換した

結局半日かかった。

そろそろmacbookのHDDが一杯なので、交換しようと思い立ち、amazonでドライバ,ネジ、SATAケースを注文。ドライバは近所のホームセンターに売ってなかったのでめんどくさくなってamazon使ったけど、ダイソーとかにも売ってるらしい。

ProductName SANWA SUPPLY TK-002 ドライバーセット

サンワサプライ / ¥ 819 ()
在庫あり。

昨日ケース以外が届いたので、TimeMachineから復元すればいいかなぁと昼から交換作業を開始した。HDD交換してDVDインストールに2時間くらい、そのあとTimeMachineからの復元に5時間くらいかかった。

ケースはwindowsで管理していた写真をmacbookに移すために必要だったので、これが届いたら写真のデータをmacbookに移してwindowsからの以降が完全に完了する。

追記 100316

この方法だとXcodeは入れなおさないといけない。

whoのアウトプットを時間順にソート

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))

「起きていることはすべて正しい」を読んだ

三毒追放。これにつきる。

ProductName 起きていることはすべて正しい―運を戦略的につかむ勝間式4つの技術
勝間 和代
ダイヤモンド社 / ¥ 1,575 ()
通常4~5日以内に発送

妬まない、怒らない、愚痴らない

妬むとかそっち方面はあんまないんだけど、イライラすることは多いなぁ、特に向上心のないっていうか歴史に学ばない人と一緒のチームにされたりするとダメだなぁ。

まぁ、負の感情はゼンマイとしてまく動力としては効率的な場合があると思うのだけど、あんまネガティブすぎんのも良くないなぁとは思っている。

これとかもたまに読むとよいですな。

ProductName 自分の小さな「箱」から脱出する方法
アービンジャー インスティチュート,金森 重樹,冨永 星
大和書房 / ¥ 1,680 ()
在庫あり。

いちご狩り - ミトシー - 藤堂

伊豆長岡のイチゴ狩り。苺はすぐに食べ飽きるので、大人1200はちと高いがまぁアミューズメントとしてはアリかな。

1268651254

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

1268651217 1268651223

1268651248

イルカとかアシカのショーを見て満足。

帰りは中央道から、藤堂でラーメン。

1268651229 1268651236

1268651242

楽しかった。

亀泉

冷だと、あんま深みを感じないが、燗つけると美味い。

1268567504

これは気に入った。