Source code for mordred.tests.test_atomic_property

from rdkit import Chem
from numpy.testing import assert_almost_equal

from mordred import _atomic_property

_data = {
    '>C<': 'CC(C)(C)C',
    '>CH-': 'CC(C)C',
    '-CH2-': 'CCC',
    '=C<': 'C=C(C)C',
    '-CH3': 'CC',
    '=CH-': 'CC=C',
    '>N-': 'CN(C)C',
    '#C-': 'C#CC',
    '-NH-': 'CNC',
    '=CH2': 'C=C',
    '=N-': 'C=NC',
    '-O-': 'COC',
    '#CH': 'C#C',
    '-NH2': 'CN',
    '=NH': 'C=N',
    '#N': 'C#N',
    '-OH': 'CO',
    '=O': 'C=O',
    '-F': 'CF',
    '-SH': 'CS',
    '-S-': 'CSC',
    '=S': 'C=S',
    '-Cl': 'CCl',
    '-Br': 'CBr',
    '-I': 'CI',
}

explicitHs = {key: Chem.AddHs(Chem.MolFromSmiles(smi)).GetAtomWithIdx(1)
              for key, smi in _data.items()}

implicitHs = {key: Chem.MolFromSmiles(smi).GetAtomWithIdx(1)
              for key, smi in _data.items()}


[docs]def make_cases(results, fn, decimal=7): for key, result in results.items(): yield assert_almost_equal, result, fn(explicitHs[key]), decimal, key yield assert_almost_equal, result, fn(implicitHs[key]), decimal, key
[docs]def test_sigma(): results = { '>C<': 4, '>CH-': 3, '-CH2-': 2, '=C<': 3, '-CH3': 1, '=CH-': 2, '>N-': 3, '#C-': 2, '-NH-': 2, '=CH2': 1, '=N-': 2, '-O-': 2, '#CH': 1, '-NH2': 1, '=NH': 1, '#N': 1, '-OH': 1, '=O': 1, '-F': 1, '-SH': 1, '-S-': 2, '=S': 1, '-Cl': 1, '-Br': 1, '-I': 1, } for test in make_cases(results, _atomic_property.get_sigma_electrons): yield test
[docs]def test_valence_sigma(): results = { '>C<': 4, '>CH-': 3, '-CH2-': 2, '=C<': 4, '-CH3': 1, '=CH-': 3, '>N-': 5, '#C-': 4, '-NH-': 4, '=CH2': 2, '=N-': 5, '-O-': 6, '#CH': 3, '-NH2': 3, '=NH': 4, '#N': 5, '-OH': 5, '=O': 6, '-F': 7, '-S-': 0.67, '-Cl': 0.78, '-Br': 0.26, '-I': 0.16, } for test in make_cases(results, _atomic_property.get_valence_electrons, 2): yield test
[docs]def test_IntrinsicState(): results = { '>C<': 1.25, '>CH-': 1.3333, '-CH2-': 1.5, '=C<': 1.6666, '-CH3': 2.0, '=CH-': 2.0, '>N-': 2.0, '#C-': 2.5, '-NH-': 2.5, '=CH2': 3.0, '=N-': 3.0, '-O-': 3.5, '#CH': 4.0, '-NH2': 4.0, '=NH': 5.0, '#N': 6.0, '-OH': 6.0, '=O': 7.0, '-F': 8.0, } for test in make_cases(results, _atomic_property.get_intrinsic_state, 3): yield test