It would be nice to log the total time spent in filtering the sources. Something like

 total = 0
 for rupture, rupture_seed, rupture_id in itertools.izip(...):
      t0 = time.time()
      sites_of_interest, mask = self.sites_of_interest(rupture, maximum_distance)
      total += time.time() - t0
      ...
 log.debug('Time spent in filtering the site of interests: %s', total)