Esempio n. 1
0
def CalculateUnweightRDF(ChargeCoordinates):
    """Calculate unweighted RDF descriptors."""
    R = GetR(n=30)
    temp = []
#    ChargeCoordinates=_ReadCoordinates('temp.arc')
    for i in ChargeCoordinates:
        # if i[0]!='H':
        temp.append([float(i[1]), float(i[2]), float(i[3])])
    DM = GetGeometricalDistanceMatrix(temp)
    nAT = len(temp)
    RDFresult = {}
    for kkk, Ri in enumerate(R):
        res = 0.0
        for j in range(nAT - 1):
            for k in range(j + 1, nAT):
                res = res + math.exp(-_beta * math.pow(Ri - DM[j, k], 2))
        RDFresult[f'RDFU{kkk + 1}'] = round(res, 3)
    return RDFresult
Esempio n. 2
0
def CalculatePolarizabilityRDF(ChargeCoordinates):
    """Calculate RDF descriptors with Polarizability schemes."""
    R = GetR(n=30)
    temp = []
    polarizability = []
#    ChargeCoordinates=_ReadCoordinates('temp.arc')
    for i in ChargeCoordinates:
        # if i[0]!='H':
        temp.append([float(i[1]), float(i[2]), float(i[3])])
        polarizability.append(GetRelativeAtomicProperty(i[0], 'alapha'))
    DM = GetGeometricalDistanceMatrix(temp)
    nAT = len(temp)
    RDFresult = {}
    for kkk, Ri in enumerate(R):
        res = 0.0
        for j in range(nAT - 1):
            for k in range(j + 1, nAT):
                res = res + polarizability[j] * polarizability[k] * math.exp(-_beta * math.pow(Ri - DM[j, k], 2))
        RDFresult[f'RDFP{kkk + 1}'] = round(res, 3)
    return RDFresult
Esempio n. 3
0
def CalculateMassRDF(mol, ChargeCoordinates):
    """Calculate RDF descriptors with Mass schemes."""
    mol.addh()
    mass = [i.atomicmass for i in mol.atoms]
    R = GetR(n=30)
    temp = []
#    ChargeCoordinates=_ReadCoordinates('temp.arc')
    for i in ChargeCoordinates:
        # if i[0]!='H':
        temp.append([float(i[1]), float(i[2]), float(i[3])])
    DM = GetGeometricalDistanceMatrix(temp)
    nAT = len(temp)
    RDFresult = {}
    for kkk, Ri in enumerate(R):
        res = 0.0
        for j in range(nAT - 1):
            for k in range(j + 1, nAT):
                res = res + mass[j] * mass[k] * math.exp(-_beta * math.pow(Ri - DM[j, k], 2))
        RDFresult[f'RDFM{kkk + 1}'] = round(res / 144, 3)
    return RDFresult
Esempio n. 4
0
def CalculateVDWVolumeRDF(ChargeCoordinates):
    """Calculate RDF with atomic van der Waals volume shemes."""
    R = GetR(n=30)
    temp = []
    VDW = []
#    ChargeCoordinates=_ReadCoordinates('temp.arc')
    for i in ChargeCoordinates:
        # if i[0]!='H':
        temp.append([float(i[1]), float(i[2]), float(i[3])])
        VDW.append(GetRelativeAtomicProperty(i[0], 'V'))
    DM = GetGeometricalDistanceMatrix(temp)
    nAT = len(temp)
    RDFresult = {}
    for kkk, Ri in enumerate(R):
        res = 0.0
        for j in range(nAT - 1):
            for k in range(j + 1, nAT):
                res = res + VDW[j] * VDW[k] * math.exp(-_beta * math.pow(Ri - DM[j, k], 2))
        RDFresult[f'RDFV{kkk + 1}'] = round(res, 3)
    return RDFresult
Esempio n. 5
0
def CalculateUnweightMoRSE(ChargeCoordinates: List[List[float]]) -> dict:
    """Calculate unweighted 3D MoRse descriptors.

    :param ChargeCoordinates: Atomic coordinates and charges as read by chemopy.GeoOpt._ReadCoordinates
    """
    R = GetR(n=30)
    temp = []
    #    ChargeCoordinates=_ReadCoordinates('temp.arc')
    for i in ChargeCoordinates:
        # if i[0]!='H':
        temp.append([float(i[1]), float(i[2]), float(i[3])])
    DM = GetGeometricalDistanceMatrix(temp)
    nAT = len(temp)
    RDFresult = {}
    for kkk, Ri in enumerate(R):
        res = 0.0
        for j in range(nAT - 1):
            for k in range(j + 1, nAT):
                res = res + math.sin(Ri * DM[j, k]) / (Ri * DM[j, k])
        RDFresult[f'MoRSEU{kkk + 1}'] = round(res, 3)
    return RDFresult
Esempio n. 6
0
def CalculateAtomicNumberMoRSE(mol: Chem.Mol,
                               ChargeCoordinates: List[List[float]]) -> dict:
    """Calculate 3D MoRse descriptors from atomic number.

    :param ChargeCoordinates: Atomic coordinates and charges as read by chemopy.GeoOpt._ReadCoordinates
    """
    R = GetR(n=30)
    temp = []
    mass = [i.atomicnum for i in mol.atoms]
    for i in ChargeCoordinates:
        # if i[0]!='H':
        temp.append([float(i[1]), float(i[2]), float(i[3])])
    DM = GetGeometricalDistanceMatrix(temp)
    nAT = len(temp)
    RDFresult = {}
    for kkk, Ri in enumerate(R):
        res = 0.0
        for j in range(nAT - 1):
            for k in range(j + 1, nAT):
                res = res + mass[j] * mass[k] * math.sin(
                    Ri * DM[j, k]) / (Ri * DM[j, k])
        RDFresult[f'MoRSEN{kkk + 1}'] = round(res / 144, 3)
    return RDFresult
Esempio n. 7
0
def CalculateVDWVolumeMoRSE(ChargeCoordinates: List[List[float]]) -> dict:
    """Calculate 3D MoRse descriptors from van der Waals volume.

    :param ChargeCoordinates: Atomic coordinates and charges as read by chemopy.GeoOpt._ReadCoordinates
    """
    R = GetR(n=30)
    temp = []
    VDW = []
    for i in ChargeCoordinates:
        # if i[0]!='H':
        temp.append([float(i[1]), float(i[2]), float(i[3])])
        VDW.append(GetRelativeAtomicProperty(i[0], 'V'))
    DM = GetGeometricalDistanceMatrix(temp)
    nAT = len(temp)
    RDFresult = {}
    for kkk, Ri in enumerate(R):
        res = 0.0
        for j in range(nAT - 1):
            for k in range(j + 1, nAT):
                res = res + VDW[j] * VDW[k] * math.sin(
                    Ri * DM[j, k]) / (Ri * DM[j, k])
        RDFresult[f'MoRSEV{kkk + 1}'] = round(res, 3)
    return RDFresult