summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Mulansky <mario.mulansky@gmx.net>2016-03-24 15:54:48 +0100
committerMario Mulansky <mario.mulansky@gmx.net>2016-03-24 15:54:48 +0100
commit0d8af2c97d766a4fa514f0232189bc17c31c67a0 (patch)
tree73ca3098f3e8e5cfe958309994db0507dd2f1335
parentb09561705ab9c67c93a384248f7c3bc9ad5bdd32 (diff)
+function for saving spike trains to txt files
save_spike_trains_to_txt allows to save spike train data into txt files which can then be loaded via load_spike_trains_from_txt again.
-rw-r--r--pyspike/__init__.py4
-rw-r--r--pyspike/spikes.py37
2 files changed, 31 insertions, 10 deletions
diff --git a/pyspike/__init__.py b/pyspike/__init__.py
index 069090b..4d75786 100644
--- a/pyspike/__init__.py
+++ b/pyspike/__init__.py
@@ -23,8 +23,8 @@ from .spike_sync import spike_sync_profile, spike_sync,\
spike_sync_profile_multi, spike_sync_multi, spike_sync_matrix
from .psth import psth
-from .spikes import load_spike_trains_from_txt, spike_train_from_string, \
- merge_spike_trains, generate_poisson_spikes
+from .spikes import load_spike_trains_from_txt, save_spike_trains_to_txt, \
+ spike_train_from_string, merge_spike_trains, generate_poisson_spikes
# define the __version__ following
# http://stackoverflow.com/questions/17583443
diff --git a/pyspike/spikes.py b/pyspike/spikes.py
index b18d7eb..966ad69 100644
--- a/pyspike/spikes.py
+++ b/pyspike/spikes.py
@@ -2,6 +2,7 @@
# Copyright 2014, Mario Mulansky <mario.mulansky@gmx.net>
# Distributed under the BSD License
+
import numpy as np
from pyspike import SpikeTrain
@@ -25,7 +26,7 @@ def spike_train_from_string(s, edges, sep=' ', is_sorted=False):
############################################################
-# load_spike_trains_txt
+# load_spike_trains_from_txt
############################################################
def load_spike_trains_from_txt(file_name, edges,
separator=' ', comment='#', is_sorted=False,
@@ -47,17 +48,37 @@ def load_spike_trains_from_txt(file_name, edges,
:returns: list of :class:`.SpikeTrain`
"""
spike_trains = []
- spike_file = open(file_name, 'r')
- for line in spike_file:
- if len(line) > 1 and not line.startswith(comment):
- # use only the lines with actual data and not commented
- spike_train = spike_train_from_string(line, edges,
- separator, is_sorted)
- spike_trains.append(spike_train)
+ with open(file_name, 'r') as spike_file:
+ for line in spike_file:
+ if len(line) > 1 and not line.startswith(comment):
+ # use only the lines with actual data and not commented
+ spike_train = spike_train_from_string(line, edges,
+ separator, is_sorted)
+ spike_trains.append(spike_train)
return spike_trains
############################################################
+# save_spike_trains_to_txt
+############################################################
+def save_spike_trains_to_txt(spike_trains, file_name,
+ separator=' ', precision=8):
+ """ Saves the given spike trains into a file with the given file name.
+ Each spike train will be stored in one line in the text file with the times
+ separated by `separator`.
+
+ :param spike_trains: List of :class:`.SpikeTrain` objects
+ :param file_name: The name of the text file.
+ """
+ # format string to print the spike times with given precision
+ format_str = "{:0.%de}" % precision
+ with open(file_name, 'w') as spike_file:
+ for st in spike_trains:
+ s = separator.join(map(format_str.format, st.spikes))
+ spike_file.write(s+'\n')
+
+
+############################################################
# merge_spike_trains
############################################################
def merge_spike_trains(spike_trains):