33from collections import Iterable
44import re
55import warnings
6+ from typing import Callable
67
78import numpy as np
89import scipy
@@ -320,14 +321,18 @@ def backmap_probs(self, probs, n_values, backmappers):
320321 new_probs = new_probs / tots [:, None ]
321322 return new_probs
322323
323- def data_to_model_domain (self , data : Table ) -> Table :
324+ def data_to_model_domain (
325+ self , data : Table , progress_callback : Callable = dummy_callback
326+ ) -> Table :
324327 """
325328 Transforms data to the model domain if possible.
326329
327330 Parameters
328331 ----------
329332 data
330333 Data to be transformed to the model domain
334+ progress_callback
335+ Callback - callable - to report the progress
331336
332337 Returns
333338 -------
@@ -342,16 +347,24 @@ def data_to_model_domain(self, data: Table) -> Table:
342347 if data .domain == self .domain :
343348 return data
344349
350+ progress_callback (0 )
345351 if self .original_domain .attributes != data .domain .attributes \
346352 and data .X .size \
347353 and not all_nan (data .X ):
354+ progress_callback (0.5 )
348355 new_data = data .transform (self .original_domain )
349356 if all_nan (new_data .X ):
350357 raise DomainTransformationError (
351358 "domain transformation produced no defined values" )
352- return new_data .transform (self .domain )
359+ progress_callback (0.75 )
360+ data = new_data .transform (self .domain )
361+ progress_callback (1 )
362+ return data
353363
354- return data .transform (self .domain )
364+ progress_callback (0.5 )
365+ data = data .transform (self .domain )
366+ progress_callback (1 )
367+ return data
355368
356369 def __call__ (self , data , ret = Value ):
357370 multitarget = len (self .domain .class_vars ) > 1
0 commit comments