SMILESに関するオープンなドキュメント

主にparser,writerを実装するヒト向けのオープンなドキュメント作成のプロジェクトが立ち上がったようだ。素晴らしい。

HOP読んでて、なんか適当なParser書いてみたかったのでそのうちやってみようかな。

6.1 External R-Groups

Daylight proposed, and OpenEye actually implemented, an extension that specifies bonds to external R-groups. An external R-group is specified using ampersand '&' followed by a ring-closure specification (either a digit, or % and two digits). However, unlike ring-closures, the bond is to an external, unspecified R-group. Example: "n1c(&1)c(&2)cccc1" - 2,3-substituted pyridine.

これは知らなかった(やるなOpenEye)。

PerlMolに組み込んだら便利だろうな

僕らはもうSBDDしなくていい

なんかもう色々疲れたなぁと。

そしたら僕らはもう空を飛ばなくていいのフレーズが浮かんだ。

ProductName J
RATN(Riow Arai+Tujiko Noriko)
disque corde / ?円 ( 2005-08-20 )


  • あともう一回だけ
  • 僕らはもう空を飛ばなくていい
  • わらうだけ

この3曲は素晴らしい。

EmacsのPDB編集モード

Higher-order Perl 8章: Parser

HOPの8.2はatomとかsymbolがでてくる。これはlispで探すとわかりやすい説明がでてくるかなとググってみたら、

pdb.elっていうPDBのフォーマットを編集するEmacsのモードがヒットした。

Atom(原子)にシンボルか、確かに、、、、と妙に納得した。

ProductName Emacs 辞典 (DESKTOP REFERENCE)
佐藤 竜一
翔泳社 / ¥ 3,129 (2006-05-11)
通常24時間以内に発送

elispはEmacs辞典が簡単にまとまっていてわかりやすい。S式とかAtomとか読み返したらちょっとわかった気がした。

Open Chemistry

chemoinformaticsっていうよりはChemistryに関わるデータとか情報をどうしていくかという話

Open Chemistry

まぁそうなるんだろうナァというような気はするけど。E-labnoteとかWikiとかそういう用途で使うのは力不足な気がするし、プロプライエタリなシステム作って専用クライアントでアクセスさせるビジネスモデルのところがやっても、なんか中途半端なもんになるよな普通。

ChemistryとかDrugDiscoveryに特化したWikiが欲しいと思う。

クールポコ

  • 仙庭 - 「モテようとしてTaverna使っている男がいたんですよ~」
  • 小野 - 「な~にぃ~?やっちまったな!!」
  • 仙庭 - 「男は黙って」
  • 小野 - 「シェルスクリプト!」
  • 仙庭 - 「男は黙って」
  • 小野 - 「シェルスクリプト!」
  • 仙庭 - 「何時の時代だよ~」
  • 小野 - 「次!」

pythonでヒュッケル法

化学系だったら一度はコードを書いたことのあるヒュッケル法による軌道エネルギー計算はPython/Numpy/Pybelを使うと200行ぐらいで書けるヨというエントリをみつけた。

FORTRANだとこんな感じ

化合物の3次元構造発生

smi23dっていう3D Coordinate Generatorが出てた。

おー素晴らしいよーマジで

後で触ってみよう。これが使えると色々できるようになりますな。

塩を取り除くコマンド

職場でいつものようにGUIをチマチマいじってたら、隣で塩を取り除くコマンドがないっちゅよと困っていた。openbabelにあるんじゃねーの?どれどれと探してみたけどなかった。さらに、いやあるだろふつーはとかいってググってもcgiみたいなもんしかみつからなかった。

smilesだったら.でsplitしてゴニョればOKなんだけど、座標情報落っこちるから、perlmolとかopenbabelで実装して任意のフォーマットにできるようなコマンドが欲しい。

それを仮にwashmolとすれば

washmol -i input.sdf [-o out.smi]

みたいに。デフォルトではインプットと同じフォーマットで返すような、調子いいコマンドが欲しくなった。

僕は塩を取り除くのはwashと言ってるんだけど、desaltとか色々と呼び方があんのね。

リストの要素の親の要素を知りたい場合

さて、bioinformaticsとかchemoinformaticsとか言われてるようなアレは、化学とか生物学に対して情報学的観点からアプローチしたりするわけです。こういう点から見ると、薬ってもんは蛋白質にうまいことはまる鍵みたいなもんで、蛋白質の穴にいい感じではまるような化合物を(コンピュータを駆使して)設計していくのが(コンピュテーショナルな)ドラッグデザイン(CADD)という分野だヨ。

で、蛋白質というものは複数のアミノ酸から構成され(100から数百)そしてアミノ酸は20種類程度存在し、それぞれ数十の原子から構成されているわけだ。要するに一対多の階層構造をとる。

protein -> amino-acid -> atom

みたいな。

蛋白質の階層

でそれぞれprotein aminoacid(aa) atomみたいなクラスを用意すれば

$atom1 = Atom->new({name => 'C1', type => 'C'});
...
$aa1 = AminoAcid->new({name => 'GLY', atoms => [$atom1, $atom2, ]})
...
$protein = Protein->new({name=> 'ProteinA', aminoacids => [$aa1,$aa2,$aa3...]});

みたいにそれぞれ配列に突っ込めば蛋白質を表現できて、あるatomオブジェクトを与えられた場合にそれがどのアミノ酸に属しているのか調べるのに

for my $aminoacid ($protein->aminoacids){
    for my $atom ($aminoacid->atoms){
        return $aminoacid if $qatom == $atom;
    }
}

みたいにdepthfirstで探索していけばいいんだろうけど、ちょっと探索効率が悪いので、atomオブジェクトに $atom->{parent} = $parent_aminoacidみたいに親のアミノ酸オブジェクト返すような属性追加したんだけど、これだと構造が複雑になってなんか気持ち悪い。

他にうまいやり方ってあんのかなと思ったお盆の夏2007。

pngのメタデータにmol形式の文字列を埋め込む

OSRAがええよとか言ってたわけだが、そもそも画像のメタデータに構造情報埋め込めばいいやん的発想なのがこのエントリ。

use Image::ExifTool qw(:Public);
use XXX;

$info = ImageInfo('rosiglitazone.png');

XXX $info;

で実行

$ wget http://depth-first.com/demo/20070801/rosiglitazone.png
$ perl etest.pl rosiglitazone.png 
---
BitDepth: 8
ColorType: RGB with Alpha
Compression: Deflate/Inflate
Directory: .
ExifToolVersion: 6.90
FileModifyDate: 2007:08:01 21:18:16
FileName: rosiglitazone.png
FileSize: 8 kB
FileType: PNG
Filter: Adaptive
ImageHeight: 109
ImageSize: 327x109
ImageWidth: 327
Interlace: Noninterlaced
MIMEType: image/png
PixelUnits: Unknown
PixelsPerUnitX: 1
PixelsPerUnitY: 1
molfile: |-
  name
  params
  comments
   25 27  0  0  0  0  0  0  0  0  0 V2000
      1.6910   -6.1636    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
      2.5571   -6.6636    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
      3.4231   -6.1636    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
      3.4231   -5.1636    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
      2.5571   -4.6636    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
      1.6910   -5.1636    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
      4.2891   -4.6636    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
    ...
   23 19  1  0  0  0  0
   22 24  2  0  0  0  0
   20 25  2  0  0  0  0
  M  END
...
  at etest.pl line 6

論文のpdfとかもこういう感じで画像を埋め込んでくれればちょっとはデータが取り出しやすくていいかも。