def setJD(self, jd=None): ''' Configure time domain by specifing a julian day. It will use information on exposure time to build time bins that will be filled when selecting targets. ''' if not jd: site = Site() jd = np.floor(site.JD()) + 0.5 nightstart = _skysub.jd_sun_alt(self.sunMaxAlt, jd, self.sitelat, self.sitelong) nightend = _skysub.jd_sun_alt(self.sunMaxAlt, jd + 0.5, self.sitelat, self.sitelong) log.debug('Nigh Start @JD= %.3f # Night End @JD = %.3f' % (nightstart, nightend)) tbin = np.max([np.max(self.sciExpTime), np.max(self.stdExpTime) ]) * self.nfilters / 60. / 60. / 24. self.obsTimeBins = np.arange(nightstart, nightend + tbin, tbin) self.obsTimeMask = np.zeros(len(self.obsTimeBins)) self.obsTimeMask[-1] = 1.0 # Marking filled bins session = Session() scheduled = session.query(Program) for target in scheduled: tindex = np.abs(self.obsTimeBins - 2400000.5 - target.slewAt).argmin() self.obsTimeMask[tindex] = 1.0 self.isJD = True