[med-svn] [python-mne] 151/353: API : make Covariance inherit from dict
Yaroslav Halchenko
debian at onerussian.com
Fri Nov 27 17:24:48 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 e0f61f39a9e3dd69ec68866ac29a049376372001
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date: Tue Apr 17 10:48:02 2012 +0200
API : make Covariance inherit from dict
---
mne/cov.py | 72 +++++++++++++++++++++++++++++++-------------------------------
1 file changed, 36 insertions(+), 36 deletions(-)
diff --git a/mne/cov.py b/mne/cov.py
index c5689a4..7c0fdb6 100644
--- a/mne/cov.py
+++ b/mne/cov.py
@@ -24,15 +24,15 @@ def _check_covs_algebra(cov1, cov2):
if cov1.ch_names != cov2.ch_names:
raise ValueError('Both Covariance do not have the same list of '
'channels.')
- if map(str, cov1._cov['projs']) != map(str, cov2._cov['projs']):
+ if map(str, cov1['projs']) != map(str, cov2['projs']):
raise ValueError('Both Covariance do not have the same list of '
'SSP projections.')
- if cov1._cov['bads'] != cov2._cov['bads']:
+ if cov1['bads'] != cov2['bads']:
raise ValueError('Both Covariance do not have the same list of '
'bad channels.')
-class Covariance(object):
+class Covariance(dict):
"""Noise covariance matrix
Parameters
@@ -58,20 +58,27 @@ class Covariance(object):
# Reading
fid, tree, _ = fiff_open(fname)
- cov = fiff.read_cov(fid, tree, FIFF.FIFFV_MNE_NOISE_COV)
+ self.update(fiff.read_cov(fid, tree, FIFF.FIFFV_MNE_NOISE_COV))
fid.close()
- self._cov = cov
- self.data = cov['data']
- self.ch_names = cov['names']
- self.nfree = cov['nfree']
+ @property
+ def data(self):
+ return self['data']
+
+ @property
+ def ch_names(self):
+ return self['names']
+
+ @property
+ def nfree(self):
+ return self['nfree']
def save(self, fname):
"""save covariance matrix in a FIF file"""
fid = start_file(fname)
try:
- fiff.write_cov(fid, self._cov)
+ fiff.write_cov(fid, self)
except Exception as inst:
os.remove(fname)
raise '%s', inst
@@ -87,21 +94,19 @@ class Covariance(object):
"""Add Covariance taking into account number of degrees of freedom"""
_check_covs_algebra(self, cov)
this_cov = copy.deepcopy(cov)
- this_cov.data[:] = ((this_cov.data * this_cov.nfree) + \
- (self.data * self.nfree)) / \
- (self.nfree + this_cov.nfree)
- this_cov._cov['nfree'] += self._cov['nfree']
- this_cov.nfree = this_cov._cov['nfree']
+ this_cov['data'] = ((this_cov['data'] * this_cov['nfree']) + \
+ (self['data'] * self['nfree'])) / \
+ (self['nfree'] + this_cov['nfree'])
+ this_cov['nfree'] += self['nfree']
return this_cov
def __iadd__(self, cov):
"""Add Covariance taking into account number of degrees of freedom"""
_check_covs_algebra(self, cov)
- self.data[:] = ((self.data * self.nfree) + \
- (cov.data * cov.nfree)) / \
- (self.nfree + cov.nfree)
- self._cov['nfree'] += cov._cov['nfree']
- self.nfree = cov._cov['nfree']
+ self['data'][:] = ((self['data'] * self['nfree']) + \
+ (cov['data'] * cov['nfree'])) / \
+ (self['nfree'] + cov['nfree'])
+ self['nfree'] += cov['nfree']
return self
@@ -209,20 +214,18 @@ def compute_raw_data_covariance(raw, tmin=None, tmax=None, tstep=0.2,
print '[done]'
cov = Covariance(None)
- cov.data = data
- cov.ch_names = [raw.info['ch_names'][k] for k in picks_data]
- cov.nfree = n_samples
+ ch_names = [raw.info['ch_names'][k] for k in picks_data]
# XXX : do not compute eig and eigvec now (think it's better...)
eig = None
eigvec = None
# Store structure for fif
- cov._cov = dict(kind=FIFF.FIFFV_MNE_NOISE_COV, diag=False, dim=len(data),
- names=cov.ch_names, data=data,
- projs=copy.deepcopy(raw.info['projs']),
- bads=raw.info['bads'], nfree=n_samples, eig=eig,
- eigvec=eigvec)
+ cov.update(kind=FIFF.FIFFV_MNE_NOISE_COV, diag=False, dim=len(data),
+ names=ch_names, data=data,
+ projs=copy.deepcopy(raw.info['projs']),
+ bads=raw.info['bads'], nfree=n_samples, eig=eig,
+ eigvec=eigvec)
return cov
@@ -316,19 +319,15 @@ def compute_covariance(epochs, keep_sample_mean=True):
data /= norm_const
cov = Covariance(None)
- cov.data = data
- cov.ch_names = ch_names
- cov.nfree = n_samples_tot
# XXX : do not compute eig and eigvec now (think it's better...)
eig = None
eigvec = None
- # Store structure for fif
- cov._cov = dict(kind=1, diag=False, dim=len(data), names=ch_names,
- data=data, projs=copy.deepcopy(epochs[0].info['projs']),
- bads=epochs[0].info['bads'], nfree=n_samples_tot, eig=eig,
- eigvec=eigvec)
+ cov.update(kind=1, diag=False, dim=len(data), names=ch_names,
+ data=data, projs=copy.deepcopy(epochs[0].info['projs']),
+ bads=epochs[0].info['bads'], nfree=n_samples_tot, eig=eig,
+ eigvec=eigvec)
print "Number of samples used : %d" % n_samples_tot
print '[done]'
@@ -419,7 +418,8 @@ def prepare_noise_cov(noise_cov, info, ch_names):
assert(len(C_meg_idx) + len(C_eeg_idx) == n_chan)
- noise_cov = dict(data=C, eig=eig, eigvec=eigvec, dim=len(ch_names),
+ noise_cov = Covariance(None)
+ noise_cov.update(data=C, eig=eig, eigvec=eigvec, dim=len(ch_names),
diag=False, names=ch_names)
return noise_cov
--
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