def tractography_from_trackvis_file(filename): tracts_and_data, header = trackvis.read(filename, points_space='rasmm') tracts, scalars, properties = izip(*tracts_and_data) scalar_names = [n for n in header['scalar_name'] if len(n) > 0] #scalar_names_unique = [] #scalar_names_subcomp = {} #for sn in scalar_names: # if re.match('.*_[0-9]{2}', sn): # prefix = sn[:sn.rfind('_')] # if prefix not in scalar_names_unique: # scalar_names_unique.append(prefix) # scalar_names_subcomp[prefix] = int(sn[-2:]) # scalar_names_subcomp[prefix] = max(sn[-2:], scalar_names_subcomp[prefix]) # else: # scalar_names_unique.append(sn) tracts_data = {} for i, sn in enumerate(scalar_names): tracts_data[sn] = [scalar[:, i][:, None] for scalar in scalars] affine = header['vox_to_ras'] image_dims = header['dim'] tr = Tractography(tracts, tracts_data) tr.affine = affine tr.image_dims = image_dims return tr