extract_stats_freq_mean_std.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # main imports
  2. import os, sys
  3. import argparse
  4. import json
  5. import numpy as np
  6. def main():
  7. """
  8. main function which is ran when launching script
  9. """
  10. parser = argparse.ArgumentParser(description="Extract scenes data and save thresholds into .csv")
  11. parser.add_argument('--file', type=str, help='image to convert', required=True)
  12. parser.add_argument('--output', type=str, help='output csv filename', required=True)
  13. parser.add_argument('--freq', type=int, help='display user freq', choices=[0, 1], required=True)
  14. args = parser.parse_args()
  15. p_file = args.file
  16. p_output = args.output
  17. p_freq = bool(args.freq)
  18. f = open(p_file)
  19. json_data = json.load(f)
  20. dict_data = {}
  21. for element in json_data:
  22. scene = element['msg']['sceneName']
  23. if scene not in dict_data:
  24. dict_data[scene] = {}
  25. extracts = element['msg']['extracts']
  26. for extract in extracts:
  27. if extract['index'] not in dict_data[scene]:
  28. dict_data[scene][extract['index']] = [extract['quality']]
  29. else:
  30. dict_data[scene][extract['index']].append(extract['quality'])
  31. output_file = open(p_output, 'w')
  32. #output_file.write('scene;n_users;min_scene;\n')
  33. for scene in dict_data:
  34. output_file.write(scene)
  35. all_thresholds = []
  36. n_users = 0
  37. for extract in dict_data[scene]:
  38. thresholds_data = dict_data[scene][extract]
  39. all_thresholds.append(int(np.mean(thresholds_data) + np.std(thresholds_data)))
  40. n_users = len(thresholds_data)
  41. if p_freq:
  42. output_file.write(';' + str(n_users))
  43. else:
  44. for t in all_thresholds:
  45. output_file.write(';' + str(t))
  46. output_file.write(';\n')
  47. if __name__ == "__main__":
  48. main()