observation.py
import numpy as np
class Observation:
def __init__(self, log, obsSet, detArray, sky, scn, belv=0.):
self.log = log
self.obsSet = obsSet
self.detArray = detArray
self.sky = sky
self.scn = scn
self.belv = belv
#Sample PWV and Elevation for the camera
self.pwv = self.sky.pwvSample()
self.elv = self.scn.elvSample()
if self.elv is not None: self.elv += self.belv
#Sample and store sky optical parameters
if detArray.nDet == 1:
elem, emiss, effic, temp = np.hsplit(np.array([self.sky.generate(self.pwv, self.elv, det.ch.freqs) for det in detArray.detectors]), 4)
else:
elem, emiss, effic, temp = np.hsplit(np.array([self.sky.generate(self.pwv, self.elv+self.obsSet.pixElvSample(), det.ch.freqs) for det in detArray.detectors]), 4)
self.elem = elem.reshape( len(elem), len(elem[0][0]), len(elem[0][0][0])).astype(np.str ); self.elem = np.array(self.elem, order='F'); self.elem.resize(len(self.elem), len(self.elem[0])); self.elem = self.elem.tolist()
self.emiss = emiss.reshape(len(emiss), len(emiss[0][0]), len(emiss[0][0][0])).astype(np.float); self.emiss = self.emiss.tolist()
self.effic = effic.reshape(len(effic), len(effic[0][0]), len(effic[0][0][0])).astype(np.float); self.effic = self.effic.tolist()
self.temp = temp.reshape( len(temp), len(temp[0][0]), len(temp[0][0][0])).astype(np.float); self.temp = self.temp.tolist()