1414except ImportError :
1515 with_tqdm = False
1616
17+ def process_motion_energy_from_files (filenames ,
18+ size = None ,
19+ nimages = np .inf ,
20+ batch_size = 1000 ,
21+ dtype = 'float32' ,
22+ mask = None ,
23+ ):
24+ '''
25+ '''
26+ import moten .io
27+ if not isinstance (filenames , (list , tuple )):
28+ filenames = [filenames ]
29+
30+ XTX = 0
31+ NFRAMES = 0
32+ for fl in filenames :
33+ generator = moten .io .generate_frame_difference_from_greyvideo (
34+ fl , size = size , nimages = nimages , dtype = dtype )
35+
36+ if mask is not None :
37+ generator = moten .io .apply_mask (mask , generator )
38+
39+ nframes , xtx = pixbypix_covariance_from_frames_generator (generator ,
40+ batch_size = batch_size ,
41+ mask = mask )
42+ XTX += xtx
43+ NFRAMES = nframes
44+ return NFRAMES , XTX
45+
46+
1747def pixbypix_covariance_from_frames_generator (data_generator ,
1848 batch_size = 1000 ,
1949 output_nonlinearity = pointwise_square ,
@@ -37,12 +67,13 @@ def pixbypix_covariance_from_frames_generator(data_generator,
3767 >>> fdiffgen = moten.io.generate_frame_difference_from_greyvideo(video_file, size=small_size, nimages=333)
3868 >>> nimages, XTX = moten.extras.pixbypix_covariance_from_frames_generator(fdiffgen) # doctest: +SKIP
3969 '''
40- first_frame = data_generator .__next__ ()
70+ first_frame = next (data_generator )
71+
4172 vdim , hdim = first_frame .shape
4273 npixels = vdim * hdim
4374
4475 framediff_buffer = np .zeros ((batch_size , npixels ), dtype = dtype )
45- XTX = np .zeros ((npixels , npixels ), dtype = np . float64 )
76+ XTX = np .zeros ((npixels , npixels ), dtype = dtype )
4677 nframes = 0
4778
4879 if with_tqdm :
@@ -57,7 +88,8 @@ def pixbypix_covariance_from_frames_generator(data_generator,
5788 framediff_buffer *= 0.0 # clear buffer
5889 try :
5990 for batch_frame_idx in range (batch_size ):
60- frame_difference = data_generator .__next__ ().reshape (1 , - 1 )
91+ frame_difference = next (data_generator ).reshape (1 , - 1 )
92+
6193 framediff_buffer [batch_frame_idx ] = output_nonlinearity (frame_difference )
6294 except StopIteration :
6395 RUN = False
@@ -139,11 +171,14 @@ def __init__(self,
139171 video_file ,
140172 size = None ,
141173 nimages = np .inf ,
142- batch_size = 100 ,
174+ batch_size = 1000 ,
143175 output_nonlinearity = pointwise_square ,
144- dtype = 'float32' ):
176+ dtype = 'float32' ,
177+ mask = None ,
178+ ):
145179 '''
146180 '''
181+ self .mask = mask
147182 self .size = size
148183 self .dtype = dtype
149184 self .nimages = nimages
@@ -159,6 +194,9 @@ def get_frame_difference_generator(self):
159194 generator = moten .io .generate_frame_difference_from_greyvideo (
160195 self .video_file , size = self .size , nimages = self .nimages , dtype = self .dtype )
161196
197+ if self .mask is not None :
198+ generator = moten .io .apply_mask (self .mask , generator )
199+
162200 return generator
163201
164202 def compute_pixel_by_pixel_covariance (self ,
@@ -258,7 +296,7 @@ def compute_temporal_pcs(self, generator=None, skip_first=False):
258296 if skip_first :
259297 # drop the first frame b/c the difference is with 0's
260298 # and so projection is with itself
261- generator . __next__ ( )
299+ next ( generator )
262300
263301 self .decomposition_temporal_pcs = []
264302 ## TODO: batch for faster performance
0 commit comments