Source code for paws.core.operations.PACKAGING.BL15.TimeTempFromHeader

from collections import OrderedDict
import datetime
import time

import tzlocal

from ... import Operation as opmod 
from ...Operation import Operation

inputs=OrderedDict(
    header_dict=None,
    time_key=None,
    temp_key=None)
outputs=OrderedDict(
    date_time=None,
    time=None,
    temperature=None)

[docs]class TimeTempFromHeader(Operation): """ Get time and temperature from a detector output header file. Return string time, float time (utc in seconds), and float temperature. Time is assumed to be in the format Day Mon dd hh:mm:ss yyyy. """ def __init__(self): super(TimeTempFromHeader,self).__init__(inputs,outputs) self.input_doc['header_dict'] = 'dict produced from detector output header file.' self.input_doc['time_key'] = 'key in header_dict that refers to the time' self.input_doc['temp_key'] = 'key in header_dict that refers to the temperature' self.output_doc['date_time'] = 'string representation of the time' self.output_doc['time'] = 'UTC time in seconds' self.output_doc['temperature'] = 'Temperature'
[docs] def run(self): d = self.inputs['header_dict'] ktime = self.inputs['time_key'] ktemp = self.inputs['temp_key'] time_str = str(d[ktime]) temp = float(d[ktemp]) # process the UTC time in seconds assuming %a %b %d %H:%M:%S %Y format # set local time zone for utc-awareness tz = tzlocal.get_localzone() # use strptime to create a naive datetime object dt = datetime.datetime.strptime(time_str.strip(),"%a %b %d %H:%M:%S %Y") # add in timezone information to make a utc-aware datetime object dt_aware = datetime.datetime(dt.year,dt.month,dt.day,dt.hour,dt.minute,dt.second,dt.microsecond,tz) # interpret the time in UTC milliseconds t_utc = time.mktime(dt_aware.timetuple()) self.outputs['date_time'] = time_str self.outputs['time'] = float(t_utc) self.outputs['temperature'] = temp