def plot_abide_stripplots(inputs, figsize=(15, 2), out_file=None, rating_label='rater_1', dpi=100): import seaborn as sn sn.set(style="whitegrid") mdata = [] pp_cols = [] for X, Y, sitename in inputs: sitedata, cols = read_dataset(X, Y, rate_label=rating_label, binarize=False, site_name=sitename) sitedata['database'] = [sitename] * len(sitedata) if sitename == 'DS030': sitedata['site'] = [sitename] * len(sitedata) mdata.append(sitedata) pp_cols.append(cols) mdata = pd.concat(mdata) pp_cols = pp_cols[0] for col in mdata.columns.ravel().tolist(): if col.startswith('rater_') and col != rating_label: del mdata[col] mdata = mdata.loc[mdata[rating_label].notnull()] for col in ['size_x', 'size_y', 'size_z', 'spacing_x', 'spacing_y', 'spacing_z']: del mdata[col] try: pp_cols.remove(col) except ValueError: pass zscored = zscore_dataset(mdata, excl_columns=[rating_label]) sites = list(set(mdata.site.values.ravel())) nsites = len(sites) # palette = ['dodgerblue', 'darkorange'] palette = ['limegreen', 'tomato'] if len(set(mdata[[rating_label]].values.ravel().tolist())) == 3: palette = ['tomato', 'gold', 'limegreen'] # pp_cols = pp_cols[:5] nrows = len(pp_cols) fig = plt.figure(figsize=(figsize[0], figsize[1] * nrows)) # ncols = 2 * (nsites - 1) + 2 gs = GridSpec(nrows, 4, wspace=0.02) gs.set_width_ratios([nsites, len(inputs), len(inputs), nsites]) for i, colname in enumerate(pp_cols): ax_nzs = plt.subplot(gs[i, 0]) axg_nzs = plt.subplot(gs[i, 1]) axg_zsc = plt.subplot(gs[i, 2]) ax_zsc = plt.subplot(gs[i, 3]) # plots sn.stripplot(x='site', y=colname, data=mdata, hue=rating_label, jitter=0.18, alpha=.6, split=True, palette=palette, ax=ax_nzs) sn.stripplot(x='site', y=colname, data=zscored, hue=rating_label, jitter=0.18, alpha=.6, split=True, palette=palette, ax=ax_zsc) sn.stripplot(x='database', y=colname, data=mdata, hue=rating_label, jitter=0.18, alpha=.6, split=True, palette=palette, ax=axg_nzs) sn.stripplot(x='database', y=colname, data=zscored, hue=rating_label, jitter=0.18, alpha=.6, split=True, palette=palette, ax=axg_zsc) ax_nzs.legend_.remove() ax_zsc.legend_.remove() axg_nzs.legend_.remove() axg_zsc.legend_.remove() if i == nrows - 1: ax_nzs.set_xticklabels(ax_nzs.xaxis.get_majorticklabels(), rotation=80) ax_zsc.set_xticklabels(ax_zsc.xaxis.get_majorticklabels(), rotation=80) axg_nzs.set_xticklabels(axg_nzs.xaxis.get_majorticklabels(), rotation=80) axg_zsc.set_xticklabels(axg_zsc.xaxis.get_majorticklabels(), rotation=80) else: ax_nzs.set_xticklabels([]) ax_zsc.set_xticklabels([]) axg_nzs.set_xticklabels([]) axg_zsc.set_xticklabels([]) ax_nzs.set_xlabel('', visible=False) ax_zsc.set_xlabel('', visible=False) ax_zsc.set_ylabel('', visible=False) ax_zsc.yaxis.tick_right() axg_nzs.set_yticklabels([]) axg_nzs.set_xlabel('', visible=False) axg_nzs.set_ylabel('', visible=False) axg_zsc.set_yticklabels([]) axg_zsc.set_xlabel('', visible=False) axg_zsc.set_ylabel('', visible=False) for yt in ax_nzs.yaxis.get_major_ticks()[1:-1]: yt.label1.set_visible(False) for yt in axg_nzs.yaxis.get_major_ticks()[1:-1]: yt.label1.set_visible(False) for yt in zip(ax_zsc.yaxis.get_majorticklabels(), axg_zsc.yaxis.get_majorticklabels()): yt[0].set_visible(False) yt[1].set_visible(False) if out_file is None: out_file = 'stripplot.svg' fname, ext = op.splitext(out_file) if ext[1:] not in ['pdf', 'svg', 'png']: ext = '.svg' out_file = fname + '.svg' fig.savefig(op.abspath(out_file), format=ext[1:], bbox_inches='tight', pad_inches=0, dpi=dpi) return fig
def plot_abide_stripplots(inputs, figsize=(15, 2), out_file=None, rating_label='rater_1', dpi=100): import seaborn as sn from ..classifier.helper import FEATURE_NORM sn.set(style="whitegrid") mdata = [] pp_cols = [] for X, Y, sitename in inputs: sitedata, cols = read_dataset(X, Y, rate_label=rating_label, binarize=False, site_name=sitename) sitedata['database'] = [sitename] * len(sitedata) if sitename == 'DS030': sitedata['site'] = [sitename] * len(sitedata) mdata.append(sitedata) pp_cols.append(cols) mdata = pd.concat(mdata) pp_cols = pp_cols[0] for col in mdata.columns.ravel().tolist(): if col.startswith('rater_') and col != rating_label: del mdata[col] mdata = mdata.loc[mdata[rating_label].notnull()] for col in [ 'size_x', 'size_y', 'size_z', 'spacing_x', 'spacing_y', 'spacing_z' ]: del mdata[col] try: pp_cols.remove(col) except ValueError: pass zscored = BatchRobustScaler(by='site', columns=FEATURE_NORM).fit_transform(mdata) sites = list(set(mdata.site.values.ravel())) nsites = len(sites) # palette = ['dodgerblue', 'darkorange'] palette = ['limegreen', 'tomato'] if len(set(mdata[[rating_label]].values.ravel().tolist())) == 3: palette = ['tomato', 'gold', 'limegreen'] # pp_cols = pp_cols[:5] nrows = len(pp_cols) fig = plt.figure(figsize=(figsize[0], figsize[1] * nrows)) # ncols = 2 * (nsites - 1) + 2 gs = GridSpec(nrows, 4, wspace=0.02) gs.set_width_ratios([nsites, len(inputs), len(inputs), nsites]) for i, colname in enumerate(pp_cols): ax_nzs = plt.subplot(gs[i, 0]) axg_nzs = plt.subplot(gs[i, 1]) axg_zsc = plt.subplot(gs[i, 2]) ax_zsc = plt.subplot(gs[i, 3]) # plots sn.stripplot(x='site', y=colname, data=mdata, hue=rating_label, jitter=0.18, alpha=.6, split=True, palette=palette, ax=ax_nzs) sn.stripplot(x='site', y=colname, data=zscored, hue=rating_label, jitter=0.18, alpha=.6, split=True, palette=palette, ax=ax_zsc) sn.stripplot(x='database', y=colname, data=mdata, hue=rating_label, jitter=0.18, alpha=.6, split=True, palette=palette, ax=axg_nzs) sn.stripplot(x='database', y=colname, data=zscored, hue=rating_label, jitter=0.18, alpha=.6, split=True, palette=palette, ax=axg_zsc) ax_nzs.legend_.remove() ax_zsc.legend_.remove() axg_nzs.legend_.remove() axg_zsc.legend_.remove() if i == nrows - 1: ax_nzs.set_xticklabels(ax_nzs.xaxis.get_majorticklabels(), rotation=80) ax_zsc.set_xticklabels(ax_zsc.xaxis.get_majorticklabels(), rotation=80) axg_nzs.set_xticklabels(axg_nzs.xaxis.get_majorticklabels(), rotation=80) axg_zsc.set_xticklabels(axg_zsc.xaxis.get_majorticklabels(), rotation=80) else: ax_nzs.set_xticklabels([]) ax_zsc.set_xticklabels([]) axg_nzs.set_xticklabels([]) axg_zsc.set_xticklabels([]) ax_nzs.set_xlabel('', visible=False) ax_zsc.set_xlabel('', visible=False) ax_zsc.set_ylabel('', visible=False) ax_zsc.yaxis.tick_right() axg_nzs.set_yticklabels([]) axg_nzs.set_xlabel('', visible=False) axg_nzs.set_ylabel('', visible=False) axg_zsc.set_yticklabels([]) axg_zsc.set_xlabel('', visible=False) axg_zsc.set_ylabel('', visible=False) for yt in ax_nzs.yaxis.get_major_ticks()[1:-1]: yt.label1.set_visible(False) for yt in axg_nzs.yaxis.get_major_ticks()[1:-1]: yt.label1.set_visible(False) for yt in zip(ax_zsc.yaxis.get_majorticklabels(), axg_zsc.yaxis.get_majorticklabels()): yt[0].set_visible(False) yt[1].set_visible(False) if out_file is None: out_file = 'stripplot.svg' fname, ext = op.splitext(out_file) if ext[1:] not in ['pdf', 'svg', 'png']: ext = '.svg' out_file = fname + '.svg' fig.savefig(op.abspath(out_file), format=ext[1:], bbox_inches='tight', pad_inches=0, dpi=dpi) return fig
def plot_abide_stripplots(X, Y, figsize=(15, 80), out_file=None, rating_label='rater_1'): import seaborn as sn sn.set(style="whitegrid") mdata, pp_cols = read_dataset(X, Y, rate_label=rating_label) for col in mdata.columns.ravel().tolist(): if col.startswith('rater_') and col != rating_label: del mdata[col] mdata = mdata.loc[mdata[rating_label].notnull()] mdata['database'] = ['ABIDE'] * len(mdata.site.values.ravel()) mdata['rate'] = [''] * len(mdata[rating_label]) mdata.loc[mdata[rating_label] == 0, 'rate'] = 'OK' mdata.loc[mdata[rating_label] == 1, 'rate'] = 'exclude' for col in [ rating_label, 'size_x', 'size_y', 'size_z', 'spacing_x', 'spacing_y', 'spacing_z' ]: del mdata[col] try: pp_cols.remove(col) except ValueError: pass zscored = zscore_dataset(mdata, excl_columns=['rate']) sites = list(set(mdata.site.values.ravel())) nsites = len(sites) palette = ['limegreen', 'tomato'] # palette = ['dodgerblue', 'darkorange'] nrows = len(pp_cols) fig = plt.figure(figsize=figsize) # ncols = 2 * (nsites - 1) + 2 gs = GridSpec(nrows, 4, wspace=0.02) gs.set_width_ratios([nsites, 1, 1, nsites]) for i, colname in enumerate(pp_cols): ax_nzs = plt.subplot(gs[i, 0]) axg_nzs = plt.subplot(gs[i, 1]) axg_zsc = plt.subplot(gs[i, 2]) ax_zsc = plt.subplot(gs[i, 3]) # plots sn.stripplot(x='site', y=colname, data=mdata, hue='rate', jitter=0.18, alpha=.4, split=True, palette=palette, ax=ax_nzs) sn.stripplot(x='site', y=colname, data=zscored, hue='rate', jitter=0.18, alpha=.4, split=True, palette=palette, ax=ax_zsc) sn.stripplot(x='database', y=colname, data=mdata, hue='rate', jitter=0.18, alpha=.4, split=True, palette=palette, ax=axg_nzs) sn.stripplot(x='database', y=colname, data=zscored, hue='rate', jitter=0.18, alpha=.4, split=True, palette=palette, ax=axg_zsc) ax_nzs.legend_.remove() ax_zsc.legend_.remove() axg_nzs.legend_.remove() axg_zsc.legend_.remove() if i == nrows - 1: ax_nzs.set_xticklabels(ax_nzs.xaxis.get_majorticklabels(), rotation=80) ax_zsc.set_xticklabels(ax_zsc.xaxis.get_majorticklabels(), rotation=80) axg_nzs.set_xticklabels(axg_nzs.xaxis.get_majorticklabels(), rotation=80) axg_zsc.set_xticklabels(axg_zsc.xaxis.get_majorticklabels(), rotation=80) else: ax_nzs.set_xticklabels([]) ax_zsc.set_xticklabels([]) axg_nzs.set_xticklabels([]) axg_zsc.set_xticklabels([]) ax_nzs.set_xlabel('', visible=False) ax_zsc.set_xlabel('', visible=False) ax_zsc.set_ylabel('', visible=False) ax_zsc.yaxis.tick_right() axg_nzs.set_yticklabels([]) axg_nzs.set_xlabel('', visible=False) axg_nzs.set_ylabel('', visible=False) axg_zsc.set_yticklabels([]) axg_zsc.set_xlabel('', visible=False) axg_zsc.set_ylabel('', visible=False) for yt in ax_nzs.yaxis.get_major_ticks()[1:-1]: yt.label1.set_visible(False) for yt in axg_nzs.yaxis.get_major_ticks()[1:-1]: yt.label1.set_visible(False) for yt in zip(ax_zsc.yaxis.get_majorticklabels(), axg_zsc.yaxis.get_majorticklabels()): yt[0].set_visible(False) yt[1].set_visible(False) if out_file is None: out_file = 'stripplot.svg' fname, ext = op.splitext(out_file) if ext[1:] not in ['pdf', 'svg', 'png']: ext = '.svg' out_file = fname + '.svg' fig.savefig(op.abspath(out_file), format=ext[1:], bbox_inches='tight', pad_inches=0, dpi=300) return fig