Skip to content

Commit 6ae2583

Browse files
committed
add sigsegments field to MultiRecord objects
1 parent c9add72 commit 6ae2583

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

wfdb/readwrite/_headers.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,9 +362,9 @@ def wrheaderfile(self, writefields):
362362
linestofile(self.recordname+'.hea', headerlines)
363363

364364
# Get a list of the segment numbers that contain a particular signal
365-
# (or a list of segment numbers for a list of signals)
365+
# (or a dictionary of segment numbers for a list of signals)
366366
# Only works if information about the segments has been read in
367-
def signalsegments(self, signame=None):
367+
def getsigsegments(self, signame=None):
368368
if self.segments is None:
369369
raise Exception("The MultiRecord's segments must be read in before this method is called. ie. Call rdheader() with rdsegments=True")
370370

@@ -373,7 +373,10 @@ def signalsegments(self, signame=None):
373373
signame = self.getsignames()
374374

375375
if type(signame) == list:
376-
return [self.signalsegments(sig) for sig in signame]
376+
sigdict = {}
377+
for sig in signame:
378+
sigdict[sig] = self.getsigsegments(sig)
379+
return sigdict
377380
elif type(signame) == str:
378381
sigsegs = []
379382
for i in range(self.nseg):

wfdb/readwrite/records.py

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -475,12 +475,12 @@ class MultiRecord(BaseRecord, _headers.MultiHeadersMixin):
475475
of the record as a Record object. The resulting Record object will have its 'p_signals' field set.
476476
477477
Contructor function:
478-
def __init__(self, segments = None, layout = None,
478+
def __init__(self, segments=None, layout=None,
479479
recordname=None, nsig=None, fs=None,
480480
counterfreq=None, basecounter=None,
481481
siglen=None, basetime=None, basedate=None,
482-
segname = None, seglen = None, comments=None,
483-
signame = None)
482+
segname=None, seglen=None, comments=None,
483+
signame=None, sigsegments=None)
484484
485485
Example Usage:
486486
import wfdb
@@ -492,12 +492,12 @@ def __init__(self, segments = None, layout = None,
492492
"""
493493

494494
# Constructor
495-
def __init__(self, segments = None, layout = None,
495+
def __init__(self, segments=None, layout=None,
496496
recordname=None, nsig=None, fs=None,
497497
counterfreq=None, basecounter=None,
498498
siglen=None, basetime=None, basedate=None,
499-
segname = None, seglen = None, comments=None,
500-
signame = None):
499+
segname=None, seglen=None, comments=None,
500+
signame=None, sigsegments=None):
501501

502502

503503
super(MultiRecord, self).__init__(recordname, nsig,
@@ -508,6 +508,7 @@ def __init__(self, segments = None, layout = None,
508508
self.segments = segments
509509
self.segname = segname
510510
self.seglen = seglen
511+
self.sigsegments=sigsegments
511512

512513
# Write a multi-segment header, along with headers and dat files for all segments
513514
def wrsamp(self):
@@ -585,21 +586,12 @@ def requiredsegments(self, sampfrom, sampto, channels):
585586
readsegs = list(range(readsegs[0], readsegs[1]+1))
586587
readsamps = [[0, self.seglen[s]] for s in readsegs]
587588

588-
589-
#print('readsegs: ', readsegs)
590-
#print('cumsumlengths: ', cumsumlengths)
591-
#print('startseg: ', startseg)
592-
593589
# Starting sample for first segment.
594590
readsamps[0][0] = sampfrom - ([0] + cumsumlengths)[readsegs[0]-startseg]
595591

596592
# End sample for last segment
597593
readsamps[-1][1] = sampto - ([0] + cumsumlengths)[readsegs[-1]-startseg]
598594

599-
#print('\n\nEnd of requiredsegments.')
600-
#print('readsegs: ', readsegs)
601-
#print('readsamps: ', readsamps)
602-
603595
return (readsegs, readsamps)
604596

605597
# Get the channel numbers to be read from each segment
@@ -981,6 +973,8 @@ def rdheader(recordname, pbdir = None, rdsegments = False):
981973
record.segments.append(rdheader(os.path.join(dirname,s), pbdir))
982974
# Fill in the signame attribute
983975
record.signame = record.getsignames()
976+
# Fill in the sigsegments attribute
977+
record.sigsegments = record.getsigsegments()
984978

985979
# Set the comments field
986980
record.comments = []

0 commit comments

Comments
 (0)