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
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)
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
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