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
Fabian P. Schmidt 2019-11-06 18:12:58 +01:00
parent bef228ff61
commit b3d3dc3be7
3 changed files with 29 additions and 25 deletions

View File

@ -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)

View File

@ -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")

View File

@ -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()))