def tracer(msg, obj=None): if obj is not None: o = getattr(obj, 'name', type(obj).__name__) msg = o + ':' + msg msg = time2str() + ':' + msg printf(msg) return msg
def values2text(table,order=None,sep='\t',eof='\n',header=True): """ Input is a dictionary of {variable:[(time,values)]}; it will convert the dictionary into a text table with a column for each variable It assumes that values in diferent columns have been already correlated """ start = time.time() if not order or not all(k in order for k in table): keys = list(sorted(table.keys())) else: keys = sorted(table.keys(),key=order.index) value_to_text = lambda s: str(s).replace('None','').replace('[','').replace(']','') is_timed = fun.isSequence(table.values()[0][0]) and len(table.values()[0][0])==2 csv = '' if not header else (sep.join((['date','time'] if is_timed else [])+keys)+eof) for i,t in enumerate(table.values()[0]): if is_timed: row = [fun.time2str(t[0]),str(t[0])]+[value_to_text(table[k][i][-1]) for k in keys] else: row = [value_to_text(table[k][i]) for k in keys] csv+=sep.join(row) + eof #print('Text file generated in %d milliseconds'%(1000*(time.time()-start))) return csv
def error(self, s): print(time2str() + ' ' + 'ERROR\t' + self.header + s)
def warning(self, s): print(time2str() + ' ' + 'WARNING\t' + self.header + s)
def info(self, s): print(time2str() + ' ' + 'INFO\t' + self.header + s)
def debug(self, s): if not self.LogLevel: print(time2str() + ' ' + 'DEBUG\t' + self.header + s)
def trace(self, s): if not self.LogLevel: print(time2str() + ' ' + 'TRACE\t' + self.header + s)
def trace(self,s): if not self.LogLevel: print time2str()+' '+'TRACE\t'+self.header+s
def debug(self,s): if not self.LogLevel: print time2str()+' '+'DEBUG\t'+self.header+s