Ejemplo n.º 1
0
def Get3dDescriptor(molObject):
    """
	Get all 3D descriptor
	Args:

	Returns:
		List
	Raise:
		Exceptions
	"""
    value_list = []
    value_list.append(Descriptors3D.Asphericity(molObject))
    value_list.append(Descriptors3D.Eccentricity(molObject))
    value_list.append(Descriptors3D.InertialShapeFactor(molObject))
    value_list.append(Descriptors3D.NPR1(molObject))
    value_list.append(Descriptors3D.NPR2(molObject))
    value_list.append(Descriptors3D.PMI1(molObject))
    value_list.append(Descriptors3D.PMI2(molObject))
    value_list.append(Descriptors3D.PMI3(molObject))
    value_list.append(
        Descriptors3D.RadiusOfGyration(molObject))  # Radius of gyration
    value_list.append(
        Descriptors3D.SpherocityIndex(molObject))  # Spherocity Index
    value_list.append(rdMolDescriptors.CalcPBF(
        molObject))  # Returns the PBF (plane of best fit) descriptor
    value_list += rdMolDescriptors.CalcAUTOCORR3D(molObject)
    value_list += rdMolDescriptors.CalcRDF(molObject)
    value_list += rdMolDescriptors.CalcMORSE(molObject)
    value_list += rdMolDescriptors.CalcWHIM(molObject)
    value_list += rdMolDescriptors.CalcGETAWAY(molObject)

    return value_list
Ejemplo n.º 2
0
def get3D(m,is3d):
	if not is3d:
		m = Chem.AddHs(m)
		AllChem.EmbedMolecule(m)
		AllChem.MMFFOptimizeMolecule(m)
	r= rdMD.CalcAUTOCORR3D(m)+rdMD.CalcRDF(m)+rdMD.CalcMORSE(m)+rdMD.CalcWHIM(m)+rdMD.CalcGETAWAY(m)
	return r
Ejemplo n.º 3
0
def get_3d_representation(xyz, smiles, method, mol=None):
    """
    Args:
        xyz (torch.Tensor): atom type and xyz of geometry.
        smiles (str): SMILES string
        method (str): RDKit method for 3D representation
        mol (rdkit.Chem.rdchem.Mol): RDKit mol object
    Returns:
        result (np.array): fingerprint
    """

    representation_fn = {
        'autocorrelation_3d': rdMD.CalcAUTOCORR3D,
        'rdf': rdMD.CalcRDF,
        'morse': rdMD.CalcMORSE,
        'whim': rdMD.CalcWHIM,
        'getaway': lambda x: rdMD.CalcWHIM(x, precision=0.001)
    }

    # if a `mol` is not given, generate it from the xyz and smiles
    if mol is None:
        mol = get_mol(xyz=xyz, smiles=smiles)
    fn = representation_fn[method]
    result = fn(mol)

    return result
Ejemplo n.º 4
0
def get3D(m,is3d):
    if not is3d:
        m = Chem.AddHs(m)
        # define the new code from RDKit Molecule 3D ETKDG.
        ps = AllChem.ETKDG()
        ps.randomSeed = 0xf00d
        AllChem.EmbedMolecule(m,ps)
    r= rdMD.CalcAUTOCORR3D(m)+rdMD.CalcRDF(m)+rdMD.CalcMORSE(m)+rdMD.CalcWHIM(m)+rdMD.CalcGETAWAY(m, precision=0.001)
    return r
Ejemplo n.º 5
0
 def get_WHIM(x, from_smiles):
     if from_smiles:
         mol = Chem.MolFromSmiles(x)
     else:
         mol = x
     if (mol is None) or (len(mol.GetAtoms()) == 0):
         return [0] * 114
     else:
         mol_3D = Chem.AddHs(mol)
         AllChem.EmbedMolecule(mol_3D)
         AllChem.MMFFOptimizeMolecule(mol_3D)
         return rdMolDescriptors.CalcWHIM(mol_3D)
Ejemplo n.º 6
0
 def test6WHIM(self):
     with open(os.path.join(self.dataDir, 'whim.new.out')) as refFile:
         for i, m in enumerate(self.suppl):
             if i > 10: break
             nm = m.GetProp('_Name')
             inl = refFile.readline()
             split = inl.split('\t')
             self.assertEqual(split[0], nm)
             split.pop(0)
             vs = _gen3D(m, True, lambda x: rdMD.CalcWHIM(x, thresh=0.01))
             for rv, nv in zip(split, vs):
                 self.assertAlmostEqual(float(rv), nv, delta=0.01)
Ejemplo n.º 7
0
def getWHIM(mol3D):
    dout = {}
    try:
        lwhim = rdMolDescriptors.CalcWHIM(mol3D)
    except:
        lwhim = []

    if lwhim != []:
        for i in range(1, len(lwhim) + 1):
            val = lwhim[i - 1]
            if math.isnan(val) == True:
                dout["WHIM" + str(i)] = "NA"
            else:
                dout["WHIM" + str(i)] = round(val, 6)
        return dout
    else:
        for desc in _whim3D.keys():
            dout[desc] = "NA"
        return dout
Ejemplo n.º 8
0
A = [
    '[H][H]', 'B', 'O=O', 'C', 'CC', 'CCC', 'CCCC', 'CCCCC', 'CCCCCC', 'CO',
    'CCO', 'CCCO', 'CCCCO', 'CCCCCO', 'CCCCCCO', 'CCl', 'CCCl', 'CCCCl',
    'CCCCCl', 'CCCCCCl', 'CCCCCCCl', 'CBr', 'CCBr', 'CCCBr', 'CCCCBr',
    'CCCCCBr', 'CCCCCCBr', 'CI', 'CCI', 'CCCI', 'CCCCI', 'CCCCCI', 'CCCCCCI',
    'CF', 'CCF', 'CCCF', 'CCCCF', 'CCCCCF', 'CCCCCCF', 'CS', 'CCS', 'CCCS',
    'CCCCS', 'CCCCCS', 'CCCCCCS', 'CN', 'CCN', 'CCCN', 'CCCCN', 'CCCCCN',
    'CCCCCCN'
]
for smi in A:
    m = Chem.MolFromSmiles(smi)
    m = localopt(m, 100)
    #r=get3D(m,True)
    print smi
    print "---------"
    r = rdMD.CalcWHIM(m)
    print "Ei:" + str(r[0]) + "," + str(r[1]) + "," + str(r[2]) + "\n"
    print "Gi:" + str(r[5]) + "," + str(r[6]) + "," + str(r[7]) + "\n"
    print "SI:" + str(rdMD.CalcSpherocityIndex(m))
    print "AS:" + str(rdMD.CalcAsphericity(m))
    print "EX:" + str(rdMD.CalcEccentricity(m))
    for item in r:
        thefile.write("%.3f," % item)
    thefile.write("\n")
    #m.SetProp("smi", smi)
    #writer.write(m)

thefile = open('testBPA.txt', 'w')
writer = Chem.SDWriter('3DBPAmol.sdf')
B = [
    'CN(C)CC(Br)c1ccccc1', 'CN(C)CC(Br)c1ccc(F)cc1', 'CN(C)CC(Br)c1ccc(Cl)cc1',