Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andrewtarzia/poremapper
cavity shape and size mapping by growing a guest inside a host
https://github.com/andrewtarzia/poremapper
cage high-throughput molecular-modeling molecular-simulation porous-materials
Last synced: 11 days ago
JSON representation
cavity shape and size mapping by growing a guest inside a host
- Host: GitHub
- URL: https://github.com/andrewtarzia/poremapper
- Owner: andrewtarzia
- License: mit
- Created: 2021-10-19T21:07:30.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-11-09T12:40:18.000Z (12 months ago)
- Last Synced: 2024-10-12T11:47:19.638Z (27 days ago)
- Topics: cage, high-throughput, molecular-modeling, molecular-simulation, porous-materials
- Language: Python
- Homepage:
- Size: 505 KB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.rst
- License: LICENSE
Awesome Lists containing this project
README
PoreMapper
==========:author: Andrew Tarzia
Inflate a balloon inside a cavity to get the ``pore`` and ``windows``.
Built for molecules with a single, central cavity.
Please contact me with any questions () or submit an issue!
Installation
------------Clone this repository and ``python setup.py develop`` in this directory, or using pip::
$ pip install PoreMapper
Algorithm
---------Very simple algorithm:
1. Define a sphere of radius 0.1 Angstrom at the centroid of the host with equally placed beads on the sphere. The number of beads is defined by the ``host.get_maximum_diameter()``. Beads have ``sigma``, which define their radius, and the resolution of the calculation. Hosts have atoms, which have radii defined by Streussel atomic radii [citation].
2. Define steps of inflation (simply moving each bead in the blob along a vector emanating from the centroid) at even step size from 0.1 Angstrom to maximum host radii.
3. For each step, check if a bead will collide with the host (based on distance-(bead radii + atom radii)). If it collides, it becomes immovable and a pore bead. Else, continue on.
A pore, and blob, have a series of analysis methods, including:
* Measures of pore shape based on the inertia tensor.
* Measure of pore radii (based on distance to host) and volume (based on its convex hull).
* Calculation of windows based on the blob (a Pore contains a Blob), where movable beads are clustered using ``sklearn.cluster.MeanShift`` [this may change and be improved] to calculate the number and size of windows.
Examples
--------Two examples in ``examples/`` take ``.xyz`` files and either run the step-wise inflation (``inflate_blob``) or the single-step inflation (``get_inflated_blob``).
The step-wise process will produce a plot and ``.xyz`` structures, monitoring the pore and blob, while the single-step will run the full calculation and produce just the final pore and blob.Contributors and Acknowledgements
---------------------------------I developed this code as a post doc in the Jelfs research group at Imperial College London (, ).
License
-------This project is licensed under the MIT license.