Skip to main content

Package to estimate fractal dimension of 3D surfaces formed from overlapping spheres via box-counting algorithm.

Project description

Sphractal

ci-cd

Description

Sphractal is a package that provides functionalities to estimate the fractal dimension of complex 3D surfaces formed from overlapping spheres via box-counting algorithm.

Background

  • Atomic objects in molecular and nanosciences such are often represented as collection of spheres with radii associated with the atomic radius of the individual component.

  • Some examples of these objects (inclusive of both fine- and coarse-grained representation of the individual components) are small molecules, proteins, nanoparticles, polymers, and porous materials such as zeolite, metal-organic framework (MOFs).
  • The overall properties of these objects are often significantly influenced by their surface properties, in particular the surface area available for interaction with other entities, which is related to the surface roughness.
  • Fractal dimension allows the surface complexity/roughness of objects to be measured quantitatively.
  • The fractal dimension could be estimated by applying the box-counting algorithm on surfaces represented as either:
    • approximated point cloud:

  • that are subsequently voxelised:

  • or mathematically exact surfaces:

Features

Aims

  • Representation of the surface as either voxelised point clouds or mathematically exact surfaces.
  • Efficient algorithm for 3D box-counting calculations.
  • Customisable parameters to control the level of detail and accuracy of the calculation.

Installation

Use pip or conda to install Sphractal:

pip install sphractal
conda install -c conda-forge sphractal

Special Requirement for Point Cloud Surface Representation

Sphractal requires an executable compiled from another freely available repository for the functionalities related to voxelised point clouds surface representation to operate properly.

This could be done by:

  • Downloading the source code from the repository to a directory of your choice:
git clone https://github.com/jon-ting/fastbc.git
  • Building an executable by doing either one of the following compilations according to the instructions on the README.md page. This will decide whether you will be running the box counting algorithm with GPU acceleration. Feel free to rename the executables:
g++ 3DbinImBCcpu.cpp bcCPU.cpp -o 3DbinImBCcpu.exe
nvcc -O3 3DbinImBCgpu.cpp bcCUDA3D.cu -o 3DbinImBCgpu.exe
  • (Optional) Setting the path to the executable as an environment variable accessible by Python (replace <PATH_TO_EXE> by the absolute path to the executable file you just built), otherwise you could always pass the path to the executable to the relevant functions:
export FASTBC=<PATH_TO_EXE>

Note that for the environment variable to be persistent (to still exist after the terminal is closed), the line should be added to your ~/.bashrc.

Usage

from sphractal import getExampleDataPath, runBoxCnt

inpFile = getExampleDataPath()  # Replace with the path to your xyz or lmp file
boxCntResults = runBoxCnt(inpFile)

Check out the notebook tutorial for further explanations and demonstrations!

Documentation

Detailed documentations are hosted by Read the Docs.

Contributing

Sphractal appreciates your enthusiasm and welcomes your expertise!

Please check out the contributing guidelines and code of conduct. By contributing to this project, you agree to abide by its terms.

License

The project is distributed under an MIT License.

Credits

The package was created with cookiecutter using the py-pkgs-cookiecutter template. The speeding up of the inner functions via just-in-time compilations with Numba was inspired by the advice received during the NCI-NVIDIA Open Hackathon 2023.

Contact

Email: Jonathan.Ting@anu.edu.au/jonting97@gmail.com

Feel free to reach out if you have any questions, suggestions, or feedback.

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

sphractal-0.26.0.tar.gz (863.0 kB view details)

Uploaded Source

Built Distribution

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

sphractal-0.26.0-py3-none-any.whl (867.4 kB view details)

Uploaded Python 3

File details

Details for the file sphractal-0.26.0.tar.gz.

File metadata

  • Download URL: sphractal-0.26.0.tar.gz
  • Upload date:
  • Size: 863.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for sphractal-0.26.0.tar.gz
Algorithm Hash digest
SHA256 f63db731035d7eaeb090ff4268134b1ae23880f768256cd59841ccfde416ec29
MD5 a78e88919e6cd28f2e1979d8412d81fd
BLAKE2b-256 125b3db42eed1ecc1defc6cf88481a104b97851d4c330cd611cca1cc6b06f63b

See more details on using hashes here.

File details

Details for the file sphractal-0.26.0-py3-none-any.whl.

File metadata

  • Download URL: sphractal-0.26.0-py3-none-any.whl
  • Upload date:
  • Size: 867.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for sphractal-0.26.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7559bc2addf1f7c40d5edb8ecb8a07ff7ed424228769b9475f33a764345f46c4
MD5 d4dd78c2533e2def52843c9b63545ec8
BLAKE2b-256 3f7bbbb76cc1b12afaa869d5f54f451d5c5ceee17ffbb104be6ac2dc41a749a6

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 Pingdom Monitoring Sentry Error logging StatusPage Status page