compatible to python3

This commit is contained in:
Martin Diehl 2016-07-02 13:28:32 +02:00
parent af4307ea72
commit 759126b906
8 changed files with 47 additions and 39 deletions

View File

@ -12,7 +12,7 @@ from .config import Material # noqa
from .colormaps import Colormap, Color # noqa
try:
from .corientation import Quaternion, Rodrigues, Symmetry, Orientation # noqa
print "Import Cython version of Orientation module"
print("Import Cython version of Orientation module")
except:
from .orientation import Quaternion, Rodrigues, Symmetry, Orientation # noqa
#from .block import Block # only one class

View File

@ -3,6 +3,14 @@
import os,sys
import numpy as np
# ------------------------------------------------------------------
# python 3 has no unicode object, this ensures that the code works on Python 2&3
try:
test=isinstance('test', unicode)
except(NameError):
unicode=str
# ------------------------------------------------------------------
class ASCIItable():
"""Read and write to ASCII tables"""
@ -158,12 +166,12 @@ class ASCIItable():
if self.__IO__['labeled']: # table features labels
self.info = [self.__IO__['in'].readline().strip() for i in xrange(1,int(m.group(1)))]
self.info = [self.__IO__['in'].readline().strip() for i in range(1,int(m.group(1)))]
self.tags = shlex.split(self.__IO__['in'].readline()) # store tags found in last line
else:
self.info = [self.__IO__['in'].readline().strip() for i in xrange(0,int(m.group(1)))] # all header is info ...
self.info = [self.__IO__['in'].readline().strip() for i in range(0,int(m.group(1)))] # all header is info ...
else: # other table format
try:
@ -224,11 +232,11 @@ class ASCIItable():
extra_header = []
for header in self.info:
headitems = map(str.lower,header.split())
headitems = list(map(str.lower,header.split()))
if len(headitems) == 0: continue # skip blank lines
if headitems[0] in mappings.keys():
if headitems[0] in identifiers.keys():
for i in xrange(len(identifiers[headitems[0]])):
if headitems[0] in list(mappings.keys()):
if headitems[0] in list(identifiers.keys()):
for i in range(len(identifiers[headitems[0]])):
info[headitems[0]][i] = \
mappings[headitems[0]](headitems[headitems.index(identifiers[headitems[0]][i])+1])
else:
@ -415,9 +423,9 @@ class ASCIItable():
start = self.label_index(labels)
dim = self.label_dimension(labels)
return np.hstack(map(lambda c: xrange(c[0],c[0]+c[1]), zip(start,dim))) \
return np.hstack([range(c[0],c[0]+c[1]) for c in zip(start,dim)]) \
if isinstance(labels, Iterable) and not isinstance(labels, str) \
else xrange(start,start+dim)
else range(start,start+dim)
# ------------------------------------------------------------------
def info_append(self,
@ -447,7 +455,7 @@ class ASCIItable():
def data_skipLines(self,
count):
"""wind forward by count number of lines"""
for i in xrange(count):
for i in range(count):
alive = self.data_read()
return alive
@ -501,9 +509,9 @@ class ASCIItable():
columns = []
for i,(c,d) in enumerate(zip(indices[present],dimensions[present])): # for all valid labels ...
# ... transparently add all components unless column referenced by number or with explicit dimension
columns += range(c,c + \
columns += list(range(c,c + \
(d if str(c) != str(labels[present[i]]) else \
1))
1)))
use = np.array(columns)
self.tags = list(np.array(self.tags)[use]) # update labels with valid subset
@ -530,7 +538,7 @@ class ASCIItable():
"""write whole numpy array data"""
for row in self.data:
try:
output = [fmt % value for value in row] if fmt else map(repr,row)
output = [fmt % value for value in row] if fmt else list(map(repr,row))
except:
output = [fmt % row] if fmt else [repr(row)]
@ -555,7 +563,7 @@ class ASCIItable():
try:
idx = self.label_index(where)
if len(self.data) <= idx:
self.data_append(['n/a' for i in xrange(idx+1-len(self.data))]) # grow data if too short
self.data_append(['n/a' for i in range(idx+1-len(self.data))]) # grow data if too short
self.data[idx] = str(what)
except(ValueError):
pass
@ -568,7 +576,7 @@ class ASCIItable():
# ------------------------------------------------------------------
def data_asFloat(self):
return map(self._transliterateToFloat,self.data)
return list(map(self._transliterateToFloat,self.data))
@ -590,8 +598,8 @@ class ASCIItable():
if len(items) > 2:
if items[1].lower() == 'of': items = np.ones(datatype(items[0]))*datatype(items[2])
elif items[1].lower() == 'to': items = np.arange(datatype(items[0]),1+datatype(items[2]))
else: items = map(datatype,items)
else: items = map(datatype,items)
else: items = list(map(datatype,items))
else: items = list(map(datatype,items))
s = min(len(items), N-i) # prevent overflow of microstructure array
microstructure[i:i+s] = items[:s]

View File

@ -33,7 +33,7 @@ class Color():
}
model = model.upper()
if model not in self.__transforms__.keys(): model = 'RGB'
if model not in list(self.__transforms__.keys()): model = 'RGB'
if model == 'RGB' and max(color) > 1.0: # are we RGB255 ?
for i in range(3):
color[i] /= 255.0 # rescale to RGB
@ -62,7 +62,7 @@ class Color():
# ------------------------------------------------------------------
def convertTo(self,toModel = 'RGB'):
toModel = toModel.upper()
if toModel not in self.__transforms__.keys(): return
if toModel not in list(self.__transforms__.keys()): return
sourcePos = self.__transforms__[self.model]['index']
targetPos = self.__transforms__[toModel]['index']
@ -139,7 +139,7 @@ class Color():
HSL[0] = HSL[0]*60.0 # scaling to 360 might be dangerous for small values
if (HSL[0] < 0.0):
HSL[0] = HSL[0] + 360.0
for i in xrange(2):
for i in range(2):
HSL[i+1] = min(HSL[i+1],1.0)
HSL[i+1] = max(HSL[i+1],0.0)
@ -164,11 +164,11 @@ class Color():
[0.212671,0.715160,0.072169],
[0.019334,0.119193,0.950227]])
for i in xrange(3):
for i in range(3):
if (self.color[i] > 0.04045): RGB_lin[i] = ((self.color[i]+0.0555)/1.0555)**2.4
else: RGB_lin[i] = self.color[i] /12.92
XYZ = np.dot(convert,RGB_lin)
for i in xrange(3):
for i in range(3):
XYZ[i] = max(XYZ[i],0.0)
@ -193,10 +193,10 @@ class Color():
RGB_lin = np.dot(convert,self.color)
RGB = np.zeros(3,'d')
for i in xrange(3):
for i in range(3):
if (RGB_lin[i] > 0.0031308): RGB[i] = ((RGB_lin[i])**(1.0/2.4))*1.0555-0.0555
else: RGB[i] = RGB_lin[i] *12.92
for i in xrange(3):
for i in range(3):
RGB[i] = min(RGB[i],1.0)
RGB[i] = max(RGB[i],0.0)
@ -225,7 +225,7 @@ class Color():
XYZ[0] = XYZ[1] + self.color[1]/ 500.0
XYZ[2] = XYZ[1] - self.color[2]/ 200.0
for i in xrange(len(XYZ)):
for i in range(len(XYZ)):
if (XYZ[i] > 6./29. ): XYZ[i] = XYZ[i]**3.
else: XYZ[i] = 108./841. * (XYZ[i] - 4./29.)
@ -245,7 +245,7 @@ class Color():
ref_white = np.array([.95047, 1.00000, 1.08883],'d') # Observer = 2, Illuminant = D65
XYZ = self.color/ref_white
for i in xrange(len(XYZ)):
for i in range(len(XYZ)):
if (XYZ[i] > 216./24389 ): XYZ[i] = XYZ[i]**(1.0/3.0)
else: XYZ[i] = (841./108. * XYZ[i]) + 16.0/116.0
@ -451,7 +451,7 @@ 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)]
colors = [self.color(float(i)/(steps-1)*(frac[1]-frac[0])+frac[0]).expressAs(model).color for i in range(steps)]
if format == 'paraview':
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],)
@ -461,7 +461,7 @@ class Colormap():
elif format == 'gmsh':
colormap = ['View.ColorTable = {'] \
+ [',\n'.join(['{%s}'%(','.join(map(lambda x:str(x*255.0),color))) for color in colors])] \
+ [',\n'.join(['{%s}'%(','.join([str(x*255.0) for x in color])) for color in colors])] \
+ ['}']
elif format == 'gom':
@ -469,7 +469,7 @@ class Colormap():
+ ' 9 ' + str(name) \
+ ' 0 1 0 3 0 0 -1 9 \ 0 0 0 255 255 255 0 0 255 ' \
+ '30 NO_UNIT 1 1 64 64 64 255 1 0 0 0 0 0 0 3 0 ' + str(len(colors)) \
+ ' '.join([' 0 %s 255 1'%(' '.join(map(lambda x:str(int(x*255.0)),color))) for color in reversed(colors)])]
+ ' '.join([' 0 %s 255 1'%(' '.join([str(int(x*255.0)) for x in color])) for color in reversed(colors)])]
elif format == 'raw':
colormap = ['\t'.join(map(str,color)) for color in colors]

View File

@ -19,7 +19,7 @@ class Section():
self.parameters[key] = data[key]
if '__order__' not in self.parameters:
self.parameters['__order__'] = self.parameters.keys()
self.parameters['__order__'] = list(self.parameters.keys())
if part.lower() in classes:
self.__class__ = classes[part.lower()]
self.__init__(data)
@ -61,11 +61,11 @@ class Texture(Section):
def add_component(self,theType,properties):
if 'scatter' not in map(str.lower,properties.keys()):
if 'scatter' not in list(map(str.lower,list(properties.keys()))):
scatter = 0.0
else:
scatter = properties['scatter']
if 'fraction' not in map(str.lower,properties.keys()):
if 'fraction' not in list(map(str.lower,list(properties.keys()))):
fraction = 1.0
else:
fraction = properties['fraction']
@ -224,10 +224,10 @@ class Material():
def add_microstructure(self, section='',
components={}, # dict of phase,texture, and fraction lists
):
"""Experimental! Needs expansion to multi-constituent microstructures..."""
"""Experimental! Needs expansion to multi-constituent microstructures..."""
microstructure = Microstructure()
# make keys lower case (http://stackoverflow.com/questions/764235/dictionary-to-lowercase-in-python)
components=dict((k.lower(), v) for k,v in components.iteritems())
components=dict((k.lower(), v) for k,v in components.items())
for key in ['phase','texture','fraction','crystallite']:
if type(components[key]) is not list:

View File

@ -41,7 +41,7 @@ class Environment():
try:
cmd = """ ssh mulicense2 "/Stat_Flexlm | grep 'Users of %s: ' | cut -d' ' -f7,13" """%software
process = subprocess.Popen(shlex.split(cmd),stdout = subprocess.PIPE,stderr = subprocess.PIPE)
licenses = map(int, process.stdout.readline().split())
licenses = list(map(int, process.stdout.readline().split()))
try:
if licenses[0]-licenses[1] >= Nneeded:
return 0

View File

@ -15,7 +15,7 @@ class Geometry():
'spectral': damask.geometry.Spectral,
'marc': damask.geometry.Marc,
}
if solver.lower() in solverClass.keys():
if solver.lower() in list(solverClass.keys()):
self.__class__=solverClass[solver.lower()]
self.__init__()

View File

@ -25,7 +25,7 @@ class Marc(Solver):
MSCpath = damask.environment.Environment(rootRelation).options['MSC_ROOT']
for release,subdirs in sorted(self.releases.items(),reverse=True):
for release,subdirs in sorted(list(self.releases.items()),reverse=True):
for subdir in subdirs:
path = '%s/mentat%s/shlib/%s'%(MSCpath,release,subdir)
if os.path.exists(path): return release
@ -40,7 +40,7 @@ class Marc(Solver):
MSCpath = damask.environment.Environment(rootRelation).options['MSC_ROOT']
if len(releases) == 0: releases = self.releases.keys()
if len(releases) == 0: releases = list(self.releases.keys())
if type(releases) is not list: releases = [releases]
for release in sorted(releases,reverse=True):
if release not in self.releases: continue

View File

@ -15,7 +15,7 @@ class Solver():
'spectral': damask.solver.Spectral,
'marc': damask.solver.Marc,
}
if solver.lower() in solverClass.keys():
if solver.lower() in list(solverClass.keys()):
self.__class__=solverClass[solver.lower()]
self.__init__()