@@ -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+
793795class 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+
905946def read_until_string (
906947 file : TextIO ,
907948 term_string : str ,
0 commit comments