polishing

This commit is contained in:
Martin Diehl 2022-01-23 14:15:25 +01:00
parent 803c85c2ef
commit 3e584570b2
1 changed files with 25 additions and 33 deletions

View File

@ -1,11 +1,12 @@
import re import re
import copy import copy
import pathlib from pathlib import Path
from typing import Union, Optional, Tuple, List, TextIO from typing import Union, Optional, Tuple, List
import pandas as pd import pandas as pd
import numpy as np import numpy as np
from ._typehints import FileHandle
from . import util from . import util
class Table: class Table:
@ -40,7 +41,7 @@ class Table:
return '\n'.join(['# '+c for c in self.comments])+'\n'+data_repr return '\n'.join(['# '+c for c in self.comments])+'\n'+data_repr
def __getitem__(self, item: Union[slice, Tuple[slice, ...]]) -> "Table": def __getitem__(self, item: Union[slice, Tuple[slice, ...]]) -> 'Table':
""" """
Slice the Table according to item. Slice the Table according to item.
@ -92,7 +93,7 @@ class Table:
return len(self.data) return len(self.data)
def __copy__(self) -> "Table": def __copy__(self) -> 'Table':
"""Create deep copy.""" """Create deep copy."""
return copy.deepcopy(self) return copy.deepcopy(self)
@ -154,7 +155,7 @@ class Table:
def isclose(self, def isclose(self,
other: "Table", other: 'Table',
rtol: float = 1e-5, rtol: float = 1e-5,
atol: float = 1e-8, atol: float = 1e-8,
equal_nan: bool = True) -> np.ndarray: equal_nan: bool = True) -> np.ndarray:
@ -186,7 +187,7 @@ class Table:
def allclose(self, def allclose(self,
other: "Table", other: 'Table',
rtol: float = 1e-5, rtol: float = 1e-5,
atol: float = 1e-8, atol: float = 1e-8,
equal_nan: bool = True) -> bool: equal_nan: bool = True) -> bool:
@ -218,7 +219,7 @@ class Table:
@staticmethod @staticmethod
def load(fname: Union[TextIO, str, pathlib.Path]) -> "Table": def load(fname: FileHandle) -> 'Table':
""" """
Load from ASCII table file. Load from ASCII table file.
@ -237,13 +238,10 @@ class Table:
------- -------
loaded : damask.Table loaded : damask.Table
Table data from file. Table data from file.
""" """
if isinstance(fname, (str, pathlib.Path)): f = open(fname) if isinstance(fname, (str, Path)) else fname
f = open(fname) f.seek(0)
else:
f = fname
f.seek(0)
comments = [] comments = []
line = f.readline().strip() line = f.readline().strip()
@ -271,7 +269,7 @@ class Table:
@staticmethod @staticmethod
def load_ang(fname: Union[TextIO, str, pathlib.Path]) -> "Table": def load_ang(fname: FileHandle) -> 'Table':
""" """
Load from ang file. Load from ang file.
@ -296,11 +294,8 @@ class Table:
Table data from file. Table data from file.
""" """
if isinstance(fname, (str, pathlib.Path)): f = open(fname) if isinstance(fname, (str, Path)) else fname
f = open(fname) f.seek(0)
else:
f = fname
f.seek(0)
content = f.readlines() content = f.readlines()
@ -346,7 +341,7 @@ class Table:
return data.astype(type(data.flatten()[0])) return data.astype(type(data.flatten()[0]))
def set(self, label: str, data: np.ndarray, info: str = None) -> "Table": def set(self, label: str, data: np.ndarray, info: str = None) -> 'Table':
""" """
Set column data. Set column data.
@ -379,7 +374,7 @@ class Table:
return dup return dup
def add(self, label: str, data: np.ndarray, info: str = None) -> "Table": def add(self, label: str, data: np.ndarray, info: str = None) -> 'Table':
""" """
Add column data. Add column data.
@ -411,7 +406,7 @@ class Table:
return dup return dup
def delete(self, label: str) -> "Table": def delete(self, label: str) -> 'Table':
""" """
Delete column data. Delete column data.
@ -432,7 +427,7 @@ class Table:
return dup return dup
def rename(self, old: Union[str, List[str]], new: Union[str, List[str]], info: str = None) -> "Table": def rename(self, old: Union[str, List[str]], new: Union[str, List[str]], info: str = None) -> 'Table':
""" """
Rename column data. Rename column data.
@ -458,7 +453,7 @@ class Table:
return dup return dup
def sort_by(self, labels: Union[str, List[str]], ascending: Union[bool, List[bool]] = True) -> "Table": def sort_by(self, labels: Union[str, List[str]], ascending: Union[bool, List[bool]] = True) -> 'Table':
""" """
Sort table by values of given labels. Sort table by values of given labels.
@ -491,7 +486,7 @@ class Table:
return dup return dup
def append(self, other: "Table") -> "Table": def append(self, other: 'Table') -> 'Table':
""" """
Append other table vertically (similar to numpy.vstack). Append other table vertically (similar to numpy.vstack).
@ -516,7 +511,7 @@ class Table:
return dup return dup
def join(self, other: "Table") -> "Table": def join(self, other: 'Table') -> 'Table':
""" """
Append other table horizontally (similar to numpy.hstack). Append other table horizontally (similar to numpy.hstack).
@ -543,7 +538,7 @@ class Table:
return dup return dup
def save(self, fname: Union[TextIO, str, pathlib.Path]): def save(self, fname: FileHandle):
""" """
Save as plain text file. Save as plain text file.
@ -568,10 +563,7 @@ class Table:
labels += [f'{util.srepr(self.shapes[l],"x")}:{i+1}_{l}' \ labels += [f'{util.srepr(self.shapes[l],"x")}:{i+1}_{l}' \
for i in range(np.prod(self.shapes[l]))] for i in range(np.prod(self.shapes[l]))]
if isinstance(fname, (str, pathlib.Path)): f = open(fname,'w',newline='\n') if isinstance(fname, (str, Path)) else fname
fhandle = open(fname,'w',newline='\n')
else:
fhandle = fname
fhandle.write('\n'.join([f'# {c}' for c in self.comments] + [' '.join(labels)])+'\n') f.write('\n'.join([f'# {c}' for c in self.comments] + [' '.join(labels)])+'\n')
self.data.to_csv(fhandle,sep=' ',na_rep='nan',index=False,header=False) self.data.to_csv(f,sep=' ',na_rep='nan',index=False,header=False)