plot_spiketrains.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import neo
  2. import quantities as pq
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. import seaborn as sns
  6. from viziphant.rasterplot import rasterplot_rates
  7. from utils import colormap
  8. import argparse
  9. if __name__ == '__main__':
  10. CLI = argparse.ArgumentParser()
  11. CLI.add_argument("--spikes", nargs='?', type=str)
  12. CLI.add_argument("--output", nargs='?', type=str)
  13. CLI.add_argument("--t_stop", "--T", nargs='?', type=float)
  14. CLI.add_argument("--t_start", nargs='?', type=float, default=0)
  15. args, unknown = CLI.parse_known_args()
  16. io = neo.io.get_io(args.spikes)
  17. spiketrains = io.read_block().segments[0].spiketrains
  18. spiketrains = [st.time_slice(args.t_start*pq.ms, args.t_stop*pq.ms)
  19. for st in spiketrains]
  20. sns.set(style='ticks', context='poster')
  21. fig, ax = plt.subplots(figsize=(25,13))
  22. ax, axx, axy = rasterplot_rates(spiketrains,
  23. ax=ax,
  24. key_list=['neuron_type'],
  25. labelkey='neuron_type',
  26. groupingdepth=1,
  27. colorkey='neuron_type',
  28. palette=[colormap['exc'], colormap['inh']],
  29. markerargs={'markersize':1, 'marker':'.'},
  30. pophistbins=100)
  31. ax.set_yticklabels(['E','I'])
  32. ax.set_xlabel('time [ms]')
  33. axy.set_xlabel('rate [Hz]')
  34. axy.set_xticklabels([float(axy.get_xticklabels()[0].get_text())*1000])
  35. plt.savefig(args.output, bbox_inches='tight')