{"id":18925033,"url":"https://github.com/tawssie/zmpy3d","last_synced_at":"2025-04-15T12:33:05.760Z","repository":{"id":236417491,"uuid":"792100696","full_name":"tawssie/ZMPY3D","owner":"tawssie","description":"Python implementation of 3D Zernike moments with NumPy","archived":false,"fork":false,"pushed_at":"2024-09-28T06:28:34.000Z","size":16184,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T03:45:39.176Z","etag":null,"topics":["3d-zernike","numpy","protein-structure","python","structural-bioinformatics","superposition","zernike-moments"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tawssie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-26T01:24:14.000Z","updated_at":"2025-02-20T18:08:40.000Z","dependencies_parsed_at":"2024-04-28T20:44:05.555Z","dependency_job_id":"4398de88-0576-4a18-9550-5fe4f2545343","html_url":"https://github.com/tawssie/ZMPY3D","commit_stats":null,"previous_names":["tawssie/zmpy","tawssie/zmpy3d"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawssie%2FZMPY3D","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawssie%2FZMPY3D/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawssie%2FZMPY3D/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawssie%2FZMPY3D/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tawssie","download_url":"https://codeload.github.com/tawssie/ZMPY3D/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249072568,"owners_count":21208210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-zernike","numpy","protein-structure","python","structural-bioinformatics","superposition","zernike-moments"],"created_at":"2024-11-08T11:09:01.057Z","updated_at":"2025-04-15T12:33:04.127Z","avatar_url":"https://github.com/tawssie.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ZMPY3D\n\n**Update:**\nZMPY3D PyTorch implementation is available (August 25, 2024).\n\nZMPY3D: accelerating protein structure volume analysis through vectorized 3D Zernike Moments and Python-based GPU Integration\n\nFor CPU support only, please refer to the repository:\n\n`ZMPY3D` supports `NumPy`\n(https://github.com/tawssie/ZMPY3D)\n\nFor GPU support with TensorFlow, CuPy and PyTorch, please refer to the other three repositories:\n\n`ZMPY3D_TF` supports `Tensorflow`\n(https://github.com/tawssie/ZMPY3D_TF)\n\n`ZMPY3D_CP` supports `CuPy`\n(https://github.com/tawssie/ZMPY3D_CP)\n\n`ZMPY3D_PT` supports `PyTorch`\n(https://github.com/tawssie/ZMPY3D_PT)\n\nHere presents a Python-based software package, ZMPY3D, to accelerate the moments computation by vectorizing the mathematical formulae, enabling their computation in graphical processing units (GPUs). The package offers popular GPU-supported libraries such as CuPy and TensorFlow along with NumPy implementations, aiming to improve computational efficiency, adaptability, and flexibility in future algorithmic development. \n\n## Installation\n\n**Prerequisites:**\n* ZMPY3D   : Python \u003e=3.9.16, NumPy \u003e=1.23.5\n* ZMPY3D_CP: Python \u003e=3.9.16, NumPy, CuPy \u003e=12.2.0\n* ZMPY3D_TF: Python \u003e=3.9.16, NumPy \u003e=1.23.5, Tensorflow \u003e=2.12.0, Tensorflow-Probability \u003e=0.20.1\n* ZMPY3D_PT: Python \u003e=3.9.16, NumPy \u003e=1.23.5, PyTorch \u003e= 2.3.1\n\n1. Open the terminal\n2. Using pip to install the package through PyPI\n3. Run `pip install ZMPY3D` for the installation\n\n\n## Usage\n* 3D Zernike moments with Tensorflow: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tawssie/ZMPY3D/blob/main/ZMPY3D_demo_zm.ipynb)\n* Shape similarity with CuPy: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tawssie/ZMPY3D/blob/main/ZMPY3D_demo_shape.ipynb) \n* Structure superposition with NumPy: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tawssie/ZMPY3D/blob/main/ZMPY3D_demo_super.ipynb)\n* Runtime evaluation: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tawssie/ZMPY3D/blob/main/ZMPY3D_time_evaluation.ipynb) \n\n## Performances\n\nA voxel cube with dimensions of 100x100x100 was applied to perform 10,000 3D Zernike moment calculations, using 2 different maximum orders 20 and 40.\nExecution times for different hardware configurations using TensorFlow, CuPy, and NumPy libraries:\n\n### NumPy\n\n| Order | CPU1       | CPU2       |\n|-------|------------|------------|\n| 20    | 33m20s     | 14m1s      |\n| 40    | 951m40s    | 338m20s    |\n\n\n### TensorFlow\n\n| Order |            T4 |            RX3070Ti |            V100 |            L4 | \n|-------|---------------|---------------------|-----------------|---------------|\n| 20    | 1m1s          | 0m36s               | 0m31s           | 0m39s         | \n| 40    | 24m40s        | 9m3s                | 10m54s          | 11m13s        | \n\n### CuPy\n| Order |      T4 |      RX3070Ti |      V100 |      L4 |\n|-------|---------|---------------|-----------|---------|\n| 20    | 4m45s   | 2m30s         | 1m42s     | 2m50s   |\n| 40    | 35m20s  | 19m19s        | 14m45s    | 18m40s  |\n\nNote: m = minutes, s = seconds.\n\n## Cache data for order 40\n\nDue to GitHub's file size limitations, follow these steps to download the cache data for order 40 (1.3G) in the ZMPY3D package:\n\n### 1. Locate Package Folder\n\n- Open your terminal and execute the following command to find the folder of the ZMPY3D package:\n- `python -c \"import ZMPY3D; print(ZMPY3D.__file__)\"`\n- Note the path, which ends with `/User/path/ptyhon/site-packages/ZMPY3D/__init__.py`.\n\n### 2. Navigate to Cache Data Folder\n- Go to the `cache_data` folder at the same level as `__init__.py` file, i.e., `/User/path/ptyhon/site-packages/ZMPY3D/cache_data`.\n\n### 3. Download the Cache File:\n- Download the 1.3 GB max order 40 `.pkl` file to the `cache_data` folder from the link below. https://drive.google.com/uc?id=1RR1rF_5YJqaxNC5AK0Ie_8MswGb0Tttw\n\n## Further reading: What can 3D Zernike moments do?\n- Enhancing fold classification\n  * [Real-time structure search and structure classification for AlphaFold protein models](https://doi.org/10.1038/s42003-022-03261-8)\n  * [Real time structural search of the Protein Data Bank](https://doi.org/10.1371/journal.pcbi.1007970)\n- Facilitating structural superpositions\n  * [ZEAL: Protein structure alignment based on shape similarity](https://doi.org/10.1093/bioinformatics/btab205)\n- Supporting protein docking\n  * [Protein-protein docking using region-based 3D Zernike descriptors](https://doi.org/10.1186/1471-2105-10-407)\n- Assisting molecular dynamics\n  * [Binding site identification of G protein-coupled receptors through a 3D Zernike polynomials-based method: application to C. elegans olfactory receptors](https://doi.org/10.1007/s10822-021-00434-1)\n  * [Quantitative characterization of binding pockets and binding complementarity by means of zernike descriptors](https://doi.org/10.1021/acs.jcim.9b01066)\n- Enabling structure-based virtual screening\n  * [PL-PatchSurfer3: Improved Structure-Based Virtual Screening for Structure Variation Using 3D Zernike Descriptors](https://doi.org/10.1101/2024.02.22.581511)\n- Forecasting interacting interfaces\n  * [Antibody interface prediction with 3D Zernike descriptors and SVM](https://doi.org/10.1093/bioinformatics/bty918)\n  * [Exploring the potential of 3D Zernike descriptors and SVM for protein-protein interface prediction](https://doi.org/10.1186/s12859-018-2043-3)\n\n## Contributing\n\nFeel free to submit pull requests for improvements or bug fixes.\n\n************************* \n\n\n## Citation\n\nLai, J. S., Burley, S. K., \u0026 Duarte, J. M. (2024). ZMPY3D: Accelerating protein structure volume analysis through vectorized 3D Zernike moments and Python-based GPU integration. (Bioinformatics Advances, vbae111, https://doi.org/10.1093/bioadv/vbae111)\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0. You can view the full license [here](https://www.gnu.org/licenses/gpl-3.0.en.html).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftawssie%2Fzmpy3d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftawssie%2Fzmpy3d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftawssie%2Fzmpy3d/lists"}