Commit 18bdecdb authored by Fang Yuedong's avatar Fang Yuedong
Browse files

encapsulate instrumental data

parent 72f88213
import sys
from itertools import islice
import mpi4py.MPI as MPI
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('Agg')
import scipy.io
#import xlrd
from scipy import ndimage
sys.path.append("/public/home/weichengliang/lnData/CSST_new_framwork/csstPSF_20210108")
import PSFConfig as myConfig
import PSFUtil as myUtil
NPSF = 900
##############################
##############################
##############################
def test_psfREE80(psfPath, ThisTask, NTasks):
nccd = 30
npsf = NPSF
npsfPerTasks = int(npsf/NTasks)
iStart= 0 + npsfPerTasks*ThisTask
iEnd = npsfPerTasks + npsfPerTasks*ThisTask
if ThisTask == NTasks:
iEnd = npsf
CENPIXUSED = True
wvREE80 = np.zeros([4, nccd]) #psf in different waves-4
ttREE80 = np.zeros(nccd) #stacked psf
for iccd in range(1, nccd+1):
psf_wvREE80 = np.zeros([4, npsf])
psf_ttREE80 = np.zeros(npsf)
#for ipsf in range(1, npsf+1):
for ipsf in range(iStart+1, iEnd+1):
psf4iwave = []
for iwave in range(1, 5):
if ThisTask == 0:
print('iccd-ipsf-iwave: {:} {:} {:}'.format(iccd, ipsf, iwave), end='\r')
psfInfo = myConfig.LoadPSF(iccd, iwave, ipsf, psfPath, InputMaxPixelPos=True, PSFCentroidWgt=False)
cenPix = None
if CENPIXUSED:
psfInfoX= myConfig.LoadPSF(iccd, iwave, ipsf, psfPath, InputMaxPixelPos=True, PSFCentroidWgt=True)
deltX= psfInfoX['centroid_x'] #in mm
deltY= psfInfoX['centroid_y'] #in mm
pixsize = 2.5*1e-3 #mm, will use binningPSF
cenPix_X = 512/2 + deltX/pixsize
cenPix_Y = 512/2 + deltY/pixsize
cenPix = [cenPix_X, cenPix_Y]
ipsfMat = psfInfo['psfMat']
cenX, cenY, sz, e1, e2, REE80 = myUtil.psfSizeCalculator(ipsfMat, CalcPSFcenter=True, SigRange=True, TailorScheme=2, cenPix=cenPix)
psf_wvREE80[iwave-1, ipsf-1] = REE80
psf4iwave.append(ipsfMat)
tt = myUtil.psfStack(psf4iwave[0], psf4iwave[1], psf4iwave[2], psf4iwave[3])
cenX, cenY, sz, e1, e2, REE80 = myUtil.psfSizeCalculator(tt, CalcPSFcenter=True, SigRange=True, TailorScheme=2)
psf_ttREE80[ipsf-1] = REE80
if iccd == 1 and iwave ==1:
print('iccd-{:}:'.format(iccd), flush=True)
print('psfSet has been loaded.', flush=True)
#print('Usage: psfSet[i][keys]', flush=True)
#print('psfSet.keys:', psfSet[0].keys(), flush=True)
else:
print('iccd-{:}, iwave-{:}'.format(iccd, iwave), end='\r', flush=True)
comm.barrier()
psf_ttREE80 = comm.allreduce(psf_ttREE80, op=MPI.SUM)
psf_wvREE80[0, :] = comm.allreduce(psf_wvREE80[0, :], op=MPI.SUM)
psf_wvREE80[1, :] = comm.allreduce(psf_wvREE80[1, :], op=MPI.SUM)
psf_wvREE80[2, :] = comm.allreduce(psf_wvREE80[2, :], op=MPI.SUM)
psf_wvREE80[3, :] = comm.allreduce(psf_wvREE80[3, :], op=MPI.SUM)
ttREE80[iccd-1] = np.mean(psf_ttREE80)
wvREE80[0, iccd-1] = np.mean(psf_wvREE80[0, :])
wvREE80[1, iccd-1] = np.mean(psf_wvREE80[1, :])
wvREE80[2, iccd-1] = np.mean(psf_wvREE80[2, :])
wvREE80[3, iccd-1] = np.mean(psf_wvREE80[3, :])
##############################
comm.barrier()
#ttREE80 = comm.allreduce(ttREE80, op=MPI.SUM)
#wvREE80 = comm.allreduce(wvREE80, op=MPI.SUM)
#plot-test
if ThisTask == 0:
REE80W1 = wvREE80[0, :]
REE80W2 = wvREE80[1, :]
REE80W3 = wvREE80[2, :]
REE80W4 = wvREE80[3, :]
np.savetxt('REE50_w1.txt',REE80W1)
np.savetxt('REE50_w2.txt',REE80W2)
np.savetxt('REE50_w3.txt',REE80W3)
np.savetxt('REE50_w4.txt',REE80W4)
np.savetxt('REE50_tt.txt',ttREE80)
ccdFilterLayout = ['GV', 'GV', 'GU', 'GU', 'GI', 'y', 'i', 'g', 'r', 'GI', 'z', 'NUV', 'NUV', 'u', 'y', 'y','u', 'NUV', 'NUV', 'z', 'GI', 'r', 'g', 'i', 'y', 'GI', 'GU', 'GU','GV', 'GV']
fig = plt.figure(figsize=(18,10))
for iccd in range(0,30):
plt.arrow(iccd+1, REE80W1[iccd], 0, REE80W4[iccd]-REE80W1[iccd], width = 0.05, head_length=0.002, ec='None', color='k')
plt.plot([iccd+1], [REE80W1[iccd]], 'o',c='k')
plt.plot([iccd+1.1], [REE80W2[iccd]], 'o',c='b')
plt.plot([iccd+1.2], [REE80W3[iccd]], 'o',c='g')
plt.plot([iccd+1.3], [REE80W4[iccd]], 'o',c='r')
plt.plot([iccd+1, iccd+1.1, iccd+1.2, iccd+1.3], [REE80W1[iccd], REE80W2[iccd], REE80W3[iccd], REE80W4[iccd]], '--',c='k')
if REE80W1[iccd] < REE80W4[iccd]:
plt.text(iccd+1-0.2, REE80W1[iccd]-0.005, ccdFilterLayout[iccd], fontsize=15)
if REE80W1[iccd] > REE80W4[iccd]:
plt.text(iccd+1-0.2, REE80W1[iccd]+0.003, ccdFilterLayout[iccd], fontsize=15)
plt.fill_betweenx([0.0, 0.080], [0.5,0.5], [5.5,5.5], color='gray',alpha=0.5)
plt.fill_betweenx([0.0, 0.080], [25.5,25.5], [30.5,30.5], color='gray',alpha=0.5)
plt.fill_betweenx([0.0, 0.080], [9.5,9.5], [10.5,10.5], color='gray',alpha=0.5)
plt.fill_betweenx([0.0, 0.080], [20.5,20.5], [21.5,21.5], color='gray',alpha=0.5)
plt.plot([5.5, 5.5], [0.0, 0.5], ':')
plt.plot([10.5, 10.5], [0.0, 0.5], 'k:')
plt.plot([15.5, 15.5], [0.0, 0.5], 'k:')
plt.plot([20.5, 20.5], [0.0, 0.5], 'k:')
plt.plot([25.5, 25.5], [0.0, 0.5], 'k:')
plt.ylim(0.0, 0.080)
plt.xlim(0.5, 30.5)
#plt.plot(np.linspace(1, 30, 30), REE80W1)
#plt.plot(np.linspace(1, 30, 30), REE80W2)
#plt.plot(np.linspace(1, 30, 30), REE80W3)
#plt.plot(np.linspace(1, 30, 30), REE80W4)
plt.xticks([])
plt.yticks(fontsize=15)
plt.text(1.5, -0.004, 'CCD1 - CCD5', fontsize=15)
plt.text(6.5, -0.004, 'CCD6 - CCD10', fontsize=15)
plt.text(11.5, -0.004, 'CCD11 - CCD15', fontsize=15)
plt.text(16.5, -0.004, 'CCD16 - CCD20', fontsize=15)
plt.text(21.5, -0.004, 'CCD21 - CCD25', fontsize=15)
plt.text(26.5, -0.004, 'CCD26 - CCD30', fontsize=15)
plt.plot([27], [0.183], 'ko')
plt.text(27.5, 0.182, 'wave-1',fontsize=15)
plt.plot([27], [0.180], 'ro')
plt.text(27.5, 0.179, 'wave-2',fontsize=15)
plt.plot([27], [0.177], 'go')
plt.text(27.5, 0.176, 'wave-3',fontsize=15)
plt.plot([27], [0.174], 'bo')
plt.text(27.5, 0.173, 'wave-4',fontsize=15)
#overplot stackedPSF
xccd = np.linspace(1, 30, 30)
plt.plot(xccd,ttREE80, 'm*', ms = 20, markerfacecolor='None', markeredgewidth=2)
plt.plot([27], [0.168], 'm*', ms = 20, markerfacecolor='None', markeredgewidth=2)
plt.text(27.5, 0.1665, 'stacked',fontsize=20)
plt.savefig('figs/psfStackedREE50.pdf')
##############################
##############################
##############################
if __name__=='__main__':
comm = MPI.COMM_WORLD
ThisTask = comm.Get_rank()
NTasks = comm.Get_size()
psfPath = '/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/CSSOS_psf_20210108/CSST_psf_ciomp_2p5um_cycle3'
test_psfREE80(psfPath, ThisTask, NTasks)
import sys
from itertools import islice
import mpi4py.MPI as MPI
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('Agg')
import scipy.io
#import xlrd
from scipy import ndimage
sys.path.append("/public/home/weichengliang/lnData/CSST_new_framwork/csstPSF_20210108")
import PSFConfig as myConfig
import PSFUtil as myUtil
NPSF = 900
##############################
##############################
##############################
def test_psfREE80(psfPath, ThisTask, NTasks):
nccd = 30
npsf = NPSF
npsfPerTasks = int(npsf/NTasks)
iStart= 0 + npsfPerTasks*ThisTask
iEnd = npsfPerTasks + npsfPerTasks*ThisTask
if ThisTask == NTasks:
iEnd = npsf
CENPIXUSED = True
wvREE80 = np.zeros([4, nccd]) #psf in different waves-4
ttREE80 = np.zeros(nccd) #stacked psf
for iccd in range(1, nccd+1):
psf_wvREE80 = np.zeros([4, npsf])
psf_ttREE80 = np.zeros(npsf)
#for ipsf in range(1, npsf+1):
for ipsf in range(iStart+1, iEnd+1):
psf4iwave = []
for iwave in range(1, 5):
if ThisTask == 0:
print('iccd-ipsf-iwave: {:} {:} {:}'.format(iccd, ipsf, iwave), end='\r')
psfInfo = myConfig.LoadPSF(iccd, iwave, ipsf, psfPath, InputMaxPixelPos=True, PSFCentroidWgt=False)
cenPix = None
if CENPIXUSED:
psfInfoX= myConfig.LoadPSF(iccd, iwave, ipsf, psfPath, InputMaxPixelPos=True, PSFCentroidWgt=True)
deltX= psfInfoX['centroid_x'] #in mm
deltY= psfInfoX['centroid_y'] #in mm
pixsize = 2.5*1e-3 #mm, will use binningPSF
cenPix_X = 512/2 + deltX/pixsize
cenPix_Y = 512/2 + deltY/pixsize
cenPix = [cenPix_X, cenPix_Y]
ipsfMat = psfInfo['psfMat']
cenX, cenY, sz, e1, e2, REE80 = myUtil.psfSizeCalculator(ipsfMat, CalcPSFcenter=True, SigRange=True, TailorScheme=2, cenPix=cenPix)
psf_wvREE80[iwave-1, ipsf-1] = REE80
psf4iwave.append(ipsfMat)
tt = myUtil.psfStack(psf4iwave[0], psf4iwave[1], psf4iwave[2], psf4iwave[3])
cenX, cenY, sz, e1, e2, REE80 = myUtil.psfSizeCalculator(tt, CalcPSFcenter=True, SigRange=True, TailorScheme=2)
psf_ttREE80[ipsf-1] = REE80
if iccd == 1 and iwave ==1:
print('iccd-{:}:'.format(iccd), flush=True)
print('psfSet has been loaded.', flush=True)
#print('Usage: psfSet[i][keys]', flush=True)
#print('psfSet.keys:', psfSet[0].keys(), flush=True)
else:
print('iccd-{:}, iwave-{:}'.format(iccd, iwave), end='\r', flush=True)
comm.barrier()
psf_ttREE80 = comm.allreduce(psf_ttREE80, op=MPI.SUM)
psf_wvREE80[0, :] = comm.allreduce(psf_wvREE80[0, :], op=MPI.SUM)
psf_wvREE80[1, :] = comm.allreduce(psf_wvREE80[1, :], op=MPI.SUM)
psf_wvREE80[2, :] = comm.allreduce(psf_wvREE80[2, :], op=MPI.SUM)
psf_wvREE80[3, :] = comm.allreduce(psf_wvREE80[3, :], op=MPI.SUM)
ttREE80[iccd-1] = np.mean(psf_ttREE80)
wvREE80[0, iccd-1] = np.mean(psf_wvREE80[0, :])
wvREE80[1, iccd-1] = np.mean(psf_wvREE80[1, :])
wvREE80[2, iccd-1] = np.mean(psf_wvREE80[2, :])
wvREE80[3, iccd-1] = np.mean(psf_wvREE80[3, :])
##############################
comm.barrier()
#ttREE80 = comm.allreduce(ttREE80, op=MPI.SUM)
#wvREE80 = comm.allreduce(wvREE80, op=MPI.SUM)
#plot-test
if ThisTask == 0:
REE80W1 = wvREE80[0, :]
REE80W2 = wvREE80[1, :]
REE80W3 = wvREE80[2, :]
REE80W4 = wvREE80[3, :]
np.savetxt('REE80_w1.txt',REE80W1)
np.savetxt('REE80_w2.txt',REE80W2)
np.savetxt('REE80_w3.txt',REE80W3)
np.savetxt('REE80_w4.txt',REE80W4)
np.savetxt('REE80_tt.txt',ttREE80)
ccdFilterLayout = ['GV', 'GV', 'GU', 'GU', 'GI', 'y', 'i', 'g', 'r', 'GI', 'z', 'NUV', 'NUV', 'u', 'y', 'y','u', 'NUV', 'NUV', 'z', 'GI', 'r', 'g', 'i', 'y', 'GI', 'GU', 'GU','GV', 'GV']
fig = plt.figure(figsize=(18,10))
for iccd in range(0,30):
plt.arrow(iccd+1, REE80W1[iccd], 0, REE80W4[iccd]-REE80W1[iccd], width = 0.05, head_length=0.002, ec='None', color='k')
plt.plot([iccd+1], [REE80W1[iccd]], 'o',c='k')
plt.plot([iccd+1.1], [REE80W2[iccd]], 'o',c='b')
plt.plot([iccd+1.2], [REE80W3[iccd]], 'o',c='g')
plt.plot([iccd+1.3], [REE80W4[iccd]], 'o',c='r')
plt.plot([iccd+1, iccd+1.1, iccd+1.2, iccd+1.3], [REE80W1[iccd], REE80W2[iccd], REE80W3[iccd], REE80W4[iccd]], '--',c='k')
if REE80W1[iccd] < REE80W4[iccd]:
plt.text(iccd+1-0.2, REE80W1[iccd]-0.005, ccdFilterLayout[iccd], fontsize=15)
if REE80W1[iccd] > REE80W4[iccd]:
plt.text(iccd+1-0.2, REE80W1[iccd]+0.003, ccdFilterLayout[iccd], fontsize=15)
plt.fill_betweenx([0.078, 0.145], [0.5,0.5], [5.5,5.5], color='gray',alpha=0.5)
plt.fill_betweenx([0.078, 0.145], [25.5,25.5], [30.5,30.5], color='gray',alpha=0.5)
plt.fill_betweenx([0.078, 0.145], [9.5,9.5], [10.5,10.5], color='gray',alpha=0.5)
plt.fill_betweenx([0.078, 0.145], [20.5,20.5], [21.5,21.5], color='gray',alpha=0.5)
plt.plot([5.5, 5.5], [0.078, 0.5], ':')
plt.plot([10.5, 10.5], [0.078, 0.5], 'k:')
plt.plot([15.5, 15.5], [0.078, 0.5], 'k:')
plt.plot([20.5, 20.5], [0.078, 0.5], 'k:')
plt.plot([25.5, 25.5], [0.078, 0.5], 'k:')
plt.ylim(0.078, 0.145)
plt.xlim(0.5, 30.5)
#plt.plot(np.linspace(1, 30, 30), REE80W1)
#plt.plot(np.linspace(1, 30, 30), REE80W2)
#plt.plot(np.linspace(1, 30, 30), REE80W3)
#plt.plot(np.linspace(1, 30, 30), REE80W4)
plt.xticks([])
plt.yticks(fontsize=15)
plt.text(1.5, 0.074, 'CCD1 - CCD5', fontsize=15)
plt.text(6.5, 0.074, 'CCD6 - CCD10', fontsize=15)
plt.text(11.5, 0.074, 'CCD11 - CCD15', fontsize=15)
plt.text(16.5, 0.074, 'CCD16 - CCD20', fontsize=15)
plt.text(21.5, 0.074, 'CCD21 - CCD25', fontsize=15)
plt.text(26.5, 0.074, 'CCD26 - CCD30', fontsize=15)
plt.plot([27], [0.183], 'ko')
plt.text(27.5, 0.182, 'wave-1',fontsize=15)
plt.plot([27], [0.180], 'ro')
plt.text(27.5, 0.179, 'wave-2',fontsize=15)
plt.plot([27], [0.177], 'go')
plt.text(27.5, 0.176, 'wave-3',fontsize=15)
plt.plot([27], [0.174], 'bo')
plt.text(27.5, 0.173, 'wave-4',fontsize=15)
#overplot stackedPSF
xccd = np.linspace(1, 30, 30)
plt.plot(xccd,ttREE80, 'm*', ms = 20, markerfacecolor='None', markeredgewidth=2)
plt.plot([27], [0.168], 'm*', ms = 20, markerfacecolor='None', markeredgewidth=2)
plt.text(27.5, 0.1665, 'stacked',fontsize=20)
plt.savefig('figs/psfStackedREE80.pdf')
##############################
##############################
##############################
if __name__=='__main__':
comm = MPI.COMM_WORLD
ThisTask = comm.Get_rank()
NTasks = comm.Get_size()
psfPath = '/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/CSSOS_psf_20210108/CSST_psf_ciomp_2p5um_cycle3'
test_psfREE80(psfPath, ThisTask, NTasks)
4.192623714192045964e-02
3.963687271293666464e-02
3.717499316773480861e-02
3.547479454427957674e-02
4.778017809407578836e-02
5.589890449411339529e-02
4.521611930595503814e-02
3.177118275728490343e-02
3.778880075862010163e-02
4.599476550188329183e-02
5.217386429508526907e-02
2.741515900111860665e-02
2.751147872664862215e-02
2.593041263934638824e-02
5.550626295722193432e-02
5.590932749625709269e-02
2.809689362429910325e-02
3.039854779218633882e-02
2.730709160574608385e-02
5.228841161148415490e-02
4.721563391801383847e-02
3.853965697603093515e-02
3.288221512817673942e-02
4.526867814362049020e-02
5.549804478055900964e-02
4.864927207016282729e-02
3.085322873873843144e-02
2.899995189367069251e-02
3.424865529768996580e-02
3.627621793291634783e-02
4.097674760967492946e-02
3.779118013257781739e-02
3.854422118514776174e-02
3.604302387477623104e-02
4.097642137358586262e-02
5.422652423381805337e-02
4.271208368655707993e-02
2.862325804928938719e-02
3.484749293989605062e-02
3.973479835109577918e-02
4.960958740777439424e-02
3.018300496041774819e-02
2.993626710027456200e-02
2.408132943635185597e-02
5.361761418067746698e-02
5.386454740332232566e-02
2.540567224224408310e-02
3.506318612438109189e-02
2.746613206341862526e-02
4.962374180969264525e-02
4.058798617786830987e-02
3.485660712545116807e-02
2.843817778345611447e-02
4.183941396160258119e-02
5.364700755725304582e-02
4.234843995836046204e-02
2.858904785580105093e-02
2.490848023651374629e-02
2.915432476335101664e-02
3.297398504283693271e-02
4.107249135358465725e-02
3.805210295857654884e-02
3.634435170433587825e-02
3.354171364878615058e-02
4.468210332095622767e-02
5.541175949904653814e-02
4.455799478623602428e-02
3.044745398064454406e-02
3.644618252085314591e-02
4.342479083273145801e-02
5.033345324711667457e-02
2.592496615524093190e-02
2.602256835955712652e-02
2.419794542507992807e-02
5.424795392072863376e-02
5.454469751566648483e-02
2.579547411865658335e-02
2.818417717392246100e-02
2.520566607515017238e-02
5.040185143550236779e-02
4.456572487950324901e-02
3.643000928892029672e-02
3.032562015371190189e-02
4.340189202792114898e-02
5.436048106186919943e-02
4.582877747714519251e-02
2.675305432329575309e-02
2.434911420775784374e-02
3.196721636172798059e-02
3.480462196800444136e-02
4.197429738938808497e-02
3.948407693869537827e-02
3.499825730091995352e-02
3.239083757003148600e-02
4.886476772940821084e-02
5.656497548437780520e-02
4.575395000891552960e-02
3.229455917659732750e-02
3.790552155839072013e-02
4.727557896325985248e-02
5.229303643521335254e-02
2.517534267157316152e-02
2.533119356673624659e-02
2.559196881535980364e-02
5.552474377469884120e-02
5.606734792805380396e-02
2.605791410017344739e-02
2.653578668625818440e-02
2.488602056892381606e-02
5.237050928589370713e-02
4.864922908859120598e-02
3.793197987808121646e-02
3.199448413319058021e-02
4.567710663295454498e-02
5.582077370749579520e-02
4.991082506461275853e-02
2.695475944835278720e-02
2.495457686276899428e-02
3.456866744284828319e-02
3.673887742269370260e-02
4.374798665444055989e-02
4.172032311144802108e-02
3.449644779165585845e-02
3.227750844632586158e-02
5.347426552325486998e-02
5.790241428133514195e-02
4.830917320731613340e-02
3.390226654708385773e-02
4.048860900104046118e-02
5.229343653966982836e-02
5.546085886657237812e-02
2.504612732885612425e-02
2.524040076881647193e-02
2.594595272300971936e-02
5.741710940168963384e-02
5.757535632285806781e-02
2.622993558438287826e-02
2.619012944814231789e-02
2.490559814497828386e-02
5.549698290725549321e-02
5.351221157444847887e-02
4.031978600141074981e-02
3.390058320636550604e-02
4.747320735620128018e-02
5.750102566348181538e-02
5.429367550131347642e-02
2.792105174933870795e-02
2.611095883366134490e-02
3.699269230580991968e-02
3.936049576848745651e-02
1.003694497959481402e-01
1.015607885271310740e-01
1.052028546896245781e-01
1.004858156541983266e-01
1.102485864443911445e-01
1.098996570540799050e-01
1.121134948564900258e-01
9.598437185088792845e-02
1.028637351757950291e-01
1.037921066664987124e-01
9.960766722758611358e-02
1.160482782291041431e-01
1.188710469918118628e-01
1.006841716004742565e-01
1.041830715454287043e-01
1.071446195079220620e-01
9.699936704503164808e-02
1.145864692330360451e-01
1.166164491325616809e-01
1.017340895533561662e-01
1.104655211253298686e-01
9.992789358728461357e-02
9.721765814556015961e-02
1.133250202735265055e-01
1.047951816519101520e-01
1.146304993165863928e-01
1.023961062481005962e-01
1.056877841469314322e-01
9.356085345149040000e-02
9.884073599345154226e-02
9.538728237979941793e-02
9.997831919127039835e-02
1.152796367224719759e-01
1.113885820325877934e-01
1.081522457963890460e-01
1.100598958465788119e-01
1.104022086991204160e-01
9.841721517344316494e-02
1.007562586416800854e-01
1.057270593278937937e-01
9.665070548653602323e-02
1.228988209532366899e-01
1.253969780935181577e-01
1.108463252832492252e-01
1.009047752370436923e-01
1.043932629625002606e-01
1.043888743470112457e-01
1.228035690221521564e-01
1.229982891347673191e-01
1.014424936307801173e-01
1.078363279584381301e-01
9.916063456071746995e-02
1.001503288414743176e-01
1.132735080354743545e-01
1.019744017720222440e-01
1.093158932692474827e-01
1.145170436302820893e-01
1.144741236832406833e-01
8.961314371062649442e-02
9.682588559885819957e-02
9.643768350283304924e-02
9.798234308759370959e-02
1.079521808524926546e-01
1.025021615210506692e-01
1.149604891157812586e-01
1.094704144779178878e-01
1.128202253331740679e-01
9.495004550450378278e-02
1.031157808171378198e-01
1.102209193590614478e-01
9.693712000217702407e-02
1.157439781311485477e-01
1.188326157795058374e-01
1.020256235202153527e-01
1.019820975181129213e-01
1.050299054880936972e-01
9.922386229038238081e-02
1.136058331943220617e-01
1.159628341678116126e-01
9.912074926826688892e-02
1.137588790224658142e-01
1.020030610097779206e-01
9.673012357619073520e-02
1.160692154202196402e-01
1.028599771526124695e-01
1.158566920790407434e-01
1.039760234289699159e-01
1.111334640532732065e-01
9.186342578795221592e-02
9.592016302877001688e-02
1.006985101848840714e-01
1.013836140599515684e-01
1.013806880513827002e-01
9.915509222282303803e-02
1.200062531563970830e-01
1.094657432536284142e-01
1.144734306716256728e-01
9.519613649282190893e-02
1.057418116099304584e-01
1.054122307896614014e-01
9.845357587767972207e-02
1.129213973631461448e-01
1.157693343030081895e-01
9.789589726262622194e-02
1.031542107711235640e-01
1.059128980752494648e-01
9.632152356207371313e-02
1.119704562591181812e-01
1.141161955230765856e-01
9.983023160033756283e-02
1.176942567113373056e-01
1.050646821823384980e-01
9.762139088577694024e-02
1.182936947709984227e-01
1.040377021663718704e-01
1.212708305484718752e-01
1.006435601496034199e-01
1.039983374708228631e-01
9.660188108682632446e-02
9.944499985211426030e-02
1.060087002979384491e-01
1.065412894470824101e-01
9.963971251414881214e-02
9.672424467901388767e-02
1.175329804834392283e-01
1.101842951691812955e-01
1.145964604367812473e-01
9.717416778206824923e-02
1.083525632404618855e-01
1.000668340507480797e-01
1.014329678730832157e-01
1.097313022116820080e-01
1.141242847839991220e-01
9.404459126293658600e-02
1.052697762184672953e-01
1.075393592317899077e-01
9.385074155198203094e-02
1.104957850111855377e-01
1.125437939415375455e-01
1.026178903298245598e-01
1.133788265619013053e-01
1.080598064677582848e-01
9.990631543927722125e-02
1.193010927985111852e-01
1.060021865616242037e-01
1.243952341874440537e-01
1.005361025614870951e-01
9.902638682888613431e-02
1.014523365596930182e-01
1.041915973110331406e-01
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment