Closed bemoody closed 2 months ago
Perhaps numpy.nan_to_num could be used instead.
Never mind: nan_to_num
is not any more intelligently implemented (might even be worse) than what wfdb-python is already doing.
To reproduce the issue:
import wfdb, numpy
r = wfdb.Record(fs=500, n_sig=1, units=['mV'], sig_name=['ECG'], p_signal=numpy.array([[0], [1], [numpy.nan]]), fmt=['16'], adc_gain=[1], baseline=[0])
r.adc()
or
import wfdb, numpy
r = wfdb.Record(fs=500, n_sig=1, units=['mV'], sig_name=['ECG'], e_p_signal=[numpy.array([0, 1, numpy.nan])], fmt=['16'], adc_gain=[1], baseline=[0])
r.adc(expanded=True)
This is fixed with pull #481.
The
adc
function reports a RuntimeWarning (at least in some cases) if the input array contains NaN values.I'm currently looking at this case (expanded=True, inplace=False), though it looks like the other cases are also broken in various similar ways:
The warning occurs here:
numpy is complaining, I assume, because you can't cast a NaN to an integer.
(Like many things to do with numpy and with this package), the above looks rather inefficient. Perhaps
numpy.nan_to_num
could be used instead.