In [3]:
# Notebook to use for testing filters and extract data relevant for going forward
In [33]:
import schedulingbazaar
import pickle
import datetime
import collections
import intervaltree as iv
from itertools import product
In [7]:
passes = pickle.load(open('passes_new.pkl', 'rb'))
In [36]:
# All sats for one gs filter
def passes_per_gs(passes, gs):
"""Returns Interval Tree containing all pass intervals over specified ground station
Arguments:
passes - initial dictionary of all passes for all gs/sat combos
gs - specific ground station name string
"""
passtree = iv.IntervalTree()
Names = collections.namedtuple('Names', ['gs','sat','pass_data'])
for (t1, t2), value in passes.items():
for satpass in value:
if t1 == gs:
begin = datetime.datetime.timestamp(satpass['start'])
end = datetime.datetime.timestamp(satpass['end'])
data = Names(gs, t2, satpass)
passtree.addi(begin, end, data)
return passtree
In [37]:
fact = passes_per_gs(passes, 'FACT')
In [31]:
datetime.datetime.timestamp(datetime.datetime.utcnow())
Out[31]:
In [39]:
print(len(fact))
fact.search(1499789151.60831)
Out[39]:
In [40]:
# All gs for one sat filter
def passes_per_sat(passes, sat):
"""Returns Interval Tree containing all pass intervals for specified satellite
Arguments:
passes - initial dictionary of all passes for all gs/sat combos
sat - specific satellite name string
"""
passtree = iv.IntervalTree()
Names = collections.namedtuple('Names', ['gs','sat','pass_data'])
for (t1, t2), value in passes.items():
for satpass in value:
if t2 == sat:
begin = datetime.datetime.timestamp(satpass['start'])
end = datetime.datetime.timestamp(satpass['end'])
data = Names(t1, sat, satpass)
passtree.addi(begin, end, data)
return passtree
In [43]:
oscar = passes_per_sat(passes, 'OSCAR 7 (AO-7)')
In [45]:
print(len(oscar))
oscar.search(1499789151.60831)
Out[45]:
In [46]:
# Passes for one gs and one sat filter
def passes_gs_sat(passes, gs, sat):
"""Returns Interval Tree containing all pass intervals for one gs/sat combo
Arguments:
passes - initial dictionary of all passes for all gs/sat combos
gs - specific ground station name string
sat - specific satellite name string
"""
passtree = iv.IntervalTree()
Names = collections.namedtuple('Names', ['gs','sat','pass_data'])
for (t1, t2), value in passes.items():
for satpass in value:
if t1 == gs and t2 == sat:
begin = datetime.datetime.timestamp(satpass['start'])
end = datetime.datetime.timestamp(satpass['end'])
data = Names(gs, sat, satpass)
passtree.addi(begin, end, data)
return passtree
In [47]:
both = passes_gs_sat(passes, 'FACT', 'OSCAR 7 (AO-7)')
In [48]:
print(len(both))
both.search(1499789151.60831)
Out[48]: