|
|
import sys
|
|
|
import os
|
|
|
import numpy as np
|
|
|
import datetime
|
|
|
import time
|
|
|
|
|
|
os.environ['TZ'] = 'UTC'
|
|
|
epoch_2000 = np.datetime64('2000-01-01T00:00:00',tzinfo=datetime.timezone.utc)
|
|
|
|
|
|
def load_scalar(fname):
|
|
|
with open(fname, "r") as f:
|
|
|
return [[
|
|
|
datetime.datetime(*(time.strptime(line.split()[0], '%Y-%m-%dT%H:%M:%S.%f')[0:6]),
|
|
|
tzinfo=datetime.timezone.utc),
|
|
|
float(line.split()[1])]
|
|
|
for line in f if "#" not in line]
|
|
|
|
|
|
def extract_vector(variable):
|
|
|
return zip(*[(pt.x, pt.value(0), pt.value(1), pt.value(2)) for pt in variable])
|
|
|
|
|
|
|
|
|
"""
|
|
|
Copied from myAMDA should be factored in somehow
|
|
|
"""
|
|
|
def generate_data(tstart, tstop, dt):
|
|
|
delta = np.timedelta64(dt, 's')
|
|
|
vector_size = int(np.round((tstop-tstart)/delta)) + 1
|
|
|
t = [tstart+i*delta for i in range(vector_size)]
|
|
|
x0 = tstart-epoch_2000
|
|
|
x = [(x0 + i * delta).astype('float')/1000000 for i in range(vector_size)]
|
|
|
y = [(x0 + (i+1) * delta).astype('float')/1000000 for i in range(vector_size)]
|
|
|
z = [(x0 + (i+2) * delta).astype('float')/1000000 for i in range(vector_size)]
|
|
|
return t,x,y,z
|
|
|
|
|
|
def compare_with_ref(var, ref):
|
|
|
t_ref, x_ref, y_ref, z_ref = ref
|
|
|
t,x,y,z = extract_vector(var)
|
|
|
return all([
|
|
|
all([t_ref[i].astype(float)/1000000 == t[i] for i in range(len(t))]),
|
|
|
all([x_ref[i] == x[i] for i in range(len(x))]),
|
|
|
all([y_ref[i] == y[i] for i in range(len(y))]),
|
|
|
all([z_ref[i] == z[i] for i in range(len(z))])
|
|
|
])
|
|
|
|