芳香環の数

芳香環の数は、分子の疎水性に大きく寄与します。
疎水性は、アルブミン結合率・CYP3A4代謝酵素の阻害率・hERGタンパク質阻害率などに強く影響します。
したがって、芳香環を数えることは、「薬らしさ」の指標となります*1


数えてみましょう。
ただし、ナフタリンはベンゼン環2個と数えます。
すなわち、最小の環構造に分解した後、芳香性を確認します。


これは難解そうに見えますが、
SSSRFinderという便利なクラスで一発解決です。


/* narring.java */

import java.io.*;
import org.openscience.cdk.interfaces.*;
import org.openscience.cdk.io.iterator.IteratingSMILESReader;
import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;

import org.openscience.cdk.ringsearch.SSSRFinder;
import org.openscience.cdk.CDKConstants;
import org.openscience.cdk.tools.manipulator.RingSetManipulator;

class narring {

public static void main(String args[]){

if(args.length!=1){
System.err.println("narring <smiles-file>");
System.exit(1);
}
FileInputStream fis = null;
IteratingSMILESReader isr = null;
try{
fis = new FileInputStream(new File(args[0]));
isr = new IteratingSMILESReader(fis);
} catch (Exception e) {
e.printStackTrace();
}
while( isr.hasNext() ){
IMolecule imol = (IMolecule)isr.next();
String id = (String)imol.getProperty("cdk:Title");
int nar = 0;
try{
RingSetManipulator rsm = new RingSetManipulator();
SSSRFinder sssrf = new SSSRFinder(imol);
IRingSet rs = sssrf.findSSSR();
rsm.markAromaticRings(rs);
IRing r = null;
for(int i=0;i<rs.getAtomContainerCount();i++){
r = (IRing) rs.getAtomContainer(i);
boolean isAromatic = r.getFlag(CDKConstants.ISAROMATIC);
if (isAromatic) nar++;
}
} catch (Exception e1) {
e1.printStackTrace();
}
System.out.printf("%s\t%d\n", id, nar);
}
}
}

*1: Ritchie et al. The impact of aromatic ring count on compound developability--are too many aromatic rings a liability in drug design? Drug Discov. Today (2009) 14, 1011-1020 PubMed