pychembldbをATCに対応させた

ちょっと作業したのでついでにドキュメントも更新して0.3.4にした。

ATC分類でレベル1がAつまり消化管と代謝作用の分子を探してみる。

::: python
>>> from pychembldb import *
>>> for c in chembldb.query(AtcClassification).filter_by(level1="A"):
...   for mol in c.molecules:
...     print mol.pref_name
... 
SODIUM FLUORIDE
SODIUM MONOFLUOROPHOSPHATE
OLAFLUR
SODIUM FLUORIDE
HYDROGEN PEROXIDE
CHLORHEXIDINE
AMPHOTERICIN B

ATC分類と認証日を表示させる

>>> for p in chembldb.query(Product).limit(10):
...   for m in p.molecules:
...     for c in m.atc_classifications:
...       print m.pref_name, p.approval_date, c.level1
... 
SULFAPYRIDINE 1982-01-01 J
HEPARIN SODIUM 1982-01-01 C
HEPARIN SODIUM 1982-01-01 C
HEPARIN SODIUM 1982-01-01 B
HEPARIN SODIUM 1982-01-01 B
HEPARIN SODIUM 1982-01-01 S

pychembldbをChEMBL18に対応させた

chemblのpythonインターフェースであるpychembldbをchemblの最新リリース(18)に対応させました。

ついでに前回の勉強会でクラス名がわかりにくいと指摘されたので、その部分をちょっと修正。

これでスキーマ図を見ながらクエリを組み立て易くなっていると思います。

尚、クラスの名前付けルールは

具体的には以下のクラスは別名をつけてあります。

Cell = CellDictionary
Target = TargetDictionary
Molecule = MoleculeDictionary
Curation = CurationLookup
DataValidity = DataValidityLookup
ActivityStd = ActivityStdLookup
ConfidenceScore = ConfidenceScoreLookup

ChemblId = ChemblIdLookup

さぁ、コレでもなぞるかと思ったらリレーションが定義されてなかった。

修正しなきゃ

それから来月の5日に勉強会やります。発表内容を更新しました。

  • Check.IOのハンズオン @y_sama
  • DBCLSでのRedmineの使われ方の話 @h_ono
  • RDKitの話 @iwatobipen
  • メドケム的な話 @hironagasue
  • (15min) DBCLSの紹介 @bonohu
  • (5min) 統合TVのなかで創薬に役立つ番組の紹介 @bg7860
  • (5min) RedMineの話 @No_6
  • (5min) Redmineの話2 @kzfmix

エンタルピックな要素がメインの結合には量子化学計算を

中田さんのPubChemQC Projectのスライドを見ながら、「あー、昔chembl版欲しいなと思っていたけど今だとsurechembl版が欲しいなぁ」と思った。

ついでに、もっとインタラクションよりのデータがあればなーという方向に妄想は膨らんだ。つまり、PDBでリガンド入りの複合体結晶構造のPIEDAのデータベースあれば嬉しいなぁと思った。

Mishima.syk #3やります

いわしかくにん、よかった♡ (画像はイメージです)

1386150217

今回は

Redmineの事例はLT含めると3演題くらいになると思います。カルチャーの違いで何が受けるか分からない(うちはスクラムダメだったw)ので試行錯誤の共有化ができればいいなと思っています。

Check.IOは初心者向けのハンズオンになると思うので、ちょっとプログラミングにも興味あるんだけどなーという方は参加するとPythonを楽しみながら学べると思います。

時間に余裕があればggplot,pandas,scikit-learnなんかもやれればいいなと思っています。

皆様の参加をお待ちしています☆

Mishima.syk開催しました

Mishima.syk無事に終わりました。参加者の皆様お疲れ様でした。プロジェクターの手配ができないというトラブルがありましたが、ハンズオンで皆さんパソコン持ち込んでいるので別にプロジェクターなくても良かったという。

今回、セミナールームが確保できずに畳の和室しか借りられなかったのですが、結果いい感じのワイガヤになって楽しく進められて良かったですね。室料もかなり安いので次回も同じ所を借りるかも。

後半の発表もみなさんかなり突っ込んだ話をされていて、質疑も盛り上がったし、色々勉強になってよかった。が、うちのカルチャーに根付かせるにはエバンジェリスト的な立ち位置のケミストが必要で、それは(プロジェクトにコミットししない立ち位置の)僕ではできないんだろうなーと漠然と思い、ちょっと残念だった。

前回の反省をふまえて、今回はアンケートをきちんと取って次回に生かそうと思っていたのですが、直前バタバタしたためまたもや取りそこねてしまった。もし、次回やりたいなーとか聞きたいなーと考えている話がありましたら最寄りの管理者までリクエストしておいてください。RDKitなんかいいんじゃないかなーと思うけど、まぁみんなPPでやるからなー。

資料はconnpassにおいてあります。

補足的な内容

pychembldbを使うメリットは?

chembldbを入れればSQLですべてのデータにアクセスできます。

単に、データを取りたいだけだったら別にこれで構いません。pychembldbを使うと、複雑なSQL文を発行しなくてもわかりやすくデータにアクセス出来るのが一点、もう一点はお題5,6のようにblaskt等の他のサービスと連携させやすくなるというあたりですね。

pychembledbでテーブル名とクラス名が一致しない物がある

MoleculeDictionaryではなくMoleculeになっていたりするのは、命名がださいという理由で変えてしまっていますが、ERDみながらクエリを組み立てて行くときにはまるので、次回のバージョンのときに両方でアクセス出来るようにしておきます。

尚、テーブルは複数形になっていますが、クラス名は単数形に統一してあります。

pychembldbを使うための手順

今週末の勉強会の内容です。ChEMBLダンプのimportに時間がかかるので、pythonラッパー弄りたい人はChEMBLを予め入れてから参加するといいでしょう。

当日行う手順を記しておきます。

Pythonのインストール

2.7.xを入れます。OSXは標準でインストール済みです。WIndowsの場合はここからインストーラをダウンロードしてインストールしてください。

pipのインストール

pipはPythonのパッケージ管理ツールです。

ez_setup.pyをダウンロードして実行します

sudo python ez_setup.py

その後get-pip.pyをダウンロードして実行

sudo python get-pip.py

pychembldbのインストール

最初にPostgreSQLのアダプタであるpsycopg2をインストールし、続いてORマッパーをインストールし、最後にChEMBLdbインターフェースをインストールします。

sudo pip install psycopg2
sudo pip install sqlalchemy
sudo pip install pychembldb

pychembldbの設定

pychembldbはデフォルトでMySQLを使うようになっているので.bashrcに以下のように記述しておきます。

export CHEMBL_URI="postgresql+psycopg2://localhost/chembl_17"

編集したら、新しいタブを開くかsource .bashrcをしてください(source効くのかな?)

(注)

例えばuserがpostgresでパスワードがsakeと設定している場合は

export CHEMBL_URI="postgresql+psycopg2://postgres:sake@localhost/chembl_17"

と記述します

使ってみる

python 対話環境を起動します

python

pythonコードを実行します(select pref_name from target_dictionary をpythonで実行)。

>>> from pychembldb import *
>>> for target in chembldb.query(Target).all():
...   print target.pref_name

ターゲット名がずらずらと表示されればOKです。

OSXにChEMBLを入れる

今週末の勉強会の内容です。ChEMBLダンプのimportに時間がかかるので、pythonラッパー弄りたい人はChEMBLを予め入れてから参加するといいでしょう。

当日行う手順を記しておきます。

Homebrewのインストール

パッケージ管理システムです(WIndowsユーザーは飛ばしてください)。

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

こんだけ。

PostgreSQLのインストール

brewを入れてあればインストールは下のコマンドを打つだけ。(WIndowsユーザーはここから最新版のインストーラをダウンロードしてください)

brew install postgresql

インストール後にデータベースを初期化します

initdb /usr/local/var/postgres

サーバー起動

postgres -D /usr/local/var/postgres

別のターミナルから動いているか確認をします

psql -l

(エラーになる場合)

Lionだと標準でPostgreSQLがインストールされているようで、/usr/bin/psqlが存在します。homebrewでインストールする場合には/usr/local/bin/psqlなので、

which psql
/usr/local/bin/psql

とならない場合はPATHを通すか

/usr/local/bin/psql -l

と打ってください

環境変数に設定する場合は~/.bashrcに以下の行を追加します

export PATH=/usr/local/bin:$PATH

その後新しいターミナルを立ち上げた後、

psql -l

ChEMBLを入れる

ChEMBLのftpサイトから最新版(chembl_17_postgresql.tar.gz)をダウンロードします。

展開します

tar xvfz chembl_17_postgresql.tar.gz
cd chembl_17_postgresql

PostgreSQLにChEMBL用のデータベースを用意します

psql postgres
postgres=# create database chembl_17;
#Ctrl-D で抜けます

ダンプをインポートします

psql chembl_17 < chembl_17.pgdump.sql

数時間待ちます。(MBAの2013バージョンだと1.5hくらいかかったそうです)

僕のMBAではこのような結果でした。(ERRORは特に問題ありません)

ALTER TABLE
ALTER TABLE
REVOKE
ERROR:  role "postgres" does not exist
ERROR:  role "postgres" does not exist
GRANT

real    44m46.001s
user    0m10.153s
sys 0m13.130s

動作確認

$ psql chembl_17
psql (9.2.4)
Type "help" for help.

chembl_17=# select pref_name from target_dictionary;

と打ってターゲット名が表示されればきちんと動いています。

来週末は三島で創薬系の勉強会兼新年会です

タイムテーブルと懇親会会場が決まりました。それからQAを追加しておきました。

ChEMBLはPostgres,MySQL,OracleのSQLダンプが配布されているので、データベースの構築は非常に簡単に行えます。構築を実際にやってみようというのが今回のメインです。

あわせてPythonでアクセスする方法や、イントラにWeb(REST)インターフェースを実装する方法なんかもお話できればと。

細かい話は後でまた書きますが、楽しいので興味があればお気軽に参加されるといいと思います。

The PubChemQC project

中田さんが興味深い試みを始めていた

ChEMBLだとSARもろなデータなので、こちらで同じことやるのも楽しそう。pybel+pygamessでスクリプト書けばよさげ。

正月休みに考えてみようかな。

ChEMBLといえば来月勉強会やるので興味があれば是非参加を。(懇親会のみでももちろん歓迎です☆)

aromantic factor

という、メディシナルケミストリーにとって非ロマンチックな指標を思いついでウキウキしてみたが、それって結局1-fsp3じゃないかと気付いてげんなりしたのであった

ProductName メディシナルケミストリー
Graham L. Patrick
丸善 / ?円 ( 2003-03 )