{"id":13408107,"url":"https://github.com/nschloe/meshio","last_synced_at":"2025-05-14T01:02:08.369Z","repository":{"id":38814603,"uuid":"45875786","full_name":"nschloe/meshio","owner":"nschloe","description":":spider_web: input/output for many mesh formats","archived":false,"fork":false,"pushed_at":"2024-07-23T14:33:18.000Z","size":13078,"stargazers_count":1932,"open_issues_count":198,"forks_count":398,"subscribers_count":39,"default_branch":"main","last_synced_at":"2024-10-29T11:06:47.601Z","etag":null,"topics":["engineering","mathematics","mesh","meshing","pypi","python","vtk"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nschloe.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nschloe","ko-fi":"nschloe"}},"created_at":"2015-11-10T00:08:11.000Z","updated_at":"2024-10-29T10:57:21.000Z","dependencies_parsed_at":"2023-02-16T17:40:30.247Z","dependency_job_id":"6851c10b-a354-4035-adc1-0a2c23d7ed74","html_url":"https://github.com/nschloe/meshio","commit_stats":{"total_commits":2725,"total_committers":70,"mean_commits":38.92857142857143,"dds":0.3379816513761468,"last_synced_commit":"0138cc8692b806b44b32d344f7961e8370121ff7"},"previous_names":[],"tags_count":225,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nschloe%2Fmeshio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nschloe%2Fmeshio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nschloe%2Fmeshio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nschloe%2Fmeshio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nschloe","download_url":"https://codeload.github.com/nschloe/meshio/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247962460,"owners_count":21024862,"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":["engineering","mathematics","mesh","meshing","pypi","python","vtk"],"created_at":"2024-07-30T20:00:50.810Z","updated_at":"2025-04-09T02:10:55.930Z","avatar_url":"https://github.com/nschloe.png","language":"Python","funding_links":["https://github.com/sponsors/nschloe","nschloe"],"categories":["GamePlay","CAE","Python","Meshing","File formats"],"sub_categories":["HUD","Mesh tools","Denosing","Books"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/nschloe/meshio\"\u003e\u003cimg alt=\"meshio\" src=\"https://nschloe.github.io/meshio/logo-with-text.svg\" width=\"60%\"\u003e\u003c/a\u003e\n  \u003cp align=\"center\"\u003eI/O for mesh files.\u003c/p\u003e\n\u003c/p\u003e\n\n[![PyPi Version](https://img.shields.io/pypi/v/meshio.svg?style=flat-square)](https://pypi.org/project/meshio/)\n[![Anaconda Cloud](https://anaconda.org/conda-forge/meshio/badges/version.svg?=style=flat-square)](https://anaconda.org/conda-forge/meshio/)\n[![Packaging status](https://repology.org/badge/tiny-repos/python:meshio.svg)](https://repology.org/project/python:meshio/versions)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/meshio.svg?style=flat-square)](https://pypi.org/project/meshio/)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1173115.svg?style=flat-square)](https://doi.org/10.5281/zenodo.1173115)\n[![GitHub stars](https://img.shields.io/github/stars/nschloe/meshio.svg?style=flat-square\u0026logo=github\u0026label=Stars\u0026logoColor=white)](https://github.com/nschloe/meshio)\n[![Downloads](https://pepy.tech/badge/meshio/month?style=flat-square)](https://pepy.tech/project/meshio)\n\n\u003c!--[![PyPi downloads](https://img.shields.io/pypi/dm/meshio.svg?style=flat-square)](https://pypistats.org/packages/meshio)--\u003e\n\n[![Discord](https://img.shields.io/static/v1?logo=discord\u0026logoColor=white\u0026label=chat\u0026message=on%20discord\u0026color=7289da\u0026style=flat-square)](https://discord.gg/Z6DMsJh4Hr)\n\n[![gh-actions](https://img.shields.io/github/workflow/status/nschloe/meshio/ci?style=flat-square)](https://github.com/nschloe/meshio/actions?query=workflow%3Aci)\n[![codecov](https://img.shields.io/codecov/c/github/nschloe/meshio.svg?style=flat-square)](https://app.codecov.io/gh/nschloe/meshio)\n[![LGTM](https://img.shields.io/lgtm/grade/python/github/nschloe/meshio.svg?style=flat-square)](https://lgtm.com/projects/g/nschloe/meshio)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square)](https://github.com/psf/black)\n\nThere are various mesh formats available for representing unstructured meshes.\nmeshio can read and write all of the following and smoothly converts between them:\n\n\u003e [Abaqus](http://abaqus.software.polimi.it/v6.14/index.html) (`.inp`),\n\u003e ANSYS msh (`.msh`),\n\u003e [AVS-UCD](https://lanl.github.io/LaGriT/pages/docs/read_avs.html) (`.avs`),\n\u003e [CGNS](https://cgns.github.io/) (`.cgns`),\n\u003e [DOLFIN XML](https://manpages.ubuntu.com/manpages/jammy/en/man1/dolfin-convert.1.html) (`.xml`),\n\u003e [Exodus](https://nschloe.github.io/meshio/exodus.pdf) (`.e`, `.exo`),\n\u003e [FLAC3D](https://www.itascacg.com/software/flac3d) (`.f3grid`),\n\u003e [H5M](https://www.mcs.anl.gov/~fathom/moab-docs/h5mmain.html) (`.h5m`),\n\u003e [Kratos/MDPA](https://github.com/KratosMultiphysics/Kratos/wiki/Input-data) (`.mdpa`),\n\u003e [Medit](https://people.sc.fsu.edu/~jburkardt/data/medit/medit.html) (`.mesh`, `.meshb`),\n\u003e [MED/Salome](https://docs.salome-platform.org/latest/dev/MEDCoupling/developer/med-file.html) (`.med`),\n\u003e [Nastran](https://help.autodesk.com/view/NSTRN/2019/ENU/?guid=GUID-42B54ACB-FBE3-47CA-B8FE-475E7AD91A00) (bulk data, `.bdf`, `.fem`, `.nas`),\n\u003e [Netgen](https://github.com/ngsolve/netgen) (`.vol`, `.vol.gz`),\n\u003e [Neuroglancer precomputed format](https://github.com/google/neuroglancer/tree/master/src/neuroglancer/datasource/precomputed#mesh-representation-of-segmented-object-surfaces),\n\u003e [Gmsh](https://gmsh.info/doc/texinfo/gmsh.html#File-formats) (format versions 2.2, 4.0, and 4.1, `.msh`),\n\u003e [OBJ](https://en.wikipedia.org/wiki/Wavefront_.obj_file) (`.obj`),\n\u003e [OFF](https://segeval.cs.princeton.edu/public/off_format.html) (`.off`),\n\u003e [PERMAS](https://www.intes.de) (`.post`, `.post.gz`, `.dato`, `.dato.gz`),\n\u003e [PLY](\u003chttps://en.wikipedia.org/wiki/PLY_(file_format)\u003e) (`.ply`),\n\u003e [STL](\u003chttps://en.wikipedia.org/wiki/STL_(file_format)\u003e) (`.stl`),\n\u003e [Tecplot .dat](http://paulbourke.net/dataformats/tp/),\n\u003e [TetGen .node/.ele](https://wias-berlin.de/software/tetgen/fformats.html),\n\u003e [SVG](https://www.w3.org/TR/SVG/) (2D output only) (`.svg`),\n\u003e [SU2](https://su2code.github.io/docs_v7/Mesh-File/) (`.su2`),\n\u003e [UGRID](https://www.simcenter.msstate.edu/software/documentation/ug_io/3d_grid_file_type_ugrid.html) (`.ugrid`),\n\u003e [VTK](https://vtk.org/wp-content/uploads/2015/04/file-formats.pdf) (`.vtk`),\n\u003e [VTU](https://vtk.org/Wiki/VTK_XML_Formats) (`.vtu`),\n\u003e [WKT](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) ([TIN](https://en.wikipedia.org/wiki/Triangulated_irregular_network)) (`.wkt`),\n\u003e [XDMF](https://xdmf.org/index.php/XDMF_Model_and_Format) (`.xdmf`, `.xmf`).\n\n([Here's a little survey](https://forms.gle/PSeNb3N3gv3wbEus8) on which formats are actually\nused.)\n\nInstall with one of\n\n```\npip install meshio[all]\nconda install -c conda-forge meshio\n```\n\n(`[all]` pulls in all optional dependencies. By default, meshio only uses numpy.)\nYou can then use the command-line tool\n\n\u003c!--pytest-codeblocks:skip--\u003e\n\n```sh\nmeshio convert    input.msh output.vtk   # convert between two formats\n\nmeshio info       input.xdmf             # show some info about the mesh\n\nmeshio compress   input.vtu              # compress the mesh file\nmeshio decompress input.vtu              # decompress the mesh file\n\nmeshio binary     input.msh              # convert to binary format\nmeshio ascii      input.msh              # convert to ASCII format\n```\n\nwith any of the supported formats.\n\nIn Python, simply do\n\n\u003c!--pytest-codeblocks:skip--\u003e\n\n```python\nimport meshio\n\nmesh = meshio.read(\n    filename,  # string, os.PathLike, or a buffer/open file\n    # file_format=\"stl\",  # optional if filename is a path; inferred from extension\n    # see meshio-convert -h for all possible formats\n)\n# mesh.points, mesh.cells, mesh.cells_dict, ...\n\n# mesh.vtk.read() is also possible\n```\n\nto read a mesh. To write, do\n\n```python\nimport meshio\n\n# two triangles and one quad\npoints = [\n    [0.0, 0.0],\n    [1.0, 0.0],\n    [0.0, 1.0],\n    [1.0, 1.0],\n    [2.0, 0.0],\n    [2.0, 1.0],\n]\ncells = [\n    (\"triangle\", [[0, 1, 2], [1, 3, 2]]),\n    (\"quad\", [[1, 4, 5, 3]]),\n]\n\nmesh = meshio.Mesh(\n    points,\n    cells,\n    # Optionally provide extra data on points, cells, etc.\n    point_data={\"T\": [0.3, -1.2, 0.5, 0.7, 0.0, -3.0]},\n    # Each item in cell data must match the cells array\n    cell_data={\"a\": [[0.1, 0.2], [0.4]]},\n)\nmesh.write(\n    \"foo.vtk\",  # str, os.PathLike, or buffer/open file\n    # file_format=\"vtk\",  # optional if first argument is a path; inferred from extension\n)\n\n# Alternative with the same options\nmeshio.write_points_cells(\"foo.vtk\", points, cells)\n```\n\nFor both input and output, you can optionally specify the exact `file_format`\n(in case you would like to enforce ASCII over binary VTK, for example).\n\n#### Time series\n\nThe [XDMF format](https://xdmf.org/index.php/XDMF_Model_and_Format) supports\ntime series with a shared mesh. You can write times series data using meshio\nwith\n\n\u003c!--pytest-codeblocks:skip--\u003e\n\n```python\nwith meshio.xdmf.TimeSeriesWriter(filename) as writer:\n    writer.write_points_cells(points, cells)\n    for t in [0.0, 0.1, 0.21]:\n        writer.write_data(t, point_data={\"phi\": data})\n```\n\nand read it with\n\n\u003c!--pytest-codeblocks:skip--\u003e\n\n```python\nwith meshio.xdmf.TimeSeriesReader(filename) as reader:\n    points, cells = reader.read_points_cells()\n    for k in range(reader.num_steps):\n        t, point_data, cell_data = reader.read_data(k)\n```\n\n### ParaView plugin\n\n\u003cimg alt=\"gmsh paraview\" src=\"https://nschloe.github.io/meshio/gmsh-paraview.png\" width=\"60%\"\u003e\n*A Gmsh file opened with ParaView.*\n\nIf you have downloaded a binary version of ParaView, you may proceed as follows.\n\n- Install meshio for the Python major version that ParaView uses (check `pvpython --version`)\n- Open ParaView\n- Find the file `paraview-meshio-plugin.py` of your meshio installation (on Linux:\n  `~/.local/share/paraview-5.9/plugins/`) and load it under _Tools / Manage Plugins / Load New_\n- _Optional:_ Activate _Auto Load_\n\nYou can now open all meshio-supported files in ParaView.\n\n### Performance comparison\n\nThe comparisons here are for a triangular mesh with about 900k points and 1.8M\ntriangles. The red lines mark the size of the mesh in memory.\n\n#### File sizes\n\n\u003cimg alt=\"file size\" src=\"https://nschloe.github.io/meshio/filesizes.svg\" width=\"60%\"\u003e\n\n#### I/O speed\n\n\u003cimg alt=\"performance\" src=\"https://nschloe.github.io/meshio/performance.svg\" width=\"90%\"\u003e\n\n#### Maximum memory usage\n\n\u003cimg alt=\"memory usage\" src=\"https://nschloe.github.io/meshio/memory.svg\" width=\"90%\"\u003e\n\n### Installation\n\nmeshio is [available from the Python Package Index](https://pypi.org/project/meshio/),\nso simply run\n\n```\npip install meshio\n```\n\nto install.\n\nAdditional dependencies (`netcdf4`, `h5py`) are required for some of the output formats\nand can be pulled in by\n\n```\npip install meshio[all]\n```\n\nYou can also install meshio from [Anaconda](https://anaconda.org/conda-forge/meshio):\n\n```\nconda install -c conda-forge meshio\n```\n\n### Testing\n\nTo run the meshio unit tests, check out this repository and type\n\n```\ntox\n```\n\n### License\n\nmeshio is published under the [MIT license](https://en.wikipedia.org/wiki/MIT_License).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnschloe%2Fmeshio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnschloe%2Fmeshio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnschloe%2Fmeshio/lists"}