code: def firfilter(b, x, axis=-1, zi=None):
      """
      Filter data along one-dimension with an FIR filter.
  
      Filter a data sequence, `x`, using a digital filter. This works for many
      fundamental data types (including Object type). Please note, cuSignal
      doesn't support IIR filters presently, and this implementation is optimized
      for large filtering operations (and inherently depends on fftconvolve)
  
      Parameters
      ----------
      b : array_like
          The numerator coefficient vector in a 1-D sequence.
      x : array_like
          An N-dimensional input array.
      axis : int, optional
          The axis of the input data array along which to apply the
          linear filter. The filter is applied to each subarray along
          this axis.  Default is -1.
      zi : array_like, optional
          Initial conditions for the filter delays.  It is a vector
          (or array of vectors for an N-dimensional input) of length
          ``max(len(a), len(b)) - 1``.  If `zi` is None or is not given then
          initial rest is assumed.  See `lfiltic` for more information.
  
      Returns
      -------
      y : array
          The output of the digital filter.
      zf : array, optional
          If `zi` is None, this is not returned, otherwise, `zf` holds the
          final filter delay values.
      """
  
      return cupyx.scipy.signal.lfilter(b, cupy.ones((1,)), x, axis, zi)
  
imports: import cupy
  import cupyx.scipy.linalg
  import cupyx.scipy.signal._signaltools
  from cupyx.scipy.signal._arraytools import axis_slice, axis_reverse, const_ext, even_ext, odd_ext
label_desc: Use image node_id 1 for calling a global function with example usage: firfilter(b, x, axis, zi) and returns: cupyx