class_docstr: Have phi stft as callable w/o using a lambda that does not pickle.
class_docstr_tok: ["Have","phi","stft","as","callable","w\/o","using","a","lambda","that","does","not","pickle","."]
code: def __init__(self, wsize, tstep, n_coefs, n_times):
      self.wsize = np.atleast_1d(wsize)
      self.tstep = np.atleast_1d(tstep)
      self.n_coefs = np.atleast_1d(n_coefs)
      self.n_dicts = len(tstep)
      self.n_freqs = wsize // 2 + 1
      self.n_steps = self.n_coefs // self.n_freqs
      self.n_times = n_times
      # ravel freq+time here
      self.ops = list()
      for ws, ts in zip(self.wsize, self.tstep):
          self.ops.append(
              stft(np.eye(n_times), ws, ts, verbose=False).reshape(
                  n_times, -1
              )
          )
  
imports: import functools
  from math import sqrt
  import numpy
  from ..time_frequency._stft import istft, stft, stft_norm1, stft_norm2
  from ..utils import _check_option, _get_blas_funcs, _validate_type, logger, sum_squared, verbose, warn
  from .mxne_debiasing import compute_bias
label_desc: Use image node_id 1 to create a new _Phi object  with example: obj = _Phi(wsize, tstep, n_coefs, n_times)