Source code for src.source._source
# -*- coding: utf-8 *-*
[docs]class _source(object):
def __init__(self, data_type):
#self.data_type = data_type
#super(_source, self).__init__()
if data_type == "float":
self.evalStr = self.floatStr
elif data_type == "hex":
self.evalStr = self.hexStr
elif data_type == "int":
self.evalStr = self.intStr
else:
self.evalStr = self.unknownStr
[docs] def floatStr(self, s):
#string is a hexadecimal integer
return float(s)
[docs] def hexStr(self, s):
#string is a hexadecimal integer
return int(s,16)
[docs] def intStr(self, s):
#string is a decimal integer
return int(s,10)
[docs] def unknownStr(self, s):
#datatype of string is unknown
return eval(s)
def _assignValues(self, file_dim):
in_range = True
###get merge-values
for m in range(self.nMerge):
try:
(in_range, self.merge_values[m]) = self.merge_dim[m]._update(in_range,
self.evalStr(file_dim[self.merge_dim[m].index]))
#print self.evalStr(file_dim[self.merge_dim[m].index])
except (IndexError, ValueError):
print "skipping ... %s" %file_dim
in_range = False
if in_range: ## if merge_value is in range: get the basis values
#calc for base
try:
for dim in range(self.nDim):
(in_range, self.basis_values[dim]) = self.basis_dim[dim]._update(in_range,
self.evalStr(file_dim[self.basis_dim[dim].index]))
except (IndexError, ValueError):
print "skipping ... %s" %file_dim
in_range = False
if in_range:
positionsIntensities = self.matrixClass._assign(self.basis_values)
for position, intensity in positionsIntensities:
tPostion = tuple(position)
for m in range(self.nMerge):
(replace_value, do_replace)= self.merge_dim[m].merge._get(self.merge_values[m],
self.mergeMatrix[m][tPostion],self.densityMatrix[m][tPostion],intensity)
if do_replace:
self.mergeMatrix[m][tPostion] = replace_value
self.densityMatrix[m][tPostion] += intensity
def _prepareStandard(self, matrixClass):
self.matrixClass = matrixClass
####is es schlau erst alle sachen von target zo kopieren???
self.nDim = matrixClass.nDim
self.basis_dim = matrixClass.basis_dim
self.merge_dim = matrixClass.merge_dim
self.nMerge = matrixClass.nMerge
self.mergeMatrix = matrixClass.mergeMatrix
self.sortMatrix = matrixClass.sortMatrix
self.densityMatrix = matrixClass.densityMatrix
self.basis_values = []
for i in range(self.nDim):
self.basis_values.append(0)
self.merge_values = []
for i in range(self.nMerge):
self.merge_values.append(0)