def major_data(self, inval): """ read in and add major data to the class """ inval = FIREdata.hex2int(inval) dt = FIREdata.dat2time(inval[0:8]) d1 = FIREdata.dat2time(inval[ majorTimelen:]) self.dat['Epoch'] = dm.dmarray.append(self.dat['Epoch'], dt) self.dat['Time'] = dm.dmarray.append(self.dat['Time'], d1)
def major_data(self, inval): """ read in and add major data to the class """ if (np.asarray(inval) == 0).all(): # is this line fill? return dt = FIREdata.dat2time(inval[0:8]) d1 = FIREdata.dat2time(inval[ self._majorTimelen:]) self.append([dt, d1])
def test_dat2time(self): """dat2time has known behaviour""" self.assertEqual( FIREdata.dat2time("0D 04 12 12 28 38 00 55"), datetime.datetime(2013, 4, 18, 18, 40, 56, 85000) ) self.assertEqual( FIREdata.dat2time("0D 04 12 12 28 38 00 55".split(" ")), datetime.datetime(2013, 4, 18, 18, 40, 56, 85000) ) self.assertEqual( FIREdata.dat2time([int(v, 16) for v in "0D 04 12 12 28 38 00 55".split(" ")]), datetime.datetime(2013, 4, 18, 18, 40, 56, 85000), ) self.assertTrue(FIREdata.dat2time([int(v, 16) for v in "0D 15 12 12 28 38 00 55".split(" ")]) is None)
def majorStamps(self): """ return the major time stamps """ major = [] for v in self: if v.pktnum == '01': # this is a major stamp major.append(v) stamps = [] for v in major: stamps.append(FIREdata.dat2time(FIREdata.hex2int(v.data[:8]))) return stamps
def major_data(self, inval): """ read in and add major data to the class """ if (np.asarray(inval) == 0).all(): # is this line fill? return dt = FIREdata.dat2time(inval[0:8]) d1 = np.asarray(inval[ majorTimelen:]) d1 = np.asanyarray(['{0}'.format(v) for v in d1]) d2 = int(d1[2] + d1[1] + d1[0], 16) d3 = int(d1[5] + d1[4] + d1[3], 16) dout = [d2, d3] self.append( (dt, dout) )
def __init__(self, inpage, h): len1 = datalen+majorTimelen len2 = datalen+minorTimelen dat = FIREdata.hex2int(inpage) if len(inpage) == len1: # major try: self.t0 = FIREdata.dat2time(dat[0:8]) self.major_data(dat) except ValueError: return print("\tData at time {0} decoded".format(self[-1][0].isoformat())) elif len(inpage) == len2: # minor try: self.minor_data(dat, h) except ValueError: return
def __init__(self, inpage): self._datalen = 8 self._majorTimelen = 8 dat = inpage.split(' ') dat = [int(v, 16) for v in dat] self.t0 = FIREdata.dat2time(inpage[0:25]) # now the data length is 8 for ii in range(0, len(dat), self._datalen): # the index of the start of each FIRE data stop = ii+self._datalen+self._majorTimelen # 24 bytes of data and 2 for a minor time stamp self.major_data(dat[ii:stop]) # cull any bad data ## this has None in place of data self = [v for v in self if None not in v] # sort the data self = sorted(self, key = lambda x: x[0])
def __init__(self, inpage): self._datalen = 24 self._majorTimelen = 8 self._minorTimelen = 2 dat = inpage.split(' ') dat = [int(v, 16) for v in dat] self.t0 = FIREdata.dat2time(inpage[0:25]) # now the data length is 24 self.major_data(dat[0:self._datalen+self._majorTimelen]) start = self._datalen+self._majorTimelen for ii in range(start, len(dat), self._datalen+self._minorTimelen): # the index of the start of each FIRE data stop = ii+self._datalen+self._minorTimelen # 24 bytes of data and 2 for a minor time stamp self.minor_data(dat[ii:stop]) # sort the data self = sorted(self, key = lambda x: x[0])
def __init__(self, inpage): len1 = datalen+majorTimelen len2 = datalen+minorTimelen dat = FIREdata.hex2int(inpage) try: self.t0 = FIREdata.dat2time(dat[0:8]) except ValueError: return self.major_data(dat[0:datalen+majorTimelen]) start = datalen+majorTimelen # the index of the start of each FIRE data for ii in range(start, len(dat), datalen+minorTimelen): stop = ii+datalen+majorTimelen try: self.minor_data(dat[ii:stop]) except IndexError: # malformed data for some reason, skip it print("Skipping malformed context: {0}".format(dat[ii:stop])) # sort the data self = sorted(self, key = lambda x: x[0])
def major_data(self, inval): """ read in and add major data to the class """ dt = FIREdata.dat2time(inval[0:8]) # there are 10 times 100ms each before this one # dt is the time that was in the fill stamp # the data that follow are each 100 ms after dt dt2 = [dt + datetime.timedelta(microseconds=100e3)*i for i in range(0,10)] # get the data from inval d1 = np.asarray(inval[ majorTimelen:]) # change in the invals back to hex so that they can be # split on the nibble d1 = np.asanyarray(['{:02x}'.format(v) for v in d1]) # split them on the nibble d2 = [int(v[0], 16) for v in d1] d3 = [int(v[1], 16) for v in d1] dout = zip(d2, d3) for v1, v2 in zip(dt2, dout): self.append( (v1, v2) )