eas_conventer.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import datetime
  2. def eas_converter(date_, cluster):
  3. """Конвертер для eas-файлов, то есть для осциллограмм высокоэнергичных событий. На вход подается суточный eas-файл,
  4. который разделяется по одному событию и каждое из них записывается в новый txt-файл, названный как id события
  5. в базе данных Mongo_DB, с тем отличие, что вместо <<:>> стоят <<.>>"""
  6. eas_template = f"{cluster}eas{date_.month:02}-{date_.day:02}.{date_.year - 2000:02}"
  7. try:
  8. with open(f'D:\\PRISMA20\\P{cluster}\\EAS\\{eas_template}') as f:
  9. eas_file = f.readlines()
  10. eas_file = [line.rstrip() for line in eas_file]
  11. event_list = []
  12. main_list = []
  13. sep = 0
  14. for i in range(len(eas_file)):
  15. if eas_file[i] == '*#*':
  16. main_list.append(eas_file[sep].split(' '))
  17. event_list.append(eas_file[sep + 1:i])
  18. sep = i + 1
  19. for i in range(len(main_list)):
  20. main_list[i] = list(iter(filter(lambda x: x != '', main_list[i])))
  21. det_razvertka = []
  22. for block in event_list:
  23. det_per_event = []
  24. for line in block:
  25. event = line.split(' ')[1:]
  26. det_per_event.append(event)
  27. det_razvertka.append(det_per_event)
  28. for i in range(len(main_list)):
  29. main_list[i].extend(det_razvertka[i])
  30. result_path = 'D:\\PRISMA20\\eas\\'
  31. for i in range(len(main_list)):
  32. event_time = str(datetime.timedelta(seconds=float(main_list[i][0]))).replace(':', '.')
  33. with open(
  34. f'{result_path}{date_.year}-{date_.month:02}-{date_.day:02}_{cluster:02}_12d_{event_time[:len(event_time) - 3]}.000.000.txt',
  35. 'w') as out:
  36. out.write(' '.join(main_list[i][0:4]) + '\n')
  37. for row in main_list[i][4:]:
  38. out.write(' '.join(row) + '\n')
  39. print(
  40. f'Copied - {date_.year}-{date_.month:02}-{date_.day:02}_{cluster:02}_12d_{event_time[:len(event_time) - 3]}.000.000.txt')
  41. except FileNotFoundError:
  42. print(f'File does not exist - {eas_template}')
  43. if __name__ == '__main__':
  44. date_time_start = datetime.date(2021, 11, 1) # посмотреть почему не собирается конец дня 2018-04-22
  45. date_time_stop = datetime.date(2021, 11, 30)
  46. LIST_OF_DATES = [(date_time_start + datetime.timedelta(days=i)) for i in
  47. range((date_time_stop - date_time_start).days + 1)]
  48. for date in LIST_OF_DATES:
  49. eas_converter(date, 1)
  50. eas_converter(date, 2)
  51. print('test')