Source code for pyActigraphy.sleep.sleep

from ..utils.filters import filter_ts_duration


[docs]class SleepBoutMixin(object): """ Mixin Class for identifying sleep bouts"""
[docs] def sleep_bouts( self, duration_min=None, duration_max=None, algo='Roenneberg', *args, **kwargs ): r"""Sleep bouts. Activity periods identified as sleep. Parameters ---------- duration_min: str,optional Minimal time duration for a sleep period. Default is None (no filtering). duration_max: str,optional Maximal time duration for a sleep period. Default is None (no filtering). algo: str, optional Sleep/wake scoring algorithm to use. Default is 'Roenneberg'. *args Variable length argument list passed to the scoring algorithm. **kwargs Arbitrary keyword arguements passed to the scoring algorithm. Returns ------- sleep_bouts: a list of pandas.Series Examples -------- >>> import pyActigraphy >>> rawAWD = pyActigraphy.io.read_raw_awd(fpath + 'SUBJECT_01.AWD') >>> raw.sleep_bouts(duration_min='2h', algo='Roenneberg') XXX """ # Retrieve sleep scoring function dynamically by name sleep_algo = getattr(self, algo+'_AoT') # Detect activity onset and offset times onsets, offsets = sleep_algo(*args, **kwargs) # For each inactivity period (from offset to onset times) sleep_bouts = [] for onset, offset in zip(onsets, offsets): sleep_bout = self.data[offset:onset] sleep_bouts.append(sleep_bout) return filter_ts_duration(sleep_bouts, duration_min, duration_max)
[docs] def active_bouts( self, duration_min=None, duration_max=None, algo='Roenneberg', *args, **kwargs ): r"""Active bouts. Activity periods identified as active. Parameters ---------- duration_min: str,optional Minimal time duration for an active period. Default is None (no filtering). duration_max: str,optional Maximal time duration for an active period. Default is None (no filtering). algo: str, optional Sleep/wake scoring algorithm to use. Default is 'Roenneberg'. *args Variable length argument list passed to the scoring algorithm. **kwargs Arbitrary keyword arguements passed to the scoring algorithm. Returns ------- active_bouts: a list of pandas.Series Examples -------- >>> import pyActigraphy >>> rawAWD = pyActigraphy.io.read_raw_awd(fpath + 'SUBJECT_01.AWD') >>> raw.active_bouts(duration_min='2h', algo='Roenneberg') XXX """ # Retrieve sleep scoring function dynamically by name sleep_algo = getattr(self, algo+'_AoT') # Detect activity onset and offset times onsets, offsets = sleep_algo(*args, **kwargs) # Check if first onset occurs after the first offset assert offsets[0] < onsets[0] # For each activity period (from onset to offset times) # - Deal with first and last active periods manually active_bouts = [] # First active bout (from the beginning of recording to first offset) active_bouts.append(self.data[:offsets[0]]) for onset, offset in zip(onsets[:-1], offsets[1:]): active_bout = self.data[onset:offset] active_bouts.append(active_bout) # Last active bout (from last onset to the end of the recording) active_bouts.append(self.data[onsets[-1]:]) return filter_ts_duration(active_bouts, duration_min, duration_max)
[docs] def sleep_durations( self, duration_min=None, duration_max=None, algo='Roenneberg', *args, **kwargs ): r"""Duration of the sleep bouts. Duration of the activity periods identified as sleep. Parameters ---------- duration_min: str,optional Minimal time duration for a sleep period. Default is None (no filtering). duration_max: str,optional Maximal time duration for a sleep period. Default is None (no filtering). algo: str, optional Sleep/wake scoring algorithm to use. Default is 'Roenneberg'. *args Variable length argument list passed to the scoring algorithm. **kwargs Arbitrary keyword arguements passed to the scoring algorithm. Returns ------- sleep_durations: a list of pandas.TimeDelta Examples -------- >>> import pyActigraphy >>> rawAWD = pyActigraphy.io.read_raw_awd(fpath + 'SUBJECT_01.AWD') >>> raw.sleep_durations(duration_min='2h', algo='Roenneberg') XXX """ # Retrieve sleep bouts filtered_bouts = self.sleep_bouts( duration_min=duration_min, duration_max=duration_max, algo=algo, *args, **kwargs ) return [s.index[-1]-s.index[0] for s in filtered_bouts]
[docs] def active_durations( self, duration_min=None, duration_max=None, algo='Roenneberg', *args, **kwargs ): r"""Duration of the active bouts. Duration of the activity periods identified as active. Parameters ---------- duration_min: str,optional Minimal time duration for an active period. Default is None (no filtering). duration_max: str,optional Maximal time duration for an active period. Default is None (no filtering). algo: str, optional Sleep/wake scoring algorithm to use. Default is 'Roenneberg'. *args Variable length argument list passed to the scoring algorithm. **kwargs Arbitrary keyword arguements passed to the scoring algorithm. Returns ------- active_durations: a list of pandas.TimeDelta Examples -------- >>> import pyActigraphy >>> rawAWD = pyActigraphy.io.read_raw_awd(fpath + 'SUBJECT_01.AWD') >>> raw.active_durations(duration_min='2h', algo='Roenneberg') XXX """ # Retrieve sleep bouts filtered_bouts = self.active_bouts( duration_min=duration_min, duration_max=duration_max, algo=algo, *args, **kwargs ) return [s.index[-1]-s.index[0] for s in filtered_bouts]