Ejemplo n.º 1
0
def _plotDifferenceIndividualVsJoined(individuals, joined, title='800nm', sigma=3,
                                      requirementFWHM=10.8, requirementE=0.156, requirementR2=0.002,
                                      truthx=None, truthy=None, FWHMlims=(7.5, 10.3)):
    """
    Simple plot
    """
    ind = []
    for file in g.glob(individuals):
        print file
        ind.append(fileIO.cPicleRead(file))

    join = fileIO.cPicleRead(joined)
    xtmp = np.arange(len(ind)) + 1

    #plot FWHM
    fig = plt.figure()
    ax1 = fig.add_subplot(211)
    ax2 = fig.add_subplot(212)
    fig.subplots_adjust(hspace=0, top=0.93, bottom=0.17, left=0.11, right=0.98)
    ax1.set_title(title)

    ax1.errorbar(xtmp, [_FWHMGauss(data['wx']) for data in ind], yerr=[sigma*_FWHMGauss(data['wxerr']) for data in ind],
                 fmt='o')
    ax1.errorbar(xtmp[-1]+1, _FWHMGauss(join['wx']), yerr=sigma*_FWHMGauss(join['wxerr']), fmt='s')
    ax2.errorbar(xtmp, [_FWHMGauss(data['wy']) for data in ind], yerr=[sigma*_FWHMGauss(data['wyerr']) for data in ind],
                 fmt='o')
    ax2.errorbar(xtmp[-1]+1, _FWHMGauss(join['wy']), yerr=sigma*_FWHMGauss(join['wyerr']), fmt='s')

    #simulations
    if truthx is not None:
        ax1.axhline(y=_FWHMGauss(truthx), label='Truth', c='g')
    if truthy is not None:
        ax2.axhline(y=_FWHMGauss(truthy), label='Truth', c='g')

    #requirements
    if requirementFWHM is not None:
        ax1.axhline(y=requirementFWHM, label='Requirement (800nm)', c='r')
        ax2.axhline(y=requirementFWHM, label='Requirement (800nm)', c='r')

    plt.sca(ax1)
    plt.xticks(visible=False)
    plt.sca(ax2)

    ltmp = np.hstack((xtmp, xtmp[-1]+1))
    plt.xticks(ltmp, ['Individual %i' % x for x in ltmp[:-1]] + ['Joint',], rotation=45)

    ax1.set_ylim(*FWHMlims)
    ax2.set_ylim(*FWHMlims)
    ax1.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)
    ax2.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)

    ax1.set_ylabel(r'FWHM$_{X} \quad [\mu$m$]$')
    ax2.set_ylabel(r'FWHM$_{Y} \quad [\mu$m$]$')
    ax1.legend(shadow=True, fancybox=True)
    plt.savefig('IndividualVsJoinedFWHM%s.pdf' % title)
    plt.close()

    #plot R2 and ellipticity
    fig = plt.figure()
    ax1 = fig.add_subplot(211)
    ax2 = fig.add_subplot(212)
    fig.subplots_adjust(hspace=0, top=0.93, bottom=0.17, left=0.11, right=0.98)
    ax1.set_title(title)

    ax1.errorbar(xtmp, [_R2FromGaussian(data['wx'], data['wy'])*1e3 for data in ind],
                 yerr=[sigma*1.e3*_R2FromGaussian(data['wxerr'], data['wyerr']) for data in ind], fmt='o')
    ax1.errorbar(xtmp[-1]+1, _R2FromGaussian(join['wx'], join['wy'])*1e3,
                 yerr=sigma*1.e3*_R2FromGaussian(join['wxerr'], join['wyerr']), fmt='s')

    ax2.errorbar(xtmp, [_ellipticityFromGaussian(data['wy'], data['wx']) for data in ind],
                 yerr=[_ellipticityFromGaussian(data['wyerr'], data['wxerr'])/30. for data in ind], fmt='o')
    ax2.errorbar(xtmp[-1]+1, _ellipticityFromGaussian(join['wy'], join['wx']),
                 yerr=_ellipticityFromGaussian(join['wyerr'], join['wxerr'])/30., fmt='s')

    if requirementE is not None:
        ax2.axhline(y=requirementE, label='Requirement (800nm)', c='r')
    if requirementR2 is not None:
        ax1.axhline(y=requirementR2*1e3, label='Requirement (800nm)', c='r')

    #simulations
    if truthx and truthy is not None:
        ax2.axhline(y=_ellipticityFromGaussian(truthx, truthy), label='Truth', c='g')
        ax1.axhline(y= _R2FromGaussian(truthx, truthy)*1e3, label='Truth', c='g')

    plt.sca(ax1)
    plt.xticks(visible=False)
    plt.sca(ax2)
    ltmp = np.hstack((xtmp, xtmp[-1]+1))
    plt.xticks(ltmp, ['Individual%i' % x for x in ltmp[:-1]] + ['Joint',], rotation=45)

    ax1.set_ylim(0.001*1e3, 0.004*1e3)
    ax2.set_ylim(0., 0.33)
    ax1.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)
    ax2.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)

    ax1.set_ylabel(r'$R^{2}$ [mas$^{2}$]')
    ax2.set_ylabel('ellipticity')
    ax1.legend(shadow=True, fancybox=True)
    plt.savefig('IndividualVsJoinedR2e%s.pdf' % title)
    plt.close()
def _plotDifferenceIndividualVsJoined(individuals, joined, title='800nm', sigma=3,
                                      requirementFWHM=10.8, requirementE=0.156, requirementR2=0.002,
                                      truthx=None, truthy=None, FWHMlims=(7.6, 10.3)):
    """
    Simple plot
    """
    ind = []
    for file in g.glob(individuals):
        print file
        ind.append(fileIO.cPicleRead(file))

    join = fileIO.cPicleRead(joined)
    xtmp = np.arange(len(ind)) + 1

    #plot FWHM
    fig = plt.figure()
    ax1 = fig.add_subplot(311)
    ax2 = fig.add_subplot(312)
    ax3 = fig.add_subplot(313)
    fig.subplots_adjust(hspace=0, top=0.93, bottom=0.17, left=0.12, right=0.98)
    ax1.set_title(title)

    wxind = np.asarray([_FWHMGauss(data['wx']) for data in ind])
    wyind = np.asarray([_FWHMGauss(data['wy']) for data in ind])
    wxerr = np.asarray([sigma*_FWHMGauss(data['wxerr']) for data in ind])
    wyerr = np.asarray([sigma*_FWHMGauss(data['wyerr']) for data in ind])

    ax1.errorbar(xtmp, wxind, yerr=wxerr, fmt='o')
    ax1.errorbar(xtmp[-1]+1, _FWHMGauss(join['wx']), yerr=sigma*_FWHMGauss(join['wxerr']), fmt='s', c='r')
    ax2.errorbar(xtmp, wyind, yerr=wyerr, fmt='o')
    ax2.errorbar(xtmp[-1]+1, _FWHMGauss(join['wy']), yerr=sigma*_FWHMGauss(join['wyerr']), fmt='s', c='r')

    geommean = np.sqrt(wxind*wyind)
    err = np.sqrt(wxerr*wyerr)
    ax3.errorbar(xtmp, geommean, yerr=err, fmt='o')
    ax3.errorbar(xtmp[-1]+1, np.sqrt(_FWHMGauss(join['wx'])*_FWHMGauss(join['wy'])),
                 yerr=sigma*np.sqrt(_FWHMGauss(join['wxerr'])*_FWHMGauss(join['wyerr'])), fmt='s', c='r')

    #simulations
    if truthx is not None:
        ax1.axhline(y=_FWHMGauss(truthx), label='Input', c='g')
    if truthy is not None:
        ax2.axhline(y=_FWHMGauss(truthy), label='Input', c='g')
        ax3.axhline(y=np.sqrt(_FWHMGauss(truthx)*_FWHMGauss(truthy)), label='Input', c='g')

    #requirements
    if requirementFWHM is not None:
        ax1.axhline(y=requirementFWHM, label='Requirement (800nm)', c='r', ls='--')
        ax2.axhline(y=requirementFWHM, label='Requirement (800nm)', c='r', ls='--')
        ax3.axhline(y=requirementFWHM, label='Requirement (800nm)', c='r', ls='-')

    plt.sca(ax1)
    plt.xticks(visible=False)
    plt.sca(ax2)
    plt.xticks(visible=False)
    plt.sca(ax3)

    ltmp = np.hstack((xtmp, xtmp[-1]+1))
    plt.xticks(ltmp, ['Individual %i' % x for x in ltmp[:-1]] + ['Joint',], rotation=45)

    #ax1.set_ylim(7.1, 10.2)
    ax1.set_ylim(*FWHMlims)
    ax2.set_ylim(*FWHMlims)
    #ax2.set_ylim(8.6, 10.7)
    ax3.set_ylim(*FWHMlims)
    ax1.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)
    ax2.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)
    ax3.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)

    ax1.set_ylabel(r'FWHM$_{X} \, [\mu$m$]$')
    ax2.set_ylabel(r'FWHM$_{Y} \, [\mu$m$]$')
    #ax3.set_ylabel(r'FWHM$=\sqrt{FWHM_{X}FWHM_{Y}} \quad [\mu$m$]$')
    ax3.set_ylabel(r'FWHM$ \, [\mu$m$]$')
    ax1.legend(shadow=True, fancybox=True)
    plt.savefig('IndividualVsJoinedFWHM%s.pdf' % title)
    plt.close()

    #plot R2 and ellipticity
    fig = plt.figure()
    ax1 = fig.add_subplot(211)
    ax2 = fig.add_subplot(212)
    fig.subplots_adjust(hspace=0, top=0.93, bottom=0.17, left=0.12, right=0.98)
    ax1.set_title(title)

    R2x = [_R2FromGaussian(data['wx'], data['wy'])*1e3 for data in ind]
    errR2 = [sigma*1.e3*_R2err(data['wx'], data['wy'], data['wxerr'], data['wyerr']) for data in ind]
    ax1.errorbar(xtmp, R2x, yerr=errR2, fmt='o')
    ax1.errorbar(xtmp[-1]+1, _R2FromGaussian(join['wx'], join['wy'])*1e3,
                 yerr=sigma*1.e3*_R2err(join['wx'], join['wy'], join['wxerr'], join['wyerr']), fmt='s')

    ell = [_ellipticityFromGaussian(data['wx'], data['wy']) for data in ind]
    ellerr = [sigma*_ellipticityerr(data['wx'], data['wy'], data['wxerr'], data['wyerr']) for data in ind]
    ax2.errorbar(xtmp, ell, yerr=ellerr, fmt='o')
    ax2.errorbar(xtmp[-1]+1, _ellipticityFromGaussian(join['wx'], join['wy']),
                 yerr=sigma*_ellipticityerr(join['wx'], join['wy'], join['wxerr'], join['wyerr']), fmt='s')

    if requirementE is not None:
        ax2.axhline(y=requirementE, label='Requirement (800nm)', c='r')
    if requirementR2 is not None:
        ax1.axhline(y=requirementR2*1e3, label='Requirement (800nm)', c='r')

    #simulations
    if truthx and truthy is not None:
        ax2.axhline(y=_ellipticityFromGaussian(truthx, truthy), label='Input', c='g')
        ax1.axhline(y= _R2FromGaussian(truthx, truthy)*1e3, label='Input', c='g')

    plt.sca(ax1)
    plt.xticks(visible=False)
    plt.sca(ax2)
    ltmp = np.hstack((xtmp, xtmp[-1]+1))
    plt.xticks(ltmp, ['Individual%i' % x for x in ltmp[:-1]] + ['Joint',], rotation=45)

    ax1.set_ylim(0.0011*1e3, 0.003*1e3)
    ax2.set_ylim(0., 0.23)
    ax1.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)
    ax2.set_xlim(xtmp.min()*0.9, (xtmp.max() + 1)*1.05)

    ax1.set_ylabel(r'$R^{2}$ [mas$^{2}$]')
    ax2.set_ylabel('ellipticity')
    ax1.legend(shadow=True, fancybox=True)
    plt.savefig('IndividualVsJoinedR2e%s.pdf' % title)
    plt.close()
Ejemplo n.º 3
0
def _plotDifferenceIndividualVsJoined(individuals,
                                      joined,
                                      title='800nm',
                                      sigma=3,
                                      requirementFWHM=10.8,
                                      requirementE=0.156,
                                      requirementR2=0.002,
                                      truthx=None,
                                      truthy=None,
                                      FWHMlims=(7.6, 10.3)):
    """
    Simple plot
    """
    ind = []
    for file in g.glob(individuals):
        print file
        ind.append(fileIO.cPicleRead(file))

    join = fileIO.cPicleRead(joined)
    xtmp = np.arange(len(ind)) + 1

    #plot FWHM
    fig = plt.figure()
    ax1 = fig.add_subplot(311)
    ax2 = fig.add_subplot(312)
    ax3 = fig.add_subplot(313)
    fig.subplots_adjust(hspace=0, top=0.93, bottom=0.17, left=0.12, right=0.98)
    ax1.set_title(title)

    wxind = np.asarray([_FWHMGauss(data['wx']) for data in ind])
    wyind = np.asarray([_FWHMGauss(data['wy']) for data in ind])
    wxerr = np.asarray([sigma * _FWHMGauss(data['wxerr']) for data in ind])
    wyerr = np.asarray([sigma * _FWHMGauss(data['wyerr']) for data in ind])

    ax1.errorbar(xtmp, wxind, yerr=wxerr, fmt='o')
    ax1.errorbar(xtmp[-1] + 1,
                 _FWHMGauss(join['wx']),
                 yerr=sigma * _FWHMGauss(join['wxerr']),
                 fmt='s',
                 c='r')
    ax2.errorbar(xtmp, wyind, yerr=wyerr, fmt='o')
    ax2.errorbar(xtmp[-1] + 1,
                 _FWHMGauss(join['wy']),
                 yerr=sigma * _FWHMGauss(join['wyerr']),
                 fmt='s',
                 c='r')

    geommean = np.sqrt(wxind * wyind)
    err = np.sqrt(wxerr * wyerr)
    ax3.errorbar(xtmp, geommean, yerr=err, fmt='o')
    ax3.errorbar(
        xtmp[-1] + 1,
        np.sqrt(_FWHMGauss(join['wx']) * _FWHMGauss(join['wy'])),
        yerr=sigma *
        np.sqrt(_FWHMGauss(join['wxerr']) * _FWHMGauss(join['wyerr'])),
        fmt='s',
        c='r')

    #simulations
    if truthx is not None:
        ax1.axhline(y=_FWHMGauss(truthx), label='Input', c='g')
    if truthy is not None:
        ax2.axhline(y=_FWHMGauss(truthy), label='Input', c='g')
        ax3.axhline(y=np.sqrt(_FWHMGauss(truthx) * _FWHMGauss(truthy)),
                    label='Input',
                    c='g')

    #requirements
    if requirementFWHM is not None:
        ax1.axhline(y=requirementFWHM,
                    label='Requirement (800nm)',
                    c='r',
                    ls='--')
        ax2.axhline(y=requirementFWHM,
                    label='Requirement (800nm)',
                    c='r',
                    ls='--')
        ax3.axhline(y=requirementFWHM,
                    label='Requirement (800nm)',
                    c='r',
                    ls='-')

    plt.sca(ax1)
    plt.xticks(visible=False)
    plt.sca(ax2)
    plt.xticks(visible=False)
    plt.sca(ax3)

    ltmp = np.hstack((xtmp, xtmp[-1] + 1))
    plt.xticks(ltmp, ['Individual %i' % x for x in ltmp[:-1]] + [
        'Joint',
    ],
               rotation=45)

    #ax1.set_ylim(7.1, 10.2)
    ax1.set_ylim(*FWHMlims)
    ax2.set_ylim(*FWHMlims)
    #ax2.set_ylim(8.6, 10.7)
    ax3.set_ylim(*FWHMlims)
    ax1.set_xlim(xtmp.min() * 0.9, (xtmp.max() + 1) * 1.05)
    ax2.set_xlim(xtmp.min() * 0.9, (xtmp.max() + 1) * 1.05)
    ax3.set_xlim(xtmp.min() * 0.9, (xtmp.max() + 1) * 1.05)

    ax1.set_ylabel(r'FWHM$_{X} \, [\mu$m$]$')
    ax2.set_ylabel(r'FWHM$_{Y} \, [\mu$m$]$')
    #ax3.set_ylabel(r'FWHM$=\sqrt{FWHM_{X}FWHM_{Y}} \quad [\mu$m$]$')
    ax3.set_ylabel(r'FWHM$ \, [\mu$m$]$')
    ax1.legend(shadow=True, fancybox=True)
    plt.savefig('IndividualVsJoinedFWHM%s.pdf' % title)
    plt.close()

    #plot R2 and ellipticity
    fig = plt.figure()
    ax1 = fig.add_subplot(211)
    ax2 = fig.add_subplot(212)
    fig.subplots_adjust(hspace=0, top=0.93, bottom=0.17, left=0.12, right=0.98)
    ax1.set_title(title)

    R2x = [_R2FromGaussian(data['wx'], data['wy']) * 1e3 for data in ind]
    errR2 = [
        sigma * 1.e3 *
        _R2err(data['wx'], data['wy'], data['wxerr'], data['wyerr'])
        for data in ind
    ]
    ax1.errorbar(xtmp, R2x, yerr=errR2, fmt='o')
    ax1.errorbar(xtmp[-1] + 1,
                 _R2FromGaussian(join['wx'], join['wy']) * 1e3,
                 yerr=sigma * 1.e3 *
                 _R2err(join['wx'], join['wy'], join['wxerr'], join['wyerr']),
                 fmt='s')

    ell = [_ellipticityFromGaussian(data['wx'], data['wy']) for data in ind]
    ellerr = [
        sigma *
        _ellipticityerr(data['wx'], data['wy'], data['wxerr'], data['wyerr'])
        for data in ind
    ]
    ax2.errorbar(xtmp, ell, yerr=ellerr, fmt='o')
    ax2.errorbar(
        xtmp[-1] + 1,
        _ellipticityFromGaussian(join['wx'], join['wy']),
        yerr=sigma *
        _ellipticityerr(join['wx'], join['wy'], join['wxerr'], join['wyerr']),
        fmt='s')

    if requirementE is not None:
        ax2.axhline(y=requirementE, label='Requirement (800nm)', c='r')
    if requirementR2 is not None:
        ax1.axhline(y=requirementR2 * 1e3, label='Requirement (800nm)', c='r')

    #simulations
    if truthx and truthy is not None:
        ax2.axhline(y=_ellipticityFromGaussian(truthx, truthy),
                    label='Input',
                    c='g')
        ax1.axhline(y=_R2FromGaussian(truthx, truthy) * 1e3,
                    label='Input',
                    c='g')

    plt.sca(ax1)
    plt.xticks(visible=False)
    plt.sca(ax2)
    ltmp = np.hstack((xtmp, xtmp[-1] + 1))
    plt.xticks(ltmp, ['Individual%i' % x for x in ltmp[:-1]] + [
        'Joint',
    ],
               rotation=45)

    ax1.set_ylim(0.0011 * 1e3, 0.003 * 1e3)
    ax2.set_ylim(0., 0.23)
    ax1.set_xlim(xtmp.min() * 0.9, (xtmp.max() + 1) * 1.05)
    ax2.set_xlim(xtmp.min() * 0.9, (xtmp.max() + 1) * 1.05)

    ax1.set_ylabel(r'$R^{2}$ [mas$^{2}$]')
    ax2.set_ylabel('ellipticity')
    ax1.legend(shadow=True, fancybox=True)
    plt.savefig('IndividualVsJoinedR2e%s.pdf' % title)
    plt.close()