satnogs-auto-scheduler/utils.py

58 lines
2.1 KiB
Python

import logging
import settings
import os
def read_priorities_transmitters(filename):
# Priorities and favorite transmitters
# read the following format
# 43017 1. KgazZMKEa74VnquqXLwAvD
if filename is not None and os.path.exists(filename):
with open(filename, "r") as fp:
satprio = {}
sattrans = {}
lines = fp.readlines()
for line in lines:
if line[0]=="#":
continue
parts = line.strip().split(" ")
sat = parts[0]
prio = parts[1]
transmitter = parts[2]
satprio[sat] = float(prio)
sattrans[sat] = transmitter
return (satprio, sattrans)
else:
return ({}, {})
def get_priority_passes(passes, priorities, favorite_transmitters, only_priority, min_priority):
priority = []
normal = []
for satpass in passes:
# Is this satellite a priority satellite?
if satpass['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']]
# 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"]])
if max_good_count > 0:
satpass['priority'] = \
(float(satpass['altt']) / 90.0) \
* satpass['success_rate'] \
* float(satpass['good_count']) / max_good_count
else:
satpass['priority'] = (float(satpass['altt']) / 90.0) * satpass['success_rate']
# Add if priority is high enough
if satpass['priority'] >= min_priority:
normal.append(satpass)
return (priority, normal)