水素を引きぬいてラジカルにする

共有結合先の原子をチェックして冗長なものが出ないようにした。GAMESSのテストも終わったのであとは走らせるだけ。

共有結合先の原子を知るメソッドがなくて、総当りでGetBondを行う。もし結合が形成されてなければNoneが返ってくるのでそれで評価できるらしい。

import openbabel as ob
import sys

def clone(mol):
    obc = ob.OBConversion()
    obc.SetInAndOutFormats("mol", "mol")
    molstring = obc.WriteString(mol)
    new_mol = ob.OBMol()
    obc.ReadString(new_mol, molstring)
    return new_mol

def abs_h(mol):
    radicals = []
    mol.AddHydrogens()
    h_indexs = []
    hetero_indexs = []

    for atom in ob.OBMolAtomIter(mol):
        if atom.GetType() == 'H':
            h_indexs.append(atom.GetIdx())
        else:
            hetero_indexs.append(atom.GetIdx())

    hatoms = []
    non_redundant_hs = []
    for h_index in h_indexs:
        hetero = neighbor(mol, h_index, hetero_indexs)
        if hetero not in hatoms:
            hatoms.append(hetero)
            non_redundant_hs.append(h_index)

    for h_index in non_redundant_hs:
        new_mol = clone(mol)
        new_mol.DeleteAtom(new_mol.GetAtom(h_index))
        new_mol.SetTotalSpinMultiplicity(2)
        new_mol.SetTotalCharge(0)
        radicals.append(new_mol)
    return radicals

def neighbor(mol, index, hetero_indexs):
    q_atom = mol.GetAtom(index)
    for i in hetero_indexs:
        if mol.GetBond(index, i):
            #print "#%d is attached to atom #%d" % (index, i)
            return i

if __name__ == '__main__':
    input = sys.argv[1]

    obc = ob.OBConversion()
    obc.SetInAndOutFormats("smi", "mol")

    mol = ob.OBMol()
    next = obc.ReadString(mol, input)

    radicals = abs_h(mol)
    for r in radicals:
        print obc.WriteString(r)

openbabelで分子のコピーをする

clone的なメソッド用意されてないのね。

この前は、こんな感じでコピーするようにしたけど、

def clone(mol):
   new_mol = ob.OBMol()
   for atom in ob.OBMolAtomIter(mol):
       new_mol.AddAtom(atom)

   for bond in ob.OBMolBondIter(mol):
       new_mol.AddBond(bond)
   return new_mol

適当なフォーマットに書きだして再読込でもいいそうなのでそうした。

def clone(mol):
   obc = ob.OBConversion()
   obc.SetInAndOutFormats("mol", "mol")
   molstring = obc.WriteString(mol)
   new_mol = ob.OBMol()
   obc.ReadString(new_mol,molstring)
   return new_mol

久しぶりにケモインフォクックブックを更新した

代謝部位を見積もるためには水素原子のBDE(結合解離エネルギー)を計算してラジカルになりやすい位置を探せばよいが、化合物毎に全ての水素の引き抜きエネルギーを求めるので計算用のインプットを作成するのに手間がかかる。

それをopenbabelでやってみたという話。これにGamessラッパーを組み合わせれば計算できそうな感じ。ケミストが使えるようにwebのサービスにすんにはまだまだ色々やらないといけないけど。

CYPの代謝予測っていうのは、分子認識+触媒メカニズムをきちんと理解しないといけない。後者は上で書いたような話で、前者はドッキングシミュレーションとかそういう話。触媒反応を理解しないでドッキングシミュレーションにばっか頼ると擬陽性が多くなるし、反応論に傾倒すると偽陰性が増えるので組み合わせが重要ってことで。

逆にそこら辺をきちんと抑えていると、単に代謝サイトをブロックするだけじゃなくて全然違うところから分子認識に干渉するために小さい置換基を導入して代謝ブロックしたりとか、おーメディシナルケミストやー!的な感動があったりする(他社だけどな)。

ProductName 基礎量子化学―軌道概念で化学を考える
友田 修司
東京大学出版会 / 4410円 ( 2007-02 )


The Evolution of Drug Discovery

Hugo Kubiny著だったら買うしかないじゃん!と思ったらはしがき要員だった。

ProductName The Evolution of Drug Discovery: From Traditional Medicines to Modern Drugs
Enrique Ravina
Wiley-VCH / 7344円 ( 2011-05-16 )


目次をみたけど、ケミスト向けの本かも。

ビジュアルアートにおけるソフトウェアの可能性は何か?

コーディングの本ではなくて思想的な、というか美学を体系的に考えていくためのテキスト。普段あまり考えていなかったメタな部分について深く考える機会を与えてくれる良書。インスパイアされまくった。

コードには主に「伝達」「説明」「暗号」という3つの目的があるが本書では「一連の命令を表すコード」に注目している。

ソフトウェアは思考の道具でありソフトウェアを利用すれば大量の情報を活用する能力を高めるだけでなく、今までにない考え方もできるようになる。

で、この可能性のことをprocedual literacyというらしい。

前にも触れたが僕はドラッグデザインもアートだと考えている。特に薬剤そのもののかたちをどう表現するかは重要だし、形と特性の関係性の表現技法なんかもそうだようなぁと。

ProductName FORM+CODE -デザイン/アート/建築における、かたちとコード

ビー・エヌ・エヌ新社 / 2520円 ( 2011-04-25 )


スリットスキャニングとトランスコーディングが興味深かった。サポートサイトにProcessingのコードが載っているので動かしてみると楽しい。

Zen of DrugDesign

昼食をとりながら小町みてたらふと思いついたのでメモ。要するに心技体

ProductName 「分とく山」野崎洋光が説く 美味しい方程式
野崎 洋光
文化出版局 / 1575円 ( 1997-06 )


目先の事ばっかり考えてないで、普段の心構えをどうするかと考えることも大切ですね。

高度な技術は真に必要とされるときにとっておく。全合成はアートだが工業デザインにとっては不要。簡単な合成を少ないステップで望む特性の化合物を作れたほうが偉い。KISS重要、常にシンプルで美しいデザインを心がける。

和食の真髄は引き算。つまりゴテゴテさせる修飾を繰り返すのは二流の証拠で、ぶっちゃけだれでもできる作業。

反応点をうまく導入できるのは巧みの技。巧拙結構はっきり出る感じがする。ここが下手だと時間と根性で合成するのがデフォルトになっていくので避けたほうがいいよね。

JITで試薬が調達出来ればライブラリなんていらないよね。すなわちライブラリは在庫マネージメントで本質ではないよな。作りたいと思いついたときに現実的な時間で試薬調達出来れば良い。そういうインフラを目指すべき

Quantitative Structure–PBPK Relationship Modelling

PBPKを一通り使えるようになってきたので、改めて薬物代謝を学んでいる。

全体を考えられるようになってくると、個々の代謝の実験系がどういう意味を持つのかとかin vivoとのギャップはなんだろうかという新たな発見があって楽しい。

代謝は結局化学反応として考える

この本は化学同人から出ているので反応機構がちょくちょく書いてあるので便利ですね。

というのは、代謝をブロックしたい時にケミストは安直にハロゲンを突っ込もうとするけど、それが活性とリンクするサイトの場合にはもうちょっと考えないといけないことが多いからだ。

触媒の分子機構を考えたり、SN1かなぁSN2かなぁなんて考えながら遷移状態を取りにくくするにはどこからどこに向けて置換基生やしたらいいかなぁなんてやるのは分子設計的なアプローチかと思うんだけど、そもそも代謝を化学反応として理解してないとそういう仕事できないからねぇ。そういうあたりをやるためにも早い段階にアクティブコンフォメーションを捕まえておく必要もあるし。

Quantitative Structure–PBPK Relationship

最近PBPKと構造の相関関係を見ながら合成の方針にフィードバックしたいと思っているのだけど、市販のPBPKソフトは動態向けっていうか構造に対するパラメータの設定が大雑把過ぎて、メカニズムで考えてんのかフィッティングしているのか困っちゃうんだけど、なんかいいソフトウェアないですかね?

みなさん自前で実装しているのかなぁ?誰か知っていたら教えてください。

Virtual Screening: Principles, Challenges, and Practical Guidelines

目次見たけど概要をつかむにはよさげ。

ただ、スコア関数の方法論がもう限界ですからな。もっと丁寧なモデル化が望まれているような気はするし、そういったあたりのもっとイノベーティブなアプローチが議論されない限りはつまんないフィールドになっていっちゃうと思っている。

デザインの骨格はドラッグデザイナーも読むべし的な超良書です

僕はドラッグデザインにはアートの要素が沢山含まれていて楽しい仕事だと思っているし、工業デザインの範疇に入ると考えている。

例えば

  • 技術者は常に性能向上を目指します。しかし新しい価値は、性能のいかんにかかわらず、はじめからその技術自体に遺伝子のように組み込まれているように思います

これは、スキャフォールドのポテンシャルは決まっていて、リードオプティマイゼーションってのはスキャフォールドをできるだけ磨いて薬剤としての美しさを引き出す行為とも捉えることができるし

  • 形を描こうとしてはいけない。構造を描くことによって自然に形が生まれる
  • 絵を描くことは、ものの輪郭を描くことではない。重要なのは向こう側にあって見えてないものや、中心軸のような仮想の線を描く事。そうやって立体や空間の構造を把握したときに迷いなく輪郭を決定することができる

これはファーマコフォアをきちんと認識することの重要性ともろかぶりする

ドラッグデザインを工業デザインとして捉えるヒトはあんまり知らないけど、ケミストやケモインフォマティストが本書を読めば新たな視点が開けると思う

ProductName デザインの骨格
山中俊治
日経BP社 / 1680円 ( 2011-01-29 )


  • 技術者は常に性能向上を目指します。しかし新しい価値は、性能のいかんにかかわらず、はじめからその技術自体に遺伝子のように組み込まれているように思います
  • 生物らしい形の典型は、螺旋と節
  • 携帯電話機の一番重要な機能は「私であることの証明」なんじゃないか
  • 形を描こうとしてはいけない。構造を描くことによって自然に形が生まれる
  • 絵を描くことは、ものの輪郭を描くことではない。重要なのは向こう側にあって見えてないものや、中心軸のような仮想の線を描く事。そうやって立体や空間の構造を把握したときに迷いなく輪郭を決定することができる
  • インボリュート曲線
  • 図面というのは、設計者と製作者をつなぐ言葉のような物

水素結合を深く知りたい

ケミストでもモデラーでも活性ちょっとでもあがると、オウムのように「スイソケツゴー!」って言うんだけど、水素結合の本質わかってんの?と思うことがあるわけだ。

ていうか、あんまスティックモデルに慣れすぎんのも、化学反応の本質というかオービタリスティクな精神の高みを目指すという気概を忘れるのであかんと思うね。

ケミストリーはもっと偉大で量子論の思想に深く根ざしたものでなければならない。ヘンチクリンな棒とか球が近いと言っては喜ぶという愚行を繰り返してはいけない。