pymem3dg


Namepymem3dg JSON
Version 0.0.7 PyPI version JSON
download
home_pageNone
SummaryPyMem3DG: Membrane Dynamics in 3D using Discrete Differential Geometry
upload_time2024-04-12 20:38:28
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseMozilla Public License 2.0 (MPL 2.0)
keywords meshing membrane mechanics discrete differential geometry helfrich
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Membrane Dynamics in 3D using Discrete Differential Geometry (Mem3DG)

[![Testing and release](https://github.com/RangamaniLabUCSD/Mem3DG/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/RangamaniLabUCSD/Mem3DG/actions/workflows/ci.yaml)
[![Zenodo](https://zenodo.org/badge/244037679.svg)](https://zenodo.org/doi/10.5281/zenodo.10359392)
[![PyPI](https://img.shields.io/pypi/v/pymem3dg)](https://pypi.org/project/pymem3dg/)
[![Conda-forge](https://anaconda.org/conda-forge/pymem3dg/badges/version.svg)](https://anaconda.org/conda-forge/pymem3dg)

Mem3DG is a flexible software package to model the membrane and its dynamics using unstructured meshes.
This work is currently under heavy development, please star this repository to follow along!

## Installation

The core of Mem3DG is written in C++ with functions exposed to a Python interface using pybind11.
The python interface and helper utilities for visualization and analysis are bundled together into a python package called pymem3dg.
pymem3dg can be obtained using pip (`pip install pymem3dg`) or conda (`conda install pymem3dg`) from their respective repositories.
For the majority of users who wish to develop models, this is the recommended installation procedure.

### Dependencies

We acknowledge the use of helpful external libraries including:

* [Geometry-Central](https://geometry-central.net/), the core mesh data structure
* [libigl](https://libigl.github.io/), some geometry input generation
* [pybind11](https://pybind11.readthedocs.io/en/stable/), for Python-C++ interoperability
* [Polyscope](https://polyscope.run/py/), trajectory visualization GUI
* [PCG](https://www.pcg-random.org/index.html), random number generation
* [NetCDF-cxx4](https://github.com/Unidata/netcdf-cxx4), binary trajectory I/O

While the majority of these libraries are either included in this repository

### Building for development

For advanced users who seek to modify the code, develop simulations in C++ directly, or produce/link to Mem3DG shared libraries, Mem3DG can be configured and built using CMake.
After cloning the repository, initialize submodules and their dependencies, and follow the standard CMake out-of-source configuration and build procedures.

```bash
git submodule update --init --recursive
mkdir build
cd build
cmake -DWITH_NETCDF=ON -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --config Release
```

There are several CMake options which you can configure.
Further options can be discovered by inspecting the CMakeLists.txt or using a utility like `ccmake` or `cmake -LAH`.
These options can be passed during the configuration step (e.g., `-DWITH_NETCDF=ON`).
```cmake
option(BUILD_PYMEM3DG "Build the python extensions?" ON)
option(WITH_NETCDF "Build with NetCDF (binary trajectory output)?" ON)
option(BUILD_MEM3DG_DOCS "Configure documentation" OFF)
option(M3DG_GET_OWN_EIGEN "Download own Eigen" ON)
option(M3DG_GET_OWN_PYBIND11 "Download own pybind11" ON)
option(WITH_LIBUNWIND "Link libunwind for stack traces" OFF)
option(WITH_OPENMP "Build with OpenMP support" OFF)
option(LINK_PROFILER "Link profiler gperftools" OFF)
option(MEM3DG_PEDANTIC "Be extremely pedantic while compiling" OFF)
```

### Building `pymem3dg`

While the pymem3dg extension module can be built directly with CMake, packaging and installing in a matter which conforms with guidelines from the [Python packaging authority](https://packaging.python.org/en/latest/) is best done using python tooling.
We use [`scikit-build-core`](https://scikit-build-core.readthedocs.io/en/latest/) to bridge between CMake and the Python build system.
Typical Python metadata and details are specified in `pyproject.toml`.

pymem3dg can be built and installed by using pip from the root of this repository.
```bash
git submodule update --init --recursive
pip install -v .
```
Extra dependencies for building the documentation and tests can be installed as well `pip install -v .[docs,tests]`.
Other options can be passed to CMake by modifying config-settings in pip.
`pip install . --config-settings=cmake.build-type="Debug"`

## Acknowledging your use of Mem3DG

Mem3DG is developed by [Cuncheng Zhu](https://github.com/cuzhucuncheng), [Christopher T. Lee](https://ctlee.github.io/), with contributions from others.
Development of Mem3DG is funded in part by AFOSR MURI FA9550-18-1-0051, and a Hartwell Foundation Postdoctoral Fellowship.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pymem3dg",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "meshing membrane mechanics discrete differential geometry Helfrich",
    "author": null,
    "author_email": "Cuncheng Zhu <cuzhu@ucsd.edu>, Christopher T. Lee <ctlee@ucsd.edu>",
    "download_url": "https://files.pythonhosted.org/packages/6c/9b/2b8bede4d6340fe6d6a8910c178925d43c75d5d5ed47a9a461f9bb537f2c/pymem3dg-0.0.7.tar.gz",
    "platform": null,
    "description": "# Membrane Dynamics in 3D using Discrete Differential Geometry (Mem3DG)\n\n[![Testing and release](https://github.com/RangamaniLabUCSD/Mem3DG/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/RangamaniLabUCSD/Mem3DG/actions/workflows/ci.yaml)\n[![Zenodo](https://zenodo.org/badge/244037679.svg)](https://zenodo.org/doi/10.5281/zenodo.10359392)\n[![PyPI](https://img.shields.io/pypi/v/pymem3dg)](https://pypi.org/project/pymem3dg/)\n[![Conda-forge](https://anaconda.org/conda-forge/pymem3dg/badges/version.svg)](https://anaconda.org/conda-forge/pymem3dg)\n\nMem3DG is a flexible software package to model the membrane and its dynamics using unstructured meshes.\nThis work is currently under heavy development, please star this repository to follow along!\n\n## Installation\n\nThe core of Mem3DG is written in C++ with functions exposed to a Python interface using pybind11.\nThe python interface and helper utilities for visualization and analysis are bundled together into a python package called pymem3dg.\npymem3dg can be obtained using pip (`pip install pymem3dg`) or conda (`conda install pymem3dg`) from their respective repositories.\nFor the majority of users who wish to develop models, this is the recommended installation procedure.\n\n### Dependencies\n\nWe acknowledge the use of helpful external libraries including:\n\n* [Geometry-Central](https://geometry-central.net/), the core mesh data structure\n* [libigl](https://libigl.github.io/), some geometry input generation\n* [pybind11](https://pybind11.readthedocs.io/en/stable/), for Python-C++ interoperability\n* [Polyscope](https://polyscope.run/py/), trajectory visualization GUI\n* [PCG](https://www.pcg-random.org/index.html), random number generation\n* [NetCDF-cxx4](https://github.com/Unidata/netcdf-cxx4), binary trajectory I/O\n\nWhile the majority of these libraries are either included in this repository\n\n### Building for development\n\nFor advanced users who seek to modify the code, develop simulations in C++ directly, or produce/link to Mem3DG shared libraries, Mem3DG can be configured and built using CMake.\nAfter cloning the repository, initialize submodules and their dependencies, and follow the standard CMake out-of-source configuration and build procedures.\n\n```bash\ngit submodule update --init --recursive\nmkdir build\ncd build\ncmake -DWITH_NETCDF=ON -DCMAKE_BUILD_TYPE=Release ..\ncmake --build . --config Release\n```\n\nThere are several CMake options which you can configure.\nFurther options can be discovered by inspecting the CMakeLists.txt or using a utility like `ccmake` or `cmake -LAH`.\nThese options can be passed during the configuration step (e.g., `-DWITH_NETCDF=ON`).\n```cmake\noption(BUILD_PYMEM3DG \"Build the python extensions?\" ON)\noption(WITH_NETCDF \"Build with NetCDF (binary trajectory output)?\" ON)\noption(BUILD_MEM3DG_DOCS \"Configure documentation\" OFF)\noption(M3DG_GET_OWN_EIGEN \"Download own Eigen\" ON)\noption(M3DG_GET_OWN_PYBIND11 \"Download own pybind11\" ON)\noption(WITH_LIBUNWIND \"Link libunwind for stack traces\" OFF)\noption(WITH_OPENMP \"Build with OpenMP support\" OFF)\noption(LINK_PROFILER \"Link profiler gperftools\" OFF)\noption(MEM3DG_PEDANTIC \"Be extremely pedantic while compiling\" OFF)\n```\n\n### Building `pymem3dg`\n\nWhile the pymem3dg extension module can be built directly with CMake, packaging and installing in a matter which conforms with guidelines from the [Python packaging authority](https://packaging.python.org/en/latest/) is best done using python tooling.\nWe use [`scikit-build-core`](https://scikit-build-core.readthedocs.io/en/latest/) to bridge between CMake and the Python build system.\nTypical Python metadata and details are specified in `pyproject.toml`.\n\npymem3dg can be built and installed by using pip from the root of this repository.\n```bash\ngit submodule update --init --recursive\npip install -v .\n```\nExtra dependencies for building the documentation and tests can be installed as well `pip install -v .[docs,tests]`.\nOther options can be passed to CMake by modifying config-settings in pip.\n`pip install . --config-settings=cmake.build-type=\"Debug\"`\n\n## Acknowledging your use of Mem3DG\n\nMem3DG is developed by [Cuncheng Zhu](https://github.com/cuzhucuncheng), [Christopher T. Lee](https://ctlee.github.io/), with contributions from others.\nDevelopment of Mem3DG is funded in part by AFOSR MURI FA9550-18-1-0051, and a Hartwell Foundation Postdoctoral Fellowship.\n",
    "bugtrack_url": null,
    "license": "Mozilla Public License 2.0 (MPL 2.0)",
    "summary": "PyMem3DG: Membrane Dynamics in 3D using Discrete Differential Geometry",
    "version": "0.0.7",
    "project_urls": null,
    "split_keywords": [
        "meshing",
        "membrane",
        "mechanics",
        "discrete",
        "differential",
        "geometry",
        "helfrich"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6c9b2b8bede4d6340fe6d6a8910c178925d43c75d5d5ed47a9a461f9bb537f2c",
                "md5": "78ff3827a67070a30eef96440055a1dd",
                "sha256": "f49e5d4eb4f836fae50763f85ce7d7c088bd7a64ce7a8392a0501cccd9d7966b"
            },
            "downloads": -1,
            "filename": "pymem3dg-0.0.7.tar.gz",
            "has_sig": false,
            "md5_digest": "78ff3827a67070a30eef96440055a1dd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 32153085,
            "upload_time": "2024-04-12T20:38:28",
            "upload_time_iso_8601": "2024-04-12T20:38:28.586112Z",
            "url": "https://files.pythonhosted.org/packages/6c/9b/2b8bede4d6340fe6d6a8910c178925d43c75d5d5ed47a9a461f9bb537f2c/pymem3dg-0.0.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-12 20:38:28",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "pymem3dg"
}
        
Elapsed time: 0.23276s