Skip to main content

Quantum Machine Learning

Project description

A Python2/3 toolkit for representation learning of molecules and solids.

Current author list: * Anders S. Christensen (University of Basel) * Felix Faber (University of Basel) * Bing Huang (University of Basel) * O. Anatole von Lilienfeld (University of Basel)

1) Installation

Installing prerequisite modules (for most Linux systems):

sudo apt-get install python-pip gfortran libblas-dev liblapack-dev

These should already be installed on most systems. Alternatively the Intel compilers and MKL math-libraries are supported as well (see section 1.3).

1.1) Installing via pip:

The easiest way to install is using the official, built-in Python package manager, pip:

pip install git+https://github.com/qmlcode/qml --user --upgrade

Additionally you can use pip2 install ... or pip3 install ... to get the Python2 or Python3 versions explicitly. QML supports both flavors.

To uninstall simply use pip again.

pip uninstall qml

1.2) Installing via setup.py with Intel compiler:

If you have Intel compilers installed, you can compile QML with ifort/MKL using the following options:

pip install git+https://github.com/qmlcode/qml.git --user --upgrade --global-option="build" --global-option="--compiler=intelem" --global-option="--fcompiler=intelem"

1.3) Note on Apple/Mac support:

Install QML requires a Fortran compiler. On Darwin you can install it using brew:

brew install gcc

Note: the Clang Fortran compiler in brew does currently not support OpenMP, so this disables parallelism in QML.

2) Representations of compounds:

2.1) Supported representations:

Currently QML supports the following representations for molecules:

  • Molecular coulomb matrix (sorted by row-norm, or unsorted)

  • Atomic coulomb matrix (sorted by distance to query atom, or row-norm)

  • ARAD

Currently QML supports the following representations for solids:

  • ARAD

2.2) Generating representations using the Compound class:

The following example demonstrates how to generate a representation via the qml.Compound class.

from qml import Compound

# Read in an xyz or cif file.
water = Compound(xyz="water.xyz")

# Generate a molecular coulomb matrices sorted by row norm.
water.generate_coulomb_matrix(size=5, sort="row-norm")

print water.coulomb_matrix

2.3) Generating representations via the qml.representations module:

from qml.representations import *

# Dummy atomtypes and coordinates
atomtypes = ["O", "H", "H"]
coordinates = np.array([1.464, 0.707, 1.056],
                       [0.878, 1.218, 0.498],
                       [2.319, 1.126, 0.952])

# Generate a molecular coulomb matrices sorted by row norm.
cm1 = generate_coulomb_matrix(atomtypes, coordinates,
                                size=5, sort="row-norm")
print cm1

# Generate all atomic coulomb matrices sorted by distance to
# query atom.
cm2 = generate_atomic_coulomb_matrix(atomtypes, coordinates,
                                size=5, sort="distance")
print cm2

2.4) Benchmarks for QM7:

Following benchmarks were executed on a single core on an Intel Core i5-6260U @ 1.80 GHz CPU.

Generate ~7K molecular coulomb matrices = 0.06s Generate ~100K atomic coulomb matrices = 0.22s

3.1) Calculate kernels using the Compound class:

… to be updated

3.2) Calculate kernels using the qml.kernels module directly

from qml.kernels import laplacian_kernel

… to be updated ## 3.3) Benchmarks for QM7: … to be updated

4.1)

… to be updated

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qml-0.2.8.tar.gz (14.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page