Twitterのこと

専門用語でつぶやくと、Googleの上位にランクインしてしまい、職場の知り合いに見つかりやすくなるという、、、

隠語使うか?

なんて。

ProductName Twitterの本
関根 元和,上野 祥子,秋田 真宏
インプレスジャパン / ¥ 2,310 ()
在庫あり。

技術のこと

知財あたりに、

「それって知財化できるんじゃないの!」

と、喜々として言われるような技術は、「もう陳腐化しはじめてますから、、、」

と言いたくなったことは、まともな研究者だったら2度3度あるはず。

知財(というセクション)は、自分たちの理解できない技術の価値を如何に早期に把握するかという本質的な矛盾をはらんでいるのではなかろうか?多分、(部外者として)価値を感じるようになった時点で既に手遅れみたいな。

と思った。

とするならば、知財というのはpatent breakingとpatent protectionのテクニカルな(patent gameをする)部署であり、競争優位の源泉を生み出すとこじゃないよなと。

チョコバナナのこと

チョコバナナ

斜めに薄切りにすると、べとっとつける際のチョコの絶対量が少なくなるのと、一口サイズになるので良い。

子供がいる場合には、作る過程も一緒に楽しめて、冷凍庫に入れるとすぐに凍るのでさらに良いみたい。

スマリヤン祭り

まとめ買い

ProductName To Mock a Mockingbird
Raymond M. Smullyan
Oxford University Press / ¥ 1,715 ()
在庫あり。

ProductName <<数理を愉しむ>>シリーズ パズルランドのアリス1
レイモンド・M・スマリヤン
早川書房 / ¥ 714 ()
在庫あり。

ProductName パズルランドのアリス2 (ハヤカワ文庫NF 《数理を楽しむ》)
レイモンド・M・スマリヤン
早川書房 / ¥ 672 ()
在庫あり。

ProductName タオは笑っている (プラネタリー・クラシクス)
R・M・スマリヤン
工作舎 / ¥ 2,100 ()
在庫あり。

Hard Islands / Nathan Fake

3曲目がやばい

ProductName HARD ISLANDS
NATHAN FAKE
BORDER COMMUNITY / ?円 ( 2009-05-25 )


が、the sky was pinkとかDarkest starでのざらついた高揚感は感じられなかったな。

ProductName Darkest Star [12 inch Analog]
Depeche Mode
Mute UK Indie / 1257円 ( 2006-04-25 )


吉田蔵

吉田蔵の純米を島崎酒店で購入

1246107885

すっきりやさしい味わい。これで2.1Kとは驚きですな。

pythonでdeconvolution

演習本にデコンボリューション法が載っていたのだけど、実装までは載ってなかったので、調べたら、論文が見つかった

ProductName ファーマコキネティクス―演習による理解
杉山 雄一,山下 伸二,加藤 基浩
南山堂 / ¥ 6,300 ()
在庫あり。

GOTOとIFの組み合わせがwhileなのかforなのか悩むとこが幾つかあったが、pythonで書きなおした。結構、fortranっぽさが残っている気もするが。

#!/usr/bin/env python

def calc_eps():
    eps = 1.0
    while eps + 1.0 > 1.0: eps = eps/2.0
    return eps

def sign(a1,a2):
    if a2 >= 0: return abs(a1)
    else:       return -abs(a1)

def deconv(a,div,b,dose):
    n = len(a); m = len(b); l = n + m -1
    eps = calc_eps()
    u = [0.0 for i in range(l)]
    v = [0.0 for i in range(l)]
    gamma = [0.0 for i in range(20)]
    g = [0.0 for i in range(20)]

    a.sort(lambda x,y:cmp(x[1],y[1]))

    for II in range(n-1):
        x1 = a[II][1] * -1
        x2 = a[II+1][1] * -1
        qx1 = 0.0
        qx2 = 0.0

        for i in range(n):
            s1 = 1.0
            s2 = 1.0
            for j in range(n):
                if j != i:
                    s1 = s1*(a[j][1] + x1)
                    s2 = s2*(a[j][1] + x2)
            qx1 = qx1 + a[i][0] * s1
            qx2 = qx2 + a[i][0] * s2

        x3 = x1
        qx3 = qx1
        d = x2 -x1
        e = d

        while(1):

            if abs(qx3) < abs(qx2):
                x1  = x2; x2  = x3; x3  = x1
                qx1 = qx2; qx2 = qx3; qx3 = qx1

            tol = 4.0*eps*abs(x2)
            xm  = 0.5*(x3-x2)

            if abs(xm) <= tol or qx2 == 0.0: break

            if abs(e) >= tol and abs(qx1) > abs(qx2):
                if x1 == x3:
                    s = qx2/qx1; p = 2.0*xm*s; q = 1.0-s
                else:
                    q = qx1/qx3; r = qx2/qx3; s = qx2/qx1
                    p = s*(2.0*xm*q*(q-r) - (x2-x1)*(r-1.0))
                    q = (q-1.0)*(r-1.0)*(s-1.0)

                if p > 0.0: q = -q
                p = abs(p)

                if 2.0*p < 3.0*xm*q - abs(tol*q) and p < abs(0.5*e*q):
                    e = d
                    d = p/q
                else:
                    d = xm
                    e = d
            else:
                d = xm
                e = d

            x1 = x2
            qx1 =qx2
            x2 = x2 + d
            if abs(d) <= tol: x2 = x2 - d + sign(tol,xm)
            qx2 = 0.0
            for i in range(n):
                s2 = 1.0
                for j in range(n):
                    if j != i: s2 = s2*(a[j][1] +x2)
                qx2 = qx2 + a[i][0] * s2
            if qx2*(qx3/abs(qx3)) > 0.0:
                x3 = x1
                qx3 = qx1
                d = x2 - x1
                e = d

        gamma[II] = x2
        s2 = 0.0
        for j in range(n):
            s1 = 0.0
            for k in range(n):
                if k != j:
                    s1 = s1 + 1.0/(gamma[II] + a[k][1])
            s2 = s2 + a[j][0]*s1/(gamma[II] + a[j][1])
        g[II] = 1.0/s2

    ak1 = 0.0
    ak2 = 0.0
    ak3 = 0.0
    for i in range(n):
        ak1 = ak1 + a[i][0];
        ak2 = ak2 + a[i][0]*a[i][1]
        if n > 1 and i != n-1: ak3 = ak3 + g[i]/gamma[i]
    ak1 = 1.0/ak1
    ak2 = ak1*ak1*ak2
    ak3 = ak2 - ak3
    ak4 = 100.0*div/dose
    uz = 0.0

    for i in range(l):
        s = 0.0
        if i > m-1:
            v[i] = -gamma[i-m]
            for j in range(m): 
                s = s + b[j][0]/(gamma[i-m] + b[j][1])
            u[i] = ak4*g[i-m]*s/gamma[i-m]
        else:
            v[i] = b[i][1]
            u[i] = ak4*b[i][0]*(ak1 - ak3/b[i][1])
            if n != 1:
                for j in range(n-1):
                    s = s + g[j]/(gamma[j]*(gamma[j] + b[i][1]))
                u[i] = u[i] - ak4*b[i][0]*s
        uz = uz - u[i]

    return uz,u,v

if __name__ =='__main__':
    print "=== Data set 1 ==="
    a     = [[1.0427,5.0526],[0.97617,0.97567]]
    div   = 1.0
    b     = [[-0.80547,3.6373],[0.80547,0.83033]]
    dose  = 0.6

    print deconv(a,div,b,dose)

    print "=== Data set 2 ==="
    a     = [[1.3377,3.1851],[0.52381,0.61065]]
    div   = 1.0
    b     = [[-2.2637,2.0800],[2.2637,1.2513]]
    dose  = 0.6

    print deconv(a,div,b,dose)

    print "=== Data set 3 ==="
    a     = [[1.0308,5.9131],[1.0487,1.0262]]
    div   = 1.0
    b     = [[-1.6103,3.3563],[1.6103,1.3917]]
    dose  = 0.6

    print deconv(a,div,b,dose)

    print "=== Data set 4 ==="
    a     = [[1.3377,3.1851],[0.52381,0.61065]]
    div   = 1.0
    b     = [[-5.5440,2.2488],[5.5440,1.7521]]
    dose  = 0.6

    print deconv(a,div,b,dose)

Table.1 のテスト計算を実行。論文のデータセット4のa2はタイポでしょう。

=== Data set 1 ===
(103.38116460095375, 
[99.756988719460651, -23.218031509886707, -179.92012181052769], 
[3.6373000000000002, 0.83033000000000001, 2.9469592648362699])
=== Data set 2 ===
(94.012343334076377, 
[212.39909284817011, 2395.320119577972, -2701.7315557602187], 
[2.0800000000000001, 1.2513000000000001, 1.3350740721242431])
=== Data set 3 ===
(94.362883301636657, 
[-1704.7606134762168, 73.013373899587776, 1537.3843562749923], 
[3.3563000000000001, 1.3916999999999999, 3.4906828227939406])
=== Data set 4 ===
(91.15932635164495, 
[370.51731307178676, -1111.1884882257646, 649.51184880233291], 
[2.2488000000000001, 1.7521, 1.3350740721242431])

The Fragment Molecular Orbital Method

こんなの出てるのか

ProductName The Fragment Molecular Orbital Method: Practical Applications to Large Mokecular Systems

Crc Pr I Llc / ¥ 12,324 ()
通常9~13日以内に発送

買わねば

あと、インプットはここにあったので、論文読みながら実行すると吉。

「基礎量子化学—軌道概念で化学を考える」を読んだ

良書だと思う。多少量子化学の知識は必要だけど。

分子軌道法(MO法)とは,原子に対する原子軌道の考え方を分子に対して適用し,分子の電子状態や反応機構を理解しようとするものである.この量子化学的視点を用いることによって,あらゆる化学現象を統一的に捉えて説明する.化学を学ぶもの必携の一冊.

ProductName 基礎量子化学―軌道概念で化学を考える
友田 修司
東京大学出版会 / ¥ 4,410 ()
在庫あり。

複合体結晶構造とかの結合の要因を探る時には、どうしても有機化学とか量子化学の知識が必要になってくる。且つドッキングというのは化学反応の特殊な一形態であり、それゆえ、弱い力に関する理論的な理解が必須となる(であろうと考えている)。

結局ドッキングというのは、反応により生成物が変わらない化学反応と捉えることができる。(結合を形成するようなものは自殺基質とか呼んで特殊な扱いをするね)

まぁそう考えれば、量子化学的な化学反応に対する理解は重要だろうと自然に導かれるけど。

  • 第7章 分子構造の支配因子
  • 第8章 分子間相互作用
  • 第9章 分子構造と立体化学
  • 第10章 官能基の性質と酸・塩基の強度

あたりは、コンフォメーションとか掘っていく際に役に立つはず。ただ、弱い相互作用に関する話は水素結合くらいしかなかったけど、結構詳しく載っていたので役立った。

その先のもっと弱い結合をどう評価していくかがテーマなんだけど、やっぱいまのところは論文を地道に追いかけていくしかないかな。

ProductName 有機化学のための分子間力入門
西尾 元宏
講談社 / ¥ 4,410 ()
在庫あり。

これも良い本なんだけど実例が基礎っぽすぎて、プラクティカルさが少し足りない。

プライムナンバーズ

「魅惑的で楽しい素数の事典」と副題にあるように、素数に関するアレコレが簡潔に書いてある。

ProductName プライムナンバーズ -魅惑的で楽しい素数の事典
David Wells
オライリージャパン / ¥ 2,310 ()
在庫あり。

読んで理解するというよりは、ふーんそうなんだ的な。

まだ、Cまでしか読んでないけど、Project Eulerの問題にあった友愛数(amicable number)とか循環素数(circular prime)とか出てきて楽しい。

Project Eulerは50問解いたとこで休憩したままだけどまた再開しようかな。