HTSは高階関数

今度の発表の掴みを考えてみた。

htsはアッセイという関数を引数にとりコンパウンドリストを返す高階関数と考えることができる。

def hts(assay,library):
    criteria = 50 # %inh
    return [c for c in library if assay(c) > criteria]

うーん、マニアすぎるか

def chemist(comp):
    return modify_compound(c)

これまたあれだな。

chemoinformatics (python)

おー、このタイムライン分かりやすい。

インフラとしてはディスクリプターをどう発生させとくか(毎度毎度モデル構築のたびに発生させるのはだるいし、基本的に一回作っとけば良いのでコンパウンドをどっかに登録するタイミングでバックグラウンドでやればいい仕事)とデータへのアクセス方法(いまはRESTっぽいのがいいんじゃないかと思ってる)をきちんとやっておけば、僕らはモデル構築の試行錯誤にそのリソースのほとんどを投入できていいよね。

ProductName RESTful Webサービス
Leonard Richardson,Sam Ruby
オライリー・ジャパン / ¥ 3,990 ()
在庫あり。

あと、こういう状況だと、モデル構築能力的には常に最先端のアプローチを試せるような状況にしとかないとまずいから、自然とデフォルトの環境がRになるような気がするし、立ち位置もデータマイニング寄りになると思うんだよね。

そして、立ち位置がマイニング寄りになっちゃうと、ケモインフォマティクスとかバイオインフォマティクスってのは、新しいモデル化の方法を試すための一つのターゲットに過ぎなくて、プロジェクトのモデル化とか創薬ビジネスモデル構築とかのほうに興味が移っちゃうのだよなぁ。

関西のpythonの集まり

僕は最近プログラミングのセミナーよくいくんですよねー(楽しいし)的な話をしていて、pythonも関西のほうで時々集まりがあるらしいですよ。とか話したんだけど、どこでみかけたのか思い出せなかった。

僕も職場ではpython比率が高まっているのだけど、最近はpythonでさくさく書けるようになってきたので、そろそろgaucheあたりに移行しようかと。

openbabelのバインディングでも書いてみたい。そして、schemeでchemoinformaticsとか言ってみたい気もする。というか、なんかのSARモデルを構築したと仮定して、そのモデルを満たすような化合物をヒューリスティックに探索するとかいう場合に継続を使うと面白そうな気がするのだ。

pythonのthisは暗号化が施されていた

import thisとやるとThe Zen of Pythonがずらずらっと表示されるわけだけど、ソースのぞいたらカエサル暗号が施されていた。

d = {}
for c in (65, 97):
    for i in range(26):
        d[chr(i+c)] = chr((i+13) % 26 + c)

print "".join([d.get(c, c) for c in s])

"Abj vf orggre guna arire."

os.systemとcommands.getoutput

どっちを使うのが良いのかわからんが、とりあえず気になったので調べてみた。というより、pythonの標準モジュールのソースを読むのは初めてじゃなかろうか、、、

commands.getoutputは結局下と同じらしい。

pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
text = pipe.read()
sts = pipe.close()

ということは標準エラー出力も補足するのか。

標準モジュールのソースを読むのも楽しいかも

perlでOASAライブラリを使いたい

Inline::Pythonを使うだけ。お手軽

use Inline Python => <<'END';
import pybel
def draw_png(smiles,file):
    mymol = pybel.readstring('smi',smiles)
    mymol.draw(filename=file, show=False)
    return True
END

draw_png("CCCc1ccccc1OC","xxx.png"); 

TODO: あとでクックブックに追加しておく

OASAで構造描画

というエントリをケモインフォクックブックにのせておきました。

Automated Molecular Mechanics Optimization tool

AMMOSというinduced fitを考慮したドッキングツールがopen sourceででるそうです。

AMMOS: Automated Molecular Mechanics Optimization tool for in silico Screening

ダウンロードできるようになったら試してみよう。DUDみたいなドッキングシミュレーションのベンチマーク用のデータベースもそろってきてるし、そろそろ今時のインターフェースで使いやすいドッキングシミュレーションツールのプロジェクトなど立ち上がりそうな気もしますが(もうなにか動いてるのかな)。

化合物の三次元構造を立ち上げる

openbabelだったらobgenをつかえばいい。

pythonバインディングからやりたかったので、obgen.cppをよんだらOBBuilderクラスのインスタンスを生成すればいいらしいのだが、pythonからは現状OBBuilderのインスタンスをつくれないらしい。

MLを検索すると似たようなやりとりがあって、ラッパーを使えばいいらしく、pybelのソース見ろやーって書いてあったのでみた。

OPSってのは新たに導入された簡易プラグインシステムらしい。

で、ケモインフォクックブックにコードのせといた。

Identipong

IPアドレスに応じて色を変えられるのであれば、アクセスログをLEDで光らせればいいんではなかろうか?と思ったので。

参考

Gainerのほうは秋月で買ったカソードのフルカラーLEDを刺した。抵抗は全て330Ω(それしかなかった)でピンポン球はダイソーかどっかで買った6個入り100円のヤツを錐とドライバーでぐりぐりした。

1223800515

という単純な配線。

アクセスログは自宅サーバーに直接アクセスしてIPアドレスを返すようなCGIを用意した。 今回初めてPyGainerを使ってみた。

import sha,struct,urllib2,time,sys
from time import sleep
from PyGainer import PyGainer
#from random import randint

p = '/dev/cu.usbserial-A2002mCa'
g = PyGainer()
config = { 'baudrate' : 38400, 'timeout' : 5 }

#def rand_rgb():
#    return(randint(0,255),randint(0,255),randint(0,255))

def get_rgb():
    ip = urllib2.urlopen('http://myserver/taillog.cgi').read()

    print ''.join(ip.split('.'))

    s = sha.new(ip).digest()
    code = struct.unpack('5L',s)[0]

    blue  = int((code >> 6) & 0x0ff)
    green = int((code >> 15) & 0x0ff)
    red   = int((code >> 24) & 0x0ff)

    return (blue,green,red)

if g.open(p, config) == 0:
    if g.reset() == True:
        print "RESET"
    else:
        print "ERROR"

    sleep(0.1)
    g.version()
    g.configuration(1)

    sleep(0.1)

    for i in range(100):
        (blue,green,red) = get_rgb()
        g.set_specified_analog_output_port(0, green)     # G
        g.set_specified_analog_output_port(1, blue )     # B
        g.set_specified_analog_output_port(3, red  )     # R
        sleep(3)

    g.set_specified_analog_output_port(0,0)
    g.set_specified_analog_output_port(1,0)
    g.set_specified_analog_output_port(3,0)

    g.close()

動かした。うしろでカチャカチャうるさいのは犬が晩ご飯を催促している音。

Identiconでいうところのパターンのようなものの表現は点滅で実装しようかと思ったが、それって分かりにくいよなと。もう少し面白そうなデバイスはなかろうか。