shortened __repr__ code
This commit is contained in:
parent
77e57a268c
commit
5882a8560c
|
@ -120,9 +120,10 @@ class Orientation(Rotation,Crystal):
|
|||
|
||||
|
||||
def __repr__(self) -> str:
|
||||
"""Give short human readable summary."""
|
||||
return '\n'.join([Crystal.__repr__(self),
|
||||
Rotation.__repr__(self)])
|
||||
"""Give short human-readable summary."""
|
||||
return util.srepr([Crystal.__repr__(self),
|
||||
Rotation.__repr__(self)])
|
||||
|
||||
|
||||
def __copy__(self: MyType,
|
||||
rotation: Union[FloatSequence, Rotation] = None) -> MyType:
|
||||
|
|
|
@ -88,7 +88,7 @@ class Rotation:
|
|||
|
||||
|
||||
def __repr__(self) -> str:
|
||||
"""Give short human readable summary."""
|
||||
"""Give short human-readable summary."""
|
||||
return f'Quaternion{" " if self.quaternion.shape == (4,) else "s of shape "+str(self.quaternion.shape[:-1])+chr(10)}'\
|
||||
+ str(self.quaternion)
|
||||
|
||||
|
|
|
@ -38,6 +38,33 @@ class VTK:
|
|||
self.vtk_data = vtk_data
|
||||
|
||||
|
||||
def __repr__(self) -> str:
|
||||
"""Give short human-readable summary."""
|
||||
info = [self.vtk_data.__vtkname__]
|
||||
|
||||
for data in ['Cell Data', 'Point Data']:
|
||||
if data == 'Cell Data': info.append(f'\n# cells: {self.N_cells}')
|
||||
if data == 'Point Data': info.append(f'\n# points: {self.N_points}')
|
||||
if data in self.labels:
|
||||
info += [f' - {l}' for l in self.labels[data]]
|
||||
|
||||
return util.srepr(info)
|
||||
|
||||
|
||||
def __eq__(self,
|
||||
other: object) -> bool:
|
||||
"""
|
||||
Equal to other.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other : damask.VTK
|
||||
VTK to compare self against.
|
||||
|
||||
"""
|
||||
return self.as_ASCII() == other.as_ASCII() if isinstance(other, VTK) else NotImplemented
|
||||
|
||||
|
||||
def copy(self):
|
||||
if isinstance(self.vtk_data,vtk.vtkImageData):
|
||||
dup = vtk.vtkImageData()
|
||||
|
@ -55,16 +82,47 @@ class VTK:
|
|||
return VTK(dup)
|
||||
|
||||
|
||||
@property
|
||||
def comments(self) -> List[str]:
|
||||
"""Return the comments."""
|
||||
fielddata = self.vtk_data.GetFieldData()
|
||||
for a in range(fielddata.GetNumberOfArrays()):
|
||||
if fielddata.GetArrayName(a) == 'comments':
|
||||
comments = fielddata.GetAbstractArray(a)
|
||||
return [comments.GetValue(i) for i in range(comments.GetNumberOfValues())]
|
||||
return []
|
||||
|
||||
@comments.setter
|
||||
def comments(self,
|
||||
comments: Union[str, Sequence[str]]):
|
||||
"""
|
||||
Set comments.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
comments : str or list of str
|
||||
Comments.
|
||||
|
||||
"""
|
||||
s = vtk.vtkStringArray()
|
||||
s.SetName('comments')
|
||||
for c in util.tail_repack(comments,self.comments):
|
||||
s.InsertNextValue(c)
|
||||
self.vtk_data.GetFieldData().AddArray(s)
|
||||
|
||||
|
||||
@property
|
||||
def N_points(self) -> int:
|
||||
"""Number of points in vtkdata."""
|
||||
return self.vtk_data.GetNumberOfPoints()
|
||||
|
||||
|
||||
@property
|
||||
def N_cells(self) -> int:
|
||||
"""Number of cells in vtkdata."""
|
||||
return self.vtk_data.GetNumberOfCells()
|
||||
|
||||
|
||||
@property
|
||||
def labels(self):
|
||||
"""Labels of datasets."""
|
||||
|
@ -80,6 +138,7 @@ class VTK:
|
|||
|
||||
return labels
|
||||
|
||||
|
||||
@staticmethod
|
||||
def from_image_data(cells: IntSequence,
|
||||
size: FloatSequence,
|
||||
|
@ -280,6 +339,17 @@ class VTK:
|
|||
"""Wrapper for parallel writing."""
|
||||
writer.Write()
|
||||
|
||||
|
||||
def as_ASCII(self) -> str:
|
||||
"""ASCII representation of the VTK data."""
|
||||
writer = vtk.vtkDataSetWriter()
|
||||
writer.SetHeader(f'# {util.execution_stamp("VTK")}')
|
||||
writer.WriteToOutputStringOn()
|
||||
writer.SetInputData(self.vtk_data)
|
||||
writer.Write()
|
||||
return writer.GetOutputString()
|
||||
|
||||
|
||||
def save(self,
|
||||
fname: Union[str, Path],
|
||||
parallel: bool = True,
|
||||
|
@ -350,7 +420,7 @@ class VTK:
|
|||
|
||||
N_data = data.shape[0]
|
||||
|
||||
data_ = data.reshape(N_data,-1)\
|
||||
data_ = data.reshape(N_data,-1) \
|
||||
.astype(np.single if data.dtype in [np.double,np.longdouble] else data.dtype)
|
||||
|
||||
if data.dtype.type is np.str_:
|
||||
|
@ -429,83 +499,6 @@ class VTK:
|
|||
raise ValueError(f'array "{label}" not found')
|
||||
|
||||
|
||||
@property
|
||||
def comments(self) -> List[str]:
|
||||
"""Return the comments."""
|
||||
fielddata = self.vtk_data.GetFieldData()
|
||||
for a in range(fielddata.GetNumberOfArrays()):
|
||||
if fielddata.GetArrayName(a) == 'comments':
|
||||
comments = fielddata.GetAbstractArray(a)
|
||||
return [comments.GetValue(i) for i in range(comments.GetNumberOfValues())]
|
||||
return []
|
||||
|
||||
@comments.setter
|
||||
def comments(self,
|
||||
comments: Union[str, Sequence[str]]):
|
||||
"""
|
||||
Set comments.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
comments : str or list of str
|
||||
Comments.
|
||||
|
||||
"""
|
||||
s = vtk.vtkStringArray()
|
||||
s.SetName('comments')
|
||||
for c in util.tail_repack(comments,self.comments):
|
||||
s.InsertNextValue(c)
|
||||
self.vtk_data.GetFieldData().AddArray(s)
|
||||
|
||||
|
||||
def __repr__(self) -> str:
|
||||
"""Give short human-readable summary."""
|
||||
info = []
|
||||
if isinstance(self.vtk_data,vtk.vtkImageData):
|
||||
info.append('vtkImageData')
|
||||
elif isinstance(self.vtk_data,vtk.vtkUnstructuredGrid):
|
||||
info.append('vtkUnstructuredGrid')
|
||||
elif isinstance(self.vtk_data,vtk.vtkPolyData):
|
||||
info.append('vtkPolyData')
|
||||
elif isinstance(self.vtk_data,vtk.vtkRectilinearGrid):
|
||||
info.append('vtkRectilinearGrid')
|
||||
|
||||
for data in ['Cell Data', 'Point Data']:
|
||||
if data == 'Cell Data': info.append(f'\n# cells: {self.N_cells}')
|
||||
if data == 'Point Data': info.append(f'\n# points: {self.N_points}')
|
||||
if data in self.labels:
|
||||
info.append(f'with {data}:')
|
||||
info += self.labels[data]
|
||||
|
||||
return util.srepr(info)
|
||||
|
||||
|
||||
def __eq__(self,
|
||||
other: object) -> bool:
|
||||
"""
|
||||
Test equality of other.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other : damask.VTK
|
||||
VTK to compare self against.
|
||||
|
||||
"""
|
||||
if not isinstance(other, VTK):
|
||||
return NotImplemented
|
||||
return self.as_ASCII() == other.as_ASCII()
|
||||
|
||||
|
||||
def as_ASCII(self) -> str:
|
||||
"""ASCII representation of the VTK data."""
|
||||
writer = vtk.vtkDataSetWriter()
|
||||
writer.SetHeader(f'# {util.execution_stamp("VTK")}')
|
||||
writer.WriteToOutputStringOn()
|
||||
writer.SetInputData(self.vtk_data)
|
||||
writer.Write()
|
||||
return writer.GetOutputString()
|
||||
|
||||
|
||||
def show(self,
|
||||
label: str = None,
|
||||
colormap: Colormap = Colormap.from_predefined('cividis')):
|
||||
|
|
Loading…
Reference in New Issue