Skip to main content

Creates 3d meshes from microscopy experimental data

Project description

Documentation Status tests PyPI - Python Version PyPI DOI

Nanomesh banner

Nanomesh

Nanomesh is a Python workflow tool for generating meshes from 2D and 3D image data. It has an easy-to-use API that can help process and segment image data, generate quality meshes (triangle / tetrahedra), and write the data to many mesh formats. Nanomesh also contains tools to inspect the meshes, visualize them, and generate cell quality metrics.

  • Easy-to-use Python API
  • Segment and mesh 2D or 3D image data
  • Mesh visualization
  • Calculate and plot cell metrics
  • Export to many mesh formats

Documentation: https://nanomesh.readthedocs.io/en/latest/

Try nanomesh in your browser!

Generate a 2D mesh Calculate mesh metrics
Generate a 2D mesh Calculate mesh metrics

Show me an example!

This example shows the workflow for generating a mesh from segmented data, and demonstrates a few of the features of Nanomesh. It uses a synthetic binary image with several rounded blob-like objects generated by skimage.

>>> from skimage.data import binary_blobs
>>> from nanomesh import Image
>>>
>>> blobs = binary_blobs(length=100, volume_fraction=0.25, seed=2102)
>>> plane = Image(blobs)
>>>
>>> print(plane)
Plane(shape=(100, 100), range=(False,True), dtype=bool)

Image is essentially a container for a numpy array with some methods for image segmentation and visualization.

>>> plane.show()
<AxesSubplot:xlabel='x', ylabel='y'>
drawing

Generating a mesh from image data is simple in Nanomesh using Plane.generate_mesh(). The options opts are passed to the triangulation function (nanomesh.triangulate). In this example, we use q30 to generate a quality mesh with minimum angles of 30°, and a50 to limit the triangle size to 50 pixels.

The returned mesh is a MeshContainer that contains the generated triangles and line segments.

>>> mesh = plane.generate_mesh(opts='q30a10')
>>> mesh
<MeshContainer>
  Number of points: 932
  Number of cells:
    triangle: 1754
    line: 2685
  Point data: physical
  Cell data: physical
  Field data: feature, background

In the next cell, we plot the triangles.

>>> mesh.plot('triangle')
<AxesSubplot:title={'center':'triangle mesh'}>
drawing

With the metrics submodule, Nanomesh can also calculate cell quality metrics and show them as a colored triangle or histogram plot.

>>> from nanomesh import metrics
>>> triangle_mesh = mesh.get('triangle')
>>> metrics.histogram(triangle_mesh, metric='radius_ratio')
<AxesSubplot:title={'center':'Histogram of radius ratio'}, xlabel='Radius ratio', ylabel='frequency'>
drawing

Nanomesh uses meshio to write data to most meshing formats.

>>> mesh.write('mesh.vtk')
Warning: VTK requires 3D points, but 2D points given. Appending 0 third component.

That's it! There is a lot more that Nanomesh can do, check out the examples for an overview.

Installation

One of the goals for Nanomesh is that it is easy to install. This means that all dependencies are available from PyPi.

If you use conda, it is advised to create a new environment:

conda create -n nanomesh python=3.9
conda activate nanomesh

Install nanomesh:

pip install nanomesh

For the full installation instructions, see the installation guidelines.

Development

Check out our Contributing Guidelines to get started with development.

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

nanomesh-0.9.1.tar.gz (8.0 MB view details)

Uploaded Source

Built Distribution

nanomesh-0.9.1-py3-none-any.whl (7.0 MB view details)

Uploaded Python 3

File details

Details for the file nanomesh-0.9.1.tar.gz.

File metadata

  • Download URL: nanomesh-0.9.1.tar.gz
  • Upload date:
  • Size: 8.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for nanomesh-0.9.1.tar.gz
Algorithm Hash digest
SHA256 b22c7f0bcc819d8819634d1fd03e63ead5329f1642dc05e33a5a10b0fae41a65
MD5 7d35fc7be6a353f63de37d0ac21ee822
BLAKE2b-256 3c4670b038885c4ff565c556861fde21a3be886945b29805f58575ef731527ce

See more details on using hashes here.

File details

Details for the file nanomesh-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: nanomesh-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for nanomesh-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f5465db869560f522f27d369c24b5e3e8cca3ba204253ef46c0258d4a13eeeb1
MD5 5184bf4cf3138304add71926e0157957
BLAKE2b-256 46febc11c048b78602912a97dcdb1ad3edde97b2e38e338b228cca832c1ede85

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page