shorter but still descriptive names
This commit is contained in:
parent
e7a67262f8
commit
ee8e3386f4
|
@ -41,9 +41,9 @@ for name in filenames:
|
|||
damask.util.report(scriptName,name)
|
||||
|
||||
table = damask.Table.from_ASCII(StringIO(''.join(sys.stdin.read())) if name is None else name)
|
||||
table.add_array('Cauchy',
|
||||
damask.mechanics.Cauchy(table.get_array(options.defgrad).reshape(-1,3,3),
|
||||
table.get_array(options.stress).reshape(-1,3,3)).reshape(-1,9),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.add('Cauchy',
|
||||
damask.mechanics.Cauchy(table.get(options.defgrad).reshape(-1,3,3),
|
||||
table.get(options.stress ).reshape(-1,3,3)).reshape(-1,9),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
|
||||
table.to_ASCII(sys.stdout if name is None else name)
|
||||
|
|
|
@ -38,8 +38,8 @@ for name in filenames:
|
|||
|
||||
table = damask.Table.from_ASCII(StringIO(''.join(sys.stdin.read())) if name is None else name)
|
||||
for tensor in options.tensor:
|
||||
table.add_array('det({})'.format(tensor),
|
||||
np.linalg.det(table.get_array(tensor).reshape(-1,3,3)),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.add('det({})'.format(tensor),
|
||||
np.linalg.det(table.get(tensor).reshape(-1,3,3)),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
|
||||
table.to_ASCII(sys.stdout if name is None else name)
|
||||
|
|
|
@ -40,12 +40,12 @@ for name in filenames:
|
|||
|
||||
table = damask.Table.from_ASCII(StringIO(''.join(sys.stdin.read())) if name is None else name)
|
||||
for tensor in options.tensor:
|
||||
table.add_array('dev({})'.format(tensor),
|
||||
damask.mechanics.deviatoric_part(table.get_array(tensor).reshape(-1,3,3)).reshape((-1,9)),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.add('dev({})'.format(tensor),
|
||||
damask.mechanics.deviatoric_part(table.get(tensor).reshape(-1,3,3)).reshape((-1,9)),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
if options.spherical:
|
||||
table.add_array('sph({})'.format(tensor),
|
||||
damask.mechanics.spherical_part(table.get_array(tensor).reshape(-1,3,3)),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.add('sph({})'.format(tensor),
|
||||
damask.mechanics.spherical_part(table.get(tensor).reshape(-1,3,3)),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
|
||||
table.to_ASCII(sys.stdout if name is None else name)
|
||||
|
|
|
@ -45,12 +45,12 @@ for name in filenames:
|
|||
|
||||
table = damask.Table.from_ASCII(StringIO(''.join(sys.stdin.read())) if name is None else name)
|
||||
for strain in options.strain:
|
||||
table.add_array('Mises({})'.format(strain),
|
||||
damask.mechanics.Mises_strain(damask.mechanics.symmetric(table.get_array(strain).reshape(-1,3,3))),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.add('Mises({})'.format(strain),
|
||||
damask.mechanics.Mises_strain(damask.mechanics.symmetric(table.get(strain).reshape(-1,3,3))),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
for stress in options.stress:
|
||||
table.add_array('Mises({})'.format(stress),
|
||||
damask.mechanics.Mises_stress(damask.mechanics.symmetric(table.get_array(stress).reshape(-1,3,3))),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.add('Mises({})'.format(stress),
|
||||
damask.mechanics.Mises_stress(damask.mechanics.symmetric(table.get(stress).reshape(-1,3,3))),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
|
||||
table.to_ASCII(sys.stdout if name is None else name)
|
||||
|
|
|
@ -42,9 +42,9 @@ for name in filenames:
|
|||
|
||||
table = damask.Table.from_ASCII(StringIO(''.join(sys.stdin.read())) if name is None else name)
|
||||
|
||||
table.add_array('S',
|
||||
damask.mechanics.PK2(table.get_array(options.defgrad).reshape(-1,3,3),
|
||||
table.get_array(options.stress).reshape(-1,3,3)).reshape(-1,9),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.add('S',
|
||||
damask.mechanics.PK2(table.get(options.defgrad).reshape(-1,3,3),
|
||||
table.get(options.stress ).reshape(-1,3,3)).reshape(-1,9),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
|
||||
table.to_ASCII(sys.stdout if name is None else name)
|
||||
|
|
|
@ -44,7 +44,8 @@ for name in filenames:
|
|||
|
||||
table = damask.Table.from_ASCII(StringIO(''.join(sys.stdin.read())) if name is None else name)
|
||||
for i,label in enumerate(options.label):
|
||||
table.set_array(label,table.get_array(label)*float(options.factor[i]),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.set(label,
|
||||
table.get(label)*float(options.factor[i]),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
|
||||
table.to_ASCII(sys.stdout if name is None else name)
|
||||
|
|
|
@ -44,7 +44,8 @@ for name in filenames:
|
|||
|
||||
table = damask.Table.from_ASCII(StringIO(''.join(sys.stdin.read())) if name is None else name)
|
||||
for i,label in enumerate(options.label):
|
||||
table.set_array(label,table.get_array(label)+float(options.offset[i]),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
table.set(label,
|
||||
table.get(label)+float(options.offset[i]),
|
||||
scriptID+' '+' '.join(sys.argv[1:]))
|
||||
|
||||
table.to_ASCII(sys.stdout if name is None else name)
|
||||
|
|
|
@ -87,14 +87,19 @@ class Table():
|
|||
return Table(data,shapes,comments)
|
||||
|
||||
|
||||
def get_array(self,label):
|
||||
def labels(self):
|
||||
"""Return the labels of all columns."""
|
||||
return list(self.shapes.keys())
|
||||
|
||||
|
||||
def get(self,label):
|
||||
"""
|
||||
Return data as array.
|
||||
Get column data.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
label : str
|
||||
Label of the array.
|
||||
Column label.
|
||||
|
||||
"""
|
||||
if re.match(r'[0-9]*?_',label):
|
||||
|
@ -103,62 +108,60 @@ class Table():
|
|||
else:
|
||||
return self.data[label].to_numpy().reshape((-1,)+self.shapes[label])
|
||||
|
||||
def set_array(self,label,array,info):
|
||||
def set(self,label,data,info=None):
|
||||
"""
|
||||
Modify data in the spreadsheet.
|
||||
Set column data.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
label : str
|
||||
Label for the new data.
|
||||
array : np.ndarray
|
||||
Column label.
|
||||
data : np.ndarray
|
||||
New data.
|
||||
info : str
|
||||
info : str, optional
|
||||
Human-readable information about the new data.
|
||||
|
||||
"""
|
||||
if np.prod(array.shape[1:],dtype=int) == 1:
|
||||
self.comments.append('{}: {}'.format(label,info))
|
||||
else:
|
||||
self.comments.append('{} {}: {}'.format(label,array.shape[1:],info))
|
||||
if info is not None:
|
||||
if np.prod(data.shape[1:],dtype=int) == 1:
|
||||
self.comments.append('{}: {}'.format(label,info))
|
||||
else:
|
||||
self.comments.append('{} {}: {}'.format(label,data.shape[1:],info))
|
||||
|
||||
if re.match(r'[0-9]*?_',label):
|
||||
idx,key = label.split('_',1)
|
||||
iloc = self.data.columns.get_loc(key).tolist().index(True) + int(idx) -1
|
||||
self.data.iloc[:,iloc] = array
|
||||
self.data.iloc[:,iloc] = data
|
||||
else:
|
||||
self.data[label] = array.reshape(self.data[label].shape)
|
||||
self.data[label] = data.reshape(self.data[label].shape)
|
||||
|
||||
|
||||
def labels(self):
|
||||
"""Return the labels of all columns."""
|
||||
return list(self.shapes.keys())
|
||||
|
||||
def add_array(self,label,array,info):
|
||||
def add(self,label,data,info=None):
|
||||
"""
|
||||
Add data to the spreadsheet.
|
||||
Add column data.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
label : str
|
||||
Label for the new data.
|
||||
array : np.ndarray
|
||||
New data.
|
||||
info : str
|
||||
Human-readable information about the new data.
|
||||
Column label.
|
||||
data : np.ndarray
|
||||
Modified data.
|
||||
info : str, optional
|
||||
Human-readable information about the modified data.
|
||||
|
||||
"""
|
||||
if np.prod(array.shape[1:],dtype=int) == 1:
|
||||
self.comments.append('{}: {}'.format(label,info))
|
||||
else:
|
||||
self.comments.append('{} {}: {}'.format(label,array.shape[1:],info))
|
||||
if info is not None:
|
||||
if np.prod(data.shape[1:],dtype=int) == 1:
|
||||
self.comments.append('{}: {}'.format(label,info))
|
||||
else:
|
||||
self.comments.append('{} {}: {}'.format(label,data.shape[1:],info))
|
||||
|
||||
self.shapes[label] = array.shape[1:] if len(array.shape) > 1 else (1,)
|
||||
size = np.prod(array.shape[1:],dtype=int)
|
||||
new_data = pd.DataFrame(data=array.reshape(-1,size),
|
||||
self.shapes[label] = data.shape[1:] if len(data.shape) > 1 else (1,)
|
||||
size = np.prod(data.shape[1:],dtype=int)
|
||||
new_data = pd.DataFrame(data=data.reshape(-1,size),
|
||||
columns=[label for l in range(size)])
|
||||
self.data = pd.concat([self.data,new_data],axis=1)
|
||||
|
||||
|
||||
|
||||
def to_ASCII(self,fname):
|
||||
"""
|
||||
Store as plain text file.
|
||||
|
|
|
@ -20,11 +20,11 @@ def reference_dir(reference_dir_base):
|
|||
class TestTable:
|
||||
|
||||
def test_get_tensor(self,default):
|
||||
d = default.get_array('F')
|
||||
d = default.get('F')
|
||||
assert np.allclose(d,1.0) and d.shape[1:] == (3,3)
|
||||
|
||||
def test_get_vector(self,default):
|
||||
d = default.get_array('v')
|
||||
d = default.get('v')
|
||||
assert np.allclose(d,1.0) and d.shape[1:] == (3,)
|
||||
|
||||
def test_write_read_str(self,default,tmpdir):
|
||||
|
@ -44,30 +44,30 @@ class TestTable:
|
|||
with open(os.path.join(reference_dir,fname)) as f:
|
||||
new = Table.from_ASCII(f)
|
||||
|
||||
def test_set_array(self,default):
|
||||
default.set_array('F',np.zeros((5,3,3)),'set to zero')
|
||||
d=default.get_array('F')
|
||||
def test_set(self,default):
|
||||
default.set('F',np.zeros((5,3,3)),'set to zero')
|
||||
d=default.get('F')
|
||||
assert np.allclose(d,0.0) and d.shape[1:] == (3,3)
|
||||
|
||||
def test_labels(self,default):
|
||||
assert default.labels() == ['F','v','s']
|
||||
|
||||
def test_add_array(self,default):
|
||||
def test_add(self,default):
|
||||
d = np.random.random((5,9))
|
||||
default.add_array('nine',d,'random data')
|
||||
assert np.allclose(d,default.get_array('nine'))
|
||||
default.add('nine',d,'random data')
|
||||
assert np.allclose(d,default.get('nine'))
|
||||
|
||||
|
||||
def test_invalid_initialization(self,default):
|
||||
x = default.get_array('v')
|
||||
x = default.get('v')
|
||||
with pytest.raises(IndexError):
|
||||
Table(x,{'F':(3,3)})
|
||||
|
||||
def test_invalid_set(self,default):
|
||||
x = default.get_array('v')
|
||||
x = default.get('v')
|
||||
with pytest.raises(ValueError):
|
||||
default.set_array('F',x,'does not work')
|
||||
default.set('F',x,'does not work')
|
||||
|
||||
def test_invalid_get_array(self,default):
|
||||
def test_invalid_get(self,default):
|
||||
with pytest.raises(KeyError):
|
||||
default.get_array('n')
|
||||
default.get('n')
|
||||
|
|
Loading…
Reference in New Issue