Fraction of CSP3

先週末はあるソフトのユーザー会に参加してきました。
参加者、プレゼンターの皆様おつかれさまでした。
木曜のセッション、金曜のセッションともに勉強させてもらいました。
CI( continuous integration)の考え方は自分にとっては新しい考え方だったし興味深いなあと思いました。勉強しよー。
 また、生産性の考え方、エンドユーザーのスキルアップ、教育など多くの議論が活発でしたし、いつも得るものが多くていいですね。色々と考えさせられました。ポスターでは皆さん話しかけて下さりありがたい限りです。
 さて懇親会でfSP3の話になってRDKITで行けまっせっていう流れになったのでちょっとコードを乗っけてみます。RDKitのDesicriptorクラスからいけるのでこんな感じでよいかと。
単発の場合、、、

from rdkit import Chem
from rdkit.Chem import Descriptors
mol = Chem.MolFromSmiles("c1ccccc1")
mol2=Chem.MolFromSmiles("Cc1ccccc1")
Descriptors.FractionCSP3(mol)
 > 0.0
Descriptors.FractionCSP3(mol2)
 > 0.14285714285714285

SDFを扱う場合は
SDMolSupplierを使ってもいいのですが
今回はpandasを使ってみます。
sdfは適当にpubchemからとってきました。
lambdaとapply組み合わせると
ループいらないのでコードがすっきりしますね。

from rdkit import Chem
from rdkit.Chem import Descriptors
from rdkit.Chem import PandasTools
fsp3 = lambda mol : Descriptors.FractionCSP3(mol) # 計算式定義
#  計算してみる
df = PandasTools.LoadSDF("pubchem.sdf")

#  ipython notebookなのでtimeを使って計測してみると

df["fsp3"] = df.ROMol.apply(fsp3)
>CPU times: user 4.51 ms, sys: 429 µs, total: 4.94 ms
>Wall time: 4.82 ms
df.fsp3

Out[17]:
0     0.0625
1     0.0625
2     0.0625
3     0.0625
4     0.0625
5     0.0625
6     0.0625
7     0.0625
8     0.0625
9     0.0625
10    0.0625
11    0.0625
12    0.0625
13    0.0625
14    0.0625
...
542    0.117647
543    0.062500
544    0.052632
545    0.052632
546    0.052632
547    0.052632
548    0.062500
549    0.117647
550    0.250000
551    0.250000
552    0.166667
553    0.117647
554    0.062500
555    0.062500
556    0.062500
Name: fsp3, Length: 557, dtype: float64
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中