Source code for EXOSIMS.util.waypoint

import numpy as np
import os.path
import astropy.units as u


[docs] def waypoint(comps, intTimes, duration, mpath, tofile): """Generates waypoint dictionary for MissionSim Args: comps (array): An array of completeness values for all stars intTimes (array): An array of predicted integration times for all stars duration (int): The length of time allowed for the waypoint calculation, defaults to 365 mpath (string): The path to the directory to save a plot in. tofile (string): Name of the file containing a plot of total completeness over mission time, by default genWaypoint does not create this plot Returns: dict: Output dictionary containing the number of stars visited, the total completness achieved, and the amount of time spent integrating. """ CbT = comps / intTimes sInds_sorted = np.argsort(CbT)[::-1] # run through sorted sInds until end of duration intTime_sum = 0 * u.d comp_sum = 0 num_stars = 0 comp_sums = [] intTime_sums = [] for sInd in sInds_sorted: if intTime_sum + intTimes[sInd] > duration * u.d: break intTime_sum += intTimes[sInd] comp_sum += comps[sInd] num_stars += 1 comp_sums.append(comp_sum) intTime_sums.append(intTime_sum.value) # if a filename is specified, create a plot. if tofile is not None: # pragma: no cover import matplotlib.pyplot as plt plt.scatter(intTime_sums, comp_sums, s=4, color="0.25") plt.ylabel("Total Completeness") plt.xlabel("Time (d)") plt.title("Total Completeness Over {} Star Visits".format(num_stars)) plt.grid(True) plt.savefig(os.path.join(mpath, tofile)) return { "numStars": num_stars, "Total Completeness": comp_sum, "Total intTime": intTime_sum, }