def night_fractions(length=3660, supersize=False): """ Find the fraction of fields that have a satellite in them """ mjd_start = 59853.8 mjd_end = mjd_start + length mjd_check = np.arange(mjd_start, mjd_end + 0.75, 0.75) alm = Almanac(mjd_start=mjd_start) sat_tles = starlink_constellation(supersize=supersize) constellation = Constellation(sat_tles) night_report = alm.get_sunset_info(mjd_start) current_night = night_report['night'] result_fractions = [] result_mjds = [] for mjd in mjd_check: night_report = alm.get_sunset_info(mjd) if night_report['night'] != current_night: middle = (night_report['sun_n18_setting'] + night_report['sun_n18_rising']) / 2. mjds = [ night_report['sun_n12_setting'], (night_report['sun_n12_setting'] + night_report['sun_n18_setting']) / 2., night_report['sun_n18_setting'], middle - 1. / 24, middle, middle + 1. / 24, night_report['sun_n18_rising'], (night_report['sun_n12_rising'] + night_report['sun_n18_rising']) / 2., night_report['sun_n12_rising'] ] result = [ constellation.fields_hit(mjd_in_night, fraction=True) for mjd_in_night in mjds ] result.append(current_night) result_fractions.append(result) result_mjds.append(mjds) text = "\rnight = %i" % current_night sys.stdout.write(text) sys.stdout.flush current_night = night_report['night'] return result_fractions, result_mjds
def check_pointings(night_max=366, dbfile='twilight_neo_mod2_v1.5_10yrs.db', outfile=None, supersize=False, fivek=False): """ Check each pointing up to night """ extra_fn = '' if supersize: extra_fn += 'supersize_' if fivek: extra_fn += 'fivek_' conn = sqlite3.connect(dbfile) df = pd.read_sql( 'select observationId, altitude, azimuth, observationStartMJD, night from summaryallprops where night <= %i order by observationId and note="twilight_neo"' % night_max, conn) conn.close() nobs = np.size(df['altitude']) names = ['observationId', 'hit'] types = [int, float] hit = np.zeros(nobs, dtype=list(zip(names, types))) hit['observationId'] = df['observationStartMJD'].values sat_tles = starlink_constellation(supersize=supersize, fivek=fivek) constellation = Constellation(sat_tles, tstep=0.1, exptime=1.) for i, obs in df.iterrows(): try: hit['hit'][i] = constellation.check_pointing( obs['altitude'], obs['azimuth'], obs['observationStartMJD']) except ValueError: constellation.advance_epoch() hit['hit'][i] = constellation.check_pointing( obs['altitude'], obs['azimuth'], obs['observationStartMJD']) progress = i / nobs * 100 text = "\rprogress = %.2f%%" % progress sys.stdout.write(text) sys.stdout.flush if outfile is None: outfile = 'hit_scale' + extra_fn + dbfile[:-3] np.save(outfile, hit)