2009年12月4日金曜日

OpenBabel:Aromaticity

分子がAromaticかどうか知りたいときがありますよね。
そんなときのお気楽関数「Aromaticity」です。

原理は単純。Aromatic原子数/全原子数だけです。
完全Aromatic分子なら1、Aliphaticなら0になるというわけです。

using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Diagnostics;

using OpenBabel;

・・・・・・・

/// <summary>
/// Aromaticity:Aromatic原子数/全原子数
/// </summary>
/// <param name="inMol">OBMolインスタンス</param>
/// <returns>0~1の数値</returns>
public static double Aromaticity(OBMol inMol)
{
int atomCount = 0;
int aromaticAtomCount = 0;
foreach (OBAtom item in inMol.Atoms())
{
if (item.IsAromatic()) { aromaticAtomCount += 1; }
atomCount += 1;
}
return aromaticAtomCount / atomCount;
}

0 件のコメント: