Skip to content

Commit faaca06

Browse files
committed
add smoothframes function
1 parent d7cf324 commit faaca06

File tree

1 file changed

+43
-2
lines changed

1 file changed

+43
-2
lines changed

wfdb/_signals.py

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -408,12 +408,53 @@ def wrdatfiles(self, expanded=False):
408408
wrdatfile(fn, datfmts[fn], dsig[:, datchannels[fn][0]:datchannels[fn][-1]+1], datoffsets[fn])
409409

410410

411-
def smoothframes(self, signal='physical'):
411+
def smoothframes(self, sigtype='physical'):
412412
"""
413413
Convert expanded signals with different samples/frame into
414-
a uniform numpy array
414+
a uniform numpy array.
415+
416+
Input parameters
417+
- sigtype (default='physical'): Specifies whether to mooth
418+
the e_p_signals field ('physical'), or the e_d_signals
419+
field ('digital').
415420
"""
421+
spf = self.sampsperframe[:]
422+
for ch in range(len(spf)):
423+
if spf[ch] is None:
424+
spf[ch] = 1
425+
426+
# Total samples per frame
427+
tspf = sum(spf)
428+
429+
if sigtype == 'physical':
430+
nsig = len(self.e_p_signals)
431+
siglen = int(len(self.e_p_signals[0])/spf[0])
432+
signal = np.zeros((siglen, nsig), dtype='float64')
433+
434+
for ch in range(nsig):
435+
if spf[ch] == 1:
436+
signal[:, ch] = self.e_p_signals[ch]
437+
else:
438+
for frame in range(spf[ch]):
439+
signal[:, ch] += self.e_p_signals[ch][frame::spf[ch]]
440+
signal[:, ch] = signal[:, ch] / spf[ch]
441+
442+
elif sigtype == 'digital':
443+
nsig = len(self.e_d_signals)
444+
siglen = int(len(self.e_d_signals[0])/spf[0])
445+
signal = np.zeros((siglen, nsig), dtype='int64')
446+
447+
for ch in range(nsig):
448+
if spf[ch] == 1:
449+
signal[:, ch] = self.e_d_signals[ch]
450+
else:
451+
for frame in range(spf[ch]):
452+
signal[:, ch] += self.e_d_signals[ch][frame::spf[ch]]
453+
signal[:, ch] = signal[:, ch] / spf[ch]
454+
else:
455+
raise ValueError("sigtype must be 'physical' or 'digital'")
416456

457+
return signal
417458

418459
#------------------- Reading Signals -------------------#
419460

0 commit comments

Comments
 (0)