Guest User

Untitled

a guest
Jan 22nd, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. """
  4. Parse a SF logfile and BDF file and generate EEGLAB compat event file
  5. """
  6.  
  7. from __future__ import print_function, division
  8.  
  9. import sys, os
  10. import csv
  11. import glob
  12. import mne
  13. import argparse
  14. import operator
  15. import json
  16. import numpy as np
  17. import zlib
  18.  
  19. if __name__ == '__main__':
  20.  
  21. parser = argparse.ArgumentParser()
  22. parser.add_argument('subject_dir')
  23. parser.add_argument('output_dir')
  24. args = parser.parse_args()
  25. if os.path.isdir(args.subject_dir):
  26. base, sid = os.path.split(args.subject_dir)
  27. base, _ = os.path.split(base)
  28. base, _ = os.path.split(base)
  29. bdf_file = os.path.join(base,'raw-eeg','%s.bdf' % sid)
  30. print(bdf_file)
  31. has_bdf = os.path.isfile(bdf_file)
  32. if has_bdf:
  33.  
  34. raw = mne.io.read_raw_edf(bdf_file, stim_channel=-1)
  35. eeg_events = mne.find_events(raw, stim_channel='STI 014', shortest_event=1)
  36.  
  37. start_times = []
  38. for e in eeg_events:
  39. if e[1]==0 and e[2]==1:
  40. start_times.append([e[0], e[0]/raw.info["sfreq"]])
  41.  
  42. game_events2 = []
  43. death_times = []
  44.  
  45. for f in glob.glob("%s/*.evt" % args.subject_dir):
  46. g = int(os.path.split(f)[-1].split(".")[0].split("-")[-1])
  47. ueid = 0
  48. with open(f, "r") as fin:
  49. lines = [l.strip().split(" ") for l in fin.readlines()]
  50. gs = float(lines[0][1])
  51. N = len(lines)
  52. # epoch = 0
  53. for i in range(N):
  54. e = lines[i]
  55. game_marker = None
  56. et = float(e[1]) - gs
  57. if i == 0:
  58. game_marker = "game-start"
  59. elif i == (N-1):
  60. game_marker = "game-end"
  61. if game_marker != None:
  62. if len(e) < 3:
  63. e.append(game_marker)
  64. else:
  65. e[2] = "%s,%s" % (e[2], game_marker)
  66. if len(e) == 3:
  67. for ee in e[2].split(","):
  68. ueid += 1
  69. if has_bdf:
  70. game_events2.append([et+start_times[g-1][1], g, ee, ueid, e[0]])
  71. else:
  72. game_events2.append([et, g, ee, ueid, e[0]])
  73.  
  74. game_events2 = sorted(game_events2, key=operator.itemgetter(0, 1))
  75.  
  76. if not os.path.isdir(args.output_dir):
  77. os.makedirs(args.output_dir)
  78. with open(os.path.join(args.output_dir, "%s.ext" % (sid)), "w") as fout:
  79. writer = csv.writer(fout, delimiter="\t")
  80. writer.writerow(["latency","game","type","euid","gametime"])
  81. for ge in game_events2:
  82. writer.writerow(ge)
Add Comment
Please, Sign In to add comment