code: def __init__(
      self,
      func,
      y0,
      rtol,
      atol,
      min_step=0,
      max_step=float("inf"),
      solver="LSODA",
      **unused_kwargs,
  ):
      unused_kwargs.pop("norm", None)
      unused_kwargs.pop("grid_points", None)
      unused_kwargs.pop("eps", None)
      _handle_unused_kwargs(self, unused_kwargs)
      del unused_kwargs
  
      self.dtype = y0.dtype
      self.device = y0.device
      self.shape = y0.shape
      self.y0 = y0.detach().cpu().numpy().reshape(-1)
      self.rtol = rtol
      self.atol = atol
      self.min_step = min_step
      self.max_step = max_step
      self.solver = solver
      self.func = convert_func_to_numpy(
          func, self.shape, self.device, self.dtype
      )
  
file_path: torchdiffeq/torchdiffeq/_impl/scipy_wrapper.py
imports: import abc
  import torch
  from scipy.integrate import solve_ivp
  from .misc import _handle_unused_kwargs
label_desc: Use image node_id 1 to create a new ScipyWrapperODESolver object  with example: obj = ScipyWrapperODESolver(func, y0, rtol, atol, min_step, max_step, solver)