Raw File
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()
back to top