def test_gninatyping(): m = pybel.readstring('smi', 'c1ccccc1CO') m.addh() t = molgrid.GninaIndexTyper() assert t.num_types() == 28 names = list(t.get_type_names()) assert names[2] == 'AliphaticCarbonXSHydrophobe' typs = [t.get_atom_type_index(a.OBAtom) for a in m.atoms] assert len(typs) == 16 acnt = 0 ccnt = 0 ocnt = 0 hcnt = 0 phcnt = 0 for t, r in typs: if names[t] == 'AromaticCarbonXSHydrophobe': acnt += 1 assert r == approx(1.9) if names[t] == 'AliphaticCarbonXSNonHydrophobe': ccnt += 1 assert r == approx(1.9) if names[t] == 'OxygenXSDonorAcceptor': ocnt += 1 assert r == approx(1.7) if names[t] == 'Hydrogen': hcnt += 1 assert r == approx(.37) if names[t] == 'PolarHydrogen': phcnt += 1 assert r == approx(.37) assert acnt == 6 assert ccnt == 1 assert ocnt == 1 assert phcnt == 1 assert hcnt == 7 #check covalent rdius t = molgrid.GninaIndexTyper(True) typs = [t.get_atom_type_index(a.OBAtom) for a in m.atoms] assert len(typs) == 16 acnt = 0 ccnt = 0 ocnt = 0 hcnt = 0 phcnt = 0 for t, r in typs: if names[t] == 'AromaticCarbonXSHydrophobe': acnt += 1 assert r == approx(0.77) if names[t] == 'AliphaticCarbonXSNonHydrophobe': ccnt += 1 assert r == approx(0.77) if names[t] == 'OxygenXSDonorAcceptor': ocnt += 1 assert r == approx(.73) if names[t] == 'Hydrogen': hcnt += 1 assert r == approx(.37) if names[t] == 'PolarHydrogen': phcnt += 1 assert r == approx(.37) assert acnt == 6 assert ccnt == 1 assert ocnt == 1 assert phcnt == 1 assert hcnt == 7
#!/usr/bin/env python3 '''convert gninatypes file to xyz file''' import struct, sys, argparse from functools import partial import molgrid names = molgrid.GninaIndexTyper().get_type_names() def elem(t): '''convert type index into element string''' name = names[t] if 'Hydrogen' in name: return 'H' elif 'Carbon' in name: return 'C' elif 'Nitrogen' in name: return 'N' elif 'Oxygen' in name: return 'O' elif 'Sulfur' in name: return 'S' elif 'Phosphorus' == name: return 'P' elif 'Fluorine' == name: return 'F' elif 'Chlorine' == name: return 'Cl' elif 'Bromine' == name: return 'Br' elif 'Iodine' == name: