<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Calculate $f_{sat}$ for the Entire MultiDark Volume
Step1:  Note that changing the PBC condition enforce_PBC option does not change the $f_{sat}$ value. 
Calculate $f_{sat}$ for MultiDark Subvolumes
<ASSISTANT_TASK:>
Python Code:
# initialize hod model
model = PrebuiltHodModelFactory('zheng07', threshold=-21)
halocat = CachedHaloCatalog(simname='multidark', redshift=0, halo_finder='rockstar')
model.populate_mock(halocat, enforce_PBC=False)
N_sat = len(np.where(model.mock.galaxy_table['gal_type'] == 'satellites')[0])
N_gal = len(model.mock.galaxy_table['gal_type'])
print 'f_sat = ', np.float(N_sat)/np.float(N_gal)
Explanation: Calculate $f_{sat}$ for the Entire MultiDark Volume
End of explanation
sub_model = PrebuiltHodModelFactory('zheng07', threshold=-21)
sub_model.new_haloprop_func_dict = {'sim_subvol': util.mk_id_column}
sub_halocat = CachedHaloCatalog(simname = 'multidark', redshift = 0, halo_finder = 'rockstar')
for rint in range(10): 
    simsubvol = lambda x: util.mask_func(x, rint)
    sub_model.populate_mock(sub_halocat, masking_function=simsubvol, enforce_PBC=False)
    
    sub_N_sat = len(np.where(sub_model.mock.galaxy_table['gal_type'] == 'satellites')[0])
    sub_N_gal = len(sub_model.mock.galaxy_table['gal_type'])
    
    print 'f_sat = ', np.float(sub_N_sat)/np.float(sub_N_gal)
Explanation: Note that changing the PBC condition enforce_PBC option does not change the $f_{sat}$ value. 
Calculate $f_{sat}$ for MultiDark Subvolumes
End of explanation
<END_TASK>