[med-svn] [python-mne] 341/376: ENH: adding drop_small_buffer to Raw.save for maxfilter

Yaroslav Halchenko debian at onerussian.com
Fri Nov 27 17:23:18 UTC 2015


This is an automated email from the git hooks/post-receive script.

yoh pushed a commit to annotated tag v0.1
in repository python-mne.

commit 26a5f9b6cb14fac9de6790de7e4b762edb0d2b94
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date:   Tue Aug 16 21:22:26 2011 -0400

    ENH: adding drop_small_buffer to Raw.save for maxfilter
---
 mne/fiff/raw.py            | 20 +++++++++++++++-----
 mne/fiff/tests/test_raw.py |  9 +++++++++
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/mne/fiff/raw.py b/mne/fiff/raw.py
index 0e0ac0b..bd72cbe 100644
--- a/mne/fiff/raw.py
+++ b/mne/fiff/raw.py
@@ -188,7 +188,8 @@ class Raw(dict):
         else:
             return super(Raw, self).__getitem__(item)
 
-    def save(self, fname, picks=None, tmin=0, tmax=None, quantum_sec=10):
+    def save(self, fname, picks=None, tmin=0, tmax=None, buffer_size_sec=10,
+             drop_small_buffer=False):
         """Save raw data to file
 
         Parameters
@@ -205,9 +206,13 @@ class Raw(dict):
         tmax : int
             Time in seconds of last sample to save
 
-        quantum_sec : float
+        buffer_size_sec : float
             Size of data chuncks in seconds.
 
+        drop_small_buffer: bool
+            Drop or not the last buffer. It is required by maxfilter (SSS)
+            that only accepts raw files with buffers of the same size.
+
         """
         outfid, cals = start_writing_raw(fname, self.info, picks)
         #
@@ -222,13 +227,13 @@ class Raw(dict):
         else:
             stop = int(floor(tmax * self.info['sfreq']))
 
-        quantum = int(ceil(quantum_sec * self.info['sfreq']))
+        buffer_size = int(ceil(buffer_size_sec * self.info['sfreq']))
         #
         #   Read and write all the data
         #
         write_int(outfid, FIFF.FIFF_FIRST_SAMPLE, start)
-        for first in range(start, stop, quantum):
-            last = first + quantum
+        for first in range(start, stop, buffer_size):
+            last = first + buffer_size
             if last >= stop:
                 last = stop + 1
 
@@ -237,6 +242,11 @@ class Raw(dict):
             else:
                 data, times = self[picks, first:last]
 
+            if (drop_small_buffer and (first > start)
+                                            and (len(times) < buffer_size)):
+                print 'Skipping data chunk due to small buffer ... [done]\n'
+                break
+
             print 'Writing ... ',
             write_raw_buffer(outfid, data, cals)
             print '[done]'
diff --git a/mne/fiff/tests/test_raw.py b/mne/fiff/tests/test_raw.py
index c4eedf7..42fcd7b 100644
--- a/mne/fiff/tests/test_raw.py
+++ b/mne/fiff/tests/test_raw.py
@@ -32,6 +32,15 @@ def test_io_raw():
                                 exclude=raw.info['bads'])
         print "Number of picked channels : %d" % len(picks)
 
+        # Writing with drop_small_buffer True
+        raw.save('raw.fif', picks, tmin=0, tmax=4, buffer_size_sec=3,
+                 drop_small_buffer=True)
+        raw2 = Raw('raw.fif')
+
+        sel = pick_channels(raw2.ch_names, meg_ch_names)
+        data2, times2 = raw2[sel, :]
+        assert times2.max() <= 3
+
         # Writing
         raw.save('raw.fif', picks, tmin=0, tmax=5)
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-mne.git



More information about the debian-med-commit mailing list