[med-svn] [python-mne] 237/353: proj idle/active handling

Yaroslav Halchenko debian at onerussian.com
Fri Nov 27 17:25:05 UTC 2015


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

yoh pushed a commit to tag 0.4
in repository python-mne.

commit 7962858a133cabdd37caa169e94da24206740ac7
Author: Martin Luessi <mluessi at nmr.mgh.harvard.edu>
Date:   Fri Jun 29 12:03:04 2012 -0400

    proj idle/active handling
---
 .../plot_compute_raw_data_spectrum.py               |  2 +-
 mne/epochs.py                                       |  6 +++---
 mne/fiff/evoked.py                                  |  6 +++---
 mne/fiff/proj.py                                    | 21 +++++++++++++--------
 mne/fiff/raw.py                                     | 11 ++---------
 5 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/examples/time_frequency/plot_compute_raw_data_spectrum.py b/examples/time_frequency/plot_compute_raw_data_spectrum.py
index 804869b..4453d17 100644
--- a/examples/time_frequency/plot_compute_raw_data_spectrum.py
+++ b/examples/time_frequency/plot_compute_raw_data_spectrum.py
@@ -31,7 +31,7 @@ exclude = raw.info['bads'] + ['MEG 2443', 'EEG 053']  # bads + 2 more
 
 # Add SSP projection vectors to reduce EOG and ECG artifacts
 projs = read_proj(proj_fname)
-raw.add_proj(projs, activate=True, remove_existing=True)
+raw.add_proj(projs, remove_existing=True)
 
 # Pick MEG magnetometers in the Left-temporal region
 selection = read_selection('Left-temporal')
diff --git a/mne/epochs.py b/mne/epochs.py
index 5d922b3..00e247f 100644
--- a/mne/epochs.py
+++ b/mne/epochs.py
@@ -142,9 +142,6 @@ class Epochs(object):
             print 'No projector specified for these data'
             self.proj = None
         else:
-            #   Activate the projection items
-            self.info['projs'] = activate_proj(self.info['projs'], copy=False)
-
             # Add EEG ref reference proj
             eeg_sel = pick_types(self.info, meg=False, eeg=True)
             if len(eeg_sel) > 0:
@@ -161,6 +158,9 @@ class Epochs(object):
                                                                     % nproj)
                 self.proj = proj
 
+            #   The projection items have been activated
+            self.info['projs'] = activate_proj(self.info['projs'], copy=False)
+
         #   Set up the CTF compensator
         current_comp = fiff.get_current_comp(self.info)
         if current_comp > 0:
diff --git a/mne/fiff/evoked.py b/mne/fiff/evoked.py
index 5ea12f0..0977f35 100644
--- a/mne/fiff/evoked.py
+++ b/mne/fiff/evoked.py
@@ -218,9 +218,6 @@ class Evoked(object):
             print 'No projector specified for these data'
             self.proj = None
         else:
-            #   Activate the projection items
-            info['projs'] = activate_proj(info['projs'], copy=False)
-
             #   Create the projector
             proj, nproj = make_projector_info(info)
             if nproj == 0:
@@ -231,6 +228,9 @@ class Evoked(object):
                                                                     % nproj)
                 self.proj = proj
 
+            #   The projection items have been activated
+            info['projs'] = activate_proj(info['projs'], copy=False)
+
         if self.proj is not None:
             print "SSP projectors applied..."
             all_data = np.dot(self.proj, all_data)
diff --git a/mne/fiff/proj.py b/mne/fiff/proj.py
index 0b0ca9c..2cc10de 100644
--- a/mne/fiff/proj.py
+++ b/mne/fiff/proj.py
@@ -195,7 +195,7 @@ def write_proj(fid, projs):
 ###############################################################################
 # Utils
 
-def make_projector(projs, ch_names, bads=[]):
+def make_projector(projs, ch_names, bads=[], idle_only=False):
     """Create an SSP operator from SSP projection vectors
 
     Parameters
@@ -206,6 +206,9 @@ def make_projector(projs, ch_names, bads=[]):
         List of channels to include in the projection matrix
     bads : list of strings
         Some bad channels to exclude
+    idle_only : bool
+        Only include projectors that are currently idle. By default all
+        projectors are included.
 
     Returns
     -------
@@ -228,14 +231,13 @@ def make_projector(projs, ch_names, bads=[]):
     if projs is None:
         return proj, nproj, U
 
-    nactive = 0
     nvec = 0
     for p in projs:
-        if p['active']:
-            nactive += 1
+        if (not p['active'] and idle_only) or not idle_only:
+            nproj += 1
             nvec += p['data']['nrow']
 
-    if nactive == 0:
+    if nproj == 0:
         return proj, nproj, U
 
     #   Pick the appropriate entries
@@ -243,7 +245,7 @@ def make_projector(projs, ch_names, bads=[]):
     nvec = 0
     nonzero = 0
     for k, p in enumerate(projs):
-        if p['active']:
+        if (not p['active'] and idle_only) or not idle_only:
             if len(p['data']['col_names']) != \
                         len(np.unique(p['data']['col_names'])):
                 raise ValueError('Channel name list in projection item %d'
@@ -289,7 +291,7 @@ def make_projector(projs, ch_names, bads=[]):
     return proj, nproj, U
 
 
-def make_projector_info(info):
+def make_projector_info(info, idle_only=False):
     """Make an SSP operator using the measurement info
 
     Calls make_projector on good channels.
@@ -298,6 +300,9 @@ def make_projector_info(info):
     ----------
     info : dict
         Measurement info
+    idle_only : bool
+        Only include projectors that are currently idle. By default all
+        projectors are included.
 
     Returns
     -------
@@ -307,7 +312,7 @@ def make_projector_info(info):
         How many items in the projector
     """
     proj, nproj, _ = make_projector(info['projs'], info['ch_names'],
-                                    info['bads'])
+                                    info['bads'], idle_only)
     return proj, nproj
 
 
diff --git a/mne/fiff/raw.py b/mne/fiff/raw.py
index 7be18ca..4b73eb3 100644
--- a/mne/fiff/raw.py
+++ b/mne/fiff/raw.py
@@ -17,7 +17,6 @@ from .meas_info import read_meas_info, write_meas_info
 from .tree import dir_tree_find
 from .tag import read_tag
 from .pick import pick_types
-from .proj import activate_proj
 
 from ..filter import low_pass_filter, high_pass_filter, band_pass_filter
 from ..parallel import parallel_func
@@ -536,7 +535,7 @@ class Raw(object):
         self.filter(None, freq, picks, n_jobs=n_jobs, verbose=verbose,
                     filter_length=filter_length)
 
-    def add_proj(self, projs, activate=True, remove_existing=False):
+    def add_proj(self, projs, remove_existing=False):
         """Add SSP projection vectors
 
         Parameters
@@ -544,16 +543,10 @@ class Raw(object):
         projs : list
             List with projection vectors
 
-        activate : bool
-            Activate the projection vectors being added
-
         remove_existing : bool
             Remove the projection vectors currently in the file
         """
-        if activate:
-            projs = activate_proj(projs, copy=True)
-        else:
-            projs = copy.deepcopy(projs)
+        projs = copy.deepcopy(projs)
 
         if remove_existing:
             self.info['projs'] = projs

-- 
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