2010-08-17 02:17:27 +05:30
|
|
|
#!/usr/bin/env python
|
|
|
|
|
2013-02-02 20:42:43 +05:30
|
|
|
import sys, os, string
|
|
|
|
import damask
|
2010-08-17 02:17:27 +05:30
|
|
|
from optparse import OptionParser
|
|
|
|
|
|
|
|
|
2011-02-04 15:06:26 +05:30
|
|
|
# -----------------------------
|
|
|
|
def readConfig(configFile,ownPath):
|
|
|
|
config = {}
|
|
|
|
configDir = os.path.split(os.path.realpath(ownPath))[0]
|
|
|
|
filename = os.path.join(configDir,configFile)
|
|
|
|
if os.path.isfile(filename):
|
|
|
|
file = open(filename)
|
2013-02-02 20:42:43 +05:30
|
|
|
for line in file.readlines():
|
|
|
|
if not line.startswith('#'):
|
|
|
|
item = line.split()
|
|
|
|
for name in item[0].split('|'):
|
|
|
|
config[name] = {}
|
|
|
|
config[name]['left'] = map(float,item[1].split(','))
|
|
|
|
config[name]['right'] = map(float,item[2].split(','))
|
2011-02-04 15:06:26 +05:30
|
|
|
file.close()
|
2013-02-02 20:42:43 +05:30
|
|
|
|
2011-02-04 15:06:26 +05:30
|
|
|
return config
|
|
|
|
|
2010-08-17 02:17:27 +05:30
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------
|
|
|
|
def outMentat(cmd,locals):
|
|
|
|
if cmd[0:3] == '(!)':
|
|
|
|
exec(cmd[3:])
|
|
|
|
elif cmd[0:3] == '(?)':
|
|
|
|
cmd = eval(cmd[3:])
|
|
|
|
py_send(cmd)
|
|
|
|
else:
|
|
|
|
py_send(cmd)
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------
|
|
|
|
def outStdout(cmd,locals):
|
|
|
|
if cmd[0:3] == '(!)':
|
|
|
|
exec(cmd[3:])
|
|
|
|
elif cmd[0:3] == '(?)':
|
|
|
|
cmd = eval(cmd[3:])
|
|
|
|
print cmd
|
|
|
|
else:
|
|
|
|
print cmd
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------
|
|
|
|
def output(cmds,locals,dest):
|
|
|
|
for cmd in cmds:
|
|
|
|
if isinstance(cmd,list):
|
|
|
|
output(cmd,locals,dest)
|
|
|
|
else:
|
|
|
|
{\
|
|
|
|
'Mentat': outMentat,\
|
|
|
|
'Stdout': outStdout,\
|
|
|
|
}[dest](cmd,locals)
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------
|
2010-09-13 13:01:27 +05:30
|
|
|
def colorMap(colors,baseIdx=32):
|
|
|
|
cmds = [ "*color %i %f %f %f"%(idx+baseIdx,color[0],color[1],color[2])
|
2010-08-17 02:17:27 +05:30
|
|
|
for idx,color in enumerate(colors) ]
|
|
|
|
return cmds
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------
|
|
|
|
# MAIN FUNCTION STARTS HERE
|
|
|
|
# -----------------------------
|
|
|
|
|
2013-02-02 20:42:43 +05:30
|
|
|
parser = OptionParser(usage="%prog [options] configured scheme | (lower_h,s,l upper_h,s,l)", description = """
|
|
|
|
Changes the color map in MSC.Mentat.
|
2010-08-17 02:17:27 +05:30
|
|
|
|
2013-02-02 20:42:43 +05:30
|
|
|
Interpolates colors between "lower_hsl" and "upper_hsl".
|
2011-11-03 18:46:00 +05:30
|
|
|
""" + string.replace('$Id$','\n','\\n')
|
|
|
|
)
|
|
|
|
|
2010-08-17 02:17:27 +05:30
|
|
|
|
2011-02-04 15:06:26 +05:30
|
|
|
parser.add_option("-i","--inverse", action = "store_true",
|
|
|
|
dest = "inverse", \
|
|
|
|
help = "invert legend [%default]")
|
2011-10-20 17:29:15 +05:30
|
|
|
parser.add_option( "--palette", action = "store_true",
|
|
|
|
dest = "palette", \
|
2011-12-08 15:32:48 +05:30
|
|
|
help = "output plain rgb palette integer values (0-255) [%default]")
|
|
|
|
parser.add_option( "--palettef", action = "store_true",
|
|
|
|
dest = "palettef", \
|
|
|
|
help = "output plain rgb palette float values (0.0-1.0) [%default]")
|
2010-08-17 02:17:27 +05:30
|
|
|
parser.add_option("-p", "--port", type = "int",\
|
|
|
|
dest = "port",\
|
|
|
|
help = "Mentat connection port [%default]")
|
2010-09-13 13:01:27 +05:30
|
|
|
parser.add_option("-b", "--baseindex", type = "int",\
|
|
|
|
dest = "baseIdx",\
|
|
|
|
help = "base index of colormap [%default]")
|
2011-10-20 17:29:15 +05:30
|
|
|
parser.add_option("-n", "--colorcount", type = "int",\
|
|
|
|
dest = "colorcount",\
|
|
|
|
help = "number of colors [%default]")
|
2011-02-04 15:06:26 +05:30
|
|
|
parser.add_option("-c", "--config", type='string', \
|
|
|
|
dest = "config",\
|
|
|
|
help = "configuration file [%default]")
|
2010-08-17 02:17:27 +05:30
|
|
|
parser.add_option("-v", "--verbose", action="store_true",\
|
|
|
|
dest = "verbose",\
|
|
|
|
help = "write Mentat command stream also to stdout [%default]")
|
2011-02-04 15:06:26 +05:30
|
|
|
|
2010-09-06 22:21:11 +05:30
|
|
|
parser.set_defaults(port = 40007)
|
2010-09-13 13:01:27 +05:30
|
|
|
parser.set_defaults(baseIdx = 32)
|
2011-10-20 17:29:15 +05:30
|
|
|
parser.set_defaults(colorcount = 32)
|
2011-02-04 15:06:26 +05:30
|
|
|
parser.set_defaults(config = 'colorMap.config')
|
|
|
|
parser.set_defaults(inverse = False)
|
2011-10-20 17:29:15 +05:30
|
|
|
parser.set_defaults(palette = False)
|
2011-02-04 15:06:26 +05:30
|
|
|
parser.set_defaults(verbose = False)
|
2010-08-17 02:17:27 +05:30
|
|
|
|
2010-09-06 22:21:11 +05:30
|
|
|
msg = []
|
2010-08-17 02:17:27 +05:30
|
|
|
|
2011-02-04 15:06:26 +05:30
|
|
|
(options, colors) = parser.parse_args()
|
2010-08-17 02:17:27 +05:30
|
|
|
|
2011-02-04 15:06:26 +05:30
|
|
|
config = readConfig(options.config,sys.argv[0])
|
|
|
|
|
2013-02-02 20:42:43 +05:30
|
|
|
if len(colors) > 0 and colors[0] in config:
|
|
|
|
left = config[colors[0]][{True:'right',False:'left' }[options.inverse]]
|
|
|
|
right = config[colors[0]][{True:'left' ,False:'right'}[options.inverse]]
|
2011-02-04 15:06:26 +05:30
|
|
|
elif len(colors) == 2:
|
2013-02-02 20:42:43 +05:30
|
|
|
left = map(float, colors[{True:1,False:0}[options.inverse]].split(','))
|
|
|
|
right = map(float, colors[{True:0,False:1}[options.inverse]].split(','))
|
2011-02-04 15:06:26 +05:30
|
|
|
else:
|
2013-02-02 20:42:43 +05:30
|
|
|
left = {True:[0.0,0.0,0.0],False:[0.0,0.0,1.0]}[options.inverse]
|
|
|
|
right = {True:[0.0,0.0,1.0],False:[0.0,0.0,0.0]}[options.inverse]
|
2011-02-04 15:06:26 +05:30
|
|
|
|
2013-02-02 20:42:43 +05:30
|
|
|
theMap = damask.Colormap(damask.Color('HSL',left),damask.Color('HSL',right))
|
|
|
|
theColors = theMap.export(format='list',steps=options.colorcount)
|
2010-08-17 02:17:27 +05:30
|
|
|
|
2012-12-12 14:03:42 +05:30
|
|
|
if options.palette or options.palettef:
|
2013-02-02 20:42:43 +05:30
|
|
|
for theColor in theColors:
|
|
|
|
print '\t'.join(map(lambda x: {True: str( x),
|
|
|
|
False:str(int(255*x))}[options.palettef],theColor))
|
2012-12-12 14:03:42 +05:30
|
|
|
else:
|
2010-08-17 02:17:27 +05:30
|
|
|
### connect to mentat and change colorMap
|
2012-12-12 14:03:42 +05:30
|
|
|
sys.path.append(damask.solver.Marc().libraryPath('../../'))
|
|
|
|
try:
|
|
|
|
from py_mentat import *
|
2013-02-02 20:42:43 +05:30
|
|
|
print 'waiting to connect...'
|
|
|
|
py_connect('',options.port)
|
|
|
|
print 'connected...'
|
|
|
|
mentat = True
|
2012-12-12 14:03:42 +05:30
|
|
|
except:
|
2013-02-02 20:42:43 +05:30
|
|
|
sys.stderr.write('warning: no valid Mentat release found\n')
|
|
|
|
mentat = False
|
2012-12-12 14:03:42 +05:30
|
|
|
|
|
|
|
outputLocals = {}
|
2013-02-02 20:42:43 +05:30
|
|
|
cmds = colorMap(theColors,options.baseIdx)
|
|
|
|
if mentat:
|
|
|
|
output(['*show_table']+cmds+['*show_model *redraw'],outputLocals,'Mentat')
|
|
|
|
py_disconnect()
|
2011-11-04 15:57:41 +05:30
|
|
|
|
2012-12-12 14:03:42 +05:30
|
|
|
if options.verbose:
|
|
|
|
output(cmds,outputLocals,'Stdout')
|