import numpy as np import galsim from astropy.time import Time class Pointing(object): def __init__(self, id=0, ra=0., dec=0., img_pa=0., timestamp=1621915200, sat_x=0., sat_y=0., sat_z=0., sun_x=0., sun_y=0., sun_z=0., sat_vx=0., sat_vy=0., sat_vz=0., exp_time=150., pointing_type='MS'): self.id = id self.ra = ra self.dec = dec self.img_pa = img_pa * galsim.degrees self.timestamp = timestamp self.sat_x, self.sat_y, self.sat_z = sat_x, sat_y, sat_z self.sun_x, self.sun_y, self.sun_z = sun_x, sun_y, sun_z self.sat_vx, self.sat_vy, self.sat_vz = sat_vx, sat_vy, sat_vz self.exp_time = exp_time self.pointing_type = pointing_type self.jdt = 0. def read_pointing_columns(self, columns, id=0, t=1621915200, pointing_type='MS'): self.id = id col_len = len(columns) self.ra = float(columns[0]) self.dec = float(columns[1]) self.img_pa = float(columns[4]) * galsim.degrees self.pointing_type = pointing_type if col_len > 5: jdt = np.double(columns[5]) t_temp = Time(jdt, format='jd') self.jdt = jdt self.timestamp = t_temp.unix self.sat_x = float(columns[6]) self.sat_y = float(columns[7]) self.sat_z = float(columns[8]) self.sun_x = float(columns[9]) self.sun_y = float(columns[10]) self.sun_z = float(columns[1]) self.sat_vx = float(columns[15]) self.sat_vy = float(columns[16]) self.sat_vz = float(columns[17]) self.exp_time = float(columns[18]) else: self.timestamp = t