Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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_psfPlot(iccd, ipsf, psfPath):
plt.cla()
plt.close('all')
#psf质心位置检查,图像切片程序检查
fig = plt.figure(figsize=(4,16))
plt.subplots_adjust(wspace=0.1, hspace=0.1)
psfSet = []
psfSetX= []
for iwave in range(1, 5):
psfInfo = myConfig.LoadPSF(iccd, iwave, ipsf, psfPath, InputMaxPixelPos=True, PSFCentroidWgt=False)
psfSet.append(psfInfo)
psfInfo = myConfig.LoadPSF(iccd, iwave, ipsf, psfPath, InputMaxPixelPos=True, PSFCentroidWgt=True)
psfSetX.append(psfInfo)
ax = plt.subplot(4,1,iwave)
psfMat = psfSet[iwave-1]['psfMat']
pixsize = psfSet[iwave-1]['pixsize']*1e-3 #microns -> mm
print('psfMat-shape:', psfMat.shape)
npix = psfMat.shape[0]
pixCutEdge= int(npix/2-15)
plt.imshow((psfMat[pixCutEdge:npix-pixCutEdge, pixCutEdge:npix-pixCutEdge]), origin='lower')
plt.plot([npix/2-pixCutEdge, npix/2-pixCutEdge],[0, (npix/2-pixCutEdge)*2-1],'w--')
plt.plot([0, (npix/2-pixCutEdge)*2-1],[npix/2-pixCutEdge, npix/2-pixCutEdge],'w--')
imgX = psfSet[iwave-1]['image_x'] #in mm
imgY = psfSet[iwave-1]['image_y'] #in mm
#cenX = imgX +deltX
#cenY = imgY -deltY
deltX= psfSet[iwave-1]['centroid_x'] #in mm
deltY= psfSet[iwave-1]['centroid_y'] #in mm
cenPix_X = npix/2 + deltX/pixsize
cenPix_Y = npix/2 + deltY/pixsize
plt.plot([cenPix_X-pixCutEdge],[cenPix_Y-pixCutEdge], 'rx', ms = 20)
deltX= psfSetX[iwave-1]['centroid_x'] #in mm
deltY= psfSetX[iwave-1]['centroid_y'] #in mm
cenPix_X = npix/2 + deltX/pixsize
cenPix_Y = npix/2 + deltY/pixsize
plt.plot([cenPix_X-pixCutEdge],[cenPix_Y-pixCutEdge], 'bx', ms = 10, mew=2)
maxX = psfSet[iwave-1]['max_x']
maxY = psfSet[iwave-1]['max_y']
maxPix_X = npix/2 + maxX/pixsize
maxPix_Y = npix/2 + maxY/pixsize
plt.plot([maxPix_X-pixCutEdge],[maxPix_Y-pixCutEdge], 'r+', ms = 20)
img = psfMat/np.sum(psfMat)
y, x = ndimage.center_of_mass(img)
print(x, y)
print(cenPix_X, cenPix_Y)
plt.plot([x-pixCutEdge],[y-pixCutEdge], 'wx', ms = 5, mew=1)
plt.annotate('iccd={:}, iwave={:}, ipsf={:}'.format(iccd, iwave, ipsf), [0,(npix/2-pixCutEdge)*2-5], c='w', size=15)
plt.savefig('figs/psf_{:}_{:}.pdf'.format(iccd, ipsf))
print('psfSet has been loaded.')
print('Usage: psfSet[i][keys]')
print('psfSet.keys:', psfSet[0].keys())
##############################
##############################
##############################
if __name__=='__main__':
iccd = 2 #[1, 30]
iwave= 2 #[1, 4]
ipsf = 46 #[1, 100]
psfPath = '/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/CSSOS_psf_20210108/CSST_psf_ciomp_2p5um_cycle3_ccr90'
iipsf = [1, 15, 30, 450, 465, 480, 870, 885, 900]
for iccd in range(1, 31):
for ipsf in iipsf:
test_psfPlot(iccd, ipsf, psfPath)