pyiso2mesh - One-liner 3D Surface and Tetrahedral Mesh Generation Toolbox
- Copyright: (C) Qianqian Fang (2024-2025) <q.fang at neu.edu>
- License: GNU Public License V3 or later
- Version: 0.5.2
- URL: https://pypi.org/project/iso2mesh/
- Homepage: https://iso2mesh.sf.net
- Github: https://github.com/NeuroJSON/pyiso2mesh
- Acknowledgement: This project is supported by the US National Institute of Health (NIH) grants U24-NS124027 and R01-CA204443
Click here to register and download pyiso2mesh 0.4.2 installer
What's new compared to 0.5.1
- 2025-11-12 [bfc6e69] [brain1020] further improving brain1020 robustness
- 2025-11-11 [5eae75a] [release] improve brain1020 to be more robust, porting fangq/brain2mesh@2e2760e to handle neck/shoulder and multi-loop cuts
- 2025-09-06 [cdcbc2c] [test] add more tests related to polyline
What's new compared to 0.4.2
- 2025-11-12 [bfc6e69] [brain1020] further improving brain1020 robustness
- 2025-11-11 [5eae75a] [release] improve brain1020 to be more robust, porting fangq/brain2mesh@2e2760e to handle neck/shoulder and multi-loop cuts
- 2025-09-06 [cdcbc2c] [test] add more tests related to polyline
- 2025-08-27 [845d0c8] [release] bump version to 0.5.1 to include the new PR #2
- 2025-08-21 [f93a1bd] Merge pull request #2 from Knight680/main
- 2025-08-20 [97fc9d3] fix surf2vol error when face havs 5 columns
- 2025-08-06 [e3d3e4d] [brain2mesh] enable decoupling in pass 2 if pass 1 fails
- 2025-08-04 [371110d] [tag] v0.5.0, update jdata to 0.8, use 1-time init in test - use defaultdict in brain2mesh - add pylintrc - some code clean up based on pylint - fix mergemesh shallow copy
Iso2Mesh function port status
The progress of converting MATLAB-based Iso2Mesh functions to Python is
tracked in #1
| Ported | Unit-tested | Ported | Unit-tested | |
|---|---|---|---|---|
| > All-in-one pipeline shortcuts | > File I/O | |||
✅ v2m.m |
✅ tested | ✅ saveasc.m |
⭕️ tested | |
✅ v2s.m |
✅ tested | ✅ savedxf.m |
⭕️ tested | |
✅ s2m.m |
✅ tested | ✅ savestl.m |
⭕️ tested | |
✅ s2v.m |
✅ tested | ✅ savebinstl.m |
⭕️ tested | |
✅ m2v.m |
✅ tested | ✅ saveinr.m |
⭕️ tested | |
✅ sms.m |
✅ tested | ✅ saveoff.m |
✅ tested | |
| > Streamlined mesh generation | ⭕️ savesmf.m |
⭕️ tested | ||
✅ vol2mesh.m |
✅ tested | ✅ savesurfpoly.m |
✅ tested | |
✅ vol2surf.m |
✅ tested | ⭕️ savegts.m |
⭕️ tested | |
✅ surf2mesh.m |
✅ tested | ⭕️ readgts.m |
⭕️ tested | |
✅ surf2vol.m |
✅ tested | ⭕️ savemsh.m |
⭕️ tested | |
✅ mesh2vol.m |
✅ tested | ⭕️ savevrml.m |
⭕️ tested | |
| > Iso2mesh main function backend | ✅ readasc.m |
⭕️ tested | ||
✅ binsurface.m |
✅ tested | ⭕️ readinr.m |
⭕️ tested | |
✅ cgalv2m.m |
✅ tested | ✅ readmedit.m |
⭕️ tested | |
✅ cgals2m.m |
✅ tested | ✅ readoff.m |
✅ tested | |
✅ vol2restrictedtri.m |
✅ tested | ⭕️ readsmf.m |
⭕️ tested | |
✅ surf2volz.m |
✅ tested | ✅ readtetgen.m |
✅ tested | |
✅ mesh2mask.m |
✅ tested | ✅ deletemeshfile.m |
✅ tested | |
| > Iso2mesh primitive meshing | ✅ mcpath.m |
✅ tested | ||
✅ meshabox.m |
✅ tested | ✅ mwpath.m |
✅ tested | |
✅ meshasphere.m |
✅ tested | ✅ savemedit.m |
✅ tested | |
✅ meshanellip.m |
✅ tested | ✅ savejson.m |
⭕️ tested | |
✅ meshunitsphere.m |
✅ tested | ✅ loadjson.m |
⭕️ tested | |
✅ meshacylinder.m |
✅ tested | ✅ savejd.m |
⭕️ tested | |
✅ meshgrid5.m |
✅ tested | ✅ loadjd.m |
⭕️ tested | |
✅ meshgrid6.m |
✅ tested | ✅ loadmsgpack.m |
⭕️ tested | |
✅ latticegrid.m |
✅ tested | ✅ savemsgpack.m |
⭕️ tested | |
✅ extrudecurve.m |
⭕️ tested | ✅ savebj.m |
⭕️ tested | |
✅ meshcylinders.m |
✅ tested | ✅ loadbj.m |
⭕️ tested | |
| > Mesh decomposition and query | ⭕️ savemphtxt.m |
⭕️ tested | ||
✅ finddisconnsurf.m |
✅ tested | ✅ savetetgenele.m |
⭕️ tested | |
✅ surfedge.m |
✅ tested | ✅ savetetgennode.m |
⭕️ tested | |
✅ volface.m |
✅ tested | ⭕️ saveabaqus.m |
⭕️ tested | |
✅ extractloops.m |
✅ tested | ⭕️ savenirfast.m |
⭕️ tested | |
✅ meshconn.m |
✅ tested | ⭕️ readnirfast.m |
⭕️ tested | |
✅ meshcentroid.m |
✅ tested | ✅ loadnifti.m |
⭕️ tested | |
✅ nodevolume.m |
✅ tested | ⭕️ readmptiff.m |
⭕️ tested | |
✅ elemvolume.m |
✅ tested | ✅ loadjsnirf.m |
⭕️ tested | |
✅ neighborelem.m |
✅ tested | ✅ savejsnirf.m |
⭕️ tested | |
✅ layersurf.m |
⭕️ tested | ✅ loadsnirf.m |
⭕️ tested | |
✅ faceneighbors.m |
✅ tested | ✅ savesnirf.m |
⭕️ tested | |
✅ edgeneighbors.m |
✅ tested | ⭕️ readobjmesh.m |
⭕️ tested | |
✅ maxsurf.m |
⭕️ tested | ⭕️ loadjmesh.m |
⭕️ tested | |
✅ flatsegment.m |
⭕️ tested | ⭕️ savejmesh.m |
⭕️ tested | |
✅ orderloopedge.m |
⭕️ tested | > Volumetric image pre-processing | ||
✅ mesheuler.m |
✅ tested | ✅ volgrow.m |
✅ tested | |
✅ bbxflatsegment.m |
⭕️ tested | ✅ volshrink.m |
✅ tested | |
✅ surfplane.m |
⭕️ tested | ✅ volopen.m |
✅ tested | |
✅ surfinterior.m |
⭕️ tested | ✅ volclose.m |
✅ tested | |
✅ surfpart.m |
⭕️ tested | ✅ fillholes3d.m |
✅ tested | |
✅ surfseeds.m |
⭕️ tested | ⭕️ bwislands.m |
⭕️ tested | |
✅ meshquality.m |
✅ tested | ⭕️ laplacefill.m |
⭕️ tested | |
✅ meshedge.m |
✅ tested | ⭕️ deislands2d.m |
⭕️ tested | |
✅ meshface.m |
✅ tested | ⭕️ deislands3d.m |
⭕️ tested | |
✅ surfacenorm.m |
✅ tested | ⭕️ ndgaussian.m |
⭕️ tested | |
✅ nodesurfnorm.m |
✅ tested | ⭕️ ndimfilter.m |
⭕️ tested | |
✅ uniqedges.m |
✅ tested | ⭕️ imedge3d.m |
⭕️ tested | |
✅ uniqfaces.m |
✅ tested | ⭕️ internalpoint.m |
⭕️ tested | |
✅ advancefront.m |
⭕️ tested | ⭕️ smoothbinvol.m |
⭕️ tested | |
✅ innersurf.m |
⭕️ tested | ✅ thickenbinvol.m |
✅ tested | |
✅ outersurf.m |
⭕️ tested | ✅ thinbinvol.m |
✅ tested | |
✅ surfvolume.m |
✅ tested | ⭕️ maskdist.m |
⭕️ tested | |
✅ insurface.m |
✅ tested | > Mesh plotting | ||
| > Mesh processing and reparing | ✅ plotmesh.m |
✅ tested | ||
✅ meshcheckrepair.m |
✅ tested | ✅ plotsurf.m |
✅ tested | |
✅ meshreorient.m |
✅ tested | ✅ plottetra.m |
✅ tested | |
✅ removedupelem.m |
✅ tested | ✅ plotedges.m |
✅ tested | |
✅ removedupnodes.m |
✅ tested | ✅ qmeshcut.m |
✅ tested | |
✅ removeisolatednode.m |
✅ tested | > Miscellaneous functions | ||
✅ removeisolatedsurf.m |
⭕️ tested | ⭕️ surfdiffuse.m |
⭕️ tested | |
✅ surfaceclean.m |
⭕️ tested | ⭕️ volmap2mesh.m |
⭕️ tested | |
✅ getintersecttri.m |
⭕️ tested | ⭕️ isoctavemesh.m |
⭕️ tested | |
✅ delendelem.m |
⭕️ tested | ⭕️ getvarfrom.m |
⭕️ tested | |
✅ surfreorient.m |
✅ tested | ✅ raytrace.m |
✅ tested | |
| > Mesh registration | ✅ linextriangle.m |
⭕️ tested | ||
✅ proj2mesh.m |
⭕️ tested | ✅ getplanefrom3pt.m |
⭕️ tested | |
✅ dist2surf.m |
⭕️ tested | ✅ getexeext.m |
✅ tested | |
✅ regpt2surf.m |
⭕️ tested | ✅ fallbackexeext.m |
✅ tested | |
✅ affinemap.m |
⭕️ tested | ⭕️ iso2meshver.m |
⭕️ tested | |
| > Polyline handling | ⭕️ raysurf.m |
⭕️ tested | ||
✅ slicesurf.m |
⭕️ tested | ⭕️ getoptkey.m |
⭕️ tested | |
✅ slicesurf3.m |
⭕️ tested | ✅ rotatevec3d.m |
⭕️ tested | |
✅ polylinelen.m |
⭕️ tested | ✅ rotmat2vec.m |
⭕️ tested | |
✅ polylinesimplify.m |
⭕️ tested | ✅ varargin2struct.m |
⭕️ tested | |
✅ polylineinterp.m |
⭕️ tested | ✅ jsonopt.m |
⭕️ tested | |
✅ closestnode.m |
⭕️ tested | ⭕️ mergestruct.m |
⭕️ tested | |
| > Mesh resampling and optimization | ⭕️ orthdisk.m |
⭕️ tested | ||
✅ meshresample.m |
✅ tested | ⭕️ nestbracket2dim.m |
⭕️ tested | |
✅ remeshsurf.m |
✅ tested | ✅ memmapstream.m |
⭕️ tested | |
✅ smoothsurf.m |
✅ tested | ✅ aos2soa.m |
⭕️ tested | |
✅ sortmesh.m |
⭕️ tested | ✅ soa2aos.m |
⭕️ tested | |
✅ mergemesh.m |
✅ tested | > Brain2mesh toolbox | ||
✅ meshrefine.m |
✅ tested | ✅ brain2mesh.m |
⭕️ tested | |
✅ mergesurf.m |
⭕️ tested | ✅ brain1020.m |
⭕️ tested | |
✅ surfboolean.m |
✅ tested | ✅ intriangulation.m |
⭕️ tested | |
✅ fillsurf.m |
⭕️ tested | ✅ label2tpm.m |
⭕️ tested | |
✅ highordertet.m |
✅ tested | ✅ tpm2label.m |
⭕️ tested | |
✅ elemfacecenter.m |
✅ tested | > JSONLab toolbox | ||
✅ barydualmesh.m |
✅ tested | ✅ jdataencode.m |
⭕️ tested | |
✅ meshinterp.m |
⭕️ tested | ✅ jdatadecode.m |
⭕️ tested | |
✅ meshremap.m |
⭕️ tested | ✅ jsonpath.m |
⭕️ tested | |
✅ extrudesurf.m |
⭕️ tested | ✅ jdlink.m |
⭕️ tested |
