def plot_batch(df, batch):

    # Plot 50uM.

    df_50uM = df[df.conc == -3]

    if batch.startswith('Ala'):
        df_dmso = df_50uM[df_50uM.comp == 'DMSO']
        for comp in [ 'K252a', 'SU11652', 'TG101209', 'RIF', 'IKK16' ]:
            df_comp = df_50uM[df_50uM.comp == comp]
            t, p_2side = ss.ttest_ind(df_comp.fluo, df_dmso.fluo)
            p_1side = p_2side / 2. if t < 0 else 1. - (p_2side / 2.)
            print('{}, one-sided t-test P = {}, n = {}'
                  .format(comp, p_1side, len(df_comp)))

    if batch == 'AlaA':
        order = [ 'K252a', 'SU11652', 'TG101209', 'RIF', 'DMSO' ]
    elif batch == 'AlaB':
        order = [ 'IKK16', 'K252a', 'RIF', 'DMSO' ]
    else:
        return

    plt.figure()
    sns.barplot(x='comp', y='fluo', data=df_50uM, ci=95, dodge=False,
                hue='control', palette=sns.color_palette("RdBu_r", 7),
                order=order, capsize=0.2, errcolor='#888888',)
    sns.swarmplot(x='comp', y='fluo', data=df_50uM, color='black',
                  order=order)
    #plt.ylim([ 10, 300000 ])
    if not batch.startswith('Ala'):
        plt.yscale('log')
    plt.savefig('figures/tb_culture_50uM_{}.svg'.format(batch))
    plt.close()

    # Plot dose-response.

    comps = sorted(set(df.comp))
    concentrations = sorted(set(df.conc))

    plt.figure(figsize=(24, 6))
    for cidx, comp in enumerate(order):
        df_subset = df[df.comp == comp]

        plt.subplot(1, 5, cidx + 1)
        sns.lineplot(x='conc', y='fluo', data=df_subset, ci=95,)
        sns.scatterplot(x='conc', y='fluo', data=df_subset,
                        color='black',)
        plt.title(comp)
        if batch.startswith('Ala'):
            plt.ylim([ 0., 1.3 ])
        else:
            plt.ylim([ 10, 1000000 ])
            plt.yscale('log')
        plt.xticks(list(range(-3, -6, -1)),
                   [ '50', '25', '10', ])#'1', '0.1' ])

    plt.savefig('figures/tb_culture_{}.svg'.format(batch))
    plt.close()
def expo(args):
    def filename_fn(args):
        rs = 'N({}, {})'.format(args.radius, args.sigma)
        return rs

    def fpath(fname):
        _fpath = os.path.join(args.output_dir, fname)
        return _fpath

    length = 5 * args.radius
    linspace, data = SyntheticDataset.grid_data(args.num_points, length=length)

    #    loader = dataset[args.dataset](args)
    #    trainData = loader.train
    #    for batch_idx, samples in enumerate(trainData):
    #        data,labels = samples[DatasetType.InD]

    plt.xlim(-1 * length, length)
    plt.ylim(-1 * length, length)

    for scale in tqdm([1, 2, 3, 4]):
        sigma = scale * args.sigma

        scale_args = deepcopy(args)
        scale_args.sigma = sigma
        fname = filename_fn(scale_args)

        checkpoint_dir = os.path.join(args.work_dir, 'checkpoints')
        saver = Saver(checkpoint_dir)  # makes directory if already not present
        payload = saver.load(hash_args(
            scale_args))  #hash_args(scale_args) generates the hex string

        def run_and_save(scale_args):
            export = main(scale_args)  #Model creation??

            payload = export['model']
            saver.save(hash_args(scale_args), payload)
            return payload

        export = payload or run_and_save(scale_args)

        with torch.no_grad():
            scores = inference(export, data)
            np_x = data.cpu().numpy()
            for key in scores:
                score = scores[key].cpu().numpy()
                plot_pcolormesh(np_x, linspace, score)
                score_fname = '{}_{}'.format(fname, key)
                plt.title(score_fname)
                flush_plot(plt, fpath(score_fname) + '.png')
def plot_values(df, score_fn):
    models = ['mlper1', 'sparsehybrid', 'gp', 'real']

    plt.figure(figsize=(10, 4))

    for midx, model in enumerate(models):
        if model == 'gp':
            color = '#3e5c71'
        elif model == 'sparsehybrid':
            color = '#2d574e'
        elif model == 'mlper1':
            color = '#a12424'
        elif model == 'real':
            color = '#A9A9A9'
        else:
            raise ValueError('Invalid model'.format(model))

        plt.subplot(1, len(models), midx + 1)
        df_subset = df[df.model == model]
        compounds = np.array(df_subset.compound_)
        if model == 'real':
            order = sorted(compounds)
        else:
            order = compounds[np.argsort(-df_subset.affinity)]
        sns.barplot(data=df_subset,
                    x='compound_',
                    y='affinity',
                    color=color,
                    order=order)
        if score_fn == 'rdock':
            plt.ylim([0, -40])
        else:
            plt.ylim([0, -12])
        plt.xticks(rotation=45)

    plt.savefig('figures/design_docking_{}.svg'.format(score_fn))
    plt.close()

    print('Score function: {}'.format(score_fn))
    print('GP vs MLP: {}'.format(
        ttest_ind(
            df[df.model == 'gp'].affinity,
            df[df.model == 'mlper1'].affinity,
        )))
    print('Hybrid vs MLP: {}'.format(
        ttest_ind(
            df[df.model == 'sparsehybrid'].affinity,
            df[df.model == 'mlper1'].affinity,
        )))
    print('')
                    continue
                seen.add(zinc)
                order_list.append((order, Kd))

            order_list = [
                order for order, _ in sorted(order_list, key=lambda x: x[1])
            ]

            plt.subplot(1, 3, bidx + 1)
            sns.barplot(
                x='order',
                y='Kdpoint',
                data=df_subset,
                color=palette[bidx],
                order=order_list,
                ci=95,
                capsize=0.4,
                errcolor='#888888',
            )
            sns.swarmplot(
                x='order',
                y='Kdpoint',
                data=df_subset,
                color='black',
                order=order_list,
            )
            plt.ylim([-100, 10100])

        plt.savefig('figures/prediction_barplot_{}.svg'.format(model))
        plt.close()
            fname = 'target/log/train_davis2011kinase_{}.log'.format(model)
            data += parse_log(model, fname)

    df = pd.DataFrame(data, columns=[
        'model', 'metric', 'quadrant', 'value', 'uncertainty',
    ])

    quadrants = sorted(set(df.quadrant))
    metrics = sorted(set(df.metric))

    for quadrant in quadrants:
        for metric in metrics:

            df_subset = df[(df.metric == metric) &
                           (df.quadrant == quadrant)]

            plt.figure()
            sns.barplot(x='model', y='value', data=df_subset, ci=None,
                        order=models, hue='uncertainty', dodge=False,
                        palette=sns.color_palette("RdBu", n_colors=8))
            sns.swarmplot(x='model', y='value', data=df_subset, color='black',
                          order=models)
            if (metric == 'Pearson rho' or metric == 'Spearman r') \
               and quadrant != 'unknown_all':
                plt.ylim([ -0.05, 0.7 ])
            if metric == 'MSE' and quadrant != 'unknown_all':
                plt.ylim([ -0.01e7, 3e7 ])
            plt.savefig('figures/benchmark_cv_{}_{}.svg'
                        .format(metric, quadrant))
            plt.close()
            loads_d = []
            for i in loads:
                loads_d.append(get_num_dict(i))

            chord_loads.append(get_50_percent(loads_d[0]))
            vserver_loads.append(get_50_percent(loads_d[1]))

            x_values.append(next(get_numbers(f)))

    plt.figure().set_size_inches(6.5,5)
    plt.xlabel("#Nodes")
    plt.ylabel("% of nodes storing 50% of data")

    from matplotlib.ticker import EngFormatter
    formatter = EngFormatter(places=0)
    plt.gca().xaxis.set_major_formatter(formatter)

    plt.ylim(0,0.5)
    plt.xlim(0,1000000)

    out_file = "intro_lb_chord.pdf"

    d1 = prepare(x_values,chord_loads)
    d2 = prepare(x_values,vserver_loads)

    d1['label'] = 'Neighbor Replication'
    d1['linestyle'] = 'dashed'
    d2['label'] = "Virtual Servers"

    plot(out_file,d1,d2)