def toxml(self,root): el = root.createElement('audio') el.setAttribute('name',self.get_name()) el.setAttribute('file',self.fn) el.setAttribute('offset',str(_to_ordinalf(self.offset))) el.setAttribute('channels',",".join([str(c) for c in self.chans])) return el
def get_time(self,sampled=False): nframes = self.get_frames() rate = self.get_rate() if sampled: skip = self.get_skipping() else: skip = 1 roffset = _to_ordinalf(self.offset) return np.fromiter(( roffset + float(i) / rate / 86400 for i in range(0,nframes,skip)),dtype=np.dtype(np.float))
def from_file(fn,name,sensor): res = {} h = open(fn) try: lines = h.readlines() sz = len(lines) for s in sensor: res[s] = (np.empty(sz,np.dtype(np.float)),np.empty((sz,3),np.dtype(np.float))) for i in range(sz): splt = lines[i].split() rest = len(splt) % 3 if rest == 2: timedata = _to_ordinalf(datetime.datetime.fromtimestamp(int(splt[0]),tz.tzutc()) + datetime.timedelta(seconds = float("0."+splt[1]))) elif rest == 1: timedata = _to_ordinalf(datetime.datetime.fromtimestamp(float(splt[0]),tz.tzutc())) for s in sensor: res[s][0][i] = timedata res[s][1][i,0] = splt[rest + s*3] res[s][1][i,1] = splt[rest + s*3 + 1] res[s][1][i,2] = splt[rest + s*3 + 2] finally: h.close() return [ MovementSource(name+str(s)+".log",name+str(s),res[s][0],res[s][1],s) for s in sensor ]
def from_annpkg(handle,rootname,attrs): fn = attrs['file'].nodeValue name = attrs['name'].nodeValue sensor = int(attrs['sensor'].nodeValue) member = handle.extractfile(fn) lines = member.readlines() sz = len(lines) timedata = np.empty(sz,np.dtype(np.float)) ydata = np.empty((sz,3),np.dtype(np.float)) for i in range(sz): (timestamp,x,y,z) = lines[i].split() timedata[i] = _to_ordinalf(datetime.datetime.fromtimestamp(float(timestamp),tz.tzutc())) ydata[i,0] = x ydata[i,1] = y ydata[i,2] = z return MovementSource(fn,name,timedata,ydata,sensor)
def import_file(fn): h = open(fn) try: mapping = {} anns = [] cur_ann = None last_timestamp = None for ln in h: split = ln.split() timestamp = _to_ordinalf(datetime.datetime.utcfromtimestamp(float(split[0]))) if last_timestamp is not None: if timestamp < last_timestamp: print "Warning: timestamps not ordered" last_timestamp = timestamp cls = split[1] tp = split[2] data = map(float, split[3:]) if tp in mapping: arrs = mapping[tp] else: arrs = (DynArray(), DynArray(len(data))) mapping[tp] = arrs arrs[0].append(timestamp) arrs[1].append(data) if cur_ann is None: cur_ann = (timestamp, cls) else: if cur_ann[1] != cls: anns.append((cur_ann[1], cur_ann[0], timestamp)) cur_ann = (timestamp, cls) if cur_ann is not None: anns.append((cur_ann[1], cur_ann[0], timestamp)) srcs = [] for name, (timedata, data) in mapping.iteritems(): srcs.append((sources.source_from_short_name(name, timedata.to_array(), data.to_array()), [])) return model.AnnPkg(srcs, anns) finally: h.close()
def get_time_bounds(self): return (_to_ordinalf(self.offset),_to_ordinalf(self.offset + datetime.timedelta(seconds = self.get_frames()/self.get_rate())))