CIRpyを使ってみた。

IUPAC, CAS_Nameから構造を起こすツールは手元にあるのですが、 ケミストとの視点で考えると使いにくかったり、一般名から構造が起こせると言いな。というニーズはあると思います。 この辺りはOPSINを使うのがいいと思われます。 がとあるところからCIRpyというクールなツールを見つけました。 Chemical Identifier Resolver(CIR)のPython インターフェイスだぜ!ということです。 OPSIN, ChemSpider当たりも入っているぜぃ。 ということで何か惹かれます。 ソースがGitHubにあがっているのでこれをゲットします。 使い方は直感的に行ける感じです。 という感じです。 CASナンバーもさっくりと。 その他に stdinchi stdinchikey inchi smiles ficts ficus uuuuu hashisy sdf names iupac_name cas chemspider_id mw # Molecular weight formula と色々なアウトプットが行けます。 それ以外に、記述子も行けます。 h_bond_donor_count h_bond_acceptor_count h_bond_center_count rule_of_5_violation_count rotor_count effective_rotor_count ring_count ringsys_count 構造式を落とすこともできますね。 これでカレントディレクトリにsdfが落ちます。素敵ですね。

忘備録

web.pyでファイルをユーザーから受け取ってxlrdでDB登録用のフォーマットに直したい。 と思ったんですが、これがなかなかうまく行かないので難儀しました 結局open_workbook()の引数にweb.input()をそのまま渡す場合は file_contens = web.input(myfile={}).read() で行けることが分かりました。 最初は閉じたfoutをとりにいったのですが全然うまく行かない、、、参りました。 やりたいのはここで吸い出したデータをMS Accessに突っ込むことだから 今度はpyodbcを見るかなあ。 でも社内環境だから渋々の選択だが もっと別のDBの方がいいな。

matplotlibでPCA

web.pyを使ってサービスを提供できるようになったので 何か使えないかな〜と考えて見た。 任意のSDFがあったらPCAやって結果を返すとかあると PCAってなに?みたいな人もspotfireで図が見えるしいいかもと思った。 PCRの方がより良いと教えていただいたのでこちらの実装も考えよう。 さて、自分がやるならRを使うのだが、web.pyに入れるとなると全部pythonがいい。 rpy2入れたしこれで。と思っていたら動かないで肩すかし、、どうも社内の環境のwinで構築したR2.10はだめなようだ RDKitのモジュールはもうメンテしてないし、matplotlibがいいじゃないと言われたのでそれで取りあえず書いてみました。 化合物数>ビット(2048)の場合はそのままでいいみたいですが、 化合物数<ビットの場合はそのままではエラーになるので転置します。 で最後にもう一回スコアを転置して第三成分までを出力。 手ものとのデータでやったらあまりぱっとしない感じ。 もちっとデータ集めてやってみる。

RDKitでMatched Pair Analysis

Pythonで動いて多彩な機能を持っておりながらフリーである。 ということで自分はRDKitが大好きです。 次のバージョンのβ版がリリースされているのですがどうもMMPAアルゴリズムが実装されるようです。 たくさんの情報に埋もれた何かを見るにはいいかもしれないというのと、コードに興味があるのとで早速使ってみます。 SVMはここで公開されているので 待てない人は使ってくれよ!という話です。 ちなみにリファレンスはこちら。 アルゴリズム自体は前から報告されていたのですがソースコードは今回が初です。 まだソースをちゃんと読んでないですが使ってみます。 取りあえずChemblにいってABL/Humanで1504化合物のSDFをとってきました。 入力は smiles\tidのテキストなので そのようにかえます。 でファイルができたんでフラグメント化します frag.pyでsmilesの分子をフラグメントに切断します。 1504分子から37177のフラグメントができました。 元分子 ID フラグメントみたいなテキストがchemblfrag.txtにできます。 この辺をpythonで考えると辞書型で作る感じですよね。 で最後に ペアを作ります。 結局886個のペアができました。 構造1,構造2,ID1,ID2,変換のsmirkes みたいになっています。 Spotfireに突っ込めば全部構造になるので良さそうですね。 切断部分で1504化合物で5分かかっているので大規模にやるのは時間がかかりそうだ。 合成した化合物を逐次フラグメント化してDBに入れておけばマッチングは早そうだからきびきび行くかな。 web.pyでがんばってwebインタフェースができればみんながアップしたら的なものできそうだけど。 POSTで受けたファイルのハンドリングがよくわからんからweb.pyも理解せねば こういったこと、社内で言ってもきっと理解されないなぁ 何か考えるかな〜

pythonからエクセルのデータを加工する

社内はなんだかんだでエクセラーが多いので 基本エクセルベースのデータがたまります。 解析しようにもデータが正規化してないのでまずその加工から入るのですが ルーチンだしモチベーション上がりません。 マクロ書くにもVBA勉強すんのもなーと思っておりましたら、pythonで行けるという事を教えていただきました。(感謝) ググるとどうもxlrd, xlwd, xlutilsが良いようです。xlsxもサポートしているので社内の最近の環境でもバッチコイ。 でこれらはeasy_installかpipでさっくり入ります。winならインストーラーもあるようです。 早速使ってみました。 とりあえずやりたいのは、 ID ARGET_A TARGET_B TARGET_C TARGET_D cmp1 1000nM 100nM 1000nM 500nM cmp2 600nM 100nM 1050nM 500nM みたいなやつを ID TARGET MARK VALUE UNIT cmp1 A = 1000 nM cmp1 B = 100 nM cmp1 C = 1000 nM cmp1 D = 500 nM みたいにしたいのです。 マクロ書けば簡単でしょ。とかいう人いますけど、言ってる人が書かない。 で、ターゲットとあるA、B、CはCYPでもHL60でも薬理活性でもいいですね。Continue reading “pythonからエクセルのデータを加工する”

メモ2

引き続きR、2コンパートメントモデル。 central compartment の濃度をy[1] peripheral compartmentの濃度をy[2] k10, k12, k21をそれぞれ k12=1.49 , k21=0.495 , k10=0.789と設定する 初期値をy[1] = 1000, y[2] = 0としてみる。 dy1/dt = k21y2 – k12y1 – k10y1 dy2/dt = k12y1 – k21y2 がそれぞれのコンパートメントでの収支 軸設定がおかしいのはスキルが無いため、、