Ejemplo n.º 1
0
def load(filename):
    """
    load available file
    available exts: .nii(.gz), .mha, .xls(x), .csv, .tsv, .json

    :param filename: file want to load
    :type filename: str
    :return: object
    """
    if '.nii' in filename:
        from nibabel import Nifti1Image
        img = Nifti1Image.load(filename)
    else:
        import pandas as pd
        if '.xls' in filename:
            img = pd.read_excel(filename)
        elif '.csv' in filename:
            img = pd.read_csv(filename)
        elif '.tsv' in filename:
            img = pd.read_table(filename)
        elif '.1D' in filename:
            img = pd.read_csv(filename, header=None, sep='\s+')
        elif '.json' in filename:
            import json
            img = json.load(open(filename))
        else:
            raise Exception  #TODO: Exception message handler
    return img
Ejemplo n.º 2
0
    def __init__(self, data, affine=None, **kwargs):

        from .load import load, datadict
        from .brain import Brain
        from .model import Model

        if isinstance(data, six.string_types):
            if data in datadict.keys():
                data = load(data)
            else:
                image = Nifti1Image.load(data)
                super(Nifti, self).__init__(image.dataobj, image.affine)

        if isinstance(data, np.ndarray):
            if affine is None:
                raise IOError(
                    "If data is provided as array, affine must also be provided"
                )
            else:
                super(Nifti, self).__init__(data, affine, **kwargs)

        elif isinstance(data, Nifti):
            super(Nifti, self).__init__(data.dataobj, data.affine)

        elif isinstance(data, Brain):
            data = data.to_nii(**kwargs)
            super(Nifti, self).__init__(data.dataobj, data.affine)

        elif isinstance(data, Model):
            bo = Brain(data)
            data = bo.to_nii(**kwargs)
            super(Nifti, self).__init__(data.dataobj, data.affine)
Ejemplo n.º 3
0
def combine_atlas(path):
    """

    :param path:
    :return:
    """
    import os
    from nibabel import Nifti1Image as ImageObj
    affine = list()

    label = dict()
    atlasdata = None
    list_of_rois = [img for img in os.listdir(path) if '.nii' in img]
    rgbs = np.random.rand(len(list_of_rois), 3)
    label[0] = 'Clear Label', [.0, .0, .0]

    for idx, img in enumerate(list_of_rois):
        imageobj = ImageObj.load(os.path.join(path, img))
        affine.append(imageobj.affine)
        if idx == 0:
            atlasdata = np.asarray(imageobj.dataobj)
        else:
            atlasdata += np.asarray(imageobj.dataobj) * (idx + 1)
        label[idx + 1] = split_nifti(img), rgbs[idx]
    atlas = ImageObj(atlasdata, affine[0])
    return atlas, label
Ejemplo n.º 4
0
def get_data():
    _package_directory = os.path.dirname(
        os.path.abspath(ibc_public.utils_data.__file__))
    subject_session = ibc_public.utils_data.get_subject_session(
        'rsvp-language')
    ibc = '/storage/store/data/ibc/derivatives/'
    data = []
    for subject, session in subject_session:
        # fetch the data
        data_path = os.path.join(ibc, subject, session, 'func')
        imgs = sorted(glob.glob(os.path.join(data_path, 'w*RSVPLanguage*')))
        n_scans = [Nifti1Image.load(img).shape[3] for img in imgs]

        confounds = sorted(
            glob.glob(os.path.join(data_path, 'rp_*RSVPLanguage*')))
        events = sorted(
            glob.glob(os.path.join(data_path, '*RSVPLanguage*_events.tsv')))
        dmtxs = [
            make_dmtx(these_events, n_scans=these_scans, t_r=2)
            for these_events, these_scans in zip(events, n_scans)
        ]
        data.append((imgs, confounds, dmtxs))
    return data