          avgs = np.pad(avgs, (pad, datapoints - (avgs.shape[0] + pad)), constant_values=(np.nan,))
          logger.debug("Calculated Average: shape: %s", avgs.shape)
          return avgs
  
      def _calc_smoothed(self, data):
          """ Smooth the data.
  
          Parameters
          ----------
          data: :class:`numpy.ndarray`
 
</s> remove         avgs = np.cumsum(data, dtype="float64")
 </s> add         avgs = np.cumsum(np.nan_to_num(data), dtype="float64") </s> remove         return _ExponentialMovingAverage(data, self._args["smooth_amount"])()
 </s> add         retval = _ExponentialMovingAverage(data, self._args["smooth_amount"])()
        logger.debug("Calculated Smoothed data: shape: %s", retval.shape)
        return retval </s> remove     def _calc_trend(cls, data):
 </s> add     def _calc_trend(cls, data: np.ndarray) -> np.ndarray: </s> remove     def _calc_avg(self, data):
 </s> add     def _calc_avg(self, data: np.ndarray) -> np.ndarray: </s> remove         logger.debug("Calculating Average")
 </s> add         logger.debug("Calculating Average. Data points: %s", len(data))
    def _calc_smoothed(self, data: np.ndarray) -> np.ndarray:
          avgs = np.pad(avgs, (pad, datapoints - (avgs.shape[0] + pad)), constant_values=(np.nan,))
          logger.debug("Calculated Average: shape: %s", avgs.shape)
          return avgs
  
    def _calc_smoothed(self, data: np.ndarray) -> np.ndarray:
          """ Smooth the data.
  
          Parameters
          ----------
          data: :class:`numpy.ndarray`
keep keep keep keep replace keep keep keep keep keep
 Bugfixes:
  - Stats graph - Handle NaNs in data
  - logger - de-elevate matplotlib font messages 
lib/gui/analysis/stats.py