Source code for miv_simulator.volume

import numpy as np
from miv_simulator.geometry.geometry import make_alpha_shape, transform_volume
from miv_simulator.geometry.linear_volume import LinearVolume


def network_volume_transform(u, v, l):
    return u, v, l


[docs]def network_volume(u, v, l, rotate=None): """Parametric equations of the anatomical volume.""" return transform_volume(network_volume_transform, u, v, l, rotate=rotate)
def network_meshgrid( extent_u, extent_v, extent_l, resolution=[3, 3, 3], rotate=None, return_uvl=False, ): ures, vres, lres = resolution obs_u = np.linspace(extent_u[0], extent_u[1], num=ures) obs_v = np.linspace(extent_v[0], extent_v[1], num=vres) obs_l = np.linspace(extent_l[0], extent_l[1], num=lres) u, v, l = np.meshgrid(obs_u, obs_v, obs_l, indexing="ij") xyz = network_volume(u, v, l, rotate=rotate) if return_uvl: return xyz, obs_u, obs_v, obs_l else: return xyz
[docs]def make_network_volume( extent_u, extent_v, extent_l, rotate=None, resolution=[3, 3, 3], return_xyz=False, ): """Creates an linear volume based on the parametric equations of the network volume.""" xyz, obs_u, obs_v, obs_l = network_meshgrid( extent_u, extent_v, extent_l, rotate=rotate, resolution=resolution, return_uvl=True, ) vol = LinearVolume(obs_u, obs_v, obs_l, xyz) if return_xyz: return vol, xyz else: return vol
def test_mplot_volume(): extent_u = [0.0, 4000.0] extent_v = [0.0, 1250.0] extent_l = [0.0, 100.0] vol = make_network_volume( extent_u, extent_v, extent_l, resolution=[3, 3, 3] ) from mayavi import mlab vol.mplot_volume(color=(0, 1, 0), opacity=1.0, ures=1, vres=1) mlab.show() def test_tri(): extent_u = [0.0, 4000.0] extent_v = [0.0, 1250.0] extent_l = [0.0, 100.0] vol = make_network_volume( extent_u, extent_v, extent_l, resolution=[3, 3, 3] ) tri = vol.create_triangulation(ures=1, vres=1, lres=1) return vol, tri def test_alpha_shape(): extent_u = [0.0, 4000.0] extent_v = [0.0, 1250.0] extent_l = [0.0, 100.0] vol = make_network_volume( extent_u, extent_v, extent_l, resolution=[3, 3, 3] ) alpha = make_alpha_shape(vol, alpha_radius=1200.0) return vol, alpha if __name__ == "__main__": test_alpha_shape() # test_mplot_volume() # vol, tri = test_tri() # points = tri.points # simplices = tri.simplices # import matplotlib.pyplot as plt # import mpl_toolkits.mplot3d as plt3d # axes = plt3d.Axes3D(plt.figure()) # vts = points[simplices, :] # poly = plt3d.art3d.Poly3DCollection(vts) # poly.set_alpha(0.2) # poly.set_color('grey') # axes.add_collection3d(poly) # axes.plot(points[:,0], points[:,1], points[:,2], 'ko') # axes.set_aspect('equal') # plt.show()