Random sequential adsorption (RSA) simulation, 2D lattice-based.
Project description
AdsorPy
Lattice-based random sequential adsorption (RSA) Python 3.10+ script.
In RSA, molecules arrive one by one at a surface. Adsorption takes place if the molecule does not overlap with molecules already on the surface. The list of available orientations for the molecule is traversed in random order until the first orientation that fits is found, or until the list is exhausted. All available sites are checked, and various metrics can be extracted afterwards such as the coverage, covered area, and gap size distribution.
How to use
Run the adsorpy.main in order to run a simple single run using the standard disk-shaped molecule on hexagonal aluminium oxide.
New molecules can be created by running the adsorpy.molecule_lib or by calling the adsorpy.molecule_lib.first_time_loader() function. Molecules can be generated from .xyz files. It is
recommended to run adsorpy.molecule_lib directly from command line to define the molecule orientation, then store the new
molecule string for repeated use.
Run the adsorpy.run_simulation.run_simulation() function with the molecule footprints generated in the previous step. Output can be printed to stdout, plotted, and saved.
User friendliness will be updated at a later stage, allowing the user to define simulation modes, surfaces, and molecules more easily.
Documentation (generated with Sphinx): https://joostfwmaas.github.io/AdsorPy/
Future additions
In a future update, the code will be expanded with diffusion, desorption, and species conversion (changing from one molecule on the surface to another).
Design philosophy
Because AdsorPy has been made with scientific rigour in mind, the package is tested in multiple ways:
- Unit tests (
Pytest) of the code ensure correct behaviour for expected input. - Property tests (
Hypothesis) of the most critical code components ensure correct behaviour for unexpected input as well. Mypy(in--strictmode) ensures that the package is correctly-typed, as if it were static. Thepy.typedfile--a promise that the code is type-hinted properly--is added because the code passes this test.Ruffis used as a linter with almost all rules enabled (see the pyproject.toml for the list of exclusions and reasons).Toxis used to run all of the aforementioned tests in parallel for multiple Python versions to ensure correct behaviour.- CI is used for automated testing.
The package also makes use of an optional config file that falls back on standard behaviour, because configs are often used in scientific software (set-and-forget).
Openness and academic collaboration
The script was made public for the sake of openness and academic collaboration. Please let me know if you have questions about the script, or if you have discovered any issues/bugs. At the end of this file, I will place a list of papers that make use of this work. Feel free to contact me if you want your work to be added to the list as well.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file adsorpy-1.0.3.tar.gz.
File metadata
- Download URL: adsorpy-1.0.3.tar.gz
- Upload date:
- Size: 364.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cb28fa2e1fd5ba66d59148d7934490424361261a80b4a3ee7942d6fefab1b36
|
|
| MD5 |
b418a81ab8177bab6f8d366049aa5063
|
|
| BLAKE2b-256 |
321f05b3ab267b0eab258828faad1d8cb05d46815cea9ba6ed594655b338065f
|
File details
Details for the file adsorpy-1.0.3-py3-none-any.whl.
File metadata
- Download URL: adsorpy-1.0.3-py3-none-any.whl
- Upload date:
- Size: 41.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da20eb9411c1afd3a8258c5bd7d210e8f38fe806ba11c4cb572a69e736aeac5e
|
|
| MD5 |
103bb0a8bf670b9cc6d016b6fad9683d
|
|
| BLAKE2b-256 |
dc331f0356ad0096e1e4f80a4473e92e4a73a12439c7701a459310c7f03ab14e
|