def run_scanning_simulation(radar_ctrl): p = Profiler() radar_ctrl.profiler = p p.start('total') scheduler = ObservedScanning( radar=eiscat3d, controllers=[radar_ctrl], logger=logger, profiler=p, ) p.start('equidistant_sampling') t = sorts.equidistant_sampling( orbit=obj.state, start_t=0, end_t=end_t, max_dpos=1e3, ) p.stop('equidistant_sampling') print(f'Temporal points obj: {len(t)}') p.start('get_state') states = obj.get_state(t) p.stop('get_state') p.start('find_passes') #rename cache_data to something more descriptive passes = eiscat3d.find_passes(t, states, cache_data=True) p.stop('find_passes') p.start('observe_passes') data = scheduler.observe_passes(passes, space_object=obj, snr_limit=False) p.stop('observe_passes') for psi in data: for txps in psi: for rxtxps in txps: print(f'Max SNR={10*np.log10(rxtxps["snr"].max())} dB') p.stop('total') print(f'\n {radar_ctrl.__class__}: len(t) = {len(radar_ctrl.t)} \n') print(p.fmt(normalize='total'))
def observe_objects(objs, controllers, end_t=600.0, dt=10.0, verbose=True): p = Profiler() class ObservedScanning(StaticList, ObservedParameters): pass #set radar for ctrl in controllers: ctrl.radar = eiscat3d ctrl.profiler = p ctrl.logger = logger p.start('total') scheduler = ObservedScanning( radar=eiscat3d, controllers=controllers, logger=logger, profiler=p, ) t = np.arange(0, end_t, dt) if verbose: for obj in objs: print(obj) datas = [] passes = [] states = [] for ind in range(len(objs)): p.start('get_state') states += [objs[ind].get_state(t)] p.stop('get_state') p.start('find_passes') passes += [eiscat3d.find_passes(t, states[ind], cache_data=True)] p.stop('find_passes') p.start('observe_passes') data = scheduler.observe_passes(passes[ind], space_object=objs[ind], snr_limit=False) p.stop('observe_passes') datas.append(data) p.stop('total') if verbose: print(p.fmt(normalize='total')) return {'t': t, 'observations': datas, 'passes': passes, 'states': states}
import numpy as np import matplotlib.pyplot as plt import pyorb import sorts eiscat3d = sorts.radars.eiscat3d from sorts.profiling import Profiler from sorts.propagator import SGP4 Prop_cls = SGP4 Prop_opts = dict(settings=dict(out_frame='ITRF', ), ) prop = Prop_cls(**Prop_opts) p = Profiler() p.start('total') orb = pyorb.Orbit(M0=pyorb.M_earth, direct_update=True, auto_update=True, degrees=True, a=7200e3, e=0.1, i=75, omega=0, Omega=79, anom=72, epoch=53005.0) print(orb) p.start('equidistant_sampling')
p = Profiler() scheduler = MyStaticList(radar=eiscat3d, controllers=[e3d_tracker], profiler=p) sched_data = scheduler.schedule() rx_head = [ f'rx{i} {co}' for i in range(len(scheduler.radar.rx)) for co in ['az', 'el'] ] sched_tab = tabulate(sched_data, headers=["t [s]"] + rx_head + ['Controller', 'Target']) print(sched_tab) p.start('total') data0 = scheduler.observe_passes(passes0, space_object=objs[0], snr_limit=False) p.stop('total') print(p.fmt(normalize='total')) data1 = scheduler.observe_passes(passes1, space_object=objs[1], snr_limit=False) #create a tdm file example # pth = pathlib.Path(__file__).parent / 'data' / 'test_tdm.tdm' # print(f'Writing TDM data to: {pth}') # dat = data0[0][0][0]
parameters=dict(d=0.1, ), ), ] for obj in objs: print(obj) class ObservedScanning(StaticList, ObservedParameters): pass scanner_ctrl = Scanner(eiscat3d, scan, profiler=p, logger=logger) scanner_ctrl.t = np.arange(0, end_t, scan.dwell()) p.start('total') scheduler = ObservedScanning( radar=eiscat3d, controllers=[scanner_ctrl], logger=logger, profiler=p, ) t = np.arange(0.0, end_t, 30.0) datas = [] passes = [] states = [] for ind in range(len(objs)): print(f'Temporal points obj {ind}: {len(t)}')
parameters=dict(d=0.1, ), ), ] for obj in objs: print(obj) class ObservedScanning(StaticList, ObservedParameters): pass scanner_ctrl = Scanner(eiscat3d, scan, profiler=p, logger=logger) scanner_ctrl.t = np.arange(0, end_t, scan.dwell()) p.start('total') scheduler = ObservedScanning( radar=eiscat3d, controllers=[scanner_ctrl], logger=logger, profiler=p, ) datas = [] passes = [] states = [] for ind in range(len(objs)): p.start('equidistant_sampling') t = sorts.equidistant_sampling( orbit=objs[ind].state, start_t=0,
''' import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import pyorb import sorts eiscat3d = sorts.radars.eiscat3d from sorts.controller import Tracker from sorts.propagator import SGP4 from sorts.profiling import Profiler p = Profiler() p.start('total') prop = SGP4(settings=dict(out_frame='ITRF', ), ) orb = pyorb.Orbit(M0=pyorb.M_earth, direct_update=True, auto_update=True, degrees=True, a=6700e3, e=0, i=75, omega=0, Omega=80, anom=72) t = np.linspace(0, 120, num=10) mjd0 = 53005
#!/usr/bin/env python ''' Profiling save and load ================================ ''' import pathlib from sorts.profiling import Profiler p = Profiler() p.start('program') p.start('list init') lst = list(range(200)) p.stop('list init') for i in range(1000): p.start('list reversal') lst = lst[::-1] p.stop('list reversal') p.stop('program') print(p) pth = pathlib.Path(__file__).parent / 'data' / 'profiler_data.txt' print(f'Writing profiler data to: {pth}') p.to_txt(pth) new_profiler = Profiler.from_txt(pth)