Esempio n. 1
0
def plot_roi_per_session(l1_dir, roi_mask, color,
	roi_mask_normalize="",
	):
	from samri.plotting import summary
	from samri.report import roi

	substitutions = bids_substitution_iterator(
		["ofM","ofM_aF","ofM_cF1","ofM_cF2","ofM_pF"],
		# ["5689","5690","5700"],
		["6262","6255","5694","5706",'5704'],
		# ["4007","4011","4012","5689","5690","5691"],
		# ["4009","4011","4012","5689","5690","5691"],
		# ["4008","4009","4011","4012",],
		["EPI_CBV_chr_longSOA"],
		"~/ni_data/ofM.dr/",
		"",
		l1_dir=l1_dir,
		)

	if isinstance(roi, list) and not "/" in roi[0]:
		roi = roi_from_atlaslabel("~/ni_data/templates/roi/DSURQEc_200micron_labels.nii",
			mapping="~/ni_data/templates/roi/DSURQE_mapping.csv",
			label_names=roi,
			)
	fit, anova, subjectdf, voxeldf = roi.roi_per_session(substitutions,
		t_file_template="{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_trial-{trial}_tstat.nii.gz",
		roi_mask=roi_mask,
		roi_mask_normalize=roi_mask_normalize,
		)
	summary.plot_roi_per_session(subjectdf, voxeldf, legend_loc=2, figure="per-participant", color=color, save_as="~/test.png")

	print(anova)
Esempio n. 2
0
def roi_per_session(l1_dir, roi, color,
	roi_mask_normalize="",
	):
	from samri.plotting import summary
	substitutions = bids_substitution_iterator(
		["ofM","ofM_aF","ofM_cF1","ofM_cF2","ofM_pF"],
		# ["5689","5690","5691"],
		["4005","5687","4007","4011","4012","5689","5690","5691"],
		# ["4007","4011","4012","5689","5690","5691"],
		# ["4009","4011","4012","5689","5690","5691"],
		# ["4008","4009","4011","4012",],
		["EPI_CBV_jb_long","EPI_CBV_chr_longSOA"],
		"~/ni_data/ofM.dr/",
		"",
		l1_dir=l1_dir,
		)
	if isinstance(roi, list) and not "/" in roi[0]:
		roi = roi_from_atlaslabel("~/ni_data/templates/roi/DSURQEc_200micron_labels.nii",
			mapping="~/ni_data/templates/roi/DSURQE_mapping.csv",
			label_names=roi,
			)
	fit, anova = summary.roi_per_session(substitutions,
		t_file_template="{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_trial-{scan}_tstat.nii.gz",
		legend_loc=2,
		# figure="per-voxel",
		figure="per-participant",
		roi_mask=roi,
		roi_mask_normalize=roi_mask_normalize,
		color=color,
		)
	print(anova)
Esempio n. 3
0
def label_activity(label):
	"""
	Create a DataFrame containing the per-session per-subject mean values for an autogenerated ROI based on the given label.
	Other parameter customizations are hard-coded below.
	"""
	import pandas as pd
	from samri.plotting import summary
	from samri.report import roi
	from samri.utilities import bids_substitution_iterator
	from samri.fetch.local import roi_from_atlaslabel
	from os.path import basename, splitext

	mapping='/usr/share/mouse-brain-atlases/dsurqec_mapping.csv'
	atlas='/usr/share/mouse-brain-atlases/dsurqec_40micron_labels.nii'
	my_roi = roi_from_atlaslabel(atlas,
		mapping=mapping,
		label_names=[label],
		)

	workflow_name = 'generic'
	substitutions = bids_substitution_iterator(
		["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		['5691',"5689","5690","5700","6451","6460","6456","6461","6462"],
                ["CogB",],
                "~/ni_data/ofM.dr/bids/",
                workflow_name,
                acquisitions=["EPI",],
                validate_for_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
		)
	df = roi.per_session(substitutions,
		filename_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
		roi_mask=my_roi,
		feature=[label],
		atlas=atlas,
		mapping=mapping,
		)
	df['treatment']='Fluoxetine'
	substitutions_ = bids_substitution_iterator(
		["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		["6262","6255","5694","5706",'5704','6455','6459'],
                ["CogB",],
                "~/ni_data/ofM.dr/bids/",
                workflow_name,
                acquisitions=["EPI",],
		validate_for_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
		)
	df_ = roi.per_session(substitutions_,
		filename_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
		roi_mask=my_roi,
		feature=[label],
		atlas=atlas,
		mapping=mapping,
		)
	df_['treatment']='Vehicle'

	df=pd.concat([df_,df])
	df=df.rename(columns={'session': 'Session',})

	df.to_csv('~/ni_data/ofM.dr/bids/l1/{}/{}.csv'.format(workflow_name, label))
Esempio n. 4
0
def atlas_label(
        atlas,
        alpha=0.7,
        anat="/usr/share/mouse-brain-atlases/dsurqec_40micron_masked.nii",
        ax=None,
        color="#E69F00",
        fig=None,
        label_names=[],
        mapping="",
        annotate=True,
        black_bg=False,
        draw_cross=True,
        threshold=None,
        roi=False,
        subplot_titles=[],
        scale=1.,
        dim=0,
        **kwargs):
    """Plot a region of interest based on an atlas and a label."""

    from matplotlib.colors import LinearSegmentedColormap, ListedColormap

    anat = path.abspath(path.expanduser(anat))

    if mapping and label_names:
        roi = roi_from_atlaslabel(atlas,
                                  mapping=mapping,
                                  label_names=label_names,
                                  **kwargs)
    elif isinstance(atlas, str):
        atlas = path.abspath(path.expanduser(atlas))
        roi = nib.load(atlas)
    else:
        roi = atlas

    cm = ListedColormap([color], name="my_atlas_label_cmap", N=None)

    display = nilearn.plotting.plot_roi(
        roi,
        alpha=alpha,
        annotate=False,
        axes=ax,
        bg_img=anat,
        black_bg=black_bg,
        draw_cross=False,
        cmap=cm,
        dim=dim,
        figure=fig,
    )
    if draw_cross:
        display.draw_cross(linewidth=scale * 1.6, alpha=0.4)
    if annotate:
        display.annotate(size=2 + scale * 18)
    if subplot_titles:
        display.title(title, size=2 + scale * 26)

    return display
Esempio n. 5
0
def plot_roi_by_label(label_names,
	save_as="",
	):
	roi = roi_from_atlaslabel("~/ni_data/templates/roi/DSURQEc_200micron_labels.nii",
		mapping="~/ni_data/templates/roi/DSURQE_mapping.csv",
		label_names=label_names,
		save_as=save_as
		)
	maps.atlas_label(roi)
	plt.show()
Esempio n. 6
0
def atlas_label(atlas,
	alpha=0.7,
	anat="/usr/share/mouse-brain-atlases/dsurqec_40micron_masked.nii",
	ax=None,
	color="#E69F00",
	fig=None,
	label_names=[],
	mapping="",
	annotate=True,
	black_bg=False,
	draw_cross=True,
	threshold=None,
	roi=False,
	subplot_titles=[],
	scale=1.,
	dim=0,
	**kwargs
	):
	"""Plot a region of interest based on an atlas and a label."""

	from matplotlib.colors import LinearSegmentedColormap, ListedColormap

	anat = path.abspath(path.expanduser(anat))

	if mapping and label_names:
		roi = roi_from_atlaslabel(atlas, mapping=mapping, label_names=label_names, **kwargs)
	elif isinstance(atlas, str):
		atlas = path.abspath(path.expanduser(atlas))
		roi = nib.load(atlas)
	else:
		roi = atlas

	cm = ListedColormap([color], name="my_atlas_label_cmap", N=None)

	display = nilearn.plotting.plot_roi(roi,
		alpha=alpha,
		annotate=False,
		axes=ax,
		bg_img=anat,
		black_bg=black_bg,
		draw_cross=False,
		cmap=cm,
		dim=dim,
		figure=fig,
		)
	if draw_cross:
		display.draw_cross(linewidth=scale*1.6, alpha=0.4)
	if annotate:
		display.annotate(size=2+scale*18)
	if subplot_titles:
		display.title(title, size=2+scale*26)

	return display
Esempio n. 7
0
def label_connectivity(workflow_name='DSURQEc_drp', labels=['cortex']):
	import pandas as pd
	from samri.plotting import summary
	from samri.report import roi
	from samri.utilities import bids_substitution_iterator
	from samri.fetch.local import roi_from_atlaslabel

	mapping='/usr/share/mouse-brain-atlases/dsurqec_mapping.csv'
	atlas='/usr/share/mouse-brain-atlases/dsurqec_40micron_labels.nii'
	my_roi = roi_from_atlaslabel(atlas,
		mapping=mapping,
		label_names=labels,
		)

	substitutions = bids_substitution_iterator(
                ["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		['5691',"5689","5690","5700","6451","6460","6456","6461","6462"],
                ["CogB",],
                "~/ni_data/ofM.dr/bids",
                workflow_name,
                acquisitions=["EPI",],
		validate_for_template='{data_dir}/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz',
		)
	df = roi.per_session(substitutions,
		filename_template='{data_dir}/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz',
		roi_mask=my_roi,
		feature=labels,
		atlas=atlas,
		mapping=mapping,
		)
	df['treatment']='Fluoxetine'
	substitutions_ = bids_substitution_iterator(
                ["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		["6262","6255","5694","5706",'5704','6455','6459'],
                ["CogB",],
                "~/ni_data/ofM.dr/bids",
		workflow_name,
                acquisitions=["EPI",],
		validate_for_template='{data_dir}/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz',
		)
	df_ = roi.per_session(substitutions_,
		filename_template='{data_dir}/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz',
		roi_mask=my_roi,
		feature=labels,
		atlas=atlas,
		mapping=mapping,
		)
	df_['treatment']='Vehicle'

	df = pd.concat([df_,df])
	df = df.rename(columns={'session': 'Session','t':'z'})

	df.to_csv('~/ni_data/ofM.dr/bids/fc/{}/{}_summary.csv'.format(workflow_name,'-'.join(labels)))
Esempio n. 8
0
def test_multi_roi_timeseries():
	import matplotlib.pyplot as plt
	from os import path
	from samri.plotting import summary, timeseries
	from samri.utilities import bids_substitution_iterator
	from samri.fetch.local import roi_from_atlaslabel

	substitutions = bids_substitution_iterator(
		sessions=[
			'ofM',
			'ofMaF',
			],
		subjects=[
		     '4007',
		     ],
		runs=[
		     '0',
		     '1',
		     ],
		modalities=[
		     'bold',
		     'cbv',
		     ],
		data_dir='/usr/share/samri_bidsdata',
		# BOLD scans are not recognized, since the current (=sci-biology/samri_bidsdata-0.2) filt file suffix also contains `_maths_` for CBV, but not for BOLD.
		validate_for_template="{data_dir}/l1/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_{modality}.nii.gz",
		)

	mapping='/usr/share/mouse-brain-atlases/dsurqe_labels.csv'
	atlas='/usr/share/mouse-brain-atlases/dsurqec_40micron_labels.nii'
	my_roi = roi_from_atlaslabel(atlas,
		mapping=mapping,
		label_names=['cortex'],
		)
	timecourses, designs, _, events_dfs, subplot_titles = summary.ts_overviews(substitutions, my_roi,
		ts_file_template="{data_dir}/l1/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_{modality}.nii.gz",
		betas_file_template="{data_dir}/l1/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_{modality}_betas.nii.gz",
		design_file_template="{data_dir}/l1/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_{modality}_design.mat",
		event_file_template='{data_dir}/preprocessing/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_events.tsv',
		n_jobs_percentage=0.5,
		)

	style_file = path.join(path.dirname(path.realpath(__file__)),'../samri_multiple-ts.conf')
	plt.style.use(style_file)

	timeseries.multi(timecourses, designs, events_dfs, subplot_titles,
		quantitative=False,
		save_as='_multi_roi_timeseries.pdf',
		)
Esempio n. 9
0
def test_roi_from_atlaslabel():
    from samri.fetch.local import roi_from_atlaslabel

    mapping = '/usr/share/mouse-brain-atlases/dsurqe_labels.csv'
    atlas = '/usr/share/mouse-brain-atlases/dsurqec_40micron_labels.nii'

    my_roi = roi_from_atlaslabel(
        atlas,
        mapping=mapping,
        label_names=['cortex'],
    )
    roi_data = my_roi.get_data()
    output_labels = np.unique(roi_data).tolist()
    assert output_labels == [0, 1]

    my_roi = roi_from_atlaslabel(
        atlas,
        mapping=mapping,
        label_names=['cortex'],
        output_label=3,
    )
    roi_data = my_roi.get_data()
    output_labels = np.unique(roi_data).tolist()
    assert output_labels == [0, 3]
Esempio n. 10
0
def anova():
    from samri.fetch.local import roi_from_atlaslabel
    roi = roi_from_atlaslabel(
        "~/ni_data/templates/roi/DSURQEc_200micron_labels.nii",
        mapping="~/ni_data/templates/roi/DSURQE_mapping.csv",
        label_names=["cortex"],
        save_as="/tmp/ctx.nii.gz")
    glm.l2_anova(
        "~/ni_data/ofM.dr/l1/composite/",
        workflow_name="anova_ctx",
        keep_work=False,
        mask="/tmp/ctx.nii.gz",
        include={
            'session': ['ofM', 'ofMaF', 'ofMcF1', 'ofMcF2', 'ofMpF'],
            'subject': ['5691', "5689", "5690", "5700"],
        },
    )
Esempio n. 11
0
File: roi.py Progetto: IBT-FMI/SAMRI
def drs_activity(
    roi,
    atlas='/usr/share/mouse-brain-templates/dsurqec_40micron_labels.nii',
    mapping='/usr/share/mouse-brain-templates/dsurqe_labels.csv',
):
    """
	TODO : make more generalizable, too many hardcoded values
	TODO : Make more elegant, atlas/split could be (partly) relegated to masking function instead of being done here.
	Create a DataFrame containing the per-session per-subject mean values for an autogenerated ROI based on the given label.
	Other parameter customizations are hard-coded below.
	"""
    import pandas as pd
    from samri.report import roi
    from samri.utilities import bids_substitution_iterator
    from samri.fetch.local import roi_from_atlaslabel
    from os.path import basename, splitext

    if mapping and atlas:
        mapping = path.abspath(path.expanduser(mapping))
        atlas = path.abspath(path.expanduser(atlas))
        my_roi = roi_from_atlaslabel(
            atlas,
            mapping=mapping,
            label_names=[roi],
        )
        roi_name = roi
    else:
        roi = path.abspath(path.expanduser(roi))
        roi_name = splitext(basename(roi))[0]
        if roi_name[-4:] == '.nii':
            roi_name = roi_name[:-4]

    source_workflow = 'generic'
    substitutions = bids_substitution_iterator(
        ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
        [
            '5691', "5689", "5690", "5700", "6451", "6460", "6456", "6461",
            "6462"
        ],
        [
            "CogB",
        ],
        "~/ni_data/ofM.dr",
        source_workflow,
        acquisitions=[
            "EPI",
        ],
        validate_for_template=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
    )
    if mapping and atlas:
        df = roi.per_session(
            substitutions,
            filename_template=
            '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
            roi_mask=my_roi,
            feature=[roi],
            atlas=atlas,
            mapping=mapping,
        )
    else:
        df = roi.per_session(
            substitutions,
            filename_template=
            '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
            roi_mask=roi,
        )
    df['treatment'] = 'Fluoxetine'
    substitutions_ = bids_substitution_iterator(
        ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
        ["6262", "6255", "5694", "5706", '5704', '6455', '6459'],
        [
            "CogB",
        ],
        "~/ni_data/ofM.dr",
        source_workflow,
        acquisitions=[
            "EPI",
        ],
        validate_for_template=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
    )
    if mapping and atlas:
        df_ = roi.per_session(
            substitutions_,
            filename_template=
            '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
            roi_mask=my_roi,
            feature=[roi],
            atlas=atlas,
            mapping=mapping,
        )
    else:
        df_ = roi.per_session(
            substitutions_,
            filename_template=
            '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
            roi_mask=roi,
        )
    df_['treatment'] = 'Vehicle'

    df = pd.concat([df_, df])
    df = df.rename(columns={
        'session': 'Session',
    })

    df.to_csv('~/ni_data/ofM.dr/l1/{}/{}.csv'.format(source_workflow,
                                                     roi_name))
Esempio n. 12
0
def test_multi_roi_timeseries():
    import matplotlib.pyplot as plt
    from os import path
    from samri.plotting import summary, timeseries
    from samri.utilities import bids_substitution_iterator
    from samri.fetch.local import roi_from_atlaslabel

    substitutions = bids_substitution_iterator(
        sessions=[
            'ofM',
            'ofMaF',
        ],
        subjects=[
            '4007',
        ],
        runs=[
            '0',
            '1',
        ],
        modalities=[
            'bold',
            'cbv',
        ],
        data_dir='/usr/share/samri_bidsdata',
        # BOLD scans are not recognized, since the current (=sci-biology/samri_bidsdata-0.2) filt file suffix also contains `_maths_` for CBV, but not for BOLD.
        validate_for_template=
        "{data_dir}/l1/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_{modality}.nii.gz",
    )

    mapping = '/usr/share/mouse-brain-atlases/dsurqe_labels.csv'
    atlas = '/usr/share/mouse-brain-atlases/dsurqec_40micron_labels.nii'
    my_roi = roi_from_atlaslabel(
        atlas,
        mapping=mapping,
        label_names=['cortex'],
    )
    timecourses, designs, _, events_dfs, subplot_titles = summary.ts_overviews(
        substitutions,
        my_roi,
        ts_file_template=
        "{data_dir}/l1/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_{modality}.nii.gz",
        betas_file_template=
        "{data_dir}/l1/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_{modality}_betas.nii.gz",
        design_file_template=
        "{data_dir}/l1/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_{modality}_design.mat",
        event_file_template=
        '{data_dir}/preprocessing/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-JogB_acq-EPIlowcov_run-{run}_events.tsv',
        n_jobs_percentage=0.5,
    )

    style_file = path.join(path.dirname(path.realpath(__file__)),
                           '../samri_multiple-ts.conf')
    plt.style.use(style_file)

    timeseries.multi(
        timecourses,
        designs,
        events_dfs,
        subplot_titles,
        quantitative=False,
        save_as='_multi_roi_timeseries.pdf',
    )
Esempio n. 13
0
def ctx_drs_connectivity():
    import pandas as pd
    from behaviopy.plotting import qualitative_times
    from samri.plotting import summary
    from samri.report import roi
    from samri.utilities import bids_substitution_iterator
    from samri.fetch.local import roi_from_atlaslabel

    workflow_name = 'drs_seed'
    my_roi = roi_from_atlaslabel(
        "~/ni_data/templates/roi/DSURQEc_200micron_labels.nii",
        mapping="~/ni_data/templates/roi/DSURQE_mapping.csv",
        label_names=["cortex"],
    )

    substitutions = bids_substitution_iterator(
        ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
        ['5691', "5689", "5690", "5700"],
        [
            "CogB",
        ],
        "~/ni_data/ofM.dr/",
        workflow_name,
        acquisitions=[
            "EPI",
        ],
        check_file_format=
        '~/ni_data/ofM.dr/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_zstat.nii.gz',
    )
    fit, anova, subjectdf, voxeldf = roi.per_session(
        substitutions,
        filename_template=
        '~/ni_data/ofM.dr/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_zstat.nii.gz',
        roi_mask=my_roi,
    )
    subjectdf['treatment'] = 'Fluoxetine'
    substitutions_ = bids_substitution_iterator(
        ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
        ["6262", "6255", "5694", "5706", '5704'],
        [
            "CogB",
        ],
        "~/ni_data/ofM.dr/",
        workflow_name,
        acquisitions=[
            "EPI",
        ],
        check_file_format=
        '~/ni_data/ofM.dr/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_zstat.nii.gz',
    )
    fit_, anova_, subjectdf_, voxeldf_ = roi.per_session(
        substitutions_,
        filename_template=
        '~/ni_data/ofM.dr/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_zstat.nii.gz',
        roi_mask=my_roi,
    )
    subjectdf_['treatment'] = 'Vehicle'

    subjectdf = pd.concat([subjectdf_, subjectdf])
    subjectdf = subjectdf.rename(columns={'session': 'Session', 't': 'z'})

    subjectdf.to_csv(
        '~/ni_data/ofM.dr/fc/{}/ctx_summary.csv'.format(workflow_name))
Esempio n. 14
0
def drs_activity(roi,
	atlas='/usr/share/mouse-brain-atlases/dsurqec_40micron_labels.nii',
	mapping='/usr/share/mouse-brain-atlases/dsurqe_labels.csv',
	):
	"""
	TODO : make more generalizable, too many hardcoded values
	TODO : Make more elegant, atlas/split could be (partly) relegated to masking function instead of being done here.
	Create a DataFrame containing the per-session per-subject mean values for an autogenerated ROI based on the given label.
	Other parameter customizations are hard-coded below.
	"""
	import pandas as pd
	from samri.plotting import summary
	from samri.report import roi
	from samri.utilities import bids_substitution_iterator
	from samri.fetch.local import roi_from_atlaslabel
	from os.path import basename, splitext

	if mapping and atlas:
		mapping = path.abspath(path.expanduser(mapping))
		atlas = path.abspath(path.expanduser(atlas))
		my_roi = roi_from_atlaslabel(atlas,
			mapping=mapping,
			label_names=[roi],
			)
		roi_name = roi
	else:
		roi = path.abspath(path.expanduser(roi))
		roi_name = splitext(basename(roi))[0]
		if roi_name[-4:] == '.nii':
			roi_name = roi_name[:-4]

	source_workflow = 'generic'
	substitutions = bids_substitution_iterator(
		["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		['5691',"5689","5690","5700","6451","6460","6456","6461","6462"],
                ["CogB",],
                "~/ni_data/ofM.dr",
                source_workflow,
                acquisitions=["EPI",],
                validate_for_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
		)
	if mapping and atlas:
		df = roi.per_session(substitutions,
			filename_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
			roi_mask=my_roi,
			feature=[roi],
			atlas=atlas,
			mapping=mapping,
			)
	else:
		df = roi.per_session(substitutions,
			filename_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
			roi_mask=roi,
			)
	df['treatment']='Fluoxetine'
	substitutions_ = bids_substitution_iterator(
		["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		["6262","6255","5694","5706",'5704','6455','6459'],
                ["CogB",],
                "~/ni_data/ofM.dr",
                source_workflow,
                acquisitions=["EPI",],
		validate_for_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
		)
	if mapping and atlas:
		df_ = roi.per_session(substitutions_,
			filename_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
			roi_mask=my_roi,
			feature=[roi],
			atlas=atlas,
			mapping=mapping,
			)
	else:
		df_ = roi.per_session(substitutions_,
			filename_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
			roi_mask=roi,
			)
	df_['treatment']='Vehicle'

	df=pd.concat([df_,df])
	df=df.rename(columns={'session': 'Session',})

	df.to_csv('~/ni_data/ofM.dr/l1/{}/{}.csv'.format(source_workflow, roi_name))
Esempio n. 15
0
def atlas_label(atlas,
	alpha=1,
	overlay_alpha=1.0,
	anat='/usr/share/mouse-brain-atlases/dsurqec_40micron_masked.nii',
	ax=None,
	color="#E69F00",
	fig=None,
	label_names=[],
	mapping='/usr/share/mouse-brain-atlases/dsurqe_labels.csv',
	annotate=True,
	black_bg=False,
	draw_cross=True,
	threshold=1,
	roi=False,
	subplot_titles=[],
	scale=1.,
	dim=0,
	anat_cmap='binary',
	display_mode='yx',
	**kwargs
	):
	"""Plot a region of interest based on an atlas and a label.

	Parameters
	----------

	display_mode : {‘ortho’, ‘tiled’, ‘x’, ‘y’, ‘z’, ‘yx’, ‘xz’, ‘yz’}
		Which slides to display, parameter passed to `nilearn.plotting.plt_roi()`
	"""

	from matplotlib.colors import LinearSegmentedColormap, ListedColormap

	anat = path.abspath(path.expanduser(anat))

	if label_names:
		roi = roi_from_atlaslabel(atlas, mapping=mapping, label_names=label_names, **kwargs)
	elif isinstance(atlas, str):
		atlas = path.abspath(path.expanduser(atlas))
		roi = nib.load(atlas)
	else:
		roi = atlas

	cm = ListedColormap([color], name="my_atlas_label_cmap", N=None)
	cut = nilearn.plotting.plot_stat_map(roi,anat,threshold=None,colorbar=False).cut_coords
	plt.close()
	# more of these will need to be added
	if display_mode == 'yx':
		cut = cut[:2]

	display = nilearn.plotting.plot_anat(anat,
		alpha=alpha,
		dim=dim,
		axes=ax,
		threshold=threshold,
		figure=fig,
		cmap=anat_cmap,
		title=None,
		annotate=False,
		draw_cross=False,
		black_bg=black_bg,
		colorbar=False,
		display_mode=display_mode,
		cut_coords=cut,
		)
	display.add_overlay(roi,
		alpha=overlay_alpha,
		colorbar=False,
		cmap=cm,
		)
	if draw_cross:
		display.draw_cross(linewidth=scale*1.6, alpha=0.4)
	if annotate:
		display.annotate(size=2+scale*18)
	if subplot_titles:
		display.title(title, size=2+scale*26)

	return display