diff --git a/lib/damask_tools.py b/lib/damask_tools.py index 22c596a3e..6af71da8e 100644 --- a/lib/damask_tools.py +++ b/lib/damask_tools.py @@ -13,21 +13,20 @@ class DAMASK_TOOLS(): class ASCII_TABLE(): + ''' + There should be a doc string here :) + ''' import sys - __slots__ = ['__IO__', 'info', 'labels', 'data', ] - -#............................................. def __init__(self, fileIn = sys.stdin, fileOut = sys.stdout, buffered = True): - self.__IO__ = {'in': fileIn, 'out':fileOut, 'output':[], @@ -38,41 +37,31 @@ class ASCII_TABLE(): self.labels = [] self.data = [] - -#............................................. def output_write(self, what): - if isinstance(what,list): for item in what: self.output_write(item) else: self.__IO__['output'] += [str(what)] self.__IO__['buffered'] or self.output_flush() - -#............................................. def output_flush(self, clear = True): - self.__IO__['output'] == [] or self.__IO__['out'].write('\n'.join(self.__IO__['output']) + '\n') if clear: self.output_clear() - -#............................................. def output_clear(self): - self.__IO__['output'] = [] - -#............................................. def head_read(self): - # get column labels by either read the first row, or - if keyword "head[*]" is present - the last line of the header - + ''' + get column labels by either read the first row, or + --if keyword "head[*]" is present-- the last line of the header + ''' try: self.__IO__['in'].seek(0) except: pass - firstline = self.__IO__['in'].readline() m = re.search('(\d+)\s*head', firstline.lower()) if m: @@ -81,72 +70,50 @@ class ASCII_TABLE(): else: self.info = [] self.labels = firstline.split() - self.__IO__['validReadSize'] = len(self.labels) - -#............................................. def head_write(self): - self.output_write (['%i\theader'%(len(self.info)+1), self.info, '\t'.join(self.labels)]) - -#............................................. def labels_append(self, what): - if isinstance(what,list): for item in what: self.labels_append(item) else: self.labels += [str(what)] - -#............................................. def info_append(self, what): - if isinstance(what,list): for item in what: self.info_append(item) else: self.info += [str(what)] - -#............................................. def data_read(self): - line = self.__IO__['in'].readline() items = line.split()[:self.__IO__['validReadSize']] # get next data row self.data = {False: [], True: items}[len(items) == self.__IO__['validReadSize']] # take if correct number of entries - return line != '' -#............................................. def data_write(self): - if isinstance(self.data[0],list): self.output_write (['\t'.join(map(str,items)) for items in self.data]) else: self.output_write ('\t'.join(map(str,self.data))) - -#............................................. def data_append(self, what): - if isinstance(what,list): for item in what: self.data_append(item) else: self.data += [str(what)] - - - - class MATERIAL_CONFIG(): - + ''' + Reads, manipulates and writes material.config files + ''' __slots__ = ['data'] - def __init__(self): self.parts = [ @@ -310,17 +277,19 @@ class MATERIAL_CONFIG(): '__order__':['crystallite','(constituent)']} self.add_data(part='microstructure',section=label,data=data) - - def change_value(self,part=None,section=None,key=None,value=None): + def change_value(self, part=None, + section=None, + key=None, + value=None): if type(value) is not type([]): if type(value) is not type('s'): - value='%s'%value - value=[value] - newlen=len(value) - oldval=self.data[part][section][key] - oldlen=len(oldval) + value = '%s'%value + value = [value] + newlen = len(value) + oldval = self.data[part][section][key] + oldlen = len(oldval) print('changing %s:%s:%s:%s'%(part,section,key,oldval)) - self.data[part][section][key]=value + self.data[part][section][key] = value print('new: %s'%self.data[part][section][key]) if newlen is not oldlen: print('Length of value was changed from %i to %i!'%(oldlen,newlen))