[med-svn] [python-mne] 14/376: reading stc files
Yaroslav Halchenko
debian at onerussian.com
Fri Nov 27 17:21:56 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 9072d39629f84f6c107c66d9711d5be350264dc0
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date: Wed Dec 29 18:38:48 2010 -0500
reading stc files
---
examples/read_cov.py | 12 ++++++++---
examples/read_events.py | 5 +----
examples/read_evoked.py | 3 +--
examples/read_raw.py | 1 -
examples/read_stc.py | 18 +++++++++++++++++
fiff/__init__.py | 1 +
fiff/stc.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 83 insertions(+), 10 deletions(-)
diff --git a/examples/read_cov.py b/examples/read_cov.py
index ee771f1..30f2406 100644
--- a/examples/read_cov.py
+++ b/examples/read_cov.py
@@ -1,14 +1,20 @@
-import pylab as pl
+"""Reading a noise covariance matrix
+"""
+print __doc__
+
import fiff
-fname = 'sm02a1-cov.fif'
+fname = 'MNE-sample-data/MEG/sample/sample_audvis-cov.fif'
fid, tree, _ = fiff.fiff_open(fname)
cov_type = 1
cov = fiff.read_cov(fid, tree, cov_type)
-print "cov size: %s x %s" % cov['data'].shape
+print "covariance matrix size: %s x %s" % cov['data'].shape
+###############################################################################
+# Show covariance
+import pylab as pl
pl.matshow(cov['data'])
pl.show()
diff --git a/examples/read_events.py b/examples/read_events.py
index 1bcab5f..4781ad1 100644
--- a/examples/read_events.py
+++ b/examples/read_events.py
@@ -2,19 +2,16 @@
"""
print __doc__
-import pylab as pl
import fiff
fname = 'MNE-sample-data/MEG/sample/sample_audvis_raw-eve.fif'
-# fname = 'sm02a5_raw.fif'
event_list = fiff.read_events(fname)
###############################################################################
# Show MEG data
+import pylab as pl
pl.plot(times, data.T)
pl.xlabel('time (ms)')
pl.ylabel('MEG data (T)')
pl.show()
-
-
diff --git a/examples/read_evoked.py b/examples/read_evoked.py
index d26e4c2..8fe664f 100644
--- a/examples/read_evoked.py
+++ b/examples/read_evoked.py
@@ -4,8 +4,7 @@ print __doc__
import fiff
-fname = 'sm02a1-ave.fif'
-# fname = 'MNE-sample-data/MEG/sample/sample_audvis-ave.fif'
+fname = 'MNE-sample-data/MEG/sample/sample_audvis-ave.fif'
data = fiff.read_evoked(fname)
diff --git a/examples/read_raw.py b/examples/read_raw.py
index 08c135d..80666c9 100644
--- a/examples/read_raw.py
+++ b/examples/read_raw.py
@@ -6,7 +6,6 @@ import pylab as pl
import fiff
fname = 'MNE-sample-data/MEG/sample/sample_audvis_raw.fif'
-# fname = 'sm02a5_raw.fif'
raw = fiff.setup_read_raw(fname)
diff --git a/examples/read_stc.py b/examples/read_stc.py
new file mode 100644
index 0000000..f1a8573
--- /dev/null
+++ b/examples/read_stc.py
@@ -0,0 +1,18 @@
+"""Reading a raw file segment
+"""
+print __doc__
+
+import fiff
+
+# fname = 'MNE-sample-data/MEG/sample/sample_audvis_raw.fif'
+fname = 'hk_ret12_offl-7-meg-snr-3-spm-rh.stc'
+
+stc = fiff.read_stc(fname)
+
+n_vertices, n_samples = stc['data'].shape
+print "tmin : %s (s)" % stc['tmin']
+print "tstep : %s" % stc['tstep']
+print "tmax : %s (s)" % (stc['tmin'] + stc['tstep'] * n_samples)
+print "stc data size: %s (nb of vertices) x %s (nb of samples)" % (
+ n_vertices, n_samples)
+
diff --git a/fiff/__init__.py b/fiff/__init__.py
index a7c32eb..10b382e 100644
--- a/fiff/__init__.py
+++ b/fiff/__init__.py
@@ -7,4 +7,5 @@ from .cov import read_cov
from .raw import setup_read_raw, read_raw_segment, read_raw_segment_times
from .event import read_events
from .forward import read_forward_solution
+from .stc import read_stc
diff --git a/fiff/stc.py b/fiff/stc.py
new file mode 100644
index 0000000..9c10f24
--- /dev/null
+++ b/fiff/stc.py
@@ -0,0 +1,53 @@
+import numpy as np
+
+
+def read_stc(filename):
+ """
+ %
+ % [stc] = mne_read_stc_file(filename)
+ %
+ % Reads an stc file. The returned structure has the following fields
+ %
+ % tmin The first time point of the data in seconds
+ % tstep Time between frames in seconds
+ % vertices vertex indices (0 based)
+ % data The data matrix (nvert * ntime)
+ %
+ %
+ """
+
+ fid = open(filename, 'rb')
+
+ stc = dict()
+
+ fid.seek(0, 2) # go to end of file
+ file_length = fid.tell()
+ fid.seek(0, 0) # go to beginning of file
+
+ # read tmin in ms
+ stc['tmin'] = float(np.fromfile(fid, dtype=">f4", count=1))
+ stc['tmin'] /= 1000.0
+
+ # read sampling rate in ms
+ stc['tstep'] = float(np.fromfile(fid, dtype=">f4", count=1))
+ stc['tstep'] /= 1000.0
+
+ # read number of vertices/sources
+ vertices_n = np.fromfile(fid, dtype=">I4", count=1)
+
+ # read the source vector
+ stc['vertices'] = np.fromfile(fid, dtype=">I4", count=vertices_n)
+
+ # read the number of timepts
+ data_n = np.fromfile(fid, dtype=">I4", count=1)
+
+ if ((file_length/4 -4 - vertices_n) % (data_n*vertices_n)) != 0:
+ raise ValueError, 'incorrect stc file size'
+
+ # read the data matrix
+ stc['data'] = np.fromfile(fid, dtype=">f4", count=vertices_n*data_n)
+ stc['data'] = stc['data'].reshape([data_n, vertices_n]).T
+
+ # close the file
+ fid.close()
+ return stc
--
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