8.1.4. Markers#
Provide imports for markers sub-package.
- class junifer.markers.AmplitudeLowFrequencyFluctuationParcels(parcellation, fractional, highpass=0.01, lowpass=0.1, tr=None, use_afni=None, mask=None, method='mean', method_params=None, name=None)#
Class for computing fALFF/ALFF on parcels.
- Parameters:
- parcellation
str
orlist
ofstr
The name(s) of the parcellation(s). Check valid options by calling
junifer.data.parcellations.list_parcellations()
.- fractionalbool
Whether to compute fractional ALFF.
- highpasspositive
float
, optional The highpass cutoff frequency for the bandpass filter (default 0.01).
- lowpasspositive
float
, optional The lowpass cutoff frequency for the bandpass filter (default 0.1).
- trpositive
float
, optional The Repetition Time of the BOLD data. If None, will extract the TR from NIFTI header (default None).
- use_afnibool, optional
Whether to use AFNI for computing. If None, will use AFNI only if available (default None).
- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- method
str
, optional The method to perform aggregation using. Check valid options in
junifer.stats.get_aggfunc_by_name()
(default “mean”).- method_params
dict
, optional Parameters to pass to the aggregation function. Check valid options in
junifer.stats.get_aggfunc_by_name()
.- name
str
, optional The name of the marker. If None, will use the class name (default None).
- parcellation
Notes
The
tr
parameter is crucial for the correctness of fALFF/ALFF computation. If a dataset is correctly preprocessed, the TR should be extracted from the NIFTI without any issue. However, it has been reported that some preprocessed data might not have the correct TR in the NIFTI header.ALFF/fALFF are computed using a bandpass butterworth filter. See
scipy.signal.butter()
andscipy.signal.filtfilt()
for more details.
- class junifer.markers.AmplitudeLowFrequencyFluctuationSpheres(coords, fractional, radius=None, highpass=0.01, lowpass=0.1, tr=None, use_afni=None, mask=None, method='mean', method_params=None, name=None)#
Class for computing fALFF/ALFF on spheres.
- Parameters:
- coords
str
The name of the coordinates list to use. See
junifer.data.coordinates.list_coordinates()
for options.- radius
float
, optional The radius of the sphere in mm. If None, the signal will be extracted from a single voxel. See
nilearn.maskers.NiftiSpheresMasker
for more information (default None).- fractionalbool
Whether to compute fractional ALFF.
- highpasspositive
float
, optional The highpass cutoff frequency for the bandpass filter (default 0.01).
- lowpasspositive
float
, optional The lowpass cutoff frequency for the bandpass filter (default 0.1).
- trpositive
float
, optional The Repetition Time of the BOLD data. If None, will extract the TR from NIFTI header (default None).
- use_afnibool, optional
Whether to use AFNI for computing. If None, will use AFNI only if available (default None).
- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- method
str
, optional The method to perform aggregation using. Check valid options in
junifer.stats.get_aggfunc_by_name()
(default “mean”).- method_params
dict
, optional Parameters to pass to the aggregation function. Check valid options in
junifer.stats.get_aggfunc_by_name()
.- name
str
, optional The name of the marker. If None, will use the class name (default None).
- coords
Notes
The
tr
parameter is crucial for the correctness of fALFF/ALFF computation. If a dataset is correctly preprocessed, the TR should be extracted from the NIFTI without any issue. However, it has been reported that some preprocessed data might not have the correct TR in the NIFTI header.ALFF/fALFF are computed using a bandpass butterworth filter. See
scipy.signal.butter()
andscipy.signal.filtfilt()
for more details.
- class junifer.markers.BaseMarker(on=None, name=None)#
Abstract base class for all markers.
- Parameters:
- abstract compute(input, extra_input=None)#
Compute.
- Parameters:
- input
dict
A single input from the pipeline data object in which to compute the marker.
- extra_input
dict
, optional The other fields in the pipeline data object. Useful for accessing other data kind that needs to be used in the computation. For example, the functional connectivity markers can make use of the confounds if available (default None).
- input
- Returns:
dict
The computed result as dictionary. This will be either returned to the user or stored in the storage by calling the store method with this as a parameter.
- abstract get_output_type(input_type)#
Get output type.
- get_valid_inputs()#
Get valid data types for input.
- store(type_, out, storage)#
Store.
- validate_input(input)#
Validate input.
- Parameters:
- Raises:
ValueError
If the input does not have the required data.
- class junifer.markers.CrossParcellationFC(parcellation_one, parcellation_two, aggregation_method='mean', correlation_method='pearson', mask=None, name=None)#
Class for calculating parcel-wise correlations with 2 parcellations.
- Parameters:
- parcellation_one
str
The name of the first parcellation.
- parcellation_two
str
The name of the second parcellation.
- aggregation_method
str
, optional The aggregation method (default “mean”).
- correlation_method
str
, optional Any method that can be passed to
pandas.DataFrame.corr
(default “pearson”).- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- name
str
, optional The name of the marker. If None, will use the class name (default None).
- parcellation_one
- compute(input, extra_input=None)#
Compute.
Take a timeseries, parcellate them with two different parcellation schemes, and get parcel-wise correlations between the two different parcellated time series. Shape of output matrix corresponds to number of ROIs in (parcellation_two, parcellation_one).
- Parameters:
- Returns:
dict
The computed result as dictionary. This will be either returned to the user or stored in the storage by calling the store method with this as a parameter. The dictionary has the following keys:
data : the correlation values between the two parcellations as a numpy.ndarray
col_names : the ROIs for first parcellation as a list
row_names : the ROIs for second parcellation as a list
- get_output_type(input_type)#
Get output type.
- class junifer.markers.FunctionalConnectivityParcels(parcellation, agg_method='mean', agg_method_params=None, cor_method='covariance', cor_method_params=None, mask=None, name=None)#
Class for functional connectivity.
- Parameters:
- parcellation
str
orlist
ofstr
The name(s) of the parcellation(s). Check valid options by calling
junifer.data.parcellations.list_parcellations()
.- agg_method
str
, optional The method to perform aggregation using. Check valid options in
junifer.stats.get_aggfunc_by_name()
(default “mean”).- agg_method_params
dict
, optional Parameters to pass to the aggregation function. Check valid options in
junifer.stats.get_aggfunc_by_name()
(default None).- cor_method
str
, optional The method to perform correlation using. Check valid options in
nilearn.connectome.ConnectivityMeasure
(default “covariance”).- cor_method_params
dict
, optional Parameters to pass to the correlation function. Check valid options in
nilearn.connectome.ConnectivityMeasure
(default None).- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- name
str
, optional The name of the marker. If None, will use the class name (default None).
- parcellation
- compute(input, extra_input=None)#
Compute.
- Parameters:
- input
dict
A single input from the pipeline data object in which to compute the marker.
- extra_input
dict
, optional The other fields in the pipeline data object. Useful for accessing other data kind that needs to be used in the computation. For example, the functional connectivity markers can make use of the confounds if available (default None).
- input
- Returns:
dict
The computed result as dictionary. The following data will be included in the dictionary:
data
: functional connectivity matrix as a numpy.ndarray.row_names
: row names as a listcol_names
: column names as a listmatrix_kind
: the kind of matrix (tril, triu or full)
- get_output_type(input_type)#
Get output type.
- class junifer.markers.FunctionalConnectivitySpheres(coords, radius=None, agg_method='mean', agg_method_params=None, cor_method='covariance', cor_method_params=None, mask=None, name=None)#
Class for functional connectivity using coordinates (spheres).
- Parameters:
- coords
str
The name of the coordinates list to use. See
junifer.data.coordinates.list_coordinates()
for options.- radius
float
, optional The radius of the sphere in mm. If None, the signal will be extracted from a single voxel. See
nilearn.maskers.NiftiSpheresMasker
for more information (default None).- agg_method
str
, optional The aggregation method to use. See
junifer.stats.get_aggfunc_by_name()
for more information (default None).- agg_method_params
dict
, optional The parameters to pass to the aggregation method (default None).
- cor_method
str
, optional The method to perform correlation using. Check valid options in
nilearn.connectome.ConnectivityMeasure
(default “covariance”).- cor_method_params
dict
, optional Parameters to pass to the correlation function. Check valid options in
nilearn.connectome.ConnectivityMeasure
(default None).- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- name
str
, optional The name of the marker. By default, it will use KIND_FunctionalConnectivitySpheres where KIND is the kind of data it was applied to (default None).
- coords
- compute(input, extra_input=None)#
Compute.
- Parameters:
- input
dict
A single input from the pipeline data object in which to compute the marker.
- extra_input
dict
, optional The other fields in the pipeline data object. Useful for accessing other data kind that needs to be used in the computation. For example, the functional connectivity markers can make use of the confounds if available (default None).
- input
- Returns:
dict
The computed result as dictionary. The following keys will be included in the dictionary:
data
: functional connectivity matrix as a numpy.ndarray.row_names
: row names as a listcol_names
: column names as a listmatrix_kind
: the kind of matrix (tril, triu or full)
- get_output_type(input_type)#
Get output type.
- class junifer.markers.MarkerCollection(markers, datareader=None, preprocessing=None, storage=None)#
Class for marker collection.
- Parameters:
- markers
list
of marker-like The markers to compute.
- datareaderdatareader-like, optional
The datareader to use (default None).
- preprocessingpreprocessing-like, optional
The preprocessing steps to apply.
- storagestorage-like, optional
The storage to use (default None).
- markers
- fit(input)#
Fit the pipeline.
- Parameters:
- input
dict
The input data to fit the pipeline on. Should be the output of indexing the Data Grabber with one element.
- input
- Returns:
- validate(datagrabber)#
Validate the pipeline.
Without doing any computation, check if the marker collection can be fit without problems. That is, the data required for each marker is present and streamed down the steps. Also, if a storage is configured, check that the storage can handle the markers output.
- Parameters:
- datagrabberdatagrabber-like
The datagrabber to validate.
- class junifer.markers.ParcelAggregation(parcellation, method, method_params=None, mask=None, on=None, name=None)#
Class for parcel aggregation.
- Parameters:
- parcellation
str
orlist
ofstr
The name(s) of the parcellation(s). Check valid options by calling
junifer.data.parcellations.list_parcellations()
.- method
str
The method to perform aggregation using. Check valid options in
junifer.stats.get_aggfunc_by_name()
.- method_params
dict
, optional Parameters to pass to the aggregation function. Check valid options in
junifer.stats.get_aggfunc_by_name()
.- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- on{“T1w”, “BOLD”, “VBM_GM”, “VBM_WM”, “fALFF”, “GCOR”, “LCOR”} or
list
of the options, optional The data types to apply the marker to. If None, will work on all available data (default None).
- name
str
, optional The name of the marker. If None, will use the class name (default None).
- parcellation
- compute(input, extra_input=None)#
Compute.
- Parameters:
- input
dict
A single input from the pipeline data object in which to compute the marker.
- extra_input
dict
, optional The other fields in the pipeline data object. Useful for accessing other data kind that needs to be used in the computation. For example, the functional connectivity markers can make use of the confounds if available (default None).
- input
- Returns:
dict
The computed result as dictionary. This will be either returned to the user or stored in the storage by calling the store method with this as a parameter. The dictionary has the following keys:
data
: the actual computed values as a numpy.ndarraycolumns
: the column labels for the computed values as a listrow_names
(if more than one row is present in data): “scan”
- get_output_type(input_type)#
Get output type.
- class junifer.markers.RSSETSMarker(parcellation, agg_method='mean', agg_method_params=None, mask=None, name=None)#
Class for root sum of squares of edgewise timeseries.
- Parameters:
- parcellation
str
orlist
ofstr
The name(s) of the parcellation(s). Check valid options by calling
junifer.data.parcellations.list_parcellations()
.- agg_method
str
, optional The method to perform aggregation using. Check valid options in
junifer.stats.get_aggfunc_by_name()
(default “mean”).- agg_method_params
dict
, optional Parameters to pass to the aggregation function. Check valid options in
junifer.stats.get_aggfunc_by_name()
(default None).- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- name
str
, optional The name of the marker. If None, will use the class name (default None).
- parcellation
- compute(input, extra_input=None)#
Compute.
Take a timeseries of brain areas, and calculate timeseries for each edge according to the method outlined in [1]. For more information, check https://github.com/brain-networks/edge-ts/blob/master/main.m
- Parameters:
- Returns:
dict
The computed result as dictionary. The dictionary has the following keys:
data
: the actual computed values as a numpy.ndarraycolumns
: the column labels for the computed values as a listrow_names
(if more than one row is present in data): “scan”
References
[1]Zamani Esfahlani et al. (2020) High-amplitude cofluctuations in cortical activity drive functional connectivity doi: 10.1073/pnas.2005531117
- get_output_type(input_type)#
Get output type.
- class junifer.markers.ReHoParcels(parcellation, use_afni=None, reho_params=None, agg_method='mean', agg_method_params=None, mask=None, name=None)#
Class for regional homogeneity on parcels.
- Parameters:
- parcellation
str
The name of the parcellation. Check valid options by calling
junifer.data.parcellations.list_parcellations()
.- use_afnibool, optional
Whether to use AFNI for computing. If None, will use AFNI only if available (default None).
- reho_params
dict
, optional Extra parameters for computing ReHo map as a dictionary (default None). If
use_afni = True
, then the valid keys are:nneigh
{7, 19, 27}, optional (default 27)Number of voxels in the neighbourhood, inclusive. Can be:
7 : for facewise neighbours only
19 : for face- and edge-wise nieghbours
27 : for face-, edge-, and node-wise neighbors
neigh_rad
positive float, optionalThe radius of a desired neighbourhood (default None).
neigh_x
positive float, optionalThe semi-radius for x-axis of ellipsoidal volumes (default None).
neigh_y
positive float, optionalThe semi-radius for y-axis of ellipsoidal volumes (default None).
neigh_z
positive float, optionalThe semi-radius for z-axis of ellipsoidal volumes (default None).
box_rad
positive int, optionalThe number of voxels outward in a given cardinal direction for a cubic box centered on a given voxel (default None).
box_x
positive int, optionalThe number of voxels for +/- x-axis of cuboidal volumes (default None).
box_y
positive int, optionalThe number of voxels for +/- y-axis of cuboidal volumes (default None).
box_z
positive int, optionalThe number of voxels for +/- z-axis of cuboidal volumes (default None).
else if
use_afni = False
, then the valid keys are:nneigh
{7, 19, 27, 125}, optional (default 27)Number of voxels in the neighbourhood, inclusive. Can be:
7 : for facewise neighbours only
19 : for face- and edge-wise nieghbours
27 : for face-, edge-, and node-wise neighbors
125 : for 5x5 cuboidal volume
- agg_method
str
, optional The method to perform aggregation using. Check valid options in
junifer.stats.get_aggfunc_by_name()
(default “mean”).- agg_method_params
dict
, optional Parameters to pass to the aggregation function. Check valid options in
junifer.stats.get_aggfunc_by_name()
(default None).- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- name
str
, optional The name of the marker. If None, it will use the class name (default None).
- parcellation
- class junifer.markers.ReHoSpheres(coords, radius=None, use_afni=None, reho_params=None, agg_method='mean', agg_method_params=None, mask=None, name=None)#
Class for regional homogeneity on spheres.
- Parameters:
- coords
str
The name of the coordinates list to use. See
junifer.data.coordinates.list_coordinates()
for options.- radius
float
, optional The radius of the sphere in millimeters. If None, the signal will be extracted from a single voxel. See
nilearn.maskers.NiftiSpheresMasker
for more information (default None).- use_afnibool, optional
Whether to use AFNI for computing. If None, will use AFNI only if available (default None).
- reho_params
dict
, optional Extra parameters for computing ReHo map as a dictionary (default None). If
use_afni = True
, then the valid keys are:nneigh
{7, 19, 27}, optional (default 27)Number of voxels in the neighbourhood, inclusive. Can be:
7 : for facewise neighbours only
19 : for face- and edge-wise nieghbours
27 : for face-, edge-, and node-wise neighbors
neigh_rad
positive float, optionalThe radius of a desired neighbourhood (default None).
neigh_x
positive float, optionalThe semi-radius for x-axis of ellipsoidal volumes (default None).
neigh_y
positive float, optionalThe semi-radius for y-axis of ellipsoidal volumes (default None).
neigh_z
positive float, optionalThe semi-radius for z-axis of ellipsoidal volumes (default None).
box_rad
positive int, optionalThe number of voxels outward in a given cardinal direction for a cubic box centered on a given voxel (default None).
box_x
positive int, optionalThe number of voxels for +/- x-axis of cuboidal volumes (default None).
box_y
positive int, optionalThe number of voxels for +/- y-axis of cuboidal volumes (default None).
box_z
positive int, optionalThe number of voxels for +/- z-axis of cuboidal volumes (default None).
else if
use_afni = False
, then the valid keys are:nneigh
{7, 19, 27, 125}, optional (default 27)Number of voxels in the neighbourhood, inclusive. Can be:
7 : for facewise neighbours only
19 : for face- and edge-wise nieghbours
27 : for face-, edge-, and node-wise neighbors
125 : for 5x5 cuboidal volume
- agg_method
str
, optional The aggregation method to use. See
junifer.stats.get_aggfunc_by_name()
for more information (default None).- agg_method_params
dict
, optional The parameters to pass to the aggregation method (default None).
- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- name
str
, optional The name of the marker. If None, it will use the class name (default None).
- coords
- class junifer.markers.SphereAggregation(coords, radius=None, method='mean', method_params=None, mask=None, on=None, name=None)#
Class for sphere aggregation.
- Parameters:
- coords
str
The name of the coordinates list to use. See
junifer.data.coordinates.list_coordinates()
for options.- radius
float
, optional The radius of the sphere in millimeters. If None, the signal will be extracted from a single voxel. See
nilearn.maskers.NiftiSpheresMasker
for more information (default None).- method
str
, optional The aggregation method to use. See
junifer.stats.get_aggfunc_by_name()
for more information (default “mean”).- method_params
dict
, optional The parameters to pass to the aggregation method (default None).
- mask
str
, optional The name of the mask to apply to regions before extracting signals. Check valid options by calling
junifer.data.masks.list_masks()
(default None).- on{“T1w”, “BOLD”, “VBM_GM”, “VBM_WM”, “fALFF”, “GCOR”, “LCOR”} or
list
of the options, optional The data types to apply the marker to. If None, will work on all available data (default None).
- name
str
, optional The name of the marker. By default, it will use KIND_SphereAggregation where KIND is the kind of data it was applied to (default None).
- coords
- compute(input, extra_input=None)#
Compute.
- Parameters:
- input
dict
A single input from the pipeline data object in which to compute the marker.
- extra_input
dict
, optional The other fields in the pipeline data object. Useful for accessing other data kind that needs to be used in the computation. For example, the functional connectivity markers can make use of the confounds if available (default None).
- input
- Returns:
dict
The computed result as dictionary. This will be either returned to the user or stored in the storage by calling the store method with this as a parameter. The dictionary has the following keys:
data
: the actual computed values as a numpy.ndarraycolumns
: the column labels for the computed values as a listrow_names
(if more than one row is present in data): “scan”
- get_output_type(input_type)#
Get output type.