Example #1
0
def test_slatm_local_representation():

    files = ["qm7/0001.xyz",
             "qm7/0002.xyz",
             "qm7/0003.xyz",
             "qm7/0004.xyz",
             "qm7/0005.xyz",
             "qm7/0006.xyz",
             "qm7/0007.xyz",
             "qm7/0008.xyz",
             "qm7/0009.xyz",
             "qm7/0010.xyz"]

    path = os.path.dirname(os.path.realpath(__file__))

    mols = []
    for xyz_file in files:

        mol = qml.data.Compound(xyz=path + "/" + xyz_file)
        mols.append(mol)

    mbtypes = get_slatm_mbtypes(np.array([mol.nuclear_charges for mol in mols]))

    for i, mol in enumerate(mols): 
        mol.generate_slatm(mbtypes, local=True)

    X_qml = []
    for i, mol in enumerate(mols): 
        for rep in mol.representation: 
            X_qml.append(rep)

    X_qml = np.asarray(X_qml)
    X_ref = np.loadtxt(path + "/data/slatm_local_representation.txt")

    assert np.allclose(X_qml, X_ref), "Error in SLATM generation"
Example #2
0
def get_slatm_representations(atoms_list, coordinates_list):

    charge_list = []
    for atoms in atoms_list:
        charges = [get_atom(atom) for atom in atoms]
        charges = np.array(charges)

        charge_list.append(charges)

    mbtypes = qml_representations.get_slatm_mbtypes(charge_list)

    replist = [
        qml_representations.generate_slatm(coordinates,
                                           atoms,
                                           mbtypes,
                                           local=False)
        for coordinates, atoms in zip(coordinates_list, charge_list)
    ]
    replist = np.array(replist)

    return replist
Example #3
0
 def _get_slatm_mbtypes(self, arr):
     from qml.representations import get_slatm_mbtypes
     return get_slatm_mbtypes(arr)
    # Make training and test sets
    n_test = 60
    n_train = 140

    training = mols[:n_train]
    test = mols[-n_test:]

    sigma = 100.0
    llambda = 1e-10

    # List of properties
    Y = np.array([mol.properties for mol in training])
    Ys = np.array([mol.properties for mol in test])

    # List of representations
    mbtypes = get_slatm_mbtypes(np.array([mol.nuclear_charges
                                          for mol in mols]))
    for i, mol in enumerate(training):
        mol.generate_slatm(mbtypes, local=False, rpower=6)
    for i, mol in enumerate(test):
        mol.generate_slatm(mbtypes, local=False, rpower=6)

    X = np.array([mol.representation for mol in training])
    Xs = np.array([mol.representation for mol in test])

    # Generate training Kernel
    K = gaussian_kernel(X, X, sigma)
    Ks = gaussian_kernel(X, Xs, sigma)

    K[np.diag_indices_from(K)] += llambda
    alpha = cho_solve(K, Y)