def calc_streams_in_roi(dpy_file,roi_dat,stream_idxs): aff_eye = np.eye(4) D = Dpy(dpy_file, 'r') streams = D.read_tracksi(stream_idxs) D.close() streamsinroi = list(target_line_based(streams,roi_dat,aff_eye)) return streamsinroi
def calc_streams_in_roi(dpy_file,roi_dat,stream_idxs): aff_eye = np.eye(4) D = Dpy(dpy_file, 'r') streams = D.read_tracksi(stream_idxs) D.close() # hack to deal with apparent nibabel-dipy conflict if type(streams) == nib.streamlines.array_sequence.ArraySequence: streams = list(streams) streamsinroi = list(target_line_based(streams,roi_dat,aff_eye)) return streamsinroi
def test_target_line_based_out_of_bounds(): test_cases = [ (np.array([[-10, 0, 0], [0, 0, 0]]), 0), (np.array([[-10, 0, 0], [1, -10, 0]]), 0), (np.array([[0, 0, 0], [10, 10, 10]]), 0), (np.array([[-2, -0.6, -0.6], [2, -0.6, -0.6]]), 0), (np.array([[-10000, 0, 0], [0, 0, 0]]), 0), (np.array([[-10, 0, 0], [10, 0, 0]]), 1), (np.array([[1, -10, 0], [1, 10, 0]]), 1), ] for streamline, expected_matched in test_cases: mask = np.zeros((2, 1, 1), dtype=np.uint8) mask[1, 0, 0] = 1 matched = list(target_line_based([streamline], np.eye(4), mask)) assert len(matched) == expected_matched
def warp_streamlines( adjusted_affine, ref_grid_aff, mapping, warped_fa_img, streams_in_curr_grid, brain_mask, ): from dipy.tracking import utils from dipy.tracking.streamline import ( values_from_volume, transform_streamlines, Streamlines, ) # Deform streamlines, isocenter, and remove streamlines outside brain streams_in_brain = [ sum(d, s) for d, s in zip( values_from_volume(mapping.get_forward_field(), streams_in_curr_grid, ref_grid_aff), streams_in_curr_grid, ) ] streams_final_filt = Streamlines( utils.target_line_based( transform_streamlines( transform_streamlines(streams_in_brain, np.linalg.inv(adjusted_affine)), np.linalg.inv(warped_fa_img.affine), ), np.eye(4), brain_mask, include=True, )) return streams_final_filt