構造最適化シミュレーションをCytoscapeで

以前、おもむろに思いついたLeadOptimizationのシミュレーターで、networkxはgml出力できてCytoscapeでimportすればいいじゃんということに気づいてヤル気が出た。

ついでにコードもちょっと直して、活性はpIC50とかそういうレンジにしてみて、μMオーダーから上げていくようにした。

projectsim

エッジは世代を表していて、黄色から緑にむけてすすんでいく。ノードの色は活性を表していて黒から赤になるにしたがって活性が向上する。最初の方は活性が振れるけど段々向上していって安定するようにしてみた。

リードホッピングとは選択されなかったより良い未来を選択しなおすことであるとするならばそのような希望はLO初期のあたりに存在すると思うのだ。

以下、書いたコード

from random import random
import networkx as nx

class Branch(object):
    """LeadOptimization flow
    potency: pIC50 or such
    weight : range for activity
    """

    count = -1

    @classmethod
    def inc_count(cls):
        cls.count = cls.count + 1
        return cls.count

    @classmethod
    def get_count(cls): return cls.count

    def __init__(self,potency,weight):
        self.id = Branch.inc_count()
        self.potency = potency
        self.weight  = weight
        self.activity = self.potency + self.weight * random()

    def make_child(self,num_childs,potency,weight):
        return [Branch(self.potency + self.weight * (random()-0.5)*2,self.weight * 0.5) for i in range(num_childs)]

if __name__ == "__main__":
    max_comps        = 500 # total compounds
    initial_branches = 1   # number of lead compounds
    lead_potency     = 5   # lead activity
    generation       = 0

    G=nx.Graph()

    heads = [Branch(lead_potency,2) for i in range(initial_branches)]
    map(lambda b: G.add_node(b.id, activity=b.activity),heads)

    while Branch.get_count() < max_comps:
        new_heads = []
        generation += 1
        for branch in heads[:int(2+5*random())]:
            for new_comp in branch.make_child(int(40*random()),branch.potency,branch.weight):
                G.add_node(new_comp.id, activity=new_comp.activity)
                G.add_edge(branch.id, new_comp.id, genneration=generation)
                if new_comp.activity > 7:
                    new_heads.append(new_comp)
        heads = new_heads
        heads.sort(key=lambda x:x.activity)
        heads.reverse()

    nx.write_gml(G,"test.gml")

WiFi Body Scaleが欲しい

これと無線の血圧計あれば完璧なんだけど。

Real World Haskell 後半

15章を境にpost-itが激減してる。

1286536364

PRMLの上下みたいなパターンだ

二周目はここからが本番。

セマンティックWebプログラミング

写経無しの流し読み。論理プログラミングっぽいとこはOn LispでやったかPrologの本読んだか、なんとなく追うだけで理解できたので。

ネットで得た情報を一度自分の中で整理するという目的においては本書は良かった。

ProductName セマンティックWeb プログラミング
Toby Segaran,Colin Evans,Jamie Taylor
オライリージャパン / ¥ 3,360 ()
在庫あり。

  • アプリケーションとアプリケーションが利用するデータは共進化する傾向があります
  • データをモデル化するための新しい方法
  • RDFはトリプルとして表現された文を使ってデータモデルを表現する言語
  • オントロジー
  • セマンティックデータはエンティティどうしの関係に焦点を当てている
  • micoroformat,RDFa
  • グラフデータをオブジェクトを結びつけるO/Rマッパーのようなもの
  • W3Cが勧告しているかは重要
  • コンテキストデータを保守するリソースはオーバーヘッド

「今度行く」と「行ってきた」20101007

kzfmのブックマーク / kdi (38)

kzfmのブックマーク / itk (12)

日乃出町酒場 げんさんに行った

個室で落ち着く。

1286451435

ビールと長雲飲んできた。長雲うまいね。

しめ鯖と牛肉ずし。しめ鯖美味し。牛肉寿司は子どもが食べてた。

1286451438 1286451440

カレーもつ煮と焼き鳥。カレーもつ煮うまい。焼き鳥はちょっと塩がきつくて僕の好みからは外れるかも。というわけで焼き物は王将のほうが好きかな。

1286451431 1286451433

ゆで落花生をつまみながら長雲で〆た。

1286451445

多分また行く。

Real World Haskell 14章

二周目読んでて今のとこ一番感動した。

14.13のモナドとファンクタのところで

join :: m (m a) -> m a

として

(>>=) :: AltMonad m => m a -> (a -> m b) -> m b
xs >>= f = join (fmap xs)

となるが、ここへ至る過程が素晴らしい。

14.10のリストモナドにおけるバインド(>>=)を型から構成していく過程を経て拡張していくのでここをよく読んでおくとよい。

ちなみにリストモナドのバインドは

xs (>>=) f = concat (map f xs)

それぞれ、

Prelude> :t map
map :: (a -> b) -> [a] -> [b]
Prelude> :t concat
concat :: [[a]] -> [a]

リストの型が[] a つまり[a]であることから類推できる。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan,John Goerzen,Don Stewart
オライリージャパン / ¥ 3,990 ()
在庫あり。

Scheme手習い

悩む

ProductName Scheme手習い
Daniel P. Friedman,Matthias Felleisen
オーム社 / ¥ 2,940 ()
近日発売 予約可

ほしい物リストスタックが積まれてないし、買ってもよいかなと思っている。

「畑から届いた採れたて野菜レシピ」が届いた

U体調が土曜日働くことになったので、もう少し料理をしようと思っている。

ProductName ビオファームまつき 畑から届いた採れたて野菜レシピ
松木一浩
学研パブリッシング / ¥ 1,575 ()
在庫あり。

スープカレーだって作ってないのがまだあるしなぁ。

ProductName スープカレーキッチン (マーブルブックス―デイリー・メイドシリーズ)
水野 仁輔
マーブルトロン / ¥ 1,575 ()
在庫あり。

秋月電子のキットだって眠っている。

ProductName 秋月電子のキットを作る〈2009〉―完成までのノウハウと応用例を満載 (はじめてのエレクトロニクス)
高木 誠利,吉田 功,野村 光宏
CQ出版 / ¥ 2,100 ()
通常2~5週間以内に発送

今日の畑(101006)

今日は仕事が休みだったので、好機とばかりに畑へ。15:30から17:00過ぎまで、雑草抜いて耕して、さぁ種でも蒔くかと思ったら雨降ってきたので終了。こぼれ種から発芽したゴーヤどもも雑草として抜きまくった。

週末に種だけ撒けるようにしておいた。

収穫したのは、甘長美人、茄子、浅葱、茗荷。

種取り用に残しておいたオクラ。オクラは種から育てても簡単に大きくなると聞いたので来年はコレでいこうと。失敗したら苗買えばいいし。

1286359090

浅葱も大きくなってきたので少し収穫してみた。みじん切りにして冷凍しておけばいいかな。

1286359096

ニンニクも芽が出てきた。うまく育つといいな。

1286359104