Ejemplo n.º 1
0
def test_dual_regression(group_level="migp"):
    from samri.analysis import fc
    substitutions_a = bids_substitution_iterator(
        [
            "ofM",
        ],
        ["5689", "5690", "5691"],
        ["EPI_CBV_chr_longSOA"],
        "~/ni_data/ofM.dr/",
        "as_composite",
    )
    substitutions_b = bids_substitution_iterator(
        [
            "ofM_cF2",
        ],
        ["5689", "5690", "5691"],
        ["EPI_CBV_chr_longSOA"],
        "~/ni_data/ofM.dr/",
        "as_composite",
    )
    fc.dual_regression(
        substitutions_a,
        substitutions_b,
        group_level=group_level,
    )
Ejemplo n.º 2
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))
Ejemplo n.º 3
0
def dr_activity():
    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 = 'composite'
    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=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_tstat.nii.gz',
    )
    fit, anova, subjectdf, voxeldf = roi.per_session(
        substitutions,
        filename_template=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_tstat.nii.gz',
        roi_mask="~/ni_data/templates/roi/DSURQEc_dr.nii.gz",
    )
    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=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_tstat.nii.gz',
    )
    fit_, anova_, subjectdf_, voxeldf_ = roi.per_session(
        substitutions_,
        filename_template=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_tstat.nii.gz',
        roi_mask="~/ni_data/templates/roi/DSURQEc_dr.nii.gz",
    )
    subjectdf_['treatment'] = 'Vehicle'

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

    subjectdf.to_csv(
        '~/ni_data/ofM.dr/l1/{}/dr_summary.csv'.format(workflow_name))
Ejemplo n.º 4
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)))
Ejemplo n.º 5
0
def pattern_fc():
	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

	workflow_name = 'drs_seed'
	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='{data_dir}/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz',
		)
	subjectdf = summary.analytic_pattern_per_session(substitutions,
		'~/ni_data/ofM.dr/l2/anova_ctx/anova_zfstat.nii.gz',
                t_file_template='{data_dir}/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz',
		figure="per-participant",
		color="#309079",
		xy_label=["Session","Pattern Score"],
		)
	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='{data_dir}/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz',
		)
	subjectdf_ = summary.analytic_pattern_per_session(substitutions_,
		'~/ni_data/ofM.dr/l2/anova_ctx/anova_zfstat.nii.gz',
                t_file_template='{data_dir}/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz',
		figure="per-participant",
		color="#309079",
		xy_label=["Session","Pattern Score"],
		)
	subjectdf_['treatment']='Vehicle'

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

	subjectdf.to_csv('~/ni_data/ofM.dr/fc/{}/ctx_pattern_summary.csv'.format(workflow_name))
Ejemplo n.º 6
0
def p_clusters(mask):
    from samri.plotting import summary, timeseries

    substitutions = bids_substitution_iterator(
        ["ofM", "ofM_aF", "ofM_cF1", "ofM_cF2", "ofM_pF"],
        ["4011", "4012", "5689", "5690", "5691"],
        # ["4007","4008","4011","4012","5689","5690","5691"],
        ["EPI_CBV_jb_long", "EPI_CBV_chr_longSOA"],
        "~/ni_data/ofM.dr/",
        "composite",
        l1_dir="dr",
    )
    timecourses, designs, stat_maps, events_dfs, subplot_titles = summary.p_filtered_ts(
        substitutions,
        ts_file_template=
        "{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-{scan}.nii.gz",
        beta_file_template=
        "{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{scan}_cope.nii.gz",
        # p_file_template="{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{scan}_pstat.nii.gz",
        p_file_template=
        "{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{scan}_pfstat.nii.gz",
        design_file_template=
        "{data_dir}/l1/{l1_workdir}/_subject_session_scan_{subject}.{session}.{scan}/modelgen/run0.mat",
        event_file_template=
        "{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-{scan}_events.tsv",
        brain_mask=mask,
        p_level=0.05,
    )
    timeseries.multi(timecourses,
                     designs,
                     stat_maps,
                     events_dfs,
                     subplot_titles,
                     figure="timecourses")
    plt.show()
Ejemplo n.º 7
0
def reg_cc(
    path="~/ni_data/ofM.dr/preprocessing/composite",
    template="/usr/share/mouse-brain-atlases/dsurqec_200micron.nii",
    radius=8,
    autofind=False,
    plot=False,
    save_as="f_reg_quality",
    # metrics = ['CC','GC'],
    metrics=['CC', 'GC', 'MI'],
):
    from samri.report.registration import iter_measure_sim
    from samri.utilities import bids_substitution_iterator

    if autofind:
        path_template, substitutions = bids_autofind(path, "func")
    else:
        path_template = "{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv.nii.gz"
        substitutions = bids_substitution_iterator(
            ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
            [
                "4001", "4007", "4008", "4011", "5692", "5694", "5699", "5700",
                "5704", "6255", "6262"
            ],
            ["CogB", "JogB"],
            "~/ni_data/ofM.dr/",
            "composite",
            acquisitions=['EPI', 'EPIlowcov'],
            validate_for_template=path_template,
        )
    df = iter_measure_sim(
        path_template,
        template,
        substitutions,
        metric=metrics[0],
        radius_or_number_of_bins=radius,
        sampling_strategy="Regular",
        sampling_percentage=0.95,
        save_as=False,
    )

    df = df.rename(columns={
        'similarity': metrics[0],
    })

    for metric in metrics[1:]:
        _df = iter_measure_sim(
            path_template,
            template,
            substitutions,
            metric=metric,
            radius_or_number_of_bins=radius,
            sampling_strategy="Regular",
            sampling_percentage=0.95,
            save_as=False,
        )
        df[metric] = _df['similarity'].values
    if save_as:
        df.to_csv(save_as + ".csv")

    return df
Ejemplo n.º 8
0
def test_reg_qc(
	radius=5,
	autofind=False,
	plot=False,
	):
	"""This could be used as a continuous integration test function once we can distribute demo data."""
	from samri.utilities import bids_autofind
	from samri.plotting.aggregate import registration_qc
	from samri.report.registration import get_scores
	from samri.typesetting import inline_anova
	from samri.utilities import bids_substitution_iterator

	if autofind:
		path_template, substitutions = bids_autofind("~/ni_data/ofM.dr/preprocessing/composite","func")
	else:
		path_template = "{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv.nii.gz"
		substitutions = bids_substitution_iterator(
			["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
			["5689","5690","5691","5694","5706","5700","5704","6255","6262"],
			["CogB"],
			"~/ni_data/ofM.dr/",
			"composite",
			acquisitions=['EPI'],
			check_file_format=path_template,
			)

	df = get_scores(path_template, substitutions,
		"~/ni_data/templates/DSURQEc_200micron_average.nii",
		metric="CC",
		radius_or_number_of_bins=radius,
		sampling_strategy="Regular",
		sampling_percentage=0.33,
		save_as="f_reg_quality.csv",
		)
Ejemplo n.º 9
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)
Ejemplo n.º 10
0
def temporal_qc_separate():
	import matplotlib.pyplot as plt
	import matplotlib.ticker as plticker
	import numpy as np
	import pandas as pd
	from samri.report.snr import base_metrics
	from samri.plotting.timeseries import multi
	from samri.utilities import bids_substitution_iterator

	substitutions = bids_substitution_iterator(
		['testSTIM'],
		['COILphantom'],
		['CcsI'],
		'/home/chymera/ni_data/phantoms/',
		'bids',
		acquisitions=['EPIalladj','EPIcopyadjNODUM','EPIcopyadj','EPImoveGOP'],
		)

	for i in substitutions:
		timecourses  = base_metrics('{data_dir}/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}.nii', i)
		events_df = pd.read_csv('{data_dir}/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_events.tsv'.format(**i), sep='\t')
		multi(timecourses,
			designs=[],
			events_dfs=[events_df],
			subplot_titles='acquisition',
			quantitative=False,
			save_as='temp_{acquisition}.pdf'.format(**i),
			samri_style=True,
			ax_size=[16,6],
			unit_ticking=True,
			)
Ejemplo n.º 11
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)
Ejemplo n.º 12
0
def dr_seed_fc():
	import numpy as np
	from os import path
	from labbookdb.report.tracking import treatment_group, append_external_identifiers
	from samri.plotting.overview import multiplot_matrix, multipage_plot
	from samri.utilities import bids_substitution_iterator
	from samri.analysis import fc

	db_path = '~/syncdata/meta.db'
	groups = treatment_group(db_path, ['cFluDW','cFluDW_'], 'cage')
	groups = append_external_identifiers(db_path, groups, ['Genotype_code'])
	all_subjects = groups['ETH/AIC'].unique()

	substitutions = bids_substitution_iterator(
		["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		all_subjects,
		["CogB",],
		"~/ni_data/ofM.dr/",
		"composite",
		acquisitions=["EPI",],
		check_file_format='~/ni_data/ofM.dr/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv.nii.gz')

	fc_results = fc.seed_based(substitutions, "~/ni_data/templates/roi/DSURQEc_dr.nii.gz", "/usr/share/mouse-brain-atlases/dsurqec_200micron_mask.nii",
		ts_file_template='~/ni_data/ofM.dr/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv.nii.gz',
		save_results="~/ni_data/ofM.dr/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz",
		)
Ejemplo n.º 13
0
def temporal_qc_separate():
	import matplotlib.pyplot as plt
	import matplotlib.ticker as plticker
	import numpy as np
	import pandas as pd
	from samri.report.snr import base_metrics
	from samri.plotting.timeseries import multi
	from samri.utilities import bids_substitution_iterator

	substitutions = bids_substitution_iterator(
		['testSTIM'],
		['COILphantom'],
		['CcsI'],
		'/home/chymera/ni_data/phantoms/',
		'bids',
		acquisitions=['EPIalladj','EPIcopyadjNODUM','EPIcopyadj','EPImoveGOP'],
		)

	for i in substitutions:
		timecourses  = base_metrics('{data_dir}/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}.nii', i)
		events_df = pd.read_csv('{data_dir}/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_events.tsv'.format(**i), sep='\t')
		multi(timecourses,
			designs=[],
			events_dfs=[events_df],
			subplot_titles='acquisition',
			quantitative=False,
			save_as='temp_{acquisition}.pdf'.format(**i),
			samri_style=True,
			ax_size=[16,6],
			unit_ticking=True,
			)
Ejemplo n.º 14
0
def temporal_qc_al_in_one():
	import matplotlib.pyplot as plt
	import matplotlib.ticker as plticker
	import numpy as np
	from samri.report.snr import iter_base_metrics
	from samri.plotting.timeseries import multi
	from samri.utilities import bids_substitution_iterator

	substitutions = bids_substitution_iterator(
		['testSTIM'],
		['COILphantom'],
		['CcsI'],
		'/home/chymera/ni_data/phantoms/',
		'bids',
		acquisitions=['EPIalladj','EPIcopyadjNODUM','EPIcopyadj','EPImoveGOP'],
		)

	timecourses  = iter_base_metrics('{data_dir}/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}.nii', substitutions)
	multi(timecourses,
		designs=[],
		events_dfs=[],
		subplot_titles='acquisition',
		quantitative=False,
		save_as="temp_qc.pdf",
		samri_style=True,
		ax_size=[16,6],
		unit_ticking=True,
		)
Ejemplo n.º 15
0
def temporal_qc_al_in_one():
    import matplotlib.pyplot as plt
    import matplotlib.ticker as plticker
    import numpy as np
    from samri.report.snr import iter_base_metrics
    from samri.plotting.timeseries import multi
    from samri.utilities import bids_substitution_iterator

    substitutions = bids_substitution_iterator(
        ['testSTIM'],
        ['COILphantom'],
        ['CcsI'],
        '/home/chymera/ni_data/phantoms/',
        'bids',
        acquisitions=[
            'EPIalladj', 'EPIcopyadjNODUM', 'EPIcopyadj', 'EPImoveGOP'
        ],
    )

    timecourses = iter_base_metrics(
        '{data_dir}/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}.nii',
        substitutions)
    multi(
        timecourses,
        designs=[],
        events_dfs=[],
        subplot_titles='acquisition',
        quantitative=False,
        save_as="temp_qc.pdf",
        samri_style=True,
        ax_size=[16, 6],
        unit_ticking=True,
    )
Ejemplo n.º 16
0
def dr_seed_fc():
	import numpy as np
	from os import path
	from labbookdb.report.tracking import treatment_group, append_external_identifiers
	from samri.plotting.overview import multiplot_matrix, multipage_plot
	from samri.utilities import bids_substitution_iterator
	from samri.analysis import fc

	db_path = '~/syncdata/meta.db'
	groups = treatment_group(db_path, ['cFluDW','cFluDW_'], 'cage')
	groups = append_external_identifiers(db_path, groups, ['Genotype_code'])
	all_subjects = groups['ETH/AIC'].unique()

	substitutions = bids_substitution_iterator(
		["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		all_subjects,
		["CogB",],
		"~/ni_data/ofM.dr/",
		"composite",
		acquisitions=["EPI",],
		check_file_format='~/ni_data/ofM.dr/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv.nii.gz')

	fc_results = fc.seed_based(substitutions, "~/ni_data/templates/roi/DSURQEc_dr.nii.gz", '/usr/share/mouse-brain-atlases/dsurqec_200micron_mask.nii',
		ts_file_template='~/ni_data/ofM.dr/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv.nii.gz',
		save_results="~/ni_data/ofM.dr/fc/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_zstat.nii.gz",
		)
Ejemplo n.º 17
0
def reg_cc(
    radius=5,
    autofind=True,
):
    from samri.utilities import bids_autofind
    from samri.plotting.aggregate import registration_qc
    from samri.report.registration import get_scores
    from samri.typesetting import inline_anova
    from samri.utilities import bids_substitution_iterator

    if autofind:
        path_template, substitutions = bids_autofind(
            "~/ni_data/ofM.dr/preprocessing/composite", "func")
    else:
        substitutions = bids_substitution_iterator(
            ["ofM", "ofM_aF", "ofM_cF1", "ofM_cF2", "ofM_pF"],
            [
                "4001", "4007", "4008", "4011", "5692", "5694", "5699", "5700",
                "5704", "6255", "6262"
            ],
            ["EPI_CBV_chr_longSOA", "EPI_CBV_jb_long"],
            "~/ni_data/ofM.dr/",
            "composite",
        )
        path_template = "~/ni_data/ofM.dr/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_trial-{trial}.nii.gz"

    df = get_scores(
        path_template,
        substitutions,
        "~/ni_data/templates/DSURQEc_200micron_average.nii",
        metric="CC",
        radius_or_number_of_bins=radius,
        sampling_strategy="Regular",
        sampling_percentage=0.33,
        save_as="f_reg_quality.csv",
    )

    anova_summary = registration_qc(
        df,
        value={"similarity": "Similarity"},
        group={"sub": "Subject"},
        repeat={"ses": "Session"},
        extra={"trial": "Type"},
        model="{value} ~ C({extra}) + C({repeat}) + C({group}) -1",
        save_as="registration_qc.png",
        print_model=True,
        print_anova=True,
        show=False,
    )

    subject_effect = inline_anova(anova_summary, "C(Subject)", style="python")
    print("Subject Main Effect: {}".format(subject_effect))
    session_effect = inline_anova(anova_summary,
                                  "C(Session)",
                                  style="python",
                                  max_len=2)
    print("Session Main Effect: {}".format(session_effect))
    type_effect = inline_anova(anova_summary, "C(Type)", style="python")
    print("Scan Type Main Effect: {}".format(type_effect))
Ejemplo n.º 18
0
def ctx_pattern_mask_drs_sfc():
	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

	workflow_name = 'drs_seed'
	my_roi = '~/ni_data/ofM.dr/l2/anova_ctx/anova_fstat.nii.gz'

	my_roi = roi.from_img_threshold(my_roi, 2., save_as='~/ni_data/ofM.dr/fc/{}/ctx_pattern_mask.nii.gz'.format(workflow_name))

	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}_task-{task}_cbv_zstat.nii.gz',
		)
	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}_task-{task}_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}_task-{task}_cbv_zstat.nii.gz',
		)
	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}_task-{task}_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_pattern_mask_summary.csv'.format(workflow_name))
Ejemplo n.º 19
0
def pattern_activity():
	import pandas as pd
	from samri.report import roi
	from samri.utilities import bids_substitution_iterator
	from samri.fetch.local import roi_from_atlaslabel

	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.analytic_pattern_per_session(substitutions,
		'~/ni_data/ofM.dr/bids/l2/best_responders/sessionofM/tstat1.nii.gz',
		t_file_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
		)
	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.analytic_pattern_per_session(substitutions_,
		'~/ni_data/ofM.dr/bids/l2/best_responders/sessionofM/tstat1.nii.gz',
		t_file_template='{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv_tstat.nii.gz',
		)
	df_['treatment']='Vehicle'

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

	df.to_csv('~/ni_data/ofM.dr/bids/l1/{}/pattern_summary.csv'.format(workflow_name))
Ejemplo n.º 20
0
def roi(roi_path="~/ni_data/templates/roi/f_dr_chr.nii.gz"):
	from samri.plotting import summary, timeseries

	substitutions = bids_substitution_iterator(
		["ofM","ofM_aF","ofM_cF1","ofM_cF2","ofM_pF"],
		[4007,4008,4009,4011,4012],
		["EPI_CBV_jb_long"],
		"~/ni_data/ofM.dr/",
		"composite",
		)
	timecourses, designs, stat_maps, subplot_titles = summary.roi_ts(substitutions, roi_path=roi_path,)
	timeseries.multi(timecourses, designs, stat_maps, subplot_titles, figure="timecourses")
	plt.show()
Ejemplo n.º 21
0
def roi_teaching(roi_path="~/ni_data/templates/roi/f_dr_chr.nii.gz"):
	from samri.plotting import timeseries

	design_file_template="~/ni_data/ofM.dr/l1/{l1_workdir}/_subject_session_scan_{subject}.{session}.{scan}/modelgen/run0.mat"
	substitutions = bids_substitution_iterator(
		["ofM_cF2"],
		[4008],
		["EPI_CBV_jb_long"],
		"~/ni_data/ofM.dr/"
		"composite",
		)
	timeseries.roi_based(substitutions[0], design_file_template=design_file_template, flip=True, plot_design_regressors=[0])
	plt.show()
Ejemplo n.º 22
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',
		)
Ejemplo n.º 23
0
def seed_connectivity_overview(
	template="~/ni_data/templates/DSURQEc_40micron_masked.nii.gz",
	):
	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/",
		"as_composite",
		)
	subjectdf, voxeldf = aggregate.seed_fc_rois(substitutions, "~/ni_data/templates/roi/DSURQEc_dr.nii.gz", "~/ni_data/templates/roi/DSURQEc_ctx.nii.gz",
		ts_file_template="~/ni_data/ofM.dr/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_trial-{scan}.nii.gz",
		)
Ejemplo n.º 24
0
def test_contours_substitutions():
    import itertools
    import matplotlib.pyplot as plt

    from samri.plotting.maps import contour_slices
    from samri.utilities import bids_substitution_iterator

    subjects = [
        '4007',
    ]
    contrasts = [
        #'bold',
        'cbv',
    ]

    for i in list(itertools.product(subjects, contrasts)):
        file_template = '{{data_dir}}/preprocessing/sub-{{subject}}/ses-{{session}}/func/sub-{{subject}}_ses-{{session}}_task-JogB_acq-EPIlowcov_run-{{run}}_{}.nii.gz'.format(
            i[1])

        substitutions = bids_substitution_iterator(
            sessions=[
                'ofM',
                'ofMaF',
                'ofMcF1',
                'ofMcF2',
            ],
            subjects=[i[0]],
            runs=[0, 1],
            data_dir='/usr/share/samri_bidsdata',
            validate_for_template=file_template,
        )

        cmap = plt.get_cmap('tab20').colors
        contour_slices(
            '/usr/share/mouse-brain-atlases/dsurqec_40micron.nii',
            alpha=[0.6],
            colors=cmap[::2],
            figure_title='Multi-Session Fit and Coherence Control',
            file_template=file_template,
            force_reverse_slice_order=True,
            legend_template='{session} session',
            levels_percentile=[77],
            save_as='_contours_multi_{}_{}.pdf'.format(i[0], i[1]),
            slice_spacing=0.45,
            substitutions=substitutions,
        )
Ejemplo n.º 25
0
def test_contours_substitutions():
	import itertools
	import matplotlib.pyplot as plt

	from samri.plotting.maps import contour_slices
	from samri.utilities import bids_substitution_iterator

	subjects = [
		'4007',
		]
	contrasts= [
		#'bold',
		'cbv',
		]

	for i in list(itertools.product(subjects, contrasts)):
		file_template='{{data_dir}}/preprocessing/sub-{{subject}}/ses-{{session}}/func/sub-{{subject}}_ses-{{session}}_task-JogB_acq-EPIlowcov_run-{{run}}_{}.nii.gz'.format(i[1])

		substitutions = bids_substitution_iterator(
			sessions=[
				'ofM',
				'ofMaF',
				'ofMcF1',
				'ofMcF2',
				],
			subjects=[i[0]],
			runs=[0,1],
			data_dir='/usr/share/samri_bidsdata',
			validate_for_template=file_template,
			)

		cmap = plt.get_cmap('tab20').colors
		contour_slices('/usr/share/mouse-brain-atlases/dsurqec_40micron.nii',
			alpha=[0.6],
			colors=cmap[::2],
			figure_title='Multi-Session Fit and Coherence Control',
			file_template=file_template,
			force_reverse_slice_order=True,
			legend_template='{session} session',
			levels_percentile=[77],
			save_as='_contours_multi_{}_{}.pdf'.format(i[0],i[1]),
			slice_spacing=0.45,
			substitutions=substitutions,
			)
Ejemplo n.º 26
0
def reg_cc(
    path="~/ni_data/ofM.dr/preprocessing/composite",
    template="/usr/share/mouse-brain-atlases/dsurqec_200micron.nii",
    radius=8,
    autofind=False,
    plot=False,
    save="f_reg_quality",
    metrics=['CC', 'GC', 'MI'],
):
    from samri.utilities import bids_autofind
    from samri.plotting.aggregate import registration_qc
    from samri.report.registration import iter_measure_sim
    from samri.typesetting import inline_anova
    from samri.utilities import bids_substitution_iterator

    if autofind:
        path_template, substitutions = bids_autofind(path, "func")
    else:
        path_template = "{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv.nii.gz"
        substitutions = bids_substitution_iterator(
            ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
            [
                "4001", "4007", "4008", "4011", "5692", "5694", "5699", "5700",
                "5704", "6255", "6262"
            ],
            ["CogB", "JogB"],
            "~/ni_data/ofM.dr/",
            "composite",
            acquisitions=['EPI', 'EPIlowcov'],
            validate_for_template=path_template,
        )

    for metric in metrics:
        df = iter_measure_sim(
            path_template,
            substitutions,
            template,
            metric=metric,
            radius_or_number_of_bins=radius,
            sampling_strategy="Regular",
            sampling_percentage=0.33,
            save_as=save + "_" + metric + ".csv",
        )
Ejemplo n.º 27
0
def qc_regressor(sessions, subjects, scans, workflow_name, mask,
	data_dir="~/ni_data/ofM.dr",
	save_as="",
	):
	from samri.plotting import summary, timeseries
	plt.style.use('samri_multiple-ts.conf')

	substitutions = bids_substitution_iterator(sessions,subjects,scans,data_dir,workflow_name)
	timecourses, designs, stat_maps, events_dfs, subplot_titles = summary.ts_overviews(substitutions, mask,
		ts_file_template="{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-{scan}.nii.gz",
		beta_file_template="{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{scan}_cope.nii.gz",
		design_file_template="{data_dir}/l1/{l1_workdir}/_subject_session_scan_{subject}.{session}.{scan}/modelgen/run0.mat",
		event_file_template="{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-{scan}_events.tsv",
		)

	timeseries.multi(timecourses, designs, stat_maps, events_dfs, subplot_titles,
		figure="timecourses",
		quantitative=False,
		save_as=save_as,
		)
Ejemplo n.º 28
0
def qc_regressor(sessions, subjects, scans, workflow_name, mask,
	data_dir="~/ni_data/ofM.dr",
	save_as="",
	):
	from samri.plotting import summary, timeseries
	plt.style.use('samri_multiple-ts.conf')

	substitutions = bids_substitution_iterator(sessions,subjects,scans,data_dir,workflow_name)
	timecourses, designs, stat_maps, events_dfs, subplot_titles = summary.ts_overviews(substitutions, mask,
		ts_file_template="{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_trial-{scan}.nii.gz",
		beta_file_template="{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_trial-{scan}_cope.nii.gz",
		design_file_template="{data_dir}/l1/{l1_workdir}/_subject_session_scan_{subject}.{session}.{scan}/modelgen/run0.mat",
		event_file_template="{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_trial-{scan}_events.tsv",
		)

	timeseries.multi(timecourses, designs, stat_maps, events_dfs, subplot_titles,
		figure="timecourses",
		quantitative=False,
		save_as=save_as,
		)
Ejemplo n.º 29
0
def reg_cc(
        path = "~/ni_data/ofM.dr/preprocessing/composite",
        template = "/usr/share/mouse-brain-atlases/dsurqec_200micron.nii",
        radius=8,
        autofind=False,
        plot=False,
        save = "f_reg_quality",
        metrics = ['CC','GC','MI'],
        ):
        from samri.utilities import bids_autofind
        from samri.plotting.aggregate import registration_qc
        from samri.report.registration import iter_measure_sim
        from samri.typesetting import inline_anova
        from samri.utilities import bids_substitution_iterator

        if autofind:
                path_template, substitutions = bids_autofind(path,"func")
        else:
                path_template = "{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_acq-{acquisition}_task-{task}_cbv.nii.gz"
                substitutions = bids_substitution_iterator(
                        ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
                        ["4001","4007","4008","4011","5692","5694","5699","5700","5704","6255","6262"],
                        ["CogB","JogB"],
                        "~/ni_data/ofM.dr/",
                        "composite",
                        acquisitions=['EPI','EPIlowcov'],
                        validate_for_template=path_template,
                        )


        for metric in metrics:
                df = iter_measure_sim(path_template, substitutions,
                        template,
                        metric=metric,
                        radius_or_number_of_bins=radius,
                        sampling_strategy="Regular",
                        sampling_percentage=0.33,
			save_as= save + "_" + metric +  ".csv",
                        )
Ejemplo n.º 30
0
def p_clusters(mask):
	from samri.plotting import summary, timeseries

	substitutions = bids_substitution_iterator(
		["ofM","ofM_aF","ofM_cF1","ofM_cF2","ofM_pF"],
		["4011","4012","5689","5690","5691"],
		# ["4007","4008","4011","4012","5689","5690","5691"],
		["EPI_CBV_jb_long","EPI_CBV_chr_longSOA"],
		"~/ni_data/ofM.dr/",
		"composite",
		l1_dir="dr",
		)
	timecourses, designs, stat_maps, events_dfs, subplot_titles = summary.p_filtered_ts(substitutions,
		ts_file_template="{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-{scan}.nii.gz",
		beta_file_template="{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{scan}_cope.nii.gz",
		# p_file_template="{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{scan}_pstat.nii.gz",
		p_file_template="{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_task-{scan}_pfstat.nii.gz",
		design_file_template="{data_dir}/l1/{l1_workdir}/_subject_session_scan_{subject}.{session}.{scan}/modelgen/run0.mat",
		event_file_template="{data_dir}/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-{scan}_events.tsv",
		brain_mask=mask,
		p_level=0.05,
		)
	timeseries.multi(timecourses, designs, stat_maps, events_dfs, subplot_titles, figure="timecourses")
	plt.show()
Ejemplo n.º 31
0
Archivo: roi.py Proyecto: 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))
Ejemplo n.º 32
0
def seed_connectivity_overview(
    template='/usr/share/mouse-brain-atlases/dsurqec_40micron_masked.nii',
    cut_coords=[None, [0, -4.9, -3.3]],
    plot=False,
):
    import numpy as np
    from labbookdb.report.tracking import treatment_group, append_external_identifiers
    from samri.plotting.overview import multiplot_matrix, multipage_plot

    db_path = '~/syncdata/meta.db'
    groups = treatment_group(db_path, ['cFluDW', 'cFluDW_'], 'cage')
    groups = append_external_identifiers(db_path, groups, ['Genotype_code'])
    all_subjects = groups['ETH/AIC'].unique()
    treatment = groups[(groups['Genotype_code'] == "eptg")
                       & (groups['Cage_TreatmentProtocol_code'] == "cFluDW"
                          )]['ETH/AIC'].tolist()
    no_treatment = groups[(groups['Genotype_code'] == "eptg")
                          & (groups['Cage_TreatmentProtocol_code'] == "cFluDW_"
                             )]['ETH/AIC'].tolist()
    negative_controls = groups[groups['Genotype_code'] ==
                               "epwt"]['ETH/AIC'].tolist()
    print(treatment, no_treatment, negative_controls)
    substitutions = bids_substitution_iterator(
        ["ofM", "ofM_aF", "ofM_cF1", "ofM_cF2", "ofM_pF"],
        all_subjects,
        [
            "EPI_CBV_chr_longSOA",
        ],
        "~/ni_data/ofM.dr/",
        "composite",
    )
    fc_results = fc.seed_based(
        substitutions,
        "~/ni_data/templates/roi/DSURQEc_dr_xs.nii.gz",
        '/usr/share/mouse-brain-atlases/dsurqec_200micron_mask.nii',
        ts_file_template=
        "~/ni_data/ofM.dr/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-{task}.nii.gz",
    )

    print([i['subject'] for i in fc_results])
    return
    if plot:
        multipage_plot(
            fc_results,
            treatment,
            figure_title="Chronic Fluoxetine (drinking water) Treatment Group",
            template=template,
            threshold=0.1,
            base_cut_coords=cut_coords,
            save_as="fc_treatment.pdf",
            overlays=['~/ni_data/templates/roi/DSURQEc_dr_xs.nii.gz'],
            scale=0.4,
        )
        multipage_plot(
            fc_results,
            no_treatment,
            figure_title="Chronic Fluoxetine (drinking water) Treatment Group",
            template=template,
            threshold=0.1,
            base_cut_coords=cut_coords,
            save_as="fc_no_treatment.pdf",
            overlays=['~/ni_data/templates/roi/DSURQEc_dr_xs.nii.gz'],
            scale=0.4,
        )
        multipage_plot(
            fc_results,
            negative_controls,
            figure_title="Chronic Fluoxetine (drinking water) Treatment Group",
            template=template,
            threshold=0.1,
            base_cut_coords=cut_coords,
            save_as="fc_negative_control.pdf",
            overlays=['~/ni_data/templates/roi/DSURQEc_dr_xs.nii.gz'],
            scale=0.4,
        )
Ejemplo n.º 33
0
def roi_activity(roi_mask="~/ni_data/templates/roi/DSURQEc_drp.nii.gz"):
	"""
	Create a DataFrame containing the per-session per-subject mean values for the specified ROI.
	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

	workflow_name = 'generic'
	substitutions = bids_substitution_iterator(
		["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		#["5689","5690","6456","6461"],
		['5691',"5689","5690","5700","6451","6460","6456","6461","6462"],
		#['5691',"5689","5690","5700",],
                ["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}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
		)
	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_mask,
		)
	df['treatment'] = 'Fluoxetine'
	substitutions_ = bids_substitution_iterator(
		["ofM","ofMaF","ofMcF1","ofMcF2","ofMpF"],
		#["5694","5706",'5704','6455','6459','5794'],
		["6262","6255","5694","5706",'5704','6455','6459'],
		#["6262","6255","5694","5706",'5704',],
                ["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}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
		)
	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_mask,
		)
	df_['treatment'] = 'Vehicle'
	substitutions__ = bids_substitution_iterator(
		["ofM"],
		#["5694","5706",'5704','6455','6459','5794'],
		["6530","6532","6542","6548",'6549','6552','6553','6556','6557'],
		#["6262","6255","56","5706",'5704',],
                ["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}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
		)
	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_mask,
		)
	df__['treatment'] = 'New'

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

	roi_name = splitext(basename(roi_mask))[0]
	if roi_name[-4:] == '.nii':
		roi_name = roi_name[:-4]
	df.to_csv('~/ni_data/ofM.dr/bids/l1/{}/{}.csv'.format(workflow_name, roi_name))
Ejemplo n.º 34
0
def seed_connectivity_overview(
	template="/usr/share/mouse-brain-atlases/dsurqec_40micron_masked.nii",
	cut_coords=[None,[0,-4.9,-3.3]],
	plot=False,
	):
	import numpy as np
	from labbookdb.report.tracking import treatment_group, append_external_identifiers
	from samri.plotting.overview import multiplot_matrix, multipage_plot

	db_path = '~/syncdata/meta.db'
	groups = treatment_group(db_path, ['cFluDW','cFluDW_'], 'cage')
	groups = append_external_identifiers(db_path, groups, ['Genotype_code'])
	all_subjects = groups['ETH/AIC'].unique()
	treatment = groups[
			(groups['Genotype_code']=="eptg")&
			(groups['Cage_TreatmentProtocol_code']=="cFluDW")
			]['ETH/AIC'].tolist()
	no_treatment = groups[
			(groups['Genotype_code']=="eptg")&
			(groups['Cage_TreatmentProtocol_code']=="cFluDW_")
			]['ETH/AIC'].tolist()
	negative_controls = groups[groups['Genotype_code']=="epwt"]['ETH/AIC'].tolist()
	print(treatment, no_treatment, negative_controls)
	substitutions = bids_substitution_iterator(
		["ofM","ofM_aF","ofM_cF1","ofM_cF2","ofM_pF"],
		all_subjects,
		["EPI_CBV_chr_longSOA",],
		"~/ni_data/ofM.dr/",
		"composite",
		)
	fc_results = fc.seed_based(substitutions, "~/ni_data/templates/roi/DSURQEc_dr_xs.nii.gz", "/usr/share/mouse-brain-atlases/dsurqec_200micron_mask.nii",
		ts_file_template="~/ni_data/ofM.dr/preprocessing/{preprocessing_dir}/sub-{subject}/ses-{session}/func/sub-{subject}_ses-{session}_task-{task}.nii.gz",
		)

	print([i['subject'] for i in fc_results])
	return
	if plot:
		multipage_plot(fc_results, treatment,
			figure_title="Chronic Fluoxetine (drinking water) Treatment Group",
			template=template,
			threshold=0.1,
			base_cut_coords=cut_coords,
			save_as="fc_treatment.pdf",
			overlays=['~/ni_data/templates/roi/DSURQEc_dr_xs.nii.gz'],
			scale=0.4,
			)
		multipage_plot(fc_results, no_treatment,
			figure_title="Chronic Fluoxetine (drinking water) Treatment Group",
			template=template,
			threshold=0.1,
			base_cut_coords=cut_coords,
			save_as="fc_no_treatment.pdf",
			overlays=['~/ni_data/templates/roi/DSURQEc_dr_xs.nii.gz'],
			scale=0.4,
			)
		multipage_plot(fc_results, negative_controls,
			figure_title="Chronic Fluoxetine (drinking water) Treatment Group",
			template=template,
			threshold=0.1,
			base_cut_coords=cut_coords,
			save_as="fc_negative_control.pdf",
			overlays=['~/ni_data/templates/roi/DSURQEc_dr_xs.nii.gz'],
			scale=0.4,
			)
Ejemplo n.º 35
0
            struct_registration.inputs.output_warped_image = os.path.join(
                workdir, '{subject}_{session}.nii.gz'.format(**substitution))
            struct_registration.inputs.moving_image = n4_out
            print("Running registration:\n{}".format(
                struct_registration.cmdline))
            struct_registration_run = struct_registration.run()


if __name__ == '__main__':
    # substitutions = bids_substitution_iterator(
    # 	["ofM","ofM_aF","ofM_cF1","ofM_cF2","ofM_pF"],
    # 	["4011","4012","5689","5690","5691"],
    # 	["EPI_CBV_jb_long","EPI_CBV_chr_longSOA"],
    # 	"composite")
    substitutions = bids_substitution_iterator(
        ["ofM", "ofM_aF", "ofM_cF1", "ofM_cF2", "ofM_pF"], ["5690"],
        ["TurboRARE"], "~/ni_data/ofM.dr", "composite")
    structural(
        substitutions,
        [PHASES["rigid"], PHASES["affine"], PHASES["syn"]],
        structural_file_template=
        "~/ni_data/ofM.dr/preprocessing/{preprocessing_workdir}/_subject_session_{subject}.{session}/_scan_type_{scan}/s_bru2nii/",
    )

    # structural_to_functional_per_participant_test(
    # 	subjects_participants = [{'subjfect' : 11, 'session': 'rstFMRI_with_medetadomine'}],
    # 	template = "~/GitHub/mriPipeline/templates/waxholm/WHS_SD_rat_T2star_v1.01_downsample3.nii.gz",
    # 	f_file_format = "~/GitHub/mripipeline/base/preprocessing/generic_work/_subject_session_{subject}.{session}/_scan_type_SE_EPI/f_bru2nii/",
    # 	s_file_format = "~/GitHub/mripipeline/base/preprocessing/generic_work/_subject_session_{subject}.{session}/_scan_type_T2_TurboRARE/s_bru2nii/",
    # 	)
Ejemplo n.º 36
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))
Ejemplo n.º 37
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',
    )
Ejemplo n.º 38
0
def roi_activity(roi_mask="~/ni_data/templates/roi/DSURQEc_drp.nii.gz"):
    """
	Create a DataFrame containing the per-session per-subject mean values for the specified ROI.
	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

    workflow_name = 'generic'
    substitutions = bids_substitution_iterator(
        ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
        #["5689","5690","6456","6461"],
        [
            '5691', "5689", "5690", "5700", "6451", "6460", "6456", "6461",
            "6462"
        ],
        #['5691',"5689","5690","5700",],
        [
            "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}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
    )
    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_mask,
    )
    df['treatment'] = 'Fluoxetine'
    substitutions_ = bids_substitution_iterator(
        ["ofM", "ofMaF", "ofMcF1", "ofMcF2", "ofMpF"],
        #["5694","5706",'5704','6455','6459','5794'],
        ["6262", "6255", "5694", "5706", '5704', '6455', '6459'],
        #["6262","6255","5694","5706",'5704',],
        [
            "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}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
    )
    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_mask,
    )
    df_['treatment'] = 'Vehicle'
    substitutions__ = bids_substitution_iterator(
        ["ofM"],
        #["5694","5706",'5704','6455','6459','5794'],
        [
            "6530", "6532", "6542", "6548", '6549', '6552', '6553', '6556',
            '6557'
        ],
        #["6262","6255","56","5706",'5704',],
        [
            "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}_task-{task}_acq-{acquisition}_cbv_tstat.nii.gz',
    )
    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_mask,
    )
    df__['treatment'] = 'New'

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

    roi_name = splitext(basename(roi_mask))[0]
    if roi_name[-4:] == '.nii':
        roi_name = roi_name[:-4]
    df.to_csv('~/ni_data/ofM.dr/bids/l1/{}/{}.csv'.format(
        workflow_name, roi_name))
Ejemplo n.º 39
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))
Ejemplo n.º 40
0
def pattern_activity():
    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 = 'composite'
    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=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_tstat.nii.gz',
    )
    subjectdf = summary.analytic_pattern_per_session(
        substitutions,
        '~/ni_data/ofM.dr/l2/best_responders/sessionofM/tstat1.nii.gz',
        t_file_template=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_tstat.nii.gz',
        legend_loc=2,
        figure="per-participant",
        color="#309079",
        xy_label=["Session", "Pattern Score"],
    )
    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=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_tstat.nii.gz',
    )
    subjectdf_ = summary.analytic_pattern_per_session(
        substitutions_,
        '~/ni_data/ofM.dr/l2/best_responders/sessionofM/tstat1.nii.gz',
        t_file_template=
        '{data_dir}/l1/{l1_dir}/sub-{subject}/ses-{session}/sub-{subject}_ses-{session}_acq-{acquisition}_trial-{trial}_cbv_tstat.nii.gz',
        legend_loc=2,
        figure="per-participant",
        color="#309079",
        xy_label=["Session", "Pattern Score"],
    )
    subjectdf_['treatment'] = 'Vehicle'

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

    subjectdf.to_csv(
        '~/ni_data/ofM.dr/l1/{}/pattern_summary.csv'.format(workflow_name))