示例#1
0
文件: nii2msh.py 项目: wqhot/simnibs
def main():
    args = parseArguments(sys.argv[1:])
    if not os.path.isfile(args.fn_nifti):
        raise IOError('Could not find file: {0}'.format(args.fn_nifti))
    if not os.path.isfile(args.fn_mesh):
        raise IOError('Could not find file: {0}'.format(args.fn_mesh))
    image = nibabel.load(args.fn_nifti)
    mesh = mesh_io.read_msh(args.fn_mesh)
    vol = image.dataobj
    affine = image.affine
    if args.ev:
        logger.info('Creating tensor visualization')
        mesh = mesh.crop_mesh([1, 2, 1001, 1002])
        cond_list = [c.value for c in cond.standard_cond()]
        sigma = cond.cond2elmdata(mesh,
                                  cond_list,
                                  anisotropy_volume=vol,
                                  affine=affine,
                                  aniso_tissues=[1, 2])
        views = cond.TensorVisualization(sigma, mesh)
        mesh.nodedata = []
        mesh.elmdata = views
        mesh_io.write_msh(mesh, args.fn_out)
    else:
        logger.info('Interpolating data in NifTI file to mesh')
        if args.type == 'elements':
            ed = mesh_io.ElementData.from_data_grid(mesh, vol, affine,
                                                    'from_volume')
            mesh.elmdata.append(ed)
        if args.type == 'nodes':
            nd = mesh_io.NodeData.from_data_grid(mesh, vol, affine,
                                                 'from_volume')
            mesh.nodedata.append(nd)
        mesh_io.write_msh(mesh, args.fn_out)
 def test_visualization(self, tensor):
     eig_val, eig_vec = np.linalg.eig(tensor)
     max_eig = eig_val.argmax()
     min_eig = eig_val.argmin()
     t = np.tile(tensor, [10, 1, 1])
     factor = np.arange(1, 11)
     t *= factor[:, None, None]
     t = gmsh.ElementData(t.reshape(-1, 9))
     fields = cond.TensorVisualization(t, all_compoents=True)
     assert np.allclose(fields[0].value / factor[:, None],
                        eig_val[max_eig] * eig_vec[:, max_eig])
     assert np.allclose(fields[2].value / factor[:, None],
                        eig_val[min_eig] * eig_vec[:, min_eig])
     assert np.allclose(fields[3].value / factor,
                        np.prod(eig_val)**(1.0 / 3.0))
示例#3
0
    if not os.path.isfile(args.fn_mesh):
        raise IOError('Could not find file: {0}'.format(args.fn_mesh))
    image = nibabel.load(args.fn_nifti)
    mesh = gmsh.read_msh(args.fn_mesh)
    vol = image.dataobj
    affine = image.affine
    if args.ev:
        logger.info('Creating tensor visualization')
        mesh = mesh.crop_mesh([1, 2, 1001, 1002])
        cond_list = [c.value for c in cond.standard_cond()]
        sigma = cond.cond2elmdata(mesh,
                                  cond_list,
                                  anisotropy_volume=vol,
                                  affine=affine,
                                  aniso_tissues=[1, 2])
        views = cond.TensorVisualization(sigma)
        mesh.nodedata = []
        mesh.elmdata = views
        gmsh.write_msh(mesh, args.fn_out)
    else:
        logger.info('Interpolating data in NifTI file to mesh')
        ed = gmsh.ElementData.from_data_grid(mesh,
                                             vol,
                                             affine,
                                             'from_volume',
                                             bounds_error=False,
                                             fill_value=0)
        mesh.nodedata = []
        mesh.elmdata = [ed]
        gmsh.write_msh(mesh, args.fn_out)