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)
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)
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))
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
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()
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
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)))
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', )
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]
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"], }, )
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))
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', )
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))
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))
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