def churn(adset_file, results_dir): '''INTERFACE: Churn is the number of ads per number of trials. Args: adset_file: Config file like "accounts.cf". results_dir: Directory path to save experiment results. ''' file_set_lists = adParser.parse_conf(adset_file) ad_truth = adLib.true_ds_of_ads("dbs/adTruth.db") churn_out = "User\tTrials\tAll\tD\tR\tX\n" make_dir(results_dir) for user in file_set_lists: ad_list = [] churn_out += "\t".join([user, "0", "0", "0", "0", "0"]) + "\n" for i in range(0, len(file_set_lists[user])): # for i in range(len(file_set_lists[user])-1, -1, -1): tmp_list = adParser.parse_html_set(file_set_lists[user][i]) ad_list = adOps.union([ad_list, tmp_list]) type_counts = adLib.ad_types_count(ad_list, ad_truth) churn_out += "\t".join([user, str(i+1), str(len(ad_list)), \ types_count_str(type_counts)]) + "\n" fd = open(results_dir + "/" + user + ".txt", "w") fd.write(adOps.get_ads_str(ad_list)) fd.flush() fd.close() fd = open(results_dir + "/churn.txt", "w") fd.write(churn_out) fd.flush() fd.close()
def dump_ads(ad_list, filename): '''Dump all ads in the ad_list into a file. Args: ad_list: A collection of ad objects (object or list or list of lists or ...) filename: File where the string format of ads needs to be dumped. ''' fd = open(filename, "w") fd.write(adOps.get_ads_str(ad_list)) fd.flush() fd.close()