Chemistry::RECAP

Chemistry::RECAPというモジュールを書いたのでケモインフォクックブックも更新しといた。

インストールはダウンロードして

tar xvfz Chemistry-RECAP-0.01.tar.gz 
cd Chemistry-RECAP-0.01
perl Makefile.PL 
make 
make test
sudo make install

PerlMolのインストールと使い方は以下の書籍が参考になるかも。

PerlMolで構造分割

PerlMolにはseparateメソッドがあるので、SMARTSで適当にマッチさせて結合を壊してからseparateすると化合物の構造を分割できる。

芳香環の炭素原子とヘテロ原子の間を切って、分割した構造をsmilesで出力するスクリプトはこう書ける。

use warnings;
use strict;
use Chemistry::File::SMARTS;
use Chemistry::File::SMILES;
use Chemistry::Ring 'aromatize_mol';

my $SMILES = shift;
my $react = Chemistry::Mol->parse($SMILES, format => 'smiles');
my $SMARTS = 'c-A';
my $pattern = Chemistry::Pattern->parse($SMARTS, format => 'smarts');

aromatize_mol($react);
molsplit($react);

sub molsplit {
 my $mol = shift;

 if($pattern->match($mol)){
   my @nbd = $pattern->bond_map;
   my @nfg = $pattern->atom_map;

   $nbd[0]->delete;
   for my $fg (@nfg){
     my $hcnt = $fg->implicit_hydrogens();
     $fg->implicit_hydrogens(++$hcnt);
   }

   for my $frag ($mol->separate){
     molsplit($frag);
   }
 }else{
   print $mol->print(format => 'smiles', unique => 1, name => 1),"\n";
 }
}

試しにpioglitazoneを分割してみると

$ perl molsplit.pl "CCC1=CN=C(C=C1)CCOC2=CC=C(C=C2)CC3C(=O)NC(=O)S3"
CC      
c1ccncc1        
CCO     
c1ccccc1        
CC1SC(=O)NC1=O

PerlMol

PerlMolがバージョン0.35にあがったようなので入れてみた。PerlMolってのは、バイオインフォでいうところのbioperlみたいなもんです。perlでケモインフォといったらPerlMolでしょ!みたいにそだって欲しい(などと期待しております)

インストールはいつものとおりCPANモジュールで。

# perl -MCPAN -e 'install Chemistry::File::SMILES' # perl -MCPAN -e 'install Chemistry::File::SMARTS'

ExamplePolar Surface Area計算なんて、C->DayPerl->PerlMolという感じで着実にオープン化してますな。

化合物のデータベースが欲しければLigand.Infoなんてどうですかね?