Skip to main content

Predict materials properties using only the composition information.

Project description

Distance Matrices

Fast Numba-enabled CPU and GPU computations of 1D Earth Mover's (scipy.stats.wasserstein_distance) and Euclidean distances. 10000 x 10000 weighted Wasserstein distance matrix in ~15 s on an NVIDIA GeForce RTX 2060 GPU. GPU tends to be ~2x faster than parallelized CPU on Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz (6 physical cores).

Installation

conda pip
conda install -c sgbaird dist_matrix pip install dist_matrix

To best reflect the development workflow, you can clone the repository and install via flit:

git clone https://github.com/sparks-baird/dist-matrix.git
cd dist-matrix
conda install flit # alternatively, `pip install -e .`
flit install --pth-file # --pth-file flag is a Windows-compatible local installation; you can edit the source without reinstalling

Usage

You can compute distance matrices (more efficient per distance calculation) or access the lower-level single distance calculation.

Distance Matrices

There is a GPU version (dist_matrix.cuda_dist_matrix_full) as well as a CPU version (dist_matrix.njit_dist_matrix_full).

import numpy as np
from dist_matrix.cuda_dist_matrix_full import dist_matrix as gpu_dist_matrix
# from dist_matrix.njit_dist_matrix_full import dist_matrix as cpu_dist_matrix
n_features = 10
n_rows = 100
U, V, U_weights, V_weights = np.random.rand(4, n_rows, n_features)
distances = gpu_dist_matrix(
    U,
    V=V,
    U_weights=U_weights, # optional
    V_weights=V_weights, # optional
    metric="wasserstein", # "euclidean"
)

Single Distance Calculations

See metrics.py. Note that these lower-level functions are not GPU-accelerated.

import numpy as np
from dist_matrix.utils.metrics import wasserstein_distance, euclidean_distance
n_features = 10
u, v, u_weights, v_weights = np.random.rand(4, n_features)
presorted, cumweighted, prepended = [False, False, False]
em_dist = wasserstein_distance(u, v, u_weights, v_weights, presorted, cumweighted, prepended)
eucl_dist = euclidean_distance(u, v)

See Also

Element Mover's Distances via chem_wasserstein (based on ElM2D)

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

dist_matrix-1.0.4.tar.gz (29.1 kB view details)

Uploaded Source

Built Distribution

dist_matrix-1.0.4-py3-none-any.whl (44.7 kB view details)

Uploaded Python 3

File details

Details for the file dist_matrix-1.0.4.tar.gz.

File metadata

  • Download URL: dist_matrix-1.0.4.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.29.0

File hashes

Hashes for dist_matrix-1.0.4.tar.gz
Algorithm Hash digest
SHA256 73a51836bc7e1709a5432103a006541c4d73af48732d4e71c75b4eefa5f45e9a
MD5 7a7305eb49748d6f3bbb59209df991d1
BLAKE2b-256 92f971f1ddb26666c97ff2eacc4768134476a6ef6f5028b3eea3ab30ff592e30

See more details on using hashes here.

File details

Details for the file dist_matrix-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: dist_matrix-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 44.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.29.0

File hashes

Hashes for dist_matrix-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d1805a0d620a73b32d2f114be643df5c2be9b5447e768b73fdbcab6f38fadb8b
MD5 2c5131ee2c750defdf193db05126c3b8
BLAKE2b-256 390958f50b43ecec3eb2740e4a210cde62d3071e2025fd63f334acf71a0a4e34

See more details on using hashes here.

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