def cal_charge(m): try: charges = AllChem.CalcEEMcharges(m) AllChem.ComputeGasteigerCharges(m) except: charges = None if charges is None: charges = [ float(m.GetAtomWithIdx(i).GetProp("_GasteigerCharge")) for i in range(m.GetNumAtoms()) ] else: for i in range(m.GetNumAtoms()): if charges[i] > 3 or charges[i] < -3: charges[i] = float( m.GetAtomWithIdx(i).GetProp("_GasteigerCharge")) return charges
def CalcEEMCharge(fsdf): m = Chem.SDMolSupplier(fsdf, removeHs=False)[0] chgs = AllChem.CalcEEMcharges(m) # chgs = [x.GetDoubleProp('_GasteigerCharge') for x in m.GetAtoms()] return chgs