Mishima.syk #6 やりました

参加した皆様お疲れ様でした。色々と面白い話が聞けて楽しかったです。

僕は分子設計を軽くディスってきましたw 本当にもっと頑張って欲しいですね。リードオプティマイゼーションのスタンスからFMOを使っているんだけど、もっとアーリーな段階での使い方の議論は新鮮だったので今度試してみたい。

あとは告知の仕方に問題があったので改善したい。事前に知っていれば参加したのにと何人かのヒトに言われたので。twitterやれとしか言えないが、それも難しいでしょうからメールを送るとか考えないとあかんのかな…

懇親会で興味を伺ったらディプラーニングに注目しているヒトが多いようなので次回はそれ系のネタを集めようかなと思っています。

反省会は「鈴木屋」か「やごみ」でやりましょうw

Mishima.syk #6やります

今回は某WSの次の日にしました。

既に決まっている内容はOpenEye Toolokitの紹介(ハンズオンあり)とFMOの話(僕がします)なのでワンランクアップを狙うメディシナルケミスト(not ケミスト)には楽しいと思います。そしてSBDDerにとっても役立つと思います。

ケミストもSBDDerも自分の知識の中でファーマコフォアというものを解釈しがちで、(あっても弱いような微妙な角度の)水素結合を大事にしたり、Cl-πとかいう微妙な相互作用を強いものと認識したがったりしてアレなんだよねーっていう残念な思いをします。FMOで計算するとそのあたり定量的に数値が出るのでスッキリしますね。

Mishima.syk #5やりました

発表者の方、参加者の方お疲れ様でした。今回もとてもおもしろい話が聞けて満足でした。

先週の会の直前にingressのレベルがあがったので、次のレベルが上がるタイミングで更新しようとしたらちょうど一週間経ってしまった。現在レベル4…(二次会でingressの色々を聞いたので多少効率よくAP獲得できるようになったかなと。)

とはいえ、うちの近所は対立組織が強くて、なかなかCFつくったり出来なくてAP獲得率が良くないです…

お昼ごはんは五徹

1426332589

懇親会は、「ごめんね青春」でチラチラ出てきたらしいところ

満足すぎるボリューム☆

1426332591

1426332592

1426332594

今週末はMishima.syk #5です

週末までには犬グレスはレベル3に上げておきたい(三島で破壊活動してみたいのでw)。

時間が余るようだったら 「あたらしいキーコンパウンドすいていのしかた」 という題で、patinformatics関連の発表でもしようかなと思っています。MMPネットワークからのキーコンパウンド推定のアイデアですが、個人的にはCSA(Molecular idle)とFOGをミックスした感じのアルゴリズムだろうなと感じているので、わりと面白いんじゃないかなーとは思っているんですが…

ProductName あたらしいみかんのむきかた
岡田 好弘
小学館 / 1080円 ( 2010-11-16 )


Mishima.syk #5やります

最近モンストばかりですが、Mishima.sykの次回の開催は3/7となりますので、参加をお待ちしています。

内容はまだ確定していませんがchemoinformaticsとbioinformaticsまわりになるのではないかと。

僕も何か話せればいいなと思っていますが、モンストしかしてないからなぁ…w

息子と阿修羅をやっつけにいくという冒険談くらいしかw

尚、先ほど二体目のハンターキングに神化させたので、ヤマタケソロで行けるかな?

ぬらりひょんも手に入れたのでイザナミはソロで行けそう。

1423125381

実験医学増刊 Vol.32 No.20 今日から使える! データベース・ウェブツール 達人になるための実践ガイド100

実験医学の増刊号です、meso本を見て知った。只今絶賛予約受付中です☆

ナニゲに実験医学に記事を載せるのは二度目だったりする。

前回の記事はバイオインフォマティクス的な話題で、ゲノムの配列から、以下に創薬ターゲット(キナーゼとかプロテアーゼとか)の遺伝子を探すかという話だったと思う。そういえばこの前もそういうイメージを保たれていたので、筋金入りの社内ニートというイメージを定着させたい。

Mishima.syk #4やりました

参加されたみなさんお疲れ様でした。

僕はNGSの解析の話が聞けたし、ネットワークまわりの色々なヒントが聞けて非常に勉強になりました

反省点

  • 懇親会は予約する (脱香香飯店w)
  • 告知は余裕を持ってする
  • 反省会はちゃんと反省をする

反省会は忘年会を兼ねてやればいいですかね(やごみで)…w

私のスライド

自分のスライドというかハンズオンのセッションは、Cytoscape以外に色々いれないといけない感じになってしまったので、予めサンプルを用意しておけばよかったかなぁと思った。

これからigraphを使ったネットワーク分析をしてみようと思う人が増えてもらえると嬉しいなと。

ProductName ネットワーク分析 (Rで学ぶデータサイエンス 8)
鈴木 努
共立出版 / 3564円 ( 2009-09-25 )


懇親会は(安定の?)香香飯店

1414309037

二次会はワインバーみたいなとこ(名前忘れた)

1414309038

1414309040

週末の僕のハンズオンはCytoscape, iGraph, RDKitあたり

RDKItはインストールが面倒くさいのと、実務だとPipelinePIlotとかOpenEye使うだろうからさらっと流すかも。その分iGraphのいじり方を多めに説明するかもしれない。

まだスライドに手をつけてないからわからないけどw

iGraphを使えばノードとエッジに属性を簡単に付加できてgml形式で出力できる。このファイルはすぐにCytoscapeで開くことが出来て便利です。sifとかタブ区切りテキストは色々と面倒ですね。

DT

from rdkit import Chem
from rdkit.Chem import AllChem, DataStructs, MolToSmiles
import numpy as np
from igraph import Graph
import numpy as np
import logging
logging.basicConfig(level=logging.DEBUG)

threshold = 0.5

suppl = Chem.SDMolSupplier('syk.sdf')

fps = [AllChem.GetMorganFingerprintAsBitVect(mol, 2) for mol in suppl]
smiles = [MolToSmiles(mol) for mol in suppl]

mat = []
for i in range(len(fps)):
    mat.append([DataStructs.FingerprintSimilarity(fps[i],fps[j]) for j in range(len(fps))])

sm = np.array(mat)

def search_root(sm, remain):
    cand = None
    max_c = 0
    for l in remain:
        num_c = len(np.where(sm[l] > threshold)[0].tolist())
        if num_c > max_c:
            max_c = num_c
            cand = l
    return cand

def check_edge(sm, current, root):
    cand = None
    max_c = 0
    candidates = set(np.where(sm[root] > threshold)[0].tolist())
    for c in candidates:
        if c in current:
            if sm[root, c] > max_c:
                max_c = sm[root, c]
                cand = c
    return cand

edges = []
sim_edges = []
np.fill_diagonal(sm, 0)
remain = set(range(len(sm[0])))
current = set()
new = set()
ith = 1

while remain:
    logging.debug("### {} th ###".format(ith))
    ith += 1
    root = search_root(sm, remain)
    if root is None:
        break
    logging.debug("root: {}".format(root))

    cand = check_edge(sm, current, root)
    if cand:
        logging.debug("connect {} and {}".format(cand, root))
        edges.append((cand, root))
        current.remove(cand)
        sm[:, cand] = 0

    remain.remove(root)
    sm[:, root] = 0

    for i in np.where(sm[root] > threshold)[0].tolist():
        if i in remain:
            edges.append((root, i))
            sim_edges.append(sm[root, i])
            new.add(i)

    logging.debug("new nodes: {}".format(new))
    current |= new
    remain -= current
    new = set()

g = Graph(edges)
g.vs["smiles"] = smiles
g.es["similarity"] = sim_edges
g.save("test.gml")

今週末のMishima.sykは化合物ネットワークが多めになりそう

今回はなかなか企業にいると触れることのないと噂のNGSデータの分析のハンズオン(@bonohu)が目玉ですが、他には化合物のネットワーク関連の話が多そうなので興味があれば参加してください。懇親会も、ディープ目のところを攻めていくので出ると楽しいハズw

尚、私の発表は、Cytoscape.jsで化合物ネットワーク解析の触りをやろうというハンズオンにする予定です。ハンズオンが終わったらこんなのを描けるようになるのが目標です。

とかいいつつ、エッジの張り方を色々と試行錯誤しはじめていた。下はある構造最適化の論文の化合物群に対して最近傍同士をつないでいったネットワーク。

なんか細切れになっていて気持よくない。やっぱルートから一本につながってないとあかんよなとw

NNT

どういうネットワークを作るかというのが非常に重要だと思っているので、距離に使う記述子の話とか、どういう風にノード同士をつなげるかとかそういう話もしてみたいかな。