示例#1
0
    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)
示例#2
0
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
示例#3
0
            ]
        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',
示例#4
0
def test_get_charge(smiles, charge):
    mol = chemi.smiles_to_oemol(smiles)
    assert chemi.get_charge(mol) == charge