Пример #1
0
        ajswtha4neg[jswth4 == 4] -= a4dephasing

    PSFinfoc = psf.PSF(js, ajstrue, N, dxp, pupilRadius)
    PSFoutfocpos = psf.PSF(jswth4, ajswtha4pos, N, dxp, pupilRadius)
    PSFoutfocneg = psf.PSF(jswth4, ajswtha4neg, N, dxp, pupilRadius)

    phaseDiv = PD.phaseDiversity3PSFs(PSFinfoc.PSF, PSFoutfocpos.PSF,
                                      PSFoutfocneg.PSF, deltaZ, lbda, pxsize,
                                      F, pupilRadius, jmin, jmax)

    jsretrieved = phaseDiv.result['js']
    ajsretrieved = phaseDiv.result['ajs']

    rmse[i] = fs.RMSE(ajsretrieved * 1e9 * lbda / 2 / np.pi,
                      ajstrue * 1e9 * lbda / 2 / np.pi)
    rmsWFerrorsRetrieved[i] = fs.RMSwavefrontError(
        jsretrieved, ajsretrieved * 1e9 * lbda / 2 / np.pi)

rmsWFerrorMax = np.max(np.append(rmsWFerrors, rmsWFerrorsRetrieved))
rmsWFerrorMin = np.min(np.append(rmsWFerrors, rmsWFerrorsRetrieved))

fnamerms = '../../../fig/PDDev/test/rmsWFerrorsretrieved_rmsWFe%s'
fnamermse = '../../../fig/PDDev/test/rmse_rmsWFe%s'

fig = plt.figure()
plt.hold(True)
plt.plot(rmsWFerrors, rmsWFerrorsRetrieved)
plt.plot([rmsWFerrorMin, rmsWFerrorMax], [rmsWFerrorMin, rmsWFerrorMax],
         linewidth=2,
         c='grey')
plt.xlim([rmsWFerrorMin, rmsWFerrorMax])
plt.ylim([rmsWFerrorMin, rmsWFerrorMax])
Пример #2
0
for i in np.arange(len(ajsIDLFile)):
    rmsWFeTrue[i] = (((ajsTrueFile[i]).replace('.', '_')).split('_'))[-2]
    rmsWFeIDLtrue[i] = (((ajsIDLFile[i]).replace('.', '_')).split('_'))[-2]

    jsajsTrue = np.loadtxt(ajsTrueFolderPath + '\\' + ajsTrueFile[i])
    jsTrue[i, :] = jsajsTrue[0, :]
    ajsTrue[i, :] = jsajsTrue[1, :] * 1e9 * lbda / 2 / np.pi

    jsajsIDL = np.loadtxt(ajsIDLFolderPath + '\\' + ajsIDLFile[i],
                          delimiter=',',
                          skiprows=1)
    jsIDL[i, :] = jsajsIDL[:, 0]
    ajsIDLmodal[i, :] = jsajsIDL[:, 1] * 1000
    ajsIDLzonal[i, :] = jsajsIDL[:, 2] * 1000

    rmsWFeIDLmodalretrieved[i] = fs.RMSwavefrontError(jsIDL[i, :],
                                                      ajsIDLmodal[i, :])
    rmsemodal[i] = fs.RMSE(ajsIDLmodal[i, :], ajsTrue[i, :])
    rmsWFeIDLzonalretrieved[i] = fs.RMSwavefrontError(jsIDL[i, :],
                                                      ajsIDLzonal[i, :])
    rmsezonal[i] = fs.RMSE(ajsIDLzonal[i, :], ajsTrue[i, :])

rmsWFefolderPath = 'C:\\Users\\Jojo\\Desktop\\PdM-HEIG\\Science\\data\\devPD\\PSFforIDLtreatment\\PSFs'
rmsWFerrorFolderPaths = os.listdir(rmsWFefolderPath)

NrmsWFe = len(rmsWFerrorFolderPaths)
rmsePy = np.zeros(NrmsWFe)
rmsWFerrorsPyRetrieved = np.zeros(NrmsWFe)
rmsWFeTruePy = np.zeros(NrmsWFe)
jsretrieved = np.zeros([NrmsWFe, jmax - jmin + 1])
ajsretrieved = np.zeros([NrmsWFe, jmax - jmin + 1])
Пример #3
0
                                pupilRadius, jmin, jm)))
#phaseDivWthNoise = PD.phaseDiversity3PSFs(PSFinfocWthNoise,PSFoutfocposWthNoise,PSFoutfocnegWthNoise,deltaZ,lbda,pxsize,F,pupilRadius,jmin,jmax)
#print phaseDiv.result['ajs']*1e9*lbda/2/np.pi
#print ajstrue*1e9*lbda/2/np.pi

jscomplete = np.append(js, np.linspace(31, 200, 170))
ajscomplete = np.append(ajscomplete, np.zeros(170))

plt.figure()
plt.hold(True)
plt.plot(jscomplete,
         ajscomplete * 1e9 * lbda / 2 / np.pi,
         'b-',
         linewidth=2,
         label='true, $\sigma_{WF,rms}$ = %5.3f nm' %
         (fs.RMSwavefrontError(js, ajscomplete * 1e9 * lbda / 2 / np.pi)))
for ij, jm in enumerate(jmax):
    #    if ij>=2 :
    #        plt.errorbar(phaseDivWoutNoise[ij].result['js'],phaseDivWoutNoise[ij].result['ajs']*1e9*lbda/2/np.pi,yerr=phaseDivWoutNoise[ij].result['ajsSte']*1e9*lbda/2/np.pi
    #            ,lineStyle='-',label='retrieved jmax = %d,  $\sigma_{WF,rms}$ = %5.3f nm, RMSE = %5.3f nm'
    #            %(jm,fs.RMSwavefrontError(phaseDivWoutNoise[ij].result['js'],phaseDivWoutNoise[ij].result['ajs']*1e9*lbda/2/np.pi)
    #            ,fs.RMSE((phaseDivWoutNoise[ij].result['ajs'])[0:jmax[2]-3]*1e9*lbda/2/np.pi,ajscomplete*1e9*lbda/2/np.pi)))
    #    else :
    plt.errorbar(
        phaseDivWoutNoise[ij].result['js'],
        phaseDivWoutNoise[ij].result['ajs'] * 1e9 * lbda / 2 / np.pi,
        yerr=phaseDivWoutNoise[ij].result['ajsSte'] * 1e9 * lbda / 2 / np.pi,
        lineStyle='-',
        label=
        'retrieved jmax = %d,  $\sigma_{WF,rms}$ = %5.3f nm, RMSE = %5.3f nm' %
        (jm,
Пример #4
0
#PSFoutfocposWthNoise = PSFoutfocpos.PSF+whiteNoise

PSFoutfocneg = psf.PSF(jswth4,ajswtha4neg,N,dxp,pupilRadius)
#noiseMean = 0.
#noiseStd = np.max(PSFoutfocneg.PSF)*noiseStdLevel
#whiteNoise = fsApd.generateWhiteNoise((PSFoutfocneg.PSF).shape,noiseMean,noiseStd)
#PSFoutfocnegWthNoise = PSFoutfocneg.PSF+whiteNoise

phaseDivWoutNoise = PD.phaseDiversity3PSFs(PSFinfoc.PSF,PSFoutfocpos.PSF,PSFoutfocneg.PSF,deltaZ,lbda,pxsize,F,pupilRadius,jmin,jmax)
#phaseDivWthNoise = PD.phaseDiversity3PSFs(PSFinfocWthNoise,PSFoutfocposWthNoise,PSFoutfocnegWthNoise,deltaZ,lbda,pxsize,F,pupilRadius,jmin,jmax)
#print phaseDiv.result['ajs']*1e9*lbda/2/np.pi
#print ajstrue*1e9*lbda/2/np.pi

plt.figure()
plt.hold(True)
plt.plot(jscomplete,ajscomplete*1e9*lbda/2/np.pi,'b-',label='true, $\sigma_{WF,rms}$ = %5.3f nm' %(fs.RMSwavefrontError(js,ajstrue*1e9*lbda/2/np.pi)))
plt.errorbar(phaseDivWoutNoise.result['js'],phaseDivWoutNoise.result['ajs']*1e9*lbda/2/np.pi,yerr=phaseDivWoutNoise.result['ajsSte']*1e9*lbda/2/np.pi
    ,color = 'red',lineStyle='-',label='retrieved wout noise, $\sigma_{WF,rms}$ = %5.3f nm, RMSE = %5.3f nm'
    %(fs.RMSwavefrontError(phaseDivWoutNoise.result['js'],phaseDivWoutNoise.result['ajs']*1e9*lbda/2/np.pi)
    ,fs.RMSE(phaseDivWoutNoise.result['ajs']*1e9*lbda/2/np.pi,ajscomplete*1e9*lbda/2/np.pi)))
#plt.errorbar(phaseDivWthNoise.result['js'],phaseDivWthNoise.result['ajs']*1e9*lbda/2/np.pi,yerr=phaseDivWthNoise.result['ajsSte']*1e9*lbda/2/np.pi
#    ,color = 'green',lineStyle='-',label='retrieved wth noise, $\sigma_{WF,rms}$ = %5.3f nm, RMSE = %5.3f nm'
#    %(fs.RMSwavefrontError(phaseDivWthNoise.result['js'],phaseDivWthNoise.result['ajs']*1e9*lbda/2/np.pi)
#    ,fs.RMSE(phaseDivWthNoise.result['ajs']*1e9*lbda/2/np.pi,ajscomplete*1e9*lbda/2/np.pi)))
plt.xlabel('j')
plt.ylabel('aj [nm]')
plt.xlim([jscomplete[0],jscomplete[-1]])
plt.legend(loc='upper center')
plt.grid()

fnameajsjs = '../../../fig/PDDev/test/ajs_js_jmax_%d_WoutN_rmsWFe_%d%s'
Пример #5
0
                                                  PSFoutfocnegWthNoise, deltaZ,
                                                  lbda, pxsize, F, pupilRadius,
                                                  jmin, jmax)

        ajss[irmsWFe, iNretrieve, :] = phaseDivWthNoise.result['ajs']
        ajsSte[irmsWFe, iNretrieve, :] = phaseDivWthNoise.result['ajsSte']

fnameajsjsWthe = '../../../fig/PDDev/test/ajs_js_WthE_rmsWFe_%d%s'
fnameajsjsWoute = '../../../fig/PDDev/test/ajs_js_WoutE_rmsWFe_%d%s'
fnamebxpajsjs = '../../../fig/PDDev/test/bxp_ajs_js_rmsWFe_%d%s'

plt.ioff()

for irmsWFe, rmsWFerror in enumerate(rmsWFerrors):
    meanAjsRetrieved = np.mean(ajss[irmsWFe, :, :], 0) * 1e9 * lbda / 2 / np.pi
    meanrmsWFerror = fs.RMSwavefrontError(jscomplete, meanAjsRetrieved)
    meanRMSE = fs.RMSE(meanAjsRetrieved, ajscomplete * 1e9 * lbda / 2 / np.pi)
    #Plot all the result
    fig = plt.figure()
    plt.title(
        'Nretrieval = %d, $\sigma_{wf,rms}$ = %3.1fnm, noiseStdLevel = %4.3f [maxPSF]'
        % (Nretrieve, rmsWFerror, noiseStdLevel))
    plt.hold(True)
    for iNretrieve in np.arange(Nretrieve - 1):
        plt.errorbar(jscomplete,
                     ajss[irmsWFe, iNretrieve, :] * 1e9 * lbda / 2 / np.pi,
                     yerr=ajsSte[irmsWFe, iNretrieve, :] * 1e9 * lbda / 2 /
                     np.pi,
                     linewidth=0.5,
                     color='red')
    plt.errorbar(