class_docstr: A class that wraps :class:`pyfftw.FFTW`, providing a slicer on the input
  stage during calls to :meth:`~pyfftw.builders._utils._FFTWWrapper.__call__`.
class_docstr_tok: ["A","class","that","wraps",":","class",":","`","pyfftw.FFTW","`",",","providing","a","slicer","on","the","input","stage","during","calls","to",":","meth",":","`","~pyfftw.builders._utils._FFTWWrapper.__call__","`","."]
docstr: Wrap :meth:`pyfftw.FFTW.__call__` by firstly slicing the
  passed-in input array and then copying it into a sliced version
  of the internal array. These slicers are set at instantiation.
  
  When input array is not ``None``, this method always results in
  a copy. Consequently, the alignment and dtype are maintained in
  the internal array.
  
  ``output_array`` and ``normalise_idft`` are passed through to
  :meth:`pyfftw.FFTW.__call__` untouched.
docstr_tok: ["Wrap",":","meth",":","`","pyfftw.FFTW.__call__","`","by","firstly","slicing","the","passed-in","input","array","and","then","copying","it","into","a","sliced","version","of","the","internal","array",".","These","slicers","are","set","at","instantiation",".","When","input","array","is","not","``","None","``",",","this","method","always","results","in","a","copy",".","Consequently",",","the","alignment","and","dtype","are","maintained","in","the","internal","array",".","``","output_array","``","and","``","normalise_idft","``","are","passed","through","to",":","meth",":","`","pyfftw.FFTW.__call__","`","untouched","."]
code: def __call__(
      self,
      input_array=None,
      output_array=None,
      normalise_idft=None,
      ortho=None,
  ):
      """Wrap :meth:`pyfftw.FFTW.__call__` by firstly slicing the
      passed-in input array and then copying it into a sliced version
      of the internal array. These slicers are set at instantiation.
  
      When input array is not ``None``, this method always results in
      a copy. Consequently, the alignment and dtype are maintained in
      the internal array.
  
      ``output_array`` and ``normalise_idft`` are passed through to
      :meth:`pyfftw.FFTW.__call__` untouched.
      """
  
      if input_array is not None:
          # Do the update here (which is a copy, so it's alignment
          # safe etc).
  
          internal_input_array = self.input_array
          input_array = numpy.asanyarray(input_array)
  
          if self._input_destroyed:
              internal_input_array[:] = 0
  
          sliced_internal = internal_input_array[
              self._FFTW_array_slicer
          ]
          sliced_input = input_array[self._input_array_slicer]
  
          if sliced_internal.shape != sliced_input.shape:
              raise ValueError(
                  "Invalid input shape: "
                  "The new input array should be the same shape "
                  "as the input array used to instantiate the "
                  "object."
              )
  
          sliced_internal[:] = sliced_input
  
      if normalise_idft is None:
          normalise_idft = self._normalise_idft
  
      if ortho is None:
          ortho = self._ortho
  
      output = super(_FFTWWrapper, self).__call__(
          input_array=None,
          output_array=output_array,
          normalise_idft=normalise_idft,
          ortho=ortho,
      )
  
      return output
  
file_path: py-fftw/pyfftw/builders/_utils.py
imports: import multiprocessing
  import pyfftw
  import numpy
  import warnings
  from ..None import _threading_type
  from ..None import config
label_desc: Use image node_id 2 for calling the _FFTWWrapper obj's underlying member method code with example usage: obj.__call__(input_array, output_array, normalise_idft, ortho) and returns: output