Skip to main content

pairlist

Fast neighbor (pair) lists for particles under periodic boundary conditions.

Given coordinates and a cutoff, it yields index pairs ((i, j)) whose distance is below the threshold. Internally it uses a cell-list algorithm with an optional C extension.

version 1.0.0

Install

pip install pairlist

Quick start

No external data files are required—only NumPy.

import numpy as np
import pairlist as pl

N = 500
cell = np.eye(3) * 20.0                         # 20 × 20 × 20 box
pos = np.random.default_rng(0).random((N, 3))    # fractional coordinates

for i, j, r in pl.pairs_iter(pos, maxdist=3.0, cell=cell):
    # i, j: particle indices; r: distance in the same unit as cell
    print(i, j, r)

Absolute coordinates work the same way if you set fractional=False:

pos_abs = pos @ cell
for i, j, r in pl.pairs_iter(
    pos_abs, maxdist=3.0, cell=cell, fractional=False
):
    ...

Pairs between two sets of points:

pos_A = np.random.default_rng(1).random((100, 3))
pos_B = np.random.default_rng(2).random((200, 3))
for i, j, r in pl.pairs_iter(pos_A, maxdist=3.0, cell=cell, pos2=pos_B):
    ...

API reference: pairlist.html

Demo: draw neighbor bonds

demo

Particles in a periodic box; lines are pairs within the cutoff (colored by distance; minimum-image segments). Regenerate with:

python samples/demo_bonds.py -o benchmark/demo.png

Minimal version:

import numpy as np
import matplotlib.pyplot as plt
import pairlist as pl

rng = np.random.default_rng(0)
cell = np.eye(3) * 10.0
pos = rng.random((80, 3))
xyz = pos @ cell

fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(xyz[:, 0], xyz[:, 1], s=12, zorder=2)
for i, j, _ in pl.pairs_iter(pos, maxdist=2.0, cell=cell):
    ax.plot(
        [xyz[i, 0], xyz[j, 0]],
        [xyz[i, 1], xyz[j, 1]],
        color="0.6",
        lw=0.6,
        zorder=1,
    )
ax.set_aspect("equal")
ax.set_title("pairs within cutoff (xy projection)")
plt.show()

Benchmark

Cell lists vs. naive (O(N^2)) and other methods:

benchmark.ipynb Open In Colab

benchmark

C / other languages

The core cell-list routines are also available as a small C library (csource/pairlist.h, libpairlist.a). See the header for the API.

Optional: GenIce samples

The scripts under samples/ (RDF, hydrogen-bond graph, …) read Gromacs-style coordinates. You can generate an example box with GenIce:

genice2 CRN1 -r 2 2 2 > CRN1x222.gro
python samples/RDF_pairlist.py < CRN1x222.gro

Or simply make test if GenIce is installed.

Requirements

  • python
  • numpy

Download files

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

Source Distribution

pairlist-1.0.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pairlist-1.0.0-cp312-cp312-win_amd64.whl (23.6 kB view details)

Uploaded CPython 3.12Windows x86-64

pairlist-1.0.0-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl (79.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pairlist-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (20.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pairlist-1.0.0-cp311-cp311-win_amd64.whl (23.4 kB view details)

Uploaded CPython 3.11Windows x86-64

pairlist-1.0.0-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl (77.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pairlist-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (20.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pairlist-1.0.0-cp310-cp310-win_amd64.whl (23.4 kB view details)

Uploaded CPython 3.10Windows x86-64

pairlist-1.0.0-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl (76.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pairlist-1.0.0-cp310-cp310-macosx_11_0_arm64.whl (20.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pairlist-1.0.0-cp39-cp39-win_amd64.whl (23.4 kB view details)

Uploaded CPython 3.9Windows x86-64

pairlist-1.0.0-cp39-cp39-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl (76.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pairlist-1.0.0-cp39-cp39-macosx_11_0_arm64.whl (20.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pairlist-1.0.0.tar.gz.

File metadata

  • Download URL: pairlist-1.0.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pairlist-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4693d80bcb98bcfe80728a544c15933ce7426c08806eb98ab702136ab21d3f95
MD5 ec01ec4888031af4bdd1497e5afe500e
BLAKE2b-256 fa132a1f231a2acece34e0f0bbba5c2f7ac67526edf607e621275e440a22b08d

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pairlist-1.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pairlist-1.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a86f1e7d4ed6fc5846dcaee24edfce1eaf0e2506447e8e1dda13eb0045489501
MD5 7852594745b802ce24fb46c214e071d6
BLAKE2b-256 ff42e6290f3538224d45557a9e06105afdbab4c4686468b61689968d2f7c3ccb

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for pairlist-1.0.0-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 722cb1a5d7ad7db20a7a03917a19cbc2f1549683580ca628911858c5633eddeb
MD5 14c3a17317b2ac362a63fba2662760d7
BLAKE2b-256 5cf230c9c08e8ad151427974bfb12aee75a51444078729de40e30f55bf31ffcd

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pairlist-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c01f248b570b0ef833b07629a7142319839ad2abb8d25ec178a542899748b92
MD5 79dabf3305faadc189047d6856371e70
BLAKE2b-256 7763ac73e255700420aa81c32284a507cb469abbd1ddf047a2694112db4edff5

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pairlist-1.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pairlist-1.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 035a49e8e7c145f9eb540b00794d3be767ccbff1263dd046fbb04d3f89730888
MD5 7fb21be0d705052f4d0a253f5c36938a
BLAKE2b-256 6b92d3aac9b2c420762af67427a0a3e93fcd129b6776cee1d551e4b175d077d8

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for pairlist-1.0.0-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 678854f9ef0997f93380f2ebf007aa4987b8104d0f8c345a48dfc207b3587bef
MD5 a5e42bb256c186a8fea8155d63b5022d
BLAKE2b-256 f979ae97c78a547318e7570b0387b4785c5072084b82d87c9d3c021d6a82b529

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pairlist-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 82a6448e383fe6a1c6c44f5cf1accbf8ce0b97f54e343a8713a0a0c7e278ddb2
MD5 9526c2678efc4ce4e9a5aa5ff8fe9864
BLAKE2b-256 59e25d2928d8547e851aa774637caf93a0d913cd2b0081fda8e8d57784d6fe96

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pairlist-1.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pairlist-1.0.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f7f8d0b0dd1f630a4e00b2b01e4169d8ea600c6f063f882274f41038bd3f8738
MD5 4794dc145370d9f25dcd15e2785cc947
BLAKE2b-256 3eadc8212a232d307f1d0ea1ae3c2d3bd64b390b640055afb0e7e29132aca15d

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for pairlist-1.0.0-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a14bb1734f78f3985937db0f35ffb08c6f78a3ba5fd24b484b7cac384ae51d45
MD5 c1094ef3989edba68bb9541f933a1181
BLAKE2b-256 4fa1481096a27517daf4aab2835203571b8a184e999f15c6b4ebb416f362ce58

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pairlist-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b88d4d5e91449592be8c9ee18201f88d95d73f509b83a09717bc554becbbf6fb
MD5 c157c47b1bd148e4f1a8bc5990d2fde3
BLAKE2b-256 9fdc1a677f3c87309a8627cd197a4707ed7d9e9dbe5d71320a8603d86d5ff048

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pairlist-1.0.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pairlist-1.0.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3e9ddb85bb0e81d188f3f9bc1ca4524f1482cff6bf97aee8c6d2c67554d54960
MD5 a3185add051bfb18f2335c8e8c02ee42
BLAKE2b-256 918c844c2fc3ecc81aff4253b801d90e9a2c00a6b53188672e88ac0760c90894

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp39-cp39-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for pairlist-1.0.0-cp39-cp39-manylinux_2_28_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fa42aa677b5697f82c1d4c624b7630a438615fc2dc726e159d05207ccd0ca0d5
MD5 7716a9b473a25c5a5baa4436220d3254
BLAKE2b-256 cbc555f3283443dd9c02293d0c7b01cfdcdf61020977e1b91ff3044553133026

See more details on using hashes here.

File details

Details for the file pairlist-1.0.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pairlist-1.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f40fc8224c3cd22163e2a882cff28ee782e541dec2e4672fbcaf497bc5542178
MD5 c0392d7f9038eb72a338143a0ccbcf5e
BLAKE2b-256 3ef35bc246298b307fd5f8a05a2ec52b694ac6b5d4eb1403c1dc248174cd30e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page