def compute_times(frames_info):
'''
Compute the various timestamps associated to frames
Parameters
----------
frames_info : dataframe
The data frame with all the information on science frames
'''
# get necessary values
time_start = frames_info['DATE-OBS'].values
time_end = frames_info['DET FRAM UTC'].values
time_delta = (time_end - time_start) / frames_info['DET NDIT'].values.astype(np.int)
DIT = np.array(frames_info['DET SEQ1 DIT'].values.astype(np.float)*1000, dtype='timedelta64[ms]')
# calculate UTC time stamps
idx = frames_info.index.get_level_values(1).values
ts_start = time_start + time_delta * idx
ts = time_start + time_delta * idx + DIT/2
ts_end = time_start + time_delta * idx + DIT
# calculate mjd
geolon = coord.Angle(frames_info['TEL GEOLON'].values[0], units.degree)
geolat = coord.Angle(frames_info['TEL GEOLAT'].values[0], units.degree)
geoelev = frames_info['TEL GEOELEV'].values[0]
utc = Time(ts_start.astype(str), scale='utc', location=(geolon, geolat, geoelev))
mjd_start = utc.mjd
utc = Time(ts.astype(str), scale='utc', location=(geolon, geolat, geoelev))
mjd = utc.mjd
utc = Time(ts_end.astype(str), scale='utc', location=(geolon, geolat, geoelev))
mjd_end = utc.mjd
# update frames_info
frames_info['TIME START'] = ts_start
frames_info['TIME'] = ts
frames_info['TIME END'] = ts_end
frames_info['MJD START'] = mjd_start
frames_info['MJD'] = mjd
frames_info['MJD END'] = mjd_end
评论列表
文章目录