Skip to content

Commit 4b7b522

Browse files
committed
change ecg grids
1 parent 14b1fbc commit 4b7b522

File tree

2 files changed

+42
-28
lines changed

2 files changed

+42
-28
lines changed

wfdb/_headers.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -593,32 +593,38 @@ def __init__(self, description, measurement=None, default_display=None, signalna
593593
# Tuple pair (a, b). The plot displays range a, of unit b.
594594
#self.default_display = default_display
595595

596+
# names that are assigned to this signal type
596597
self.signalnames = signalnames
597598

599+
# Unit scales used for default display scales.
598600
unitscale = {
599601
'Voltage': ['pV', 'nV', 'uV', 'mV', 'V', 'kV'],
600602
'Temperature': ['C'],
601603
'Pressure': ['mmHg'],
602604
}
603605

604-
# All signal types
606+
# All signal types.
607+
# Used for:
608+
# - signal search
609+
# - default waveform display
605610
signaltypes = {
606-
'BP': SignalType('Blood Pressure', 'Pressure',None, []),
607-
'CO2': SignalType('Carbon Dioxide'),
608-
'CO': SignalType('Carbon Monoxide'),
609-
'ECG': SignalType('Electrocardiogram'),
610-
'EEG': SignalType('Electroencephalogram'),
611-
'EMG': SignalType('Electromyograph'),
612-
'EOG': SignalType('Electrooculograph'),
613-
'HR': SignalType('Heart Rate'),
614-
'MMG': SignalType('Magnetomyograph'),
615-
'O2': SignalType('Oxygen'),
616-
'PLETH': SignalType('Plethysmograph'),
617-
'RESP': SignalType('Respiration'),
618-
'SCG': SignalType('Seismocardiogram'),
619-
'STAT': SignalType('Status'), # small integers indicating status
620-
'ST': SignalType('ECG ST Segment'),
621-
'TEMP': SignalType('Temperature'),
611+
#'ANGLE': SignalType('Angle',None, ['angle, pitch, roll, yaw']),
612+
'BP': SignalType('Blood Pressure', 'Pressure',None, ['bp','abp','pap','cvp',]),
613+
'CO2': SignalType('Carbon Dioxide',None, ['co2']),
614+
'CO': SignalType('Carbon Monoxide',None, ['co']),
615+
'ECG': SignalType('Electrocardiogram',None, ['i','ii','iii','iv','v','avr']),
616+
'EEG': SignalType('Electroencephalogram',None, ['eeg']),
617+
'EMG': SignalType('Electromyograph',None, ['emg']),
618+
'EOG': SignalType('Electrooculograph',None, ['eog']),
619+
'HR': SignalType('Heart Rate',None, ['hr']),
620+
'MMG': SignalType('Magnetomyograph',None, ['mmg']),
621+
'O2': SignalType('Oxygen',None, ['o2','sp02']),
622+
'PLETH': SignalType('Plethysmograph',None, ['pleth']),
623+
'RESP': SignalType('Respiration',None, ['resp']),
624+
'SCG': SignalType('Seismocardiogram',None, ['scg']),
625+
'STAT': SignalType('Status',None, ['stat','status']), # small integers indicating status
626+
'ST': SignalType('ECG ST Segment',None, ['st']),
627+
'TEMP': SignalType('Temperature',None, ['temp']),
622628
}
623629

624630

wfdb/plots.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,21 @@ def plotrec(record=None, title = None, annotation = None, annch = [0], timeunits
7373

7474
# Show standard ecg grids if specified.
7575
if ecggrids:
76+
7677
major_ticks_x, minor_ticks_x, major_ticks_y, minor_ticks_y = calc_ecg_grids(
77-
record.p_signals[:,ch], record.units[ch], record.fs, t, timeunits)
78-
ax.set_xticks(major_ticks_x)
79-
ax.set_xticks(minor_ticks_x, minor=True)
80-
ax.set_yticks(major_ticks_y)
81-
ax.set_yticks(minor_ticks_y, minor=True)
82-
ax.grid(which='both')
78+
min(record.p_signals[:,ch]), max(record.p_signals[:,ch]), record.units[ch], record.fs, max(t), timeunits)
79+
80+
min_x, max_x = 0, np.max(t)
81+
min_y, max_y = np.min(minor_ticks_y), np.max(minor_ticks_y)
82+
83+
for tick in minor_ticks_x:
84+
ax.plot([tick, tick], [min_y, max_y], c='#ededed', marker='|')
85+
for tick in major_ticks_x:
86+
ax.plot([tick, tick], [min_y, max_y], c='#bababa', marker='|')
87+
for tick in minor_ticks_y:
88+
ax.plot([min_x, max_x], [tick, tick], c='#ededed', marker='_')
89+
for tick in major_ticks_y:
90+
ax.plot([min_x, max_x], [tick, tick], c='#bababa', marker='_')
8391

8492
plt.show(fig)
8593

@@ -88,7 +96,7 @@ def plotrec(record=None, title = None, annotation = None, annch = [0], timeunits
8896
return fig
8997

9098
# Calculate tick intervals for ecg grids
91-
def calc_ecg_grids(signal, units, fs, t, timeunits):
99+
def calc_ecg_grids(minsig, maxsig, units, fs, maxt, timeunits):
92100

93101
# 5mm 0.2s major grids, 0.04s minor grids
94102
# 0.5mV major grids, 0.125 minor grids
@@ -122,11 +130,11 @@ def calc_ecg_grids(signal, units, fs, t, timeunits):
122130
raise ValueError('Signal units must be uV, mV, or V to plot the ECG grid.')
123131

124132

125-
major_ticks_x = np.arange(0, upround(max(t), majorx), majorx)
126-
minor_ticks_x = np.arange(0, upround(max(t), majorx), minorx)
133+
major_ticks_x = np.arange(0, upround(maxt, majorx), majorx)
134+
minor_ticks_x = np.arange(0, upround(maxt, majorx), minorx)
127135

128-
major_ticks_y = np.arange(downround(min(signal), majory), upround(max(signal), majory), majory)
129-
minor_ticks_y = np.arange(downround(min(signal), majory), upround(max(signal), majory), minory)
136+
major_ticks_y = np.arange(downround(minsig, majory), upround(maxsig, majory), majory)
137+
minor_ticks_y = np.arange(downround(minsig, majory), upround(maxsig, majory), minory)
130138

131139
return (major_ticks_x, minor_ticks_x, major_ticks_y, minor_ticks_y)
132140

0 commit comments

Comments
 (0)