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 208cd1b5d86410b6d9eb2ac6ee2673b083855fa4 Author: Alexandre Gramfort <[email protected]> Date: Sun Feb 20 21:37:32 2011 -0500 first attempt to extract signal in ROIs with label files --- examples/plot_roi_label_activations.py | 32 +++++++++++++++ mne/__init__.py | 1 + mne/label.py | 75 ++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) diff --git a/examples/plot_roi_label_activations.py b/examples/plot_roi_label_activations.py new file mode 100644 index 0000000..b8ca654 --- /dev/null +++ b/examples/plot_roi_label_activations.py @@ -0,0 +1,32 @@ +""" +==================================================== +Extracting the time series of activations in a label +==================================================== + + +""" +# Author: Alexandre Gramfort <[email protected]> +# +# License: BSD (3-clause) + +print __doc__ + +import os +import numpy as np +import mne +from mne.datasets import sample + +data_path = sample.data_path('.') +stc_fname = data_path + '/MEG/sample/sample_audvis-meg-lh.stc' +label_fname = data_path + '/subjects/sample/label/lh.BA1.label' + +values, times, vertices = mne.label_time_courses(label_fname, stc_fname) + +print "Number of vertices : %d" % len(vertices) + +# View source activations +import pylab as pl +pl.plot(times, values.T) +pl.xlabel('time (ms)') +pl.ylabel('Source amplitude') +pl.show() diff --git a/mne/__init__.py b/mne/__init__.py index f6e87f4..9f2fef4 100644 --- a/mne/__init__.py +++ b/mne/__init__.py @@ -8,4 +8,5 @@ from .bem_surfaces import read_bem_surfaces from .inverse import read_inverse_operator, compute_inverse from .epochs import read_epochs from .tfr import time_frequency +from .label import label_time_courses, read_label import fiff diff --git a/mne/label.py b/mne/label.py new file mode 100644 index 0000000..d46ad48 --- /dev/null +++ b/mne/label.py @@ -0,0 +1,75 @@ +import numpy as np + +from .stc import read_stc + + +def read_label(filename): + """Read FreeSurfer Label file + + Parameters + ---------- + filename : string + Path to label file. + + Returns + ------- + label : dict + Label dictionaries with keys: + comment comment from the first line of the label file + vertices vertex indices (0 based, column 1) + pos locations in meters (columns 2 - 4 divided by 1000) + values values at the vertices (column 5) + + """ + fid = open(filename, 'r') + comment = fid.readline().replace('\n', '') + nv = int(fid.readline()) + data = np.empty((5, nv)) + for i, line in enumerate(fid): + data[:, i] = line.split() + + label = dict() + label['comment'] = comment[1:] + label['vertices'] = np.array(data[0], dtype=np.int32) + label['pos'] = 1e-3 * data[1:4].T + label['values'] = data[4] + fid.close() + + return label + + +def label_time_courses(labelfile, stcfile): + """Extract the time courses corresponding to a label file from an stc file + + Parameters + ---------- + labelfile : string + Path to the label file + + stcfile : string + Path to the stc file. The name of the stc file (must be on the + same subject and hemisphere as the stc file) + + Returns + ------- + values : 2d array + The time courses + times : 1d array + The time points + vertices : array + The indices of the vertices corresponding to the time points + """ + stc = read_stc(stcfile) + lab = read_label(labelfile) + + vertices = np.intersect1d(stc['vertices'], lab['vertices']) + idx = [k for k in range(len(stc['vertices'])) + if stc['vertices'][k] in vertices] + + if len(vertices) == 0: + raise ValueError, 'No vertices match the label in the stc file' + + values = stc['data'][idx] + times = stc.tmin + stc.tstep * np.arange(stc.data.shape[1]) + + return values, times, vertices -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-mne.git _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
