find_passes: Group satellite and transmitter keys
This change enables an easy separation of those keys from this function in a future patch, following the goal of separating pass prediction and observation planning specific code.merge-requests/56/head
parent
bef228ff61
commit
b3d3dc3be7
|
@ -108,10 +108,12 @@ def find_passes(satellite,
|
|||
|
||||
# get pass information
|
||||
satpass = {
|
||||
'name': str(satellite.name),
|
||||
'id': str(satellite.id),
|
||||
'tle1': str(satellite.tle1),
|
||||
'tle2': str(satellite.tle2),
|
||||
'satellite': {
|
||||
'name': str(satellite.name),
|
||||
'id': str(satellite.id),
|
||||
'tle1': str(satellite.tle1),
|
||||
'tle2': str(satellite.tle2),
|
||||
},
|
||||
'tr': tr.datetime(), # Rise time
|
||||
'azr': azimuth_r, # Rise Azimuth
|
||||
'tt': tt.datetime(), # Max altitude time
|
||||
|
@ -119,11 +121,13 @@ def find_passes(satellite,
|
|||
'ts': ts.datetime(), # Set time
|
||||
'azs': azimuth_s, # Set azimuth
|
||||
'valid': valid,
|
||||
'uuid': satellite.transmitter,
|
||||
'success_rate': satellite.success_rate,
|
||||
'good_count': satellite.good_count,
|
||||
'data_count': satellite.data_count,
|
||||
'mode': satellite.mode,
|
||||
'transmitter': {
|
||||
'uuid': satellite.transmitter,
|
||||
'success_rate': satellite.success_rate,
|
||||
'good_count': satellite.good_count,
|
||||
'data_count': satellite.data_count,
|
||||
'mode': satellite.mode,
|
||||
},
|
||||
'scheduled': False
|
||||
}
|
||||
passes.append(satpass)
|
||||
|
|
|
@ -246,7 +246,7 @@ def main():
|
|||
report_efficiency(scheduledpasses, passes)
|
||||
|
||||
# Find unique objects
|
||||
satids = sorted(set([satpass['id'] for satpass in passes]))
|
||||
satids = sorted(set([satpass['satellite']['id'] for satpass in passes]))
|
||||
|
||||
print_scheduledpass_summary(scheduledpasses, ground_station_id, printer=logging.info)
|
||||
|
||||
|
@ -282,10 +282,10 @@ def main():
|
|||
for satpass in tqdm(scheduledpasses_sorted):
|
||||
if not satpass['scheduled']:
|
||||
logging.debug("Scheduling %05d %s %s %3.0f %4.3f %s %s" %
|
||||
(int(satpass['id']), satpass['tr'].strftime("%Y-%m-%dT%H:%M:%S"),
|
||||
(int(satpass['satellite']['id']), satpass['tr'].strftime("%Y-%m-%dT%H:%M:%S"),
|
||||
satpass['ts'].strftime("%Y-%m-%dT%H:%M:%S"), float(satpass['altt']),
|
||||
satpass['priority'], satpass['uuid'], satpass['name'].rstrip()))
|
||||
schedule_observation(session, int(satpass['id']), satpass['uuid'],
|
||||
satpass['priority'], satpass['transmitter']['uuid'], satpass['satellite']['name'].rstrip()))
|
||||
schedule_observation(session, int(satpass['satellite']['id']), satpass['transmitter']['uuid'],
|
||||
ground_station_id,
|
||||
satpass['tr'].strftime("%Y-%m-%d %H:%M:%S") + ".000",
|
||||
satpass['ts'].strftime("%Y-%m-%d %H:%M:%S") + ".000")
|
||||
|
|
24
utils.py
24
utils.py
|
@ -33,25 +33,25 @@ def get_priority_passes(passes, priorities, favorite_transmitters, only_priority
|
|||
normal = []
|
||||
for satpass in passes:
|
||||
# Is this satellite a priority satellite?
|
||||
if satpass['id'] in priorities:
|
||||
if satpass['satellite']['id'] in priorities:
|
||||
# Is this transmitter a priority transmitter?
|
||||
if satpass['uuid'] == favorite_transmitters[satpass['id']]:
|
||||
satpass['priority'] = priorities[satpass['id']]
|
||||
satpass['uuid'] = favorite_transmitters[satpass['id']]
|
||||
if satpass['transmitter']['uuid'] == favorite_transmitters[satpass['satellite']['id']]:
|
||||
satpass['priority'] = priorities[satpass['satellite']['id']]
|
||||
satpass['transmitter']['uuid'] = favorite_transmitters[satpass['satellite']['id']]
|
||||
|
||||
# Add if priority is high enough
|
||||
if satpass['priority'] >= min_priority:
|
||||
priority.append(satpass)
|
||||
elif only_priority:
|
||||
# Find satellite transmitter with highest number of good observations
|
||||
max_good_count = max([s['good_count'] for s in passes if s["id"] == satpass["id"]])
|
||||
max_good_count = max([s['transmitter']['good_count'] for s in passes if s['satellite']["id"] == satpass['satellite']["id"]])
|
||||
if max_good_count > 0:
|
||||
satpass['priority'] = \
|
||||
(float(satpass['altt']) / 90.0) \
|
||||
* satpass['success_rate'] \
|
||||
* float(satpass['good_count']) / max_good_count
|
||||
* satpass['transmitter']['success_rate'] \
|
||||
* float(satpass['transmitter']['good_count']) / max_good_count
|
||||
else:
|
||||
satpass['priority'] = (float(satpass['altt']) / 90.0) * satpass['success_rate']
|
||||
satpass['priority'] = (float(satpass['altt']) / 90.0) * satpass['transmitter']['success_rate']
|
||||
|
||||
# Add if priority is high enough
|
||||
if satpass['priority'] >= min_priority:
|
||||
|
@ -85,11 +85,11 @@ def print_scheduledpass_summary(scheduledpasses, ground_station_id, printer=prin
|
|||
"%3d | %3.d | %05d | %s | %s | %3.0f | %4.6f | %s | %-10s | %s"%(
|
||||
ground_station_id,
|
||||
satpass['scheduled'],
|
||||
int(satpass['id']),
|
||||
int(satpass['satellite']['id']),
|
||||
satpass['tr'].strftime("%Y-%m-%dT%H:%M:%S"),
|
||||
satpass['ts'].strftime("%Y-%m-%dT%H:%M:%S"),
|
||||
float(satpass['altt']) if satpass['altt'] else 0.,
|
||||
satpass.get('priority', 0.0),
|
||||
satpass.get('uuid', ''),
|
||||
satpass.get('mode', ''),
|
||||
satpass['name'].rstrip()))
|
||||
satpass['transmitter'].get('uuid', ''),
|
||||
satpass['transmitter'].get('mode', ''),
|
||||
satpass['satellite']['name'].rstrip()))
|
||||
|
|
Loading…
Reference in New Issue