Ejemplo n.º 1
0
 def modified_zscore(col):
     """Makes calulations for Modified Z-Score"""
     col = col.dropna()
     med_col = col.median()
     med_abs_dev = MAD(col)
     mod_z = 0.6745 * ((col - med_col) / med_abs_dev)
     return np.abs(mod_z)
Ejemplo n.º 2
0
def statResid(df, colResid):
    if colResid == None:
        statDict = {'Num objects': nan, 'Std': nan, 'NMAD': nan, 'Mean': nan}
    else:
        statDict = {
            'Num objects': int(len(df)),
            'Std': around(std(df[colResid]), 3),
            'NMAD': around(MAD(df[colResid]), 3),
            'Mean': around(mean(df[colResid]), 4)
        }
        if len(df) > 0:
            statDict['% outl_15'] = around(
                len(df[abs(df[colResid]) > 0.15]) / len(df) * 100, 2)
        else:
            statDict['% outl_15'] = 0
    return statDict
Ejemplo n.º 3
0
                  AVG_MEASURE,
                  color=colors[index])
    ax[0].bar(index, np.nanmean(AVG_MEASURE), alpha=0.5, color=colors[index])
    ax[0].errorbar(index,
                   np.nanmean(AVG_MEASURE),
                   yerr=SEM(AVG_MEASURE),
                   color=colors[index])

    avg.append(AVG_MEASURE)

    print('Avg Amplitude per mice at {} = {} +/- {}'.format(
        group, round(np.nanmean(AVG_MEASURE), RF),
        round(np.nanstd(AVG_MEASURE), RF)))
    print('Med Amplitude per mice at {} = {} +/- {}'.format(
        group, round(np.nanmedian(AVG_MEASURE), RF),
        round(MAD(AVG_MEASURE), RF)))

    ax[1].scatter(np.ones(len(TOTAL_MEASURE)) * index,
                  TOTAL_MEASURE,
                  color=colors[index])
    ax[1].bar(index, np.nanmean(TOTAL_MEASURE), alpha=0.5, color=colors[index])
    ax[1].errorbar(index,
                   np.nanmean(TOTAL_MEASURE),
                   yerr=SEM(TOTAL_MEASURE),
                   color=colors[index])

    total.append(TOTAL_MEASURE)

    print('Total (MEAN) currents per mice at {} = {} +/- {}'.format(
        group, round(np.nanmean(TOTAL_MEASURE), RF),
        round(np.nanstd(TOTAL_MEASURE), RF)))
Ejemplo n.º 4
0
    globalDf.append(activationDfcopy)

    #Intra group statistics
    print('---- Intra Group Statistics ----')

    print('Avg activation (%) in {}: {}+/-{}'.format(
        deepValues[0], round(activationDf[deepValues[0]].mean(), RF),
        round(activationDf[deepValues[0]].std(), RF)))

    print('Avg activation (%) in {}: {}+/-{}'.format(
        deepValues[1], round(activationDf[deepValues[1]].mean(), RF),
        round(activationDf[deepValues[1]].std(), RF)))

    print('Med activation (%) in {}: {}+/-{}'.format(
        deepValues[0], round(activationDf[deepValues[0]].median(), RF),
        round(MAD(activationDf[deepValues[0]].values), RF)))

    print('Med activation (%) in {}: {}+/-{}'.format(
        deepValues[1], round(activationDf[deepValues[1]].median(), RF),
        round(MAD(activationDf[deepValues[1]].values), RF)))

    kwTest = stats.kruskal(activationDf[deepValues[0]],
                           activationDf[deepValues[1]])

    print('Kruskal Wallis test H value = {}'.format(kwTest[0]))
    print('Kruskal Wallis test p value = {}'.format(kwTest[1]))

    if kwTest[1] <= 0.05:

        print('Post Hoc MWU test')
Ejemplo n.º 5
0
        #Extract significant measures on the whole map
        sitesToKeep = [
            x for (x, y) in zip(measures, zscores) if y >= zscoreCut
        ]

        for i in sitesToKeep:
            currents.append(i)

    #Average values
    distributions.append(currents)

    avg = np.nanmean(currents)
    std = np.nanstd(currents)

    med = np.nanmedian(currents)
    mad = MAD(currents)

    print('MEAN {} -> {} +/- {} pA'.format(group, round(avg, RF),
                                           round(std, RF)))
    print('MEDIAN {} -> {} +/- {} pA'.format(group, round(med, RF),
                                             round(mad, RF)))
    print('Min. current: {} pA'.format(min(currents)))
    print('Max. current: {} pA'.format(max(currents)))

    sn.distplot(currents, kde=True, color=colors[index], ax=ax)
    sn.distplot(currents,
                hist=True,
                kde=True,
                color=colors[index],
                ax=curves[index])
Ejemplo n.º 6
0
    PropDf = pd.DataFrame()
    PropDf['Local'] = LocalCount
    PropDf['Distal'] = DistCount

    #Append in global dataframes
    LOCAL_AMPS.append(pd.DataFrame(individualLocal))
    DISTAL_AMPS.append(pd.DataFrame(individualDist))
    LOCAL_PROP.append(pd.DataFrame(LocalCount))
    DISTAL_PROP.append(pd.DataFrame(DistCount))

    avgLocal = np.nanmean(individualLocal)
    stdLocal = np.nanstd(individualLocal)
    semLocal = SEM(individualLocal)

    medLocal = np.nanmedian(individualLocal)
    madLocal = MAD([x for x in individualLocal if math.isnan(x) == False])

    avgDist = np.nanmean(individualDist)
    stdDist = np.nanstd(individualDist)
    semDist = SEM(individualDist)

    medDist = np.nanmedian(individualDist)
    madDist = MAD([x for x in individualDist if math.isnan(x) == False])

    countLocalavg = np.nanmean(LocalCount)
    countLocalstd = np.nanstd(LocalCount)
    countLocalSEM = SEM(LocalCount)

    countLocalMed = np.nanmedian(LocalCount)
    countLocalMad = MAD([x for x in LocalCount if math.isnan(x) == False])
        
        #Append in list
        AVG_MEASURE.append(avgMeasure)
        TOTAL_MEASURE.append(totalMeasure)
        AVG_PROP.append(proportionActiveSite)
        
        
#        if group == 'LS':
#            box[0].annotate(manip,(index,avgMeasure))
#            box[1].annotate(manip,(index,totalMeasure))
#            box[2].annotate(manip,(index,proportionActiveSite))
            
     
    print ('Avg Amp+/-SD (map wise): {}+/-{}'.format(round(np.nanmean(AVG_MEASURE),2), round(np.nanstd(AVG_MEASURE),2)))
    print ('Avg activation (%)+/-SD: {}+/-{}'.format(round(np.nanmean(AVG_PROP),2), round(np.nanstd(AVG_PROP),2)))
    print ('Med activation (%)+/-SD: {}+/-{}'.format(round(np.nanmedian(AVG_PROP),2), round(MAD(AVG_PROP),2)))

            
    #Scatter plot             
    ax[0].scatter(np.ones(len(AVG_MEASURE))*index,AVG_MEASURE,color=colors[index])
    ax[0].bar(index,np.nanmean(AVG_MEASURE),alpha=0.5,color=colors[index])
    ax[0].errorbar(index,np.nanmean(AVG_MEASURE),yerr=SEM(AVG_MEASURE),color=colors[index])
    
    avg.append(AVG_MEASURE)

    ax[1].scatter(np.ones(len(TOTAL_MEASURE))*index,TOTAL_MEASURE,color=colors[index])
    ax[1].bar(index,np.nanmean(TOTAL_MEASURE),alpha=0.5,color=colors[index])        
    ax[1].errorbar(index,np.nanmean(TOTAL_MEASURE),yerr=SEM(TOTAL_MEASURE),color=colors[index])
    
    total.append(TOTAL_MEASURE)
    
Ejemplo n.º 8
0
def makePlot(data_all, probs_mean, fname, Plx_offset=0.029):
    """
    Make plots using the final probabilities in the "_probs.dat" files.
    """
    # prob_cut = min(prob_cut, probs_mean.max())
    msk_memb = probs_mean >= min(prob_cut, probs_mean.max())

    fig = plt.figure(figsize=(15, 10))
    G = gridspec.GridSpec(4, 3)
    ax1 = plt.subplot(G[0:2, 0])
    ax21 = plt.subplot(G[0:1, 1])
    ax22 = plt.subplot(G[1:2, 1])
    ax3 = plt.subplot(G[0:2, 2])
    ax4 = plt.subplot(G[2:4, 0])
    ax5 = plt.subplot(G[2:4, 1])
    ax6 = plt.subplot(G[2:4, 2])

    plt.suptitle(
        "Percentile distance used to estimate the 'eps': {}".format(perc_cut))

    data_all[col_names['plx']] += Plx_offset

    # # Reachability plot
    # space = np.arange(len(data))
    # msk = reachability < eps
    # ax1.plot(space[~msk], reachability[~msk], 'k.', alpha=0.3)
    # ax1.plot(space[msk], reachability[msk], 'g.')
    # ax1.axhline(eps, c='k', ls='-.', label="eps={:.3f}".format(eps))
    # ax1.set_ylabel('Reachability (epsilon distance)')
    # ax1.set_title('Reachability Plot (min_samples={})'.format(
    #     min_samples))
    # ymin, ymax = max(0, eps - eps * .5), min(3. * eps, max(reachability))
    # ax1.set_xlim(0, max(space[reachability < ymax]))
    # ax1.set_ylim(ymin, ymax)
    # ax1.legend()

    ax1.hist(probs_mean, alpha=.5)
    ax1.axvline(prob_cut, c='g', zorder=6)
    ax12 = ax1.twinx()
    ax12.yaxis.set_minor_locator(AutoMinorLocator(4))
    xx, yy = np.linspace(probs_mean.min(), probs_mean.max(), 100), []
    for pr in xx:
        yy.append((probs_mean >= pr).sum())
    ax12.plot(xx,
              yy,
              c='r',
              lw=3,
              label=r"$P_{{cut}}$={:.2f}".format(prob_cut))
    ax12.set_ylabel(r'$N_{stars}$')
    # ax12.set_yscale('log')
    # ax12.set_yticks([])
    ax1.set_xlabel('Probabilities')
    ax1.set_ylabel(r'$\log (N)$')
    ax1.set_yscale('log')
    plt.legend()

    plx_prob, pmRA_prob, pmDE_prob = [], [], []
    for pp in np.arange(.05, .95, .01):
        msk = probs_mean >= pp
        plx_prob.append([
            pp, data_all[col_names['plx']][msk].mean(),
            data_all[col_names['plx']][msk].std()
        ])
        pmRA_prob.append([
            pp, data_all[col_names['pmra']][msk].mean(),
            data_all[col_names['pmra']][msk].std()
        ])
        pmDE_prob.append([
            pp, data_all[col_names['pmde']][msk].mean(),
            data_all[col_names['pmde']][msk].std()
        ])

    plx_prob, pmRA_prob, pmDE_prob = [
        np.array(_).T for _ in (plx_prob, pmRA_prob, pmDE_prob)
    ]

    ax21.plot(pmDE_prob[0], pmDE_prob[1], c='b', label='pmDE')
    ax21.fill_between(pmDE_prob[0],
                      pmDE_prob[1] - pmDE_prob[2],
                      pmDE_prob[1] + pmDE_prob[2],
                      color='blue',
                      alpha=0.1)
    ax21.axvline(prob_cut, c='g', zorder=6)
    ax21.set_xlabel(r'$P_{cut}$')
    ax21.set_ylabel(r'$\mu_{\delta}$ [mas/yr]')

    ax22.plot(pmRA_prob[0], pmRA_prob[1], c='r', label='pmRA')
    ax22.fill_between(pmRA_prob[0],
                      pmRA_prob[1] - pmRA_prob[2],
                      pmRA_prob[1] + pmRA_prob[2],
                      color='red',
                      alpha=0.1)
    ax22.axvline(prob_cut, c='g', zorder=6)
    ax22.set_ylabel(r'$\mu_{\alpha} \cos \delta$ [mas/yr]')
    ax22.set_xlabel(r'$P_{cut}$')

    ax3.plot(plx_prob[0], plx_prob[1])
    ax3.fill_between(plx_prob[0],
                     plx_prob[1] - plx_prob[2],
                     plx_prob[1] + plx_prob[2],
                     color='k',
                     alpha=0.1)
    ax3.axvline(prob_cut, c='g', zorder=6)
    ax3.set_ylabel(r'$Plx$')
    ax3.set_xlabel(r'$P_{cut}$')

    ax4.set_title("N={}".format(len(data_all[col_names['ra']][msk_memb])))
    ax4.scatter(data_all[col_names['ra']][msk_memb],
                data_all[col_names['dec']][msk_memb],
                marker='o',
                edgecolor='w',
                lw=.3,
                zorder=5)
    ax4.plot(data_all[col_names['ra']][~msk_memb],
             data_all[col_names['dec']][~msk_memb],
             'k.',
             alpha=0.3,
             zorder=1)
    ax4.set_xlabel('RA')
    ax4.set_ylabel('DE')
    ax4.set_xlim(max(data_all[col_names['ra']]),
                 min(data_all[col_names['ra']]))
    ax4.set_ylim(min(data_all[col_names['dec']]),
                 max(data_all[col_names['dec']]))

    # PMs plot
    pmRA_mean = (
        data_all[col_names['pmra']][msk_memb] /
        np.cos(np.deg2rad(data_all[col_names['pmde']][msk_memb]))).mean()
    pmDE_mean = data_all[col_names['pmde']][msk_memb].mean()
    ax5.set_title(r"$(\mu_{\alpha}, \mu_{\delta})=$" +
                  "({:.3f}, {:.3f})".format(pmRA_mean, pmDE_mean))
    ax5.scatter(data_all[col_names['pmra']][msk_memb],
                data_all[col_names['pmde']][msk_memb],
                marker='.',
                edgecolor='w',
                lw=.1,
                alpha=.7,
                zorder=5)
    ax5.plot(data_all[col_names['pmra']][~msk_memb],
             data_all[col_names['pmde']][~msk_memb],
             'k+',
             alpha=0.3,
             zorder=1)
    ax5.set_xlabel(r'$\mu_{\alpha} \cos \delta$ [mas/yr]')
    ax5.set_ylabel(r'$\mu_{\delta}$ [mas/yr]')
    xmin, xmax = np.percentile(data_all[col_names['pmra']][~msk_memb],
                               (25, 75))
    ymin, ymax = np.percentile(data_all[col_names['pmde']][~msk_memb],
                               (25, 75))
    pmra_MAD = MAD(data_all[col_names['pmra']][msk_memb], scale='normal')
    pmde_MAD = MAD(data_all[col_names['pmde']][msk_memb], scale='normal')
    xclmin = data_all[col_names['pmra']][msk_memb].mean() - 5. + pmra_MAD
    xclmax = data_all[col_names['pmra']][msk_memb].mean() + 5. + pmra_MAD
    yclmin = data_all[col_names['pmde']][msk_memb].mean() - 5. + pmde_MAD
    yclmax = data_all[col_names['pmde']][msk_memb].mean() + 5. + pmde_MAD
    ax5.set_xlim(max(xmax, xclmax), min(xmin, xclmin))
    ax5.set_ylim(min(ymin, yclmin), max(ymax, yclmax))

    # Plxs plot
    ax6.set_title("Plx offset: +{}".format(Plx_offset))
    xmin = np.percentile(data_all[col_names['plx']][msk_memb], 1) -\
        3. * data_all[col_names['plx']][msk_memb].std()
    xmax = np.percentile(data_all[col_names['plx']][msk_memb], 95) +\
        3. * data_all[col_names['plx']][msk_memb].std()
    msk1 = np.logical_and.reduce([(data_all[col_names['plx']] > -2),
                                  (data_all[col_names['plx']] < 4),
                                  (msk_memb)])
    msk2 = np.logical_and.reduce([(data_all[col_names['plx']] > -2),
                                  (data_all[col_names['plx']] < 4),
                                  (~msk_memb)])
    ax6.hist(data_all[col_names['plx']][msk1],
             20,
             density=True,
             alpha=.7,
             zorder=5)
    ax6.hist(data_all[col_names['plx']][msk2],
             75,
             color='k',
             alpha=0.3,
             density=True,
             zorder=1)
    plx_mean = data_all[col_names['plx']][msk_memb].mean()
    plx_16, plx_84 = np.percentile(data_all[col_names['plx']][msk_memb],
                                   (16, 84))
    ax6.axvline(plx_mean,
                c='r',
                label=r"$Plx_{{mean}}={:.3f}_{{{:.3f}}}^{{{:.3f}}}$".format(
                    plx_mean, plx_16, plx_84),
                zorder=6)
    ax6.axvline(plx_16, c='orange', ls='--', zorder=6)
    ax6.axvline(plx_84, c='orange', ls='--', zorder=6)
    ax6.set_xlabel('Plx')
    ax6.set_xlim(xmin, xmax)
    ax6.legend()

    file_out = 'output/' + fname + '.png'
    fig.tight_layout()
    plt.savefig(file_out, dpi=150, bbox_inches='tight')
    plt.close()