def test_hdf5(): for ext in ('.hdf5', '.zarr'): with tempdir(): nifti_image().to_filename('test.nii.gz') arr = gifti_arr() write_gifti('test.shape.gii', [arr], brain_structure='CortexLeft') go = greyordinate.parse_greyordinate('*****@*****.**') assert len(go.brain_model_axis) == 2 go.to_filename('full' + ext) go2 = go.from_filename('full' + ext) testing.assert_equal(go.data, go2.data) assert go.brain_model_axis == go2.brain_model_axis assert go2.data.shape == (2, ) func = greyordinate.GreyOrdinates.empty_zarr if ext == '.zarr' else greyordinate.GreyOrdinates.empty_hdf5 with func('empty' + ext, (go.brain_model_axis, go.brain_model_axis)) as go: arr = np.random.randn(2, 2) go.data[:] = arr go2 = greyordinate.parse_greyordinate('empty' + ext) assert (np.array(go2.data) == arr).all() assert go2.brain_model_axis == go.brain_model_axis assert go2.other_axes == (go.brain_model_axis, ) print(ext) print(go2.data.chunks) if ext == '.zarr': print(go2.data.compressor)
def run_roi_dist_gifti(surf_fn, roi, brain_structure, project=None): with tempdir(): write_gifti('roi.shape.gii', [roi], brain_structure) if project is not None: write_gifti('in_project.shape.gii', [project], brain_structure) cmd_project = [ '-p', 'in_project.shape.gii', 'out_project.shape.gii' ] else: cmd_project = [] directories([ 'surface', 'roi_dist_gifti', str(surf_fn), 'roi.shape.gii', '-od', 'dist.shape.gii', '-ocv', 'closest.shape.gii', '-opv', 'pred.shape.gii', ] + cmd_project) res = ( nib.load('dist.shape.gii').darrays[0].data, nib.load('closest.shape.gii').darrays[0].data, nib.load('pred.shape.gii').darrays[0].data, ) if project is not None: res = res + (nib.load('out_project.shape.gii').darrays[0].data, ) return res
def test_cifti(): with tempdir(): nifti_image().to_filename('test.nii.gz') arr = gifti_arr() write_gifti('test.shape.gii', [arr], brain_structure='CortexLeft') go = greyordinate.parse_greyordinate('*****@*****.**') assert len(go.brain_model_axis) == 2 go.to_filename('full.dscalar.nii') go2 = go.from_filename('full.dscalar.nii') testing.assert_equal(go.data[None, :], go2.data) assert go.brain_model_axis == go2.brain_model_axis assert go2.data.shape == (1, 2) with greyordinate.GreyOrdinates.empty_cifti( 'empty.dconn.nii', (go.brain_model_axis, go.brain_model_axis)) as go: arr = np.random.randn(2, 2) go.data[:] = arr go2 = greyordinate.parse_greyordinate('empty.dconn.nii') assert (np.array(go2.data) == arr).all() assert go2.brain_model_axis == go.brain_model_axis assert go2.other_axes == (go.brain_model_axis, )
def run_from_args(args): """ Runs the script based on a Namespace containing the command line arguments """ surface = CorticalMesh.read(args.surface) arr = nib.load(args.depth).darrays[0].data if args.flip: arr *= -1 use = np.isfinite(arr) & (arr != 0) if args.Nparcels is not None: segments = run( surface[use], arr[use], min_depth=args.min_depth, min_size=args.min_size, fill_ridge=args.fill_ridge, ) else: segments = run_nparcels( surface[use], arr[use], nparcels=args.Nparcels, min_size=args.min_size, fill_ridge=args.fill_ridge, ) full_segment = np.zeros(arr.size, dtype='i4') full_segment[use] = segments write_gifti(args.out, [full_segment], color_map='default', brain_structure=surface.anatomy)
def run_from_args(args): """ Runs the script based on a Namespace containing the command line arguments """ surface = CorticalMesh.read(args.surface) sulcal_depth = nib.load(args.sulcal_depth).darrays[0].data to_extract = nib.load(args.extract).darrays[0].data values = run(surface, sulcal_depth, to_extract, args.minimum) write_gifti(args.out, [values], surface.anatomy)
def test_writable(): with tempdir(): nifti_image().to_filename('test.nii.gz') arr = gifti_arr() write_gifti('test.shape.gii', [arr], brain_structure='CortexLeft') go = greyordinate.parse_greyordinate('*****@*****.**') for ext in ('.dscalar.nii', '.hdf5', '.zarr'): go.to_filename('data' + ext) img = go.from_filename('data' + ext, writable=True) img.data[..., 0] = np.pi * 3 del img assert (go.from_filename('data' + ext).data[..., 0] == np.pi * 3).all()
def run_from_args(args): """ Runs the script based on a Namespace containing the command line arguments """ if ( args.output_dist is None and args.output_closest_vertex is None and args.output_predecessor_vertex is None and args.project is None ): raise ValueError("No output files requested, set at least one of -p, -od, -orv, or -onv") surface = CorticalMesh.read(args.surface) roi = nib.load(args.roi).darrays[0].data != 0 if args.project is not None: to_project = nib.load(args.project[0]).darrays[0].data distance, predecessor, closest_vertex = run( surface, roi ) if args.output_dist is not None: write_gifti(args.output_dist, [distance], brain_structure=surface.anatomy) if args.output_closest_vertex is not None: write_gifti(args.output_closest_vertex, [closest_vertex], brain_structure=surface.anatomy) if args.output_predecessor_vertex is not None: write_gifti(args.output_predecessor_vertex, [predecessor], brain_structure=surface.anatomy) if args.project is not None: projected = to_project[closest_vertex] write_gifti(args.project[1], [projected], brain_structure=surface.anatomy)
def run_from_args(args): """ Runs the script based on a Namespace containing the command line arguments """ surf = CorticalMesh.read(args.surface) go = GreyOrdinates.from_filename(args.features) features = go.surface(surf.anatomy) mask = np.isfinite(features) res = run( surf[mask], features, n_iter=args.iter, metric=args.metric, method=args.cluster, ) full_res = np.zeros(surf.nvertices) full_res[mask] = res write_gifti(args.output, [full_res], surf.anatomy)
def run_from_args(args): """ Runs the script based on a Namespace containing the command line arguments """ surface = CorticalMesh.read(args.surface) go = GreyOrdinates.from_filename(args.features) features = go.surface(surface.anatomy) mask = np.isfinite(features) labels = run( surface[mask], features[..., mask], metric=args.metric, method=args.cluster, n_clusters=args.n_clusters, ) full_labels = -np.ones(surface.nvertices, dtype=labels.dtype) full_labels[mask] = labels write_gifti(args.output, [full_labels], brain_structure=surface.anatomy, color_map={-1: ('???', (0, 0, 0, 0))})
def test_gifti(): with tempdir(): for shape in (), (2, ), (1, 2): arr = gifti_arr(shape) write_gifti('test.shape.gii', [arr], brain_structure='CortexLeft') go = greyordinate.GreyOrdinates.from_filename('test.shape.gii') assert len(go.brain_model_axis) == 1 assert go.data.shape == shape + (1, ) new_arr = go.surface('left_cortex') testing.assert_equal(new_arr.shape, arr.shape) testing.assert_equal(new_arr[..., 1], arr[..., 1]) assert np.isfinite(new_arr).sum() == np.prod(shape) with raises(ValueError): go.surface('CortexRight') with raises(ValueError): go.volume() go.to_filename('test2.shape.gii') cmp('test.shape.gii', 'test2.shape.gii', shallow=False)