AFQ.segmentation#

Module Contents#

Classes#

Segmentation

Functions#

clean_bundle(tg[, n_points, clean_rounds, ...])

Clean a segmented fiber group based on the Mahalnobis distance of

clean_by_endpoints(streamlines, target, target_idx[, ...])

Clean a collection of streamlines based on an endpoint ROI.

class AFQ.segmentation.Segmentation(nb_points=False, nb_streamlines=False, seg_algo='AFQ', clip_edges=False, parallel_segmentation={'engine': 'serial'}, progressive=True, greater_than=50, rm_small_clusters=50, model_clust_thr=1.25, reduction_thr=25, refine=False, pruning_thr=12, b0_threshold=50, prob_threshold=0, roi_dist_tie_break=False, dist_to_waypoint=None, rng=None, return_idx=False, presegment_bundle_dict=None, presegment_kwargs={}, filter_by_endpoints=True, dist_to_atlas=4, save_intermediates=None, cleaning_params={})[source]#
property fgarray[source]#

Streamlines resampled to 20 points.

property crosses[source]#

Classify the streamlines by whether they cross the midline. Creates a crosses attribute which is an array of booleans. Each boolean corresponds to a streamline, and is whether or not that streamline crosses the midline.

_read_tg(tg=None)[source]#
segment(bundle_dict, tg, mapping, img, reg_prealign=None, reg_template=None, reset_tg_space=False)[source]#

Segment streamlines into bundles based on either waypoint ROIs [Yeatman2012] or RecoBundles [Garyfallidis2017]. Parameters ———- bundle_dict: dict or AFQ.api.BundleDict

Meta-data for the segmentation. The format is something like::
{‘bundle_name’: {

‘include’:[img1, img2], ‘prob_map’: img3, ‘cross_midline’: False, ‘start’: img4, ‘end’: img5}}

tgStatefulTractogram

Bundles to segment

mappingDiffeomorphicMap, or equivalent interface

A mapping between DWI space and a template.

imgNifti1Image

Image to use as reference.

reg_prealignarray, optional.

The linear transformation to be applied to align input images to the reference space before warping under the deformation field. Default: None.

reg_templatestr or nib.Nifti1Image, optional.

Template to use for registration. Default: MNI T2.

reset_tg_spacebool, optional

Whether to reset the space of the input tractogram after segmentation is complete. Default: False.

Returns
dictWhere keys are bundle names, values are tractograms of

these bundles.

References

Yeatman2012

Yeatman, Jason D., Robert F. Dougherty, Nathaniel J.

Myall, Brian A. Wandell, and Heidi M. Feldman. 2012. “Tract Profiles of White Matter Properties: Automating Fiber-Tract Quantification” PloS One 7 (11): e49790. .. [R03e71c6d7dc6-Garyfallidis17] Garyfallidis et al. Recognition of white matter bundles using local and global streamline-based registration and clustering, Neuroimage, 2017.

_return_empty(bundle)[source]#

Helper function for segment_afq, to return an empty dict under some conditions.

_add_bundle_to_fiber_group(b_name, sl, idx, to_flip)[source]#

Helper function for segment_afq, to add a bundle to a fiber group.

_add_bundle_to_meta(bundle_name, bundle_info)[source]#
segment_afq(tg=None)[source]#

Assign streamlines to bundles using the waypoint ROI approach Parameters ———- tg : StatefulTractogram class instance

move_streamlines(tg, to='template')[source]#

Streamline-based registration of a whole-brain tractogram to the MNI whole-brain atlas.

tostr

“template” or “subject”

segment_reco(tg=None)[source]#

Segment streamlines using the RecoBundles algorithm [Garyfallidis2017] Parameters ———- tg : StatefulTractogram class instance

A whole-brain tractogram to be segmented.

Returns#

fiber_groupsdict

Keys are names of the bundles, values are Streamline objects. The streamlines in each object have all been oriented to have the same orientation (using dts.orient_by_streamline).

AFQ.segmentation.clean_bundle(tg, n_points=100, clean_rounds=5, distance_threshold=3, length_threshold=4, min_sl=20, stat='mean', return_idx=False)[source]#

Clean a segmented fiber group based on the Mahalnobis distance of each streamline

Parameters
tgStatefulTractogram class instance or ArraySequence

A whole-brain tractogram to be segmented.

n_pointsint, optional

Number of points to resample streamlines to. Default: 100

clean_roundsint, optional.

Number of rounds of cleaning based on the Mahalanobis distance from the mean of extracted bundles. Default: 5

distance_thresholdfloat, optional.

Threshold of cleaning based on the Mahalanobis distance (the units are standard deviations). Default: 3.

length_threshold: float, optional

Threshold for cleaning based on length (in standard deviations). Length of any streamline should not be more than this number of stdevs from the mean length.

min_slint, optional.

Number of streamlines in a bundle under which we will not bother with cleaning outliers. Default: 20.

statcallable or str, optional.

The statistic of each node relative to which the Mahalanobis is calculated. Default: np.mean (but can also use median, etc.)

return_idxbool

Whether to return indices in the original streamlines. Default: False.

Returns
——-
A StatefulTractogram class instance containing only the streamlines
that have a Mahalanobis distance smaller than `clean_threshold` from
the mean of each one of the nodes.
AFQ.segmentation.clean_by_endpoints(streamlines, target, target_idx, tol=0, flip_sls=None, accepted_idxs=None)[source]#

Clean a collection of streamlines based on an endpoint ROI. Filters down to only include items that have their start or end points close to the targets. Parameters ———- streamlines : sequence of N by 3 arrays

Where N is number of nodes in the array, the collection of streamlines to filter down to.

target: Nifti1Image

Nifti1Image containing a boolean representation of the ROI.

target_idx: int.

Index within each streamline to check if within the target region. Typically 0 for startpoint ROIs or -1 for endpoint ROIs. If using flip_sls, this becomes (len(sl) - this_idx - 1) % len(sl)

tolint, optional

A distance tolerance (in units that the coordinates of the streamlines are represented in). Default: 0, which means that the endpoint is exactly in the coordinate of the target ROI.

flip_sls1d array, optional

Length is len(streamlines), whether to flip the streamline.

accepted_idxs1d array, optional

Boolean array, where entries correspond to eachs streamline, and streamlines that pass cleaning will be set to 1.

Yields#

boolean array of streamlines that survive cleaning.