Skip to content

Commit 0adc6b0

Browse files
committed
feat: Load data from a matflow workflow
1 parent 5f9cfe9 commit 0adc6b0

4 files changed

Lines changed: 53 additions & 8 deletions

File tree

defdap/base.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class Map(ABC):
4444
4545
"""
4646
def __init__(self, file_name, data_type=None, experiment=None,
47-
increment=None, frame=None, map_name=None):
47+
increment=None, frame=None, map_name=None, **kwargs):
4848
"""
4949
5050
Parameters
@@ -83,8 +83,12 @@ def __init__(self, file_name, data_type=None, experiment=None,
8383
self.grain_plot = None
8484
self.profile_plot = None
8585

86-
self.file_name = Path(file_name)
87-
self.load_data(self.file_name, data_type=data_type)
86+
self.file_name = None
87+
if isinstance(file_name, str):
88+
file_name = Path(file_name)
89+
if isinstance(file_name, (str, Path)):
90+
self.file_name = file_name
91+
self.load_data(file_name, data_type=data_type, **kwargs)
8892

8993
self.data.add_generator(
9094
'proxigram', self.calc_proxigram, unit='', type='map', order=0,

defdap/ebsd.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def __init__(self, *args, **kwargs):
148148
)
149149

150150
@report_progress("loading EBSD data")
151-
def load_data(self, file_name, data_type=None):
151+
def load_data(self, file_name, data_type=None, **kwargs):
152152
"""Load in EBSD data from file.
153153
154154
Parameters
@@ -160,7 +160,7 @@ def load_data(self, file_name, data_type=None):
160160
161161
"""
162162
data_loader = EBSDDataLoader.get_loader(data_type, file_name)
163-
data_loader.load(file_name)
163+
data_loader.load(file_name, **kwargs)
164164

165165
metadata_dict = data_loader.loaded_metadata
166166
self.shape = metadata_dict['shape']

defdap/file_readers.py

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,8 @@ def get_loader(data_type: str) -> 'Type[DICDataLoader]':
640640
'openpiv': OpenPivTextLoader, #Backwards compatability
641641
'openpivtext': OpenPivTextLoader,
642642
'openpivbinary': OpenPivBinaryLoader,
643-
'pyvale': PyValeLoader
643+
'pyvale': PyValeLoader,
644+
'matflow': MatflowLoader,
644645
}[data_type]
645646
except KeyError:
646647
raise ValueError(f"No loader for DIC data of type {data_type}.")
@@ -790,6 +791,7 @@ def load(self, file_name: pathlib.Path) -> None:
790791

791792
self.check_data()
792793

794+
793795
class OpenPivBinaryLoader(DICDataLoader):
794796
def load(self, file_name: pathlib.Path) -> None:
795797
""" Load from Open PIV .npz file.
@@ -902,6 +904,45 @@ def load(self, file_name: pathlib.Path) -> None:
902904
self.check_data()
903905

904906

907+
class MatflowLoader(DICDataLoader):
908+
def load(self, data_dict: Dict[str, Any], step_index: int = 0) -> None:
909+
""" Load from matflow workflow element output.
910+
911+
Parameters
912+
----------
913+
data_dict
914+
Dictionary with keys:
915+
'ss_x'
916+
'ss_y'
917+
'u'
918+
'v'
919+
920+
"""
921+
# Software name and version
922+
self.loaded_metadata['format'] = 'PyVale'
923+
self.loaded_metadata['version'] = 'n/a'
924+
925+
# Sub-window width in pixels
926+
binning_x = np.diff(data_dict['ss_x'], axis=1)
927+
binning = int(binning_x[0, 0])
928+
assert np.all(binning_x == binning)
929+
binning_y = np.diff(data_dict['ss_y'], axis=0)
930+
assert np.all(binning_y == binning)
931+
self.loaded_metadata['binning'] = binning
932+
self.loaded_metadata['shape'] = data_dict['ss_x'].shape
933+
934+
self.checkMetadata()
935+
936+
self.loaded_data.coordinate = np.stack(
937+
(data_dict['ss_x'], data_dict['ss_y'])
938+
)
939+
self.loaded_data.displacement = np.stack(
940+
(data_dict['u'][step_index], data_dict['v'][step_index])
941+
)
942+
943+
self.check_data()
944+
945+
905946
def read_until_string(
906947
file: TextIO,
907948
term_string: str,

defdap/hrdic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def crystal_sym(self):
185185
return self.ebsd_map.crystal_sym
186186

187187
@report_progress("loading HRDIC data")
188-
def load_data(self, file_name, data_type=None):
188+
def load_data(self, file_name, data_type=None, **kwargs):
189189
"""Load DIC data from file.
190190
191191
Parameters
@@ -197,7 +197,7 @@ def load_data(self, file_name, data_type=None):
197197
198198
"""
199199
data_loader = DICDataLoader.get_loader(data_type)
200-
data_loader.load(file_name)
200+
data_loader.load(file_name, **kwargs)
201201

202202
metadata_dict = data_loader.loaded_metadata
203203
self.format = metadata_dict['format'] # Software name

0 commit comments

Comments
 (0)