@@ -214,13 +214,17 @@ class BaseEpochs(ProjMixin, ContainsMixin, UpdateChannelsMixin,
214214
215215 def __init__ (self , info , data , events , event_id = None , tmin = - 0.2 , tmax = 0.5 ,
216216 baseline = (None , 0 ), raw = None ,
217- picks = None , name = 'Unknown' , reject = None , flat = None ,
217+ picks = None , name = None , reject = None , flat = None ,
218218 decim = 1 , reject_tmin = None , reject_tmax = None , detrend = None ,
219219 add_eeg_ref = False , proj = True , on_missing = 'error' ,
220220 preload_at_end = False , selection = None , drop_log = None ,
221221 filename = None , verbose = None ): # noqa: D102
222222 self .verbose = verbose
223- self .name = name
223+ if name is not None :
224+ warn ('name is deprecated and will be removed in 0.15.' )
225+ else :
226+ name = 'Unknown'
227+ self ._name = name
224228
225229 if on_missing not in ['error' , 'warning' , 'ignore' ]:
226230 raise ValueError ('on_missing must be one of: error, '
@@ -823,15 +827,28 @@ def _compute_mean_or_stderr(self, picks, mode='ave'):
823827 else :
824828 kind = 'standard_error'
825829 data /= np .sqrt (n_events )
830+
831+ if self ._name not in ['Unknown' , None ]:
832+ comment = self ._name
833+ else :
834+ if len (self .event_id ) == 1 :
835+ comment = next (iter (self .event_id .keys ()))
836+ else :
837+ count = np .bincount (self .events [:, 2 ])
838+ comments = list ()
839+ for key , value in self .event_id .items ():
840+ comments .append ('%.2f * %s' % (
841+ float (count [value ]) / len (self .events ), key ))
842+ comment = ' + ' .join (comments )
826843 return self ._evoked_from_epoch_data (data , self .info , picks , n_events ,
827- kind )
844+ kind , comment )
828845
829- def _evoked_from_epoch_data (self , data , info , picks , n_events , kind ):
846+ def _evoked_from_epoch_data (self , data , info , picks , n_events , kind ,
847+ comment ):
830848 """Create an evoked object from epoch data."""
831849 info = deepcopy (info )
832- evoked = EvokedArray (data , info , tmin = self .times [0 ],
833- comment = self .name , nave = n_events , kind = kind ,
834- verbose = self .verbose )
850+ evoked = EvokedArray (data , info , tmin = self .times [0 ], comment = comment ,
851+ nave = n_events , kind = kind , verbose = self .verbose )
835852 # XXX: above constructor doesn't recreate the times object precisely
836853 evoked .times = self .times .copy ()
837854
@@ -1287,6 +1304,18 @@ def tmax(self):
12871304 """Last time point."""
12881305 return self .times [- 1 ]
12891306
1307+ @property
1308+ def name (self ):
1309+ """Name for the epoch set."""
1310+ warn ('name attribute is deprecated and will be removed in 0.15.' )
1311+ return self ._name
1312+
1313+ @name .setter
1314+ def name (self , name ):
1315+ """Name for the epoch set."""
1316+ warn ('name attribute is deprecated and will be removed in 0.15.' )
1317+ self ._name = name
1318+
12901319 def __repr__ (self ):
12911320 """Build string representation."""
12921321 s = 'n_events : %s ' % len (self .events )
@@ -1363,7 +1392,7 @@ def __getitem__(self, item):
13631392 if isinstance (item , (list , tuple )) and \
13641393 isinstance (item [0 ], string_types ):
13651394 select = epochs ._keys_to_idx (item )
1366- epochs .name = '+' .join (item )
1395+ epochs ._name = '+' .join (item )
13671396 else :
13681397 select = item if isinstance (item , slice ) else np .atleast_1d (item )
13691398
@@ -1761,7 +1790,7 @@ class Epochs(BaseEpochs):
17611790 picks : array-like of int | None (default)
17621791 Indices of channels to include (if None, all channels are used).
17631792 name : string
1764- Comment that describes the Epochs data created.
1793+ Comment that describes the Epochs data created. Deprecated.
17651794 preload : boolean
17661795 Load all epochs from disk when creating the object
17671796 or wait before accessing each epoch (more memory
@@ -1878,7 +1907,7 @@ class Epochs(BaseEpochs):
18781907
18791908 @verbose
18801909 def __init__ (self , raw , events , event_id = None , tmin = - 0.2 , tmax = 0.5 ,
1881- baseline = (None , 0 ), picks = None , name = 'Unknown' , preload = False ,
1910+ baseline = (None , 0 ), picks = None , name = None , preload = False ,
18821911 reject = None , flat = None , proj = True , decim = 1 , reject_tmin = None ,
18831912 reject_tmax = None , detrend = None , add_eeg_ref = None ,
18841913 on_missing = 'error' , reject_by_annotation = True ,
@@ -2579,7 +2608,7 @@ def _check_merge_epochs(epochs_list):
25792608
25802609
25812610@verbose
2582- def add_channels_epochs (epochs_list , name = 'Unknown' , add_eeg_ref = False ,
2611+ def add_channels_epochs (epochs_list , name = None , add_eeg_ref = False ,
25832612 verbose = None ):
25842613 """Concatenate channels, info and data from two Epochs objects.
25852614
@@ -2588,7 +2617,7 @@ def add_channels_epochs(epochs_list, name='Unknown', add_eeg_ref=False,
25882617 epochs_list : list of Epochs
25892618 Epochs object to concatenate.
25902619 name : str
2591- Comment that describes the Epochs data created.
2620+ Comment that describes the Epochs data created. Deprecated.
25922621 add_eeg_ref : bool
25932622 If True, an EEG average reference will be added (unless there is
25942623 no EEG in the data). This parameter will be removed in 0.15. Use
@@ -2603,6 +2632,8 @@ def add_channels_epochs(epochs_list, name='Unknown', add_eeg_ref=False,
26032632 epochs : instance of Epochs
26042633 Concatenated epochs.
26052634 """
2635+ if name is not None :
2636+ warn ('name is deprecated and will be removed in 0.15.' )
26062637 add_eeg_ref = _dep_eeg_ref (add_eeg_ref )
26072638 if not all (e .preload for e in epochs_list ):
26082639 raise ValueError ('All epochs must be preloaded.' )
@@ -2634,7 +2665,7 @@ def add_channels_epochs(epochs_list, name='Unknown', add_eeg_ref=False,
26342665 epochs = epochs_list [0 ].copy ()
26352666 epochs .info = info
26362667 epochs .picks = None
2637- epochs .name = name
2668+ epochs ._name = name
26382669 epochs .verbose = verbose
26392670 epochs .events = events
26402671 epochs .preload = True
@@ -2970,7 +3001,8 @@ def average_movements(epochs, head_pos=None, orig_sfreq=None, picks=None,
29703001 data [meg_picks ] = np .dot (mapping , data [good_picks ])
29713002 info_to ['dev_head_t' ] = recon_trans # set the reconstruction transform
29723003 evoked = epochs ._evoked_from_epoch_data (data , info_to , picks ,
2973- n_events = count , kind = 'average' )
3004+ n_events = count , kind = 'average' ,
3005+ comment = epochs ._name )
29743006 _remove_meg_projs (evoked ) # remove MEG projectors, they won't apply now
29753007 logger .info ('Created Evoked dataset from %s epochs' % (count ,))
29763008 return (evoked , mapping ) if return_mapping else evoked
0 commit comments