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)
Esempio n. 2
0
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, )
Esempio n. 4
0
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)
Esempio n. 5
0
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()
Esempio n. 7
0
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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)