Skip to main content

PyPermm

permeability modeling made easy

License Powered by: uv Code style: ruff Typing: ty GitHub Workflow Status

About

PyPermm is a Python-based reimplementation of the PerMM library written by Andrei Lomize and Alexey Kovalenko. The original code can be found here. This code has been relicensed with the permission of the original authors.

If you use pypermm, please cite the original PerMM publication.

Installation

Simply run uv pip install pypermm, pixi add --pypi pypermm, or pip install pypermm.

Usage

PyPermm primarily exposes a single function, run_permm, which takes a list of atomic symbols and a list of atomic coordinates (in Å).

run_permm returns a dictionary with a lot of useful computed properties, including:

  • asatot, the total accessible surface area of the heavy atoms (in Å**2).
  • E_bind, the minimum insertion energy (in kcal/mol), representing optimal binding to the membrane interface.
  • logP_BLM, the predicted intrinsic permeability for black lipid membrances
  • logP_plasma, the predicted intrinsic permeability for plasma membranes
  • logP_BBB, the predicted intrinsic permeability for the blood–brain barrier
  • logP_Caco2, the predicted intrinsic permeability for Caco-2 membranes
  • logP_PAMPA, the predicted intrinsic permeability for PAMPA membranes
  • z, an array of z-positions (in Å) through the membrane where energies were calculated
  • energies, the insertion energy (in kcal/mol) at each z-position after optimizing orientation

Here's what running PyPermm looks like:

from pytest import approx
from pypermm.pypermm import run_permm

symbols = ["N", "C", "C", "C", ...]

xyz = [
    [5.04, 1.944, -8.324],
    [6.469, 2.092, -7.915],
    [7.431, 0.865, -8.072],
    [6.916, -0.391, -8.544],
    ...
]
       
result = run_permm(symbols, xyz)

assert result["asatot"] == approx(366.19, abs=0.01)
assert result["logP_BLM"] == approx(-6.85, abs=0.01)
assert result["logP_plasma"] == approx(-7.43, abs=0.01)
assert result["logP_BBB"] == approx(-5.31, abs=0.01)
assert result["logP_Caco2"] == approx(-5.23, abs=0.01)
assert result["logP_PAMPA"] == approx(-7.55, abs=0.01)
assert result["E_bind"] == approx(-0.297, abs=0.01)

Credits

This package was created with Cookiecutter and the jevandezande/uv-cookiecutter project template.

Metadata

Release files for pypermm 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pypermm 0.0.4
File Size Uploaded Provenance Actions
pypermm-0.0.4.tar.gz 23.6 kB Without provenance Details for pypermm-0.0.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pypermm 0.0.4
File Interpreter ABI Platform Actions
pypermm-0.0.4-py3-none-any.whl Python 3 none any Details for pypermm-0.0.4-py3-none-any.whl

Total release size: 49.1 kB

Release files / pypermm-0.0.4.tar.gz

Download URL pypermm-0.0.4.tar.gz
Size 23.6 kB
Tags Source
SHA-256 checksum
How to use checksums
92b63eb660debe41fda46c0170df8886fe32da6e7d0a62c318b3fc34ade7cb43
BLAKE2b-256 checksum
How to use checksums
b608211ffcf828050b85b39c6c6ebb38b49951e0af5ad919abbea62eaaed59e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / pypermm-0.0.4-py3-none-any.whl

Download URL pypermm-0.0.4-py3-none-any.whl
Size 25.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ab724dc9e9a5fe051db973aa79e10e5209403c23b1a7c1eabdeccae6a9159c9
BLAKE2b-256 checksum
How to use checksums
8ee7ab0befd79cb7cb3bd4b223aa1f74a7b2d8b2ac6f01c315f1f47843dc0d97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Security for pypermm 0.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page