Skip to content

Commit

Permalink
enable client code to set atm psf screen_size and screen_scale
Browse files Browse the repository at this point in the history
  • Loading branch information
jchiang87 committed Aug 16, 2018
1 parent fd6d897 commit 4146648
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
8 changes: 6 additions & 2 deletions python/desc/imsim/atmPSF.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,13 @@ class AtmosphericPSF(PSFbase):
@param exptime Exposure time in seconds. default: 30.
@param kcrit Critical Fourier mode at which to split first and second kicks
in units of (1/r0). default: 0.2
@param screen_size Size of the phase screens in meters. default: 819.2
@param screen_scale Size of phase screen "pixels" in meters. default: 0.1
@param doOpt Add in optical phase screens? default: True
@param logger Optional logger. default: None
"""
def __init__(self, airmass, rawSeeing, band, rng, t0=0.0, exptime=30.0, kcrit=0.2,
doOpt=True, logger=None):
screen_size=819.2, screen_scale=0.1, doOpt=True, logger=None):
self.airmass = airmass
self.rawSeeing = rawSeeing

Expand All @@ -62,6 +64,8 @@ def __init__(self, airmass, rawSeeing, band, rng, t0=0.0, exptime=30.0, kcrit=0.
self.rng = rng
self.t0 = t0
self.exptime = exptime
self.screen_size = screen_size
self.screen_scale = screen_scale
self.logger = logger

self.atm = galsim.Atmosphere(**self._getAtmKwargs())
Expand Down Expand Up @@ -139,7 +143,7 @@ def _getAtmKwargs(self):

return dict(r0_500=r0_500, L0=L0, speed=speeds, direction=directions,
altitude=altitudes, r0_weights=weights, rng=self.rng,
screen_size=819.2, screen_scale=0.1)
screen_size=self.screen_size, screen_scale=self.screen_scale)

def _getPSF(self, xPupil=None, yPupil=None, gsparams=None):
"""
Expand Down
7 changes: 5 additions & 2 deletions python/desc/imsim/imSim.py
Original file line number Diff line number Diff line change
Expand Up @@ -859,7 +859,7 @@ def FWHMgeom(rawSeeing, band, altitude):
return 0.822*FWHMeff(rawSeeing, band, altitude) + 0.052


def make_psf(psf_name, obs_md, log_level='WARN', rng=None):
def make_psf(psf_name, obs_md, log_level='WARN', rng=None, **kwds):
"""
Make the requested PSF object.
Expand All @@ -875,6 +875,9 @@ def make_psf(psf_name, obs_md, log_level='WARN', rng=None):
Logging level ('DEBUG', 'INFO', 'WARN', 'ERROR', 'CRITICAL').
rng: galsim.BaseDeviate
Instance of the galsim.baseDeviate random number generator.
**kwds: **dict
Additional keyword arguments to pass to the AtmosphericPSF,
i.e., screen_size(=819.2) and screen_scale(=0.1).
Returns
-------
Expand All @@ -901,7 +904,7 @@ def make_psf(psf_name, obs_md, log_level='WARN', rng=None):
rawSeeing=rawSeeing,
band=obs_md.bandpass,
rng=rng,
logger=logger)
logger=logger, **kwds)
return psf

def save_psf(psf, outfile):
Expand Down
2 changes: 1 addition & 1 deletion tests/test_psf.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def test_save_and_load_psf(self):
'tiny_instcat.txt')
obs_md, _, _ = desc.imsim.parsePhoSimInstanceFile(instcat)
for psf_name in ("DoubleGaussian", "Kolmogorov", "Atmospheric"):
psf = desc.imsim.make_psf(psf_name, obs_md)
psf = desc.imsim.make_psf(psf_name, obs_md, screen_scale=0.4)
psf_file = os.path.join(self.test_dir, '{}.pkl'.format(psf_name))
desc.imsim.save_psf(psf, psf_file)
psf_retrieved = desc.imsim.load_psf(psf_file)
Expand Down

0 comments on commit 4146648

Please sign in to comment.