def test_formal_charge(self): """Test formal charge""" mol_1 = chemi.smiles_to_oemol('c1cc(c[nH+]c1)c2ccncn2') charge = chemi.get_charge(mol_1) self.assertEqual(charge, 1) mol_2 = chemi.smiles_to_oemol('C[NH+]1CC[NH+](CC1)Cc2ccccc2') charge = chemi.get_charge(mol_2) self.assertEqual(charge, 2) mol_3 = chemi.smiles_to_oemol('CCC(C)(C)C(=O)[O-]') charge = chemi.get_charge(mol_3) self.assertEqual(charge, -1)
def test_expand_tautomers(): from openeye import oechem imidazol_smiles = 'CC1=CN=CN1' oemol = oechem.OEMol() oechem.OESmilesToMol(oemol, imidazol_smiles) tautomers = fragmenter.states._enumerate_tautomers(oemol) assert len(tautomers) == 2 for tau in tautomers: assert chemi.get_charge(tau) == 0 salsalate = 'OC(=O)C1=CC=CC=C1OC(=O)C1=CC=CC=C1O' oemol = oechem.OEMol() oechem.OESmilesToMol(oemol, salsalate) tautomers = fragmenter.states._enumerate_tautomers(oemol) assert len(tautomers) == 1 assert chemi.get_charge(tautomers[0]) == -1
] if max(scores[b]) > 0.001: selected_bond = utils.deserialize_bond(b) selected_bonds.append(selected_bond) with open('validation_set/{}/{}_oe_wbo_with_score.json'.format(name, name), 'r') as f: frags = json.load(f) for bo in frags: for f in frags[bo]: if 'parent' in f: parent_smiles = frags[bo][f]["map_to_parent"] # parent_smiles = f.split('_')[0] parent_mol = oechem.OEMol() oechem.OESmilesToMol(parent_mol, parent_smiles) # Get charge charge = chemi.get_charge(parent_mol) parent_mol.SetTitle(name) break break max_scores.append( (max_score, name, charge, parent_mol, selected_bonds, parent_smiles)) print(len(max_scores)) # sort mol and visualize top 50 molecules. sorted_scores = sorted(max_scores, reverse=True) sorted_mols = [i[3] for i in sorted_scores[:100]] sorted_bonds = [i[4] for i in sorted_scores[:100]] sorted_smiles = [i[5] for i in sorted_scores[:100]] chemi.to_pdf(sorted_mols, fname='selected_validation_set.pdf',
def test_get_charge(smiles, charge): mol = chemi.smiles_to_oemol(smiles) assert chemi.get_charge(mol) == charge