method = HierLat(latent_factor=lafactor)
    hash_file_str = str(hash(tuple(daily_data_file)))

    reader = DailyWatchTimeReader()
    feedback_data = reader.read_file_with_minval(daily_data_file, min_occ_user,
                                                 min_occ_prog, num_user,
                                                 num_prog)

    exp_id = 'lko_bi_' + exp_name + '_data' + hash_file_str\
                      + '_mu' + str(min_occ_user) + '_mp' + str(min_occ_prog) \
                      + '_nu' + str(num_user) + '_np' + str(num_prog) \
                      + '_k' + str(leave_k_out) + '_toiter' + str(total_iteration)

    result_resource_str = 'exp'      + exp_id + \
                          '_method'  + method.unique_str() + \
                          '_iter'    + str(iteration)
    sub_folder = exp_id + '/models/' + method.unique_str()
    # use a sub folder to store the experiment resource.

    trained_model = URM.LoadResource(URM.RTYPE_RESULT, result_resource_str,
                                     sub_folder)
    [method] = trained_model

    learnt_genre = method.V

    program_mapping = feedback_data.col_mapping
    program_inv_mapping = {y: x
                           for x, y in program_mapping.items()}
    program_name = [
        program_inv_mapping[i] for i in range(len(program_mapping))
 leave_k_out = 20;
 lafactor = 5;
 
 method = HierLat(latent_factor=lafactor);
 hash_file_str = str(hash(tuple(daily_data_file)));
 
 reader = DailyWatchTimeReader();
 feedback_data = reader.read_file_with_minval(daily_data_file, min_occ_user, min_occ_prog, num_user, num_prog);
     
 exp_id = 'lko_bi_' + exp_name + '_data' + hash_file_str\
                   + '_mu' + str(min_occ_user) + '_mp' + str(min_occ_prog) \
                   + '_nu' + str(num_user) + '_np' + str(num_prog) \
                   + '_k' + str(leave_k_out) + '_toiter' + str(total_iteration);
 
 result_resource_str = 'exp'      + exp_id + \
                       '_method'  + method.unique_str() + \
                       '_iter'    + str(iteration);
 sub_folder = exp_id + '/models/' + method.unique_str(); # use a sub folder to store the experiment resource.
                       
 trained_model = URM.LoadResource(URM.RTYPE_RESULT, result_resource_str, sub_folder);
 [method] = trained_model;
 
 learnt_genre = method.V;
 
 program_mapping = feedback_data.col_mapping;
 program_inv_mapping = {y: x for x, y in program_mapping.items()};
 program_name = [ program_inv_mapping[i] for i in range(len(program_mapping)) ];
 
 sio.savemat("prog_genre_mat.mat", {'genre_mat': learnt_genre, 'prog_name': program_name});
 
 print 'done';