generate_experiment.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # main imports
  2. import base64
  3. import json
  4. import re
  5. import argparse
  6. import sys, os
  7. import requests
  8. import random
  9. # modules imports
  10. sys.path.insert(0, '') # trick to enable import of main folder module
  11. import config as cfg
  12. def main():
  13. parser = argparse.ArgumentParser(description="Compute specific dataset for model using of metric")
  14. parser.add_argument('--data', type=str, help='data links to use', required=True)
  15. parser.add_argument('--scenes', type=int, help="number of scenes", required=True)
  16. parser.add_argument('--users', type=int, help="number of users of experiment", required=True)
  17. parser.add_argument('--output', type=str, help="output filename of user links", required=True)
  18. args = parser.parse_args()
  19. p_data = args.data
  20. p_scenes = args.scenes
  21. p_users = args.users
  22. p_output = args.output
  23. # generate link for each scene
  24. with open(p_data, 'r') as f:
  25. lines = f.readlines()
  26. lines = [l.replace('\n', '') for l in lines]
  27. nb_elements = len(lines)
  28. # check if number of scenes is higher than number of elements in data links
  29. if p_scenes > nb_elements:
  30. p_scenes = nb_elements
  31. # open output filename
  32. filename_path = os.path.join(cfg.expe_data_folder, p_output)
  33. if not os.path.exists(cfg.expe_data_folder):
  34. os.makedirs(cfg.expe_data_folder)
  35. output_f = open(filename_path, 'w')
  36. for _ in range(p_users):
  37. user_links = random.choices(lines, k=p_scenes)
  38. # generate output line
  39. output_line = ""
  40. for link in user_links:
  41. output_line += link + ';'
  42. output_line += '\n'
  43. output_f.write(output_line)
  44. output_f.flush()
  45. output_f.close()
  46. print("Experiment generated output file is saved into.. %s" % filename_path)
  47. if __name__== "__main__":
  48. main()