Commit adaef7ac authored by Fang Yuedong's avatar Fang Yuedong Committed by Zhang Xin
Browse files

fix PSF orientation

parent 6904f2fc
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -7,7 +7,7 @@ from astropy.io import fits
import astropy.wcs as pywcs
import astropy.wcs as pywcs
from collections import OrderedDict
from collections import OrderedDict


from scipy import math
# from scipy import math
import random
import random


import os
import os
+19 −0
Original line number Original line Diff line number Diff line
@@ -256,9 +256,28 @@ class MockObject(object):
        spec_orders = sdp.compute_spec_orders()
        spec_orders = sdp.compute_spec_orders()
        for k, v in spec_orders.items():
        for k, v in spec_orders.items():
            img_s = v[0]
            img_s = v[0]
            #########################################################
            # DEBUG
            #########################################################
            # print("before convolveGaussXorders, img_s:", img_s)
            nan_ids = np.isnan(img_s)
            if img_s[nan_ids].shape[0] > 0:
                # img_s[nan_ids] = 0
                print("DEBUG: before convolveGaussXorders specImg nan num is", img_s[nan_ids].shape[0])
            #########################################################
            img_s, orig_off = convolveGaussXorders(img_s, xOrderSigPlus[k])
            img_s, orig_off = convolveGaussXorders(img_s, xOrderSigPlus[k])
            origin_order_x = v[1] - orig_off
            origin_order_x = v[1] - orig_off
            origin_order_y = v[2] - orig_off
            origin_order_y = v[2] - orig_off

            #########################################################
            # DEBUG
            #########################################################
            # print("DEBUG: orig_off is", orig_off)
            nan_ids = np.isnan(img_s)
            if img_s[nan_ids].shape[0] > 0:
                img_s[nan_ids] = 0
                print("DEBUG: specImg nan num is", img_s[nan_ids].shape[0])
            #########################################################
            specImg = galsim.ImageF(img_s)
            specImg = galsim.ImageF(img_s)
            photons = galsim.PhotonArray.makeFromImage(specImg)
            photons = galsim.PhotonArray.makeFromImage(specImg)
            photons.x += origin_order_x
            photons.x += origin_order_x
+2 −3
Original line number Original line Diff line number Diff line
@@ -545,10 +545,9 @@ def tag_sed(h5file, model_tag, teff=5000, logg=2, feh=0):
    flux = np.array(h5file["sed"][path][()]).ravel()
    flux = np.array(h5file["sed"][path][()]).ravel()
    return path, wave, flux
    return path, wave, flux


def convolveGaussXorders(img=None, sigma = 1):
    from astropy.modeling.models import Gaussian2D
    from astropy.modeling.models import Gaussian2D
    from scipy import signal
    from scipy import signal
def convolveGaussXorders(img=None, sigma = 1):

    offset = int(np.ceil(sigma*10))
    offset = int(np.ceil(sigma*10))
    g_size = 2*offset+1
    g_size = 2*offset+1


+7 −3
Original line number Original line Diff line number Diff line
@@ -7,6 +7,8 @@ import psutil
from astropy.io import fits
from astropy.io import fits
from datetime import datetime
from datetime import datetime


import traceback

from ObservationSim.Config import config_dir, ChipOutput
from ObservationSim.Config import config_dir, ChipOutput
from ObservationSim.Config.Header import generatePrimaryHeader, generateExtensionHeader
from ObservationSim.Config.Header import generatePrimaryHeader, generateExtensionHeader
from ObservationSim.Instrument import Telescope, Filter, FilterParam, FocalPlane, Chip
from ObservationSim.Instrument import Telescope, Filter, FilterParam, FocalPlane, Chip
@@ -77,7 +79,7 @@ class Observation(object):
        chip_output.logger.info(':::::::::::::::::::::::::::END:::::::::::::::::::::::::::::::::::')
        chip_output.logger.info(':::::::::::::::::::::::::::END:::::::::::::::::::::::::::::::::::')


        if self.config["psf_setting"]["psf_model"] == "Gauss":
        if self.config["psf_setting"]["psf_model"] == "Gauss":
            psf_model = PSFGauss(chip=chip)
            psf_model = PSFGauss(chip=chip, psfRa=self.config["psf_setting"]["psf_rcont"])
        elif self.config["psf_setting"]["psf_model"] == "Interp":
        elif self.config["psf_setting"]["psf_model"] == "Interp":
            psf_model = PSFInterp(chip=chip, PSF_data_file=self.path_dict["psf_dir"])
            psf_model = PSFInterp(chip=chip, PSF_data_file=self.path_dict["psf_dir"])
        else:
        else:
@@ -207,7 +209,8 @@ class Observation(object):
                    )
                    )


                except Exception as e:
                except Exception as e:
                    print(e)
                    # print(e)
                    traceback.print_exc()
                    chip_output.logger.error(e)
                    chip_output.logger.error(e)
                    continue
                    continue
                
                
@@ -325,7 +328,8 @@ class Observation(object):
                        # print("object omitted", flush=True)
                        # print("object omitted", flush=True)
                        continue
                        continue
                except Exception as e:
                except Exception as e:
                    print(e)
                    # print(e)
                    traceback.print_exc()
                    chip_output.logger.error(e)
                    chip_output.logger.error(e)
                    pass
                    pass
                # Unload SED:
                # Unload SED:
+7 −3
Original line number Original line Diff line number Diff line
@@ -6,12 +6,16 @@ from scipy.interpolate import interp1d
from ObservationSim.PSF.PSFModel import PSFModel
from ObservationSim.PSF.PSFModel import PSFModel


class PSFGauss(PSFModel):
class PSFGauss(PSFModel):
	def __init__(self, chip, fwhm=0.187, sigSpin=0., psfRa=0.15):
	def __init__(self, chip, fwhm=0.187, sigSpin=0., psfRa=None):
		self.pix_size = chip.pix_scale
		self.pix_size = chip.pix_scale
		self.chip = chip
		self.chip = chip
		if psfRa is None:
			self.fwhm = fwhm
			self.fwhm = fwhm
		self.sigSpin = sigSpin
			self.sigGauss = 0.15
		else:
			self.fwhm = self.fwhmGauss(r=psfRa)
			self.sigGauss = psfRa # 80% light radius
			self.sigGauss = psfRa # 80% light radius
		self.sigSpin = sigSpin
		self.psf = galsim.Gaussian(flux=1.0,fwhm=fwhm)
		self.psf = galsim.Gaussian(flux=1.0,fwhm=fwhm)


	def perfGauss(self, r, sig):
	def perfGauss(self, r, sig):
Loading