From 82063494fd8792c3d0431b347a85f8572507cb1c Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Mon, 11 Apr 2016 19:47:07 +0200 Subject: [PATCH] adopted to new json format of paraview introduced "standard" colormaps for stress, strain, and orientation file is now implicit the first argument without key (in line with other scripts) --- lib/damask/colormaps.py | 40 ++++++++++++-------- processing/post/perceptualUniformColorMap.py | 16 ++++---- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/lib/damask/colormaps.py b/lib/damask/colormaps.py index 314581471..45c88e8d5 100644 --- a/lib/damask/colormaps.py +++ b/lib/damask/colormaps.py @@ -303,36 +303,45 @@ class Colormap(): 'interpolate', ] __predefined__ = { - 'gray': {'left': Color('HSL',[0,1,1]), + 'gray': {'left': Color('HSL',[0,1,1]), 'right': Color('HSL',[0,0,0.15]), 'interpolate': 'perceptualuniform'}, - 'grey': {'left': Color('HSL',[0,1,1]), + 'grey': {'left': Color('HSL',[0,1,1]), 'right': Color('HSL',[0,0,0.15]), 'interpolate': 'perceptualuniform'}, - 'red': {'left': Color('HSL',[0,1,0.14]), + 'red': {'left': Color('HSL',[0,1,0.14]), 'right': Color('HSL',[0,0.35,0.91]), 'interpolate': 'perceptualuniform'}, - 'green': {'left': Color('HSL',[0.33333,1,0.14]), + 'green': {'left': Color('HSL',[0.33333,1,0.14]), 'right': Color('HSL',[0.33333,0.35,0.91]), 'interpolate': 'perceptualuniform'}, - 'blue': {'left': Color('HSL',[0.66,1,0.14]), + 'blue': {'left': Color('HSL',[0.66,1,0.14]), 'right': Color('HSL',[0.66,0.35,0.91]), 'interpolate': 'perceptualuniform'}, - 'seaweed': {'left': Color('HSL',[0.78,1.0,0.1]), + 'seaweed': {'left': Color('HSL',[0.78,1.0,0.1]), 'right': Color('HSL',[0.40000,0.1,0.9]), 'interpolate': 'perceptualuniform'}, - 'bluebrown': {'left': Color('HSL',[0.65,0.53,0.49]), + 'bluebrown': {'left': Color('HSL',[0.65,0.53,0.49]), 'right': Color('HSL',[0.11,0.75,0.38]), 'interpolate': 'perceptualuniform'}, - 'redgreen': {'left': Color('HSL',[0.97,0.96,0.36]), + 'redgreen': {'left': Color('HSL',[0.97,0.96,0.36]), 'right': Color('HSL',[0.33333,1.0,0.14]), 'interpolate': 'perceptualuniform'}, - 'bluered': {'left': Color('HSL',[0.65,0.53,0.49]), + 'bluered': {'left': Color('HSL',[0.65,0.53,0.49]), 'right': Color('HSL',[0.97,0.96,0.36]), 'interpolate': 'perceptualuniform'}, - 'blueredrainbow':{'left': Color('HSL',[2.0/3.0,1,0.5]), + 'blueredrainbow':{'left': Color('HSL',[2.0/3.0,1,0.5]), 'right': Color('HSL',[0,1,0.5]), 'interpolate': 'linear' }, + 'orientation': {'left': Color('RGB',[0.933334,0.878432,0.878431]), + 'right': Color('RGB',[0.250980,0.007843,0.000000]), + 'interpolate': 'perceptualuniform'}, + 'strain': {'left': Color('RGB',[0.941177,0.941177,0.870588]), + 'right': Color('RGB',[0.266667,0.266667,0.000000]), + 'interpolate': 'perceptualuniform'}, + 'stress': {'left': Color('RGB',[0.878432,0.874511,0.949019]), + 'right': Color('RGB',[0.000002,0.000000,0.286275]), + 'interpolate': 'perceptualuniform'}, } @@ -344,7 +353,7 @@ class Colormap(): predefined = None ): - if str(predefined).lower() in self.__predefined__: + if predefined is not None: left = self.__predefined__[predefined.lower()]['left'] right= self.__predefined__[predefined.lower()]['right'] interpolate = self.__predefined__[predefined.lower()]['interpolate'] @@ -442,11 +451,12 @@ class Colormap(): format = format.lower() # consistent comparison basis frac = 0.5*(np.array(crop) + 1.0) # rescale crop range to fractions colors = [self.color(float(i)/(steps-1)*(frac[1]-frac[0])+frac[0]).expressAs(model).color for i in xrange(steps)] - if format == 'paraview': - colormap = [''] \ - + [''%(color[0],color[1],color[2],) for i,color in colors] \ - + [''] + colormap = ['[\n {{\n "ColorSpace" : "RGB", "Name" : "{}",\n "RGBPoints" : ['.format(name)] \ + + [' {:4d},{:8.6f},{:8.6f},{:8.6f},'.format(i,color[0],color[1],color[2],) + for i,color in enumerate(colors[:-1])]\ + + [' {:4d},{:8.6f},{:8.6f},{:8.6f} '.format(i+1,colors[-1][0],colors[-1][1],colors[-1][2],)]\ + + [' ]\n }\n]'] elif format == 'gmsh': colormap = ['View.ColorTable = {'] \ diff --git a/processing/post/perceptualUniformColorMap.py b/processing/post/perceptualUniformColorMap.py index c2201f76b..bef6a2187 100755 --- a/processing/post/perceptualUniformColorMap.py +++ b/processing/post/perceptualUniformColorMap.py @@ -14,7 +14,7 @@ scriptID = ' '.join([scriptName,damask.version]) #Borland, D., & Taylor, R. M. (2007). Rainbow Color Map (Still) Considered Harmful. Computer Graphics and Applications, IEEE, 27(2), 14--17. #Moreland, K. (2009). Diverging Color Maps for Scientific Visualization. In Proc. 5th Int. Symp. Visual Computing (pp. 92--103). outtypes = ['paraview','gmsh','raw','GOM'] -extensions = ['.xml','.msh','.txt','.legend'] +extensions = ['.json','.msh','.txt','.legend'] colormodels = ['RGB','HSL','XYZ','CIELAB','MSH'] parser = OptionParser(option_class=damask.extendableOption, usage='%prog options [file[s]]', description = """ @@ -34,11 +34,9 @@ parser.add_option('-r','--right', dest='right', type='float', nargs=3, metavar=' parser.add_option('-c','--colormodel', dest='colormodel', metavar='string', help='colormodel: '+', '.join(colormodels)+' [%default]') parser.add_option('-p','--predefined', dest='predefined', metavar='string', - help='predefined colormap [%default]') + help='predefined colormap') parser.add_option('-f','--format', dest='format', metavar='string', help='output format: '+', '.join(outtypes)+' [%default]') -parser.add_option('-b','--basename', dest='basename', metavar='string', - help='basename of output file [%default]') parser.set_defaults(colormodel = 'RGB') parser.set_defaults(predefined = None) parser.set_defaults(basename = None) @@ -48,7 +46,7 @@ parser.set_defaults(trim = (-1.0,1.0)) parser.set_defaults(left = (1.0,1.0,1.0)) parser.set_defaults(right = (0.0,0.0,0.0)) -(options,filenames) = parser.parse_args() +(options,filename) = parser.parse_args() if options.format not in outtypes: parser.error('invalid format: "%s" (can be %s).'%(options.format,', '.join(outtypes))) @@ -62,10 +60,10 @@ if options.trim[0] < -1.0 or \ parser.error('invalid trim range (-1 +1).') -name = options.format if options.basename is None\ - else options.basename -output = sys.stdout if options.basename is None\ - else open(os.path.basename(options.basename)+extensions[outtypes.index(options.format)],'w') +name = options.format if filename[0] is None\ + else filename[0] +output = sys.stdout if filename[0] is None\ + else open(os.path.basename(filename[0])+extensions[outtypes.index(options.format)],'w') colorLeft = damask.Color(options.colormodel.upper(), list(options.left)) colorRight = damask.Color(options.colormodel.upper(), list(options.right))