Source code for EXOSIMS.SurveySimulation.cbytScheduler

from EXOSIMS.Prototypes.SurveySimulation import SurveySimulation
import numpy as np
from EXOSIMS.util._numpy_compat import copy_if_needed


[docs] class cbytScheduler(SurveySimulation): """cbytScheduler - Completeness-by-time Scheduler This class implements a Scheduler that selects the current highest Completeness/Integration Time. Args: **specs: user specified values """ def __init__(self, **specs): SurveySimulation.__init__(self, **specs)
[docs] def choose_next_target(self, old_sInd, sInds, slewTimes, intTimes): """Choose next target based on truncated depth first search of linear cost function. Args: old_sInd (int): Index of the previous target star sInds (int numpy.ndarray): Indices of available targets slewTimes (astropy.units.Quantity numpy.ndarray): slew times to all stars (must be indexed by sInds) intTimes (astropy.units.Quantity numpy.ndarray): Integration times for detection in units of day Returns: tuple: sInd (int): Index of next target star waitTime (astropy.units.Quantity or None): the amount of time to wait (this method returns None) """ Comp = self.Completeness TL = self.TargetList TK = self.TimeKeeping # cast sInds to array sInds = np.array(sInds, ndmin=1, copy=copy_if_needed) # calculate dt since previous observation dt = TK.currentTimeNorm + slewTimes[sInds] - self.lastObsTimes[sInds] # get dynamic completeness values comps = Comp.completeness_update(TL, sInds, self.starVisits[sInds], dt) # selection metric being used: completeness/integration time selMetric = comps / intTimes # selecting the target star to observe sInd = sInds[selMetric == max(selMetric)][0] return sInd, None