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からエクセルのデータを加工する”

Advertisement

特許をパースする-2

WIPOのpatentscopeで作成した RSSからタイトルとサマリを抜き取って 英数字以外で区切った単語リストを作るスクリプト。 sys.argv[1]にRSSのリストをしていすると。 パテント番号と単語の数を出力する。 が ターゲットや疾患がばっちりサマリに載ってる訳でもないしなあ。 ドキュメントでクラスタライングするのは難しいかな。

WIPOのRSSからの情報取得

PATENTSCOPEはクエリをくんだ結果をRSSで出力できるので 色々解析に使えるだろうと思われるのですが いかんせん修行不足の身、最近読んでる本を参考に タイトル、番号、リンク、サマリを出すスクリプトを書いてみました。 エンコードでエラー出まくりだったので全部uft_8にエンコードしたのですがこれほんとにいいのか不明。 取りあえずPCT&PDE4 @ FPをクエリにして pde4.txtに http://patentscope.wipo.int/search/rss.jsf?query=FP%3APDE4+&office=+%28OF%3Awo%29&rss=true&sortOption=Pub+Date+Desc を保存しときます。 で patentparser.pyを書いて 取りあえず動く。 リダイレクションをファイルにして ということで出力先をもう少し整形しようと思う。 プロキシハンドラも入れないとだめですね。

PythonでRSSの情報をとる

文献や特許関連の情報はRSS登録していると便利ですね。 ACS系のジャーナルはグラフィカルに見えるので好きです。 集合知プログラミングという本にfeedparserというライブラリの使用例がのっていて 便利そうでしたので使ってみました。 対象はjmc lettです。 summaryで全然情報がとって来れない。 アブストの情報をとるのはもう少し工夫が必要そう。 この辺のことをやるのはwebの知識も必要なのかな

USRCATを実装してみる

USRCAT = Ultrafast Shape recognition with pharmacophoric constrains RDKit のMLで興味深い報告があったので 実装してみました。 OETookit以外にRDKitもオッケーというのはとても魅力的です。 ShapeベースのバーチャルスクリーニングにてScaffold Hopingにも使える可能性があることや ElectroShapeと比較しても遜色ないEFを出している点はちょっと引かれます。 まずここからダウンロードします。 あとはマニュアルに従って $ cd /usr/local/src $ mv ~/Downloads/usrcat* $ cd /usr/loca/usrcat $ sudo python setup.py install でOK PYTHONPATHに上記のフォルダを指定しておけば、何所からでも呼び出せます。 その後、 ①まずSDF読み込み ②三次元配座の発生UFFによるエネルギーの計算 ③usrcatモジュールでのモーメントの算出 ④類似性の計算 を行わせてみました。 usrcatのgenerate_momentsはmolオブジェクトが持つ全配座のモーメントを計算します。 次のsimilarity(m1,m2)で発生させたモーメント同士の類似性をみていています。 モーメントは配座の数だけあるようですが m1は最初のconfId=0のものだけしか使わないようなので 最低エネルギーのは配座を持ってくるか、PDBからリガンドを持ってくるのがいいのかと思います。 下の例はそのまま使っているので あまりいい例じゃないです。 取りあえず動いたレベル。 コードも助長だったり見にくかったり。。。 ChEMBLのデータで何か解析してみないと。

RDKitで配座を発生させてエネルギーを計算してみる

RDKit2012_09はしばらくβ版で確認していましたが正式版がリリースされました。 今回はMCSを実装した点が今までと変わった点のように思います。 残念ながらまだwin64bit用のバイナリは無いようです。取りあえず自分のMBAではビルドもできて動作も確認できました。 MCS関連はまた今度試すとして今回は、SDFから配座を発生させて、UFFによる最適化後のエネルギーを計算させるスクリプトを書きました。 AllChem.EmbedMultipleConfsで分子に対して10個の配座を発生させます。 AllChem.UFFOptimizeMoleculeにて構造を最適化します(1000回に設定)0なら最適化が終わっていて 1、がかえってくる場合は1000以上の数値を設定した方がいいと思われますが今回次のステップにはここのクライテリアを抜いてしまいました。 ff = AllChem.UFFGetMoleculeForceField(mol, confId = cid) ff.Minimize() energy=ff.CalcEnergy() にて最適化後のエネルギーを受け取ります。 今回は出力を全部にしたのですが、最低のものだけを取り出したいのです、、、 リストのminでは数値が出てくるけどインデックスがとれないのでどうしたらいいんだろう。 list.index(min_energy)で行けそうだから後で追加しよう。

忘備録

職場でRを使おうとするとライブラリのインストールに四苦八苦する。 プロキシを超えねばならないのです。 調べると、Rのショートカットの後ろに –internet2と入れたらいいとあるのですが これだと、ブラウザのプロキシ設定は読むけど、認証は別途入れる形なのでリポジトリにつながらない。 さらに調べた結果、 ホームディレクトリに .Rprofileを作って Sys.setenv(http_proxy=”http://proxy:port/” Sys.setenv(http_proxy_user=”ask” と入れると良いと分かった。 ちなみにこれを書いていても–internet2の記載を残しっぱなしだとそっちの設定になるみたいで つながらない。 このことに気がつくのにかなりの時間を費やした。。。。 今はいい感じになったのでまずはe1071, rcdkを入れました。  

align-itを使ってみた

以前からファーマコフォアベースで分子をアライメントするツールをささっとかけると 良いな〜って思ってました。 社内リソースを使おうと思うと、ライセンスの限りがあるのでオンデマンドに解析できなかったりするためです。 RDKitでやっている事例があったのでそれを参考に書いてみたのですが、途中でだんだん複雑になってしまい、ちょっとそのまま放置しています。 そこで、もう少し簡単にということでalign-itを使ってみました。 これは前にも紹介したsilicos-itから公開されているオープンソースです。 Openbabelがカバーするフォーマットを入出力に使えるので、特定のフォーマットに変換するという作業から解放されてよいと思います。 インストールはマニュアルに従って でよいと思います。ubuntuにパッケージマネージャーでopenbabel入れてある状態でやると openbabel2 無い。とエラーがでました。どうもパッケージマネージャーではな入らないみたいですのでこの場合は、自分でopenbabelを最初にビルドしてやるといいかと思います。 続いてテスト用のファイルの準備です。 今回は面倒なんでpubchemでEGFR阻害剤のデータ21化合物をとってきました。 二個目の分子をリファレンス(ref.sdf)としてアライメントします。 結果 .pharにはフィーチャー ファーマコフォアの三次元座標 ガウシアン体積のα値 方向性があるかないかのブール値 そのベクトル のタブ区切りがかえってきます。このデータって何で見れるんだろう??? またオプションの -sはスコアを返すので となりそれぞれの列はマニュアルにあるように column Content —— ——————————————————————— 1 Id of the reference structure 2 Maximum volume of the reference structure 3 Id of the database structure 4 Maximum volume of the database structure 5 Maximum volume overlap ofContinue reading “align-itを使ってみた”

特許をパースする

不勉強にてxmlって ブラウザで見られるけど何これ? と以前思ってました。、、、恥ずかしい よくよく調べるととても便利そうです。 で、xml形式の特許があると解析に使えそうと思うわけです。 集めてきた特許から、番号や、優先日、出願人とかの情報をささっと一覧にできると いいよなーと思っていたこともあったので、 google先生に聞くとそんなことずいぶん前からなされているようでした。。。 さて、xml形式の特許が結構簡単に入手できる環境が整ったので テスト的にスクリプトを作ってみました。 これは同じフォルダにある.xml形式のファイルをを全部読み込んで出願人とかをタブ区切りで出力します。  フランス語とか、エンコでこけるのでアブスとは英語に限定しました。 相当行けてないスクリプト感ただよいますが、一応動いた。のでモチっと改良する予定 xmlの階層構造がそもそも勉強に使っていた例に比べるとかなり入り組んでいたのでまだ不具合たくさん出そうです。 がんばると、テキストなのでバラバラにして複数の出願人がどれくらいの頻度出るかとか、簡単に見れそうです。

shape-itを使ってみた

2Dの分子の類似性を比較する場合、各種FP計算を実施してあれこれ考えるわけですが、 社内的都合にて3Dの場合、ささっと使えるツールが無い訳です。世の中的にはOpenEye社のROCSが使われることが多そうな気がします。文献出の引用例や、ユーザー会のプレゼンをみてもかなり良さげです。 お気に入りのRDKitにはShapeTanimotoメソッッドがありますが、アライメントは別途かける必要があるのでちょいと面倒でございました。 そんなおり、某ワークショップで、silicos-itのshape-itは?と教えていただきました(ありがとうございます)。 winではちゃちゃっとBuildするのは無理そうなんでまずはMacでやってみます。 shape-itのマニュアルを読んでみるとベースにOpenBabelを使っているのでOpenBabelがフォローするファイルフォーマットならなんでもOKという点も良い感じです。 Buildはマニュアルに従って, で準備は完了です。 続いてテスト用のファイルの準備です。全部openbabelでやればいいという噂もありますが、こちらは自分のスキルの都合上RDKitで取りあえずのファイルを作ります。テストファイルはpubchemからもらったDYRK1Kのデータ。 2Dの分子から3D配座を発生させて取りあえずUFFで一応最適化しておきます。 全部の準備が終わったので 実行してみました。 ここでは先頭の分子をreferenceとして使います。 結果 volumeだけの比較になりますが、ちゃんとアライメントもかけて出力してくれそうです。 背景をもう少しちゃんとフォローしてもう少しバリエーションのあるセットで試してみようと思います。 あとは配座発生も考えるとそれなりにバルキーな計算になりそうです。

RDKitで一気にタニモト係数を計算する

最近知ったのですがRDKit分子のリストからタニモト係数を一気に求めるには BulkTanimotSimilarity関数を使うといいということでした。 今までは とか書いて順次タニモト係数を計算して適当にリストに入れこんだりしていましたが とするとindex 0 の分子とリストのタニモト係数の計算結果のリストを返してくれます。 コードがちょっと短くなります。 上の例だ自分自信のシミラリティも計算してしまうので とか書くと三角行列になるかと思います。 クラスタリングなんかに使えるかな。 距離にするなら1.0-タニモト係数の結果を使うとよさそうです。 補足 RDKitのMorgan法によるFingerPrintでは半径を指定するのでpipelinepilotのECFP4に相当するFPを得るためにはMorganFPでは2を引数に当てるようです。

RDKitでQED

QEDはNature Chemistry に報告されている 指標です。 “Quantitative Estimate of Drug-Likeness” (QED) QEDとケミストの得点を比較したデータ等、興味深いデータが乗っています。 SIにpipeline pilotのプロトコールがあるのでppがあればさくっとできますが、同様のことをRDKitでも実現できます。 silicos-it のHPに紹介されているBiscu-itを入れるとよいです。インストールはHPにある通りで $ cd /usr/local/src $ mv ~/Downloads/biscu-it-*.tar.gz . $ sudo tar -xvf biscu-it-*.tar.gz $ cd biscu-it-* で $ python setup.py install 以上 とすると読み込んだSDFのQEDが算出されます。

RDKit Build

RDKitはオープンソースでありながら充実したライブラリがそろっていて、やりたいことが結構できるのでお気に入り。 定期的にver upするのでそれもいいのだが、インストールが自分のようなへっぽこにはハードルが高い。winは結構さくっと入れられるのだが、Macだと大変、、、 最近Homebrewで簡単に入るらしいが自分のパッケージ管理はMacPortsなので移行しないとこの恩恵には預かれない。 自力でbuildにチャレンジする次第である。 ここにあるとおりなんだけどこれではctestでエラーが連発する。 で、結局 としたところ、ctestが全部成功。 一年ぶりにバージョンアップしました。

RDKitでsim matrix

RDKitは自分のお気に入りのツールです。 Pybelも優れているのだが最初に触ったのがRDKitということでよく使っています。 SDFから分子を読んで類似性でマップを作る場合 みたいな感じでしょうか。 テキストにタニモト係数0.7以上の化合物ペアが出るのでcytoscapeで見ると ネットワークが見えるかと思います。結構このビジュアル方法私は好きです。