[med-svn] [python-mne] 06/376: FIX : read raw
Yaroslav Halchenko
debian at onerussian.com
Fri Nov 27 17:21:55 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 91dbc8387bbd468a9630dc6869da26cdc6dfb2f5
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date: Tue Dec 28 13:54:36 2010 -0500
FIX : read raw
---
examples/read_raw.py | 5 +++--
fiff/raw.py | 49 ++++++++++++++++++++++++++-----------------------
2 files changed, 29 insertions(+), 25 deletions(-)
diff --git a/examples/read_raw.py b/examples/read_raw.py
index c868296..9992a91 100644
--- a/examples/read_raw.py
+++ b/examples/read_raw.py
@@ -1,11 +1,12 @@
import fiff
-fname = 'sm02a5_raw.fif'
+fname = 'MNE-sample-data/MEG/sample/sample_audvis_raw.fif'
+# fname = 'sm02a5_raw.fif'
# fid, tree, directory = fiff.fiff_open(fname, verbose=True)
raw = fiff.setup_read_raw(fname)
-# data, times = fiff.read_raw_segment(raw, from_=None, to=None, sel=None)
+data, times = fiff.read_raw_segment(raw, from_=None, to=50000, sel=None)
# import pylab as pl
# pl.plot(data['evoked']['times'], data['evoked']['epochs'][:306,:].T)
diff --git a/fiff/raw.py b/fiff/raw.py
index 22f4ccb..866c540 100644
--- a/fiff/raw.py
+++ b/fiff/raw.py
@@ -65,7 +65,7 @@ def setup_read_raw(fname, allow_maxshield=False):
# This first skip can be applied only after we know the buffer size
tag = read_tag(fid, directory[first].pos)
first_skip = int(tag.data)
- first += first
+ first += 1
data['first_samp'] = first_samp
@@ -77,16 +77,17 @@ def setup_read_raw(fname, allow_maxshield=False):
if ent.kind == FIFF.FIFF_DATA_SKIP:
tag = read_tag(fid, ent.pos)
nskip = int(tag.data)
+ print nskip
elif ent.kind == FIFF.FIFF_DATA_BUFFER:
# Figure out the number of samples in this buffer
if ent.type == FIFF.FIFFT_DAU_PACK16:
- nsamp = ent.size / (2.0*nchan)
+ nsamp = ent.size / (2*nchan)
elif ent.type == FIFF.FIFFT_SHORT:
- nsamp = ent.size / (2.0*nchan)
+ nsamp = ent.size / (2*nchan)
elif ent.type == FIFF.FIFFT_FLOAT:
- nsamp = ent.size / (4.0*nchan)
+ nsamp = ent.size / (4*nchan)
elif ent.type == FIFF.FIFFT_INT:
- nsamp = ent.size / (4.0*nchan)
+ nsamp = ent.size / (4*nchan)
else:
fid.close()
raise ValueError, 'Cannot handle data buffers of type %d' % ent.type
@@ -99,6 +100,7 @@ def setup_read_raw(fname, allow_maxshield=False):
# Do we have a skip pending?
if nskip > 0:
+ import pdb; pdb.set_trace()
rawdir.append(dict(ent=None, first=first_samp,
last=first_samp + nskip*nsamp - 1,
nsamp=nskip*nsamp))
@@ -156,8 +158,8 @@ def read_raw_segment(raw, from_=None, to=None, sel=None):
from_ = raw['first_samp']
# Initial checks
- from_ = float(from_)
- to = float(to)
+ from_ = int(from_)
+ to = int(to)
if from_ < raw['first_samp']:
from_ = raw['first_samp']
@@ -168,15 +170,16 @@ def read_raw_segment(raw, from_=None, to=None, sel=None):
raise ValueError, 'No data in this range'
print 'Reading %d ... %d = %9.3f ... %9.3f secs...' % (
- from_, to, from_/raw['info']['sfreq'], to/raw['info']['sfreq'])
-
+ from_, to, from_ / float(raw['info']['sfreq']),
+ to / float(raw['info']['sfreq']))
+
# Initialize the data and calibration vector
nchan = raw['info']['nchan']
- dest = 1
+ dest = 0
cal = np.diag(raw['cals'].ravel())
if sel is None:
- data = np.zeros((nchan, to - from_ + 1))
+ data = np.empty((nchan, to - from_))
if raw['proj'] is None and raw['comp'] is None:
mult = None
else:
@@ -188,7 +191,7 @@ def read_raw_segment(raw, from_=None, to=None, sel=None):
mult = raw['proj'] * raw['comp'] * cal
else:
- data = np.zeros((len(sel), to - from_ + 1))
+ data = np.empty((len(sel), to - from_))
if raw['proj'] is None and raw['comp'] is None:
mult = None
cal = np.diag(raw['cals'][sel].ravel())
@@ -229,12 +232,12 @@ def read_raw_segment(raw, from_=None, to=None, sel=None):
# we proceed a little bit differently
if mult is None:
if sel is None:
- one = cal * tag.data.reshape(nchan, this['nsamp']).astype(np.float)
+ one = cal * tag.data.reshape(this['nsamp'], nchan).astype(np.float).T
else:
- one = tag.data.reshape(nchan, this['nsamp']).astype(np.float)
+ one = tag.data.reshape(this['nsamp'], nchan).astype(np.float).T
one = cal * one[sel,:]
else:
- one = mult * tag.data.reshape(tag.data,nchan,this['nsamp']).astype(np.float)
+ one = mult * tag.data.reshape(this['nsamp'], nchan).astype(np.float).T
# The picking logic is a bit complicated
if to >= this['last'] and from_ <= this['first']:
@@ -245,7 +248,7 @@ def read_raw_segment(raw, from_=None, to=None, sel=None):
print 'W'
elif from_ > this['first']:
- first_pick = from_ - this['first'] + 1
+ first_pick = from_ - this['first']
if to < this['last']:
# Something from the middle
last_pick = this['nsamp'] + to - this['last']
@@ -259,22 +262,22 @@ def read_raw_segment(raw, from_=None, to=None, sel=None):
print 'E'
else:
# From the beginning to the middle
- first_pick = 1
- last_pick = to - this['first'] + 1
+ first_pick = 0
+ last_pick = to - this['first']
if do_debug:
print 'B'
-
+
# Now we are ready to pick
- picksamp = last_pick - first_pick + 1
+ picksamp = last_pick - first_pick
if picksamp > 0:
- data[:, dest:dest+picksamp-1] = one[:, first_pick:last_pick]
- dest += picksamp
+ data[:, dest:dest+picksamp] = one[:, first_pick:last_pick]
+ dest += picksamp
# Done?
if this['last'] >= to:
print ' [done]\n'
break
- times = np.range(from_, to) / raw['info']['sfreq']
+ times = np.arange(from_, to) / raw['info']['sfreq']
return data, times
--
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