ok, here probably you can avoid loops, because for each point in mesh, the number of occurrence rates, nodal planes and hypocenters will be the same.

So to estimate the number of ruptures you can just do:

counts = len(polygon_mesh) * len(self.get_annual_occurrence_rates) * len(self.nodal_plane_distribution.data) * len(self.hypocenter_distribution_data)