PDCAと成果主義

なんとなく思ったので、書いておく。

PDCAサイクルってありますね。Plan - Do - Check - Actionというあれです。

創薬もアジャイル開発なのでPDCAをどんだけ早く快適にまわすかってのは重要なわけです。

創薬的にはこんな感じ

  • P: 合成計画を立てる
  • D: 合成する
  • C: アッセイする
  • A: 分析する、解析する
  • P: (解析結果をもとに、よりより)合成計画を立てる

個人的には量子化学的な手法をSBDDに組み込むっていうのが興味があって色々やっているわけですが、ああいう手法って解析の部分には非常に貢献する(見えなかった相互作用が明確に理解できたりとか)のだけど、じゃぁ、その知見を「合成計画に反映させる」となると、とたんに難しくなったりして、結局、解釈で終わってしまうことが多々あるわけです。

僕自身は、そういうことを積み重ねていって段々とPlanのほうにも貢献していくようにノロマなプロセスを踏むしかない(というか踏む)のがいいのかなと思っているのだけど、成果主義的な観点だと「結果的に貢献してないから何もしてないと同義」的な扱われ方をしますよね。

と、よくある成果主義批判っぽいことを書いているだけなんですけど、それがダメっていいたいわけじゃなくて、そこんとこをうまくバランスとっていく術ってないのかなぁと。

そういう例が知りたい。

構造最適化シミュレーションを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")

スーパーマリオギャラクシー 2

ここのとこ、毎日夕食後にゲームに付き合わされていて、且つ家が暑いのでなにもヤル気がおきない。

で、今夜はStage2を超えてあたらしいギャラクシーに行けたのでちょっと嬉しい。

あとタテタカコを聴くのも日課

ProductName 裏界線
タテタカコ
バップ / ¥ 2,000 (2005-02-23)
在庫あり。

ライブいいんだろーなー

卑怯者 / タテタカコ

前向きになれていいですね。

ProductName 裏界線
タテタカコ
バップ / ¥ 2,000 (2005-02-23)
在庫あり。

宝石は懺悔しすぎるからあんま良くないな。空虚なのに何かが詰まっている感がある。

ProductName そら
タテタカコ
バップ / ¥ 2,000 (2004-07-22)
在庫あり。

くろ麦

「帰る前に蕎麦食べていきたいなぁ、胡桃亭いこうよ〜」

と言ったら

「近所にあるくろ麦もうまいよ」

とのことだったので、そちらにお邪魔。

1283252916

三味蕎麦というのが、6種類の出汁から3つ選べて楽しそうだったので、とろろ、海老天、鴨汁をチョイス。

1283252922

娘と息子が海老天を食べたがってうるさいので追加で注文

1283252928

季節限定のモロヘイヤ蕎麦。これが超うまかった。

1283252934

満足。

富士で更科が美味しいとこないかな。

山水閣でお食事

先々週は急遽祖母の米寿祝いをやることになり、帰省。山水閣でお食事会

1283252180

ゴールデンウィークで見た時よりも弱ってた。足悪くすると一気に老けるね。

先付け。鮎の干物、ミョウガの寿司。造り(魚(忘れた)と牛肉)

1283252174 1283252192

チーズ入りの茶碗蒸し、絶品。イワナの塩焼き

1283252162 1283252156

しゃぶしゃぶ

1283252186

ご飯

1283252198

昼の食事会は運転手で飲めなかったので、帰りに月井酒店で大那の純吟のひやおろしと澤姫買ってホテルでぐびぐびやった。

1283252168

最大回避ヒープ

最大回避ヒープ。この章ではjoinの仕方を色々工夫する。他にラウンドロビンヒープとかねじれヒープなどがある。

data Ord a => Tree a = Null | Fork Int a (Tree a) (Tree a) deriving (Show)

isEmpty :: Ord a => Tree a -> Bool
isEmpty Null = True
isEmpty (Fork n x a b) = False

minElem :: Ord a => Tree a -> a
minElem (Fork n x a b) = x

deleteMin :: Ord a => Tree a -> Tree a
deleteMin (Fork n x a b) = merge a b

insert :: Ord a => a -> Tree a -> Tree a
insert x a = merge (Fork 1 x Null Null) a

merge :: Ord a => Tree a -> Tree a -> Tree a
merge a Null = a
merge Null b = b
merge a b
          | minElem a <= minElem b = join a b
          | otherwise              = join b a

join (Fork n x a b) c = Fork (n + size c) x aa (merge bb cc)
                        where (aa,bb,cc) = orderBySize a b c

orderBySize a b c
            | size a == biggest = (a,b,c)
            | size b == biggest = (b,a,c)
            | size c == biggest = (c,a,b)
    where
      biggest = size a `max` size b `max` size c

size Null = 0
size (Fork n x a b) = n

ProductName 関数プログラミングの楽しみ

オーム社 / ¥ 4,410 ()
在庫あり。

いきなり最初の章から面白い。

*Main> insert 5 $ insert 4 $ insert 3 $ insert 2 $ insert 1 Null Fork 5 1 (Fork 2 3 (Fork 1 4 Null Null) Null) (Fork 2 2 (Fork 1 5 Null Null) Null)

Senior / Royksopp

予約したもの

ProductName Senior
Royksopp
Wall of Sound / ¥ 1,809 (2010-09-13)
近日発売 予約可

ProductName AR三兄弟の企画書
川田十夢
日経BP社 / ¥ 1,470 ()
在庫あり。

ProductName そこまで言うか!
勝間 和代;堀江 貴文;西村 博之
青志社 / ¥ 1,575 ()
近日発売 予約可

ProductName メタプログラミングRuby
Paolo Perrotta
アスキー・メディアワークス / ¥ 2,940 ()
近日発売 予約可

「スマートグリッド革命」を読んだ

スマートグリッドってのは今の電力網に毛が生えたようなもんかなと思ってたけど、全然違った。今後電力は再生可能エネルギーの割合が増えていって、プロシューマーという生産者と消費者が一緒になったような状態(ネットでいえばP2Pみたいにサーバー的なものがない感じか)での電力を有効に機能させる仕組みみたいなものなのね。となるとIPv6が前提か。

ProductName スマートグリッド革命――エネルギー・ウェブの時代
加藤 敏春
エヌティティ出版 / ¥ 1,995 ()
在庫あり。

文章が硬くて読みにくかったけど、一通り読めた(普通の内容だったら飽きるけど)

  • 供給が一方的に需要に合わせるという従来の電力ネットワークの考え方は受給双方に負担を強いる
  • ユーエネルギー
  • ピークオイルの近未来での到達
  • エコポイントは、利子を生まないので保有メリットがないうえに、有効期限がある
  • メトカーフの「エナーネット」
  • 電気自動車は破壊的イノベーション
  • スマイルカーブ現象
  • グーグルパワーメーター
  • Hohm
  • テスラ・モーターズ

電力をうまく貯めるために、バッファとしての電気自動車の電池は有効。本書では太陽光発電ばかりが取り上げられていたが、屋根とか庭に風車があるとかもいいんじゃないか。

あと知りたいのはスマートグリッドとコンパクトシティ構想は補完すんのか?とかそういうあたり。

これも読めばいいのかな。

ProductName グーグルのグリーン戦略=グリーン・ニューディールからスマートグリッドまで=
新井 宏征〔(株)情報通信総合研究所〕
インプレスR&D / ¥ 1,785 ()
在庫あり。

「関数プログラミングの楽しみ」を読み始めた

プログラミングHaskell 9章の練習問題やってないとかいいつつなぜか関数プログラミングの楽しみが手元にあるのであった。

ProductName 関数プログラミングの楽しみ

オーム社 / ¥ 4,410 ()
在庫あり。

Next Page