code: def jax_funcify_sparse_dot(op, node, **kwargs):
      for input in node.inputs:
          if isinstance(
              input.type, SparseTensorType
          ) and not isinstance(input, Constant):
              raise NotImplementedError(
                  "JAX sparse dot only implemented for constant sparse inputs"
              )
  
      if isinstance(node.outputs[0].type, SparseTensorType):
          raise NotImplementedError(
              "JAX sparse dot only implemented for dense outputs"
          )
  
      @jsp.sparsify
      def sparse_dot(x, y):
          out = x @ y
          if isinstance(out, jsp.BCOO):
              out = out.todense()
          return out
  
      return sparse_dot
  
file_path: pytensor/pytensor/link/jax/dispatch/sparse.py
imports: import jax.experimental.sparse
  from scipy.sparse import spmatrix
  from pytensor.graph.basic import Constant
  from pytensor.link.jax.dispatch import jax_funcify, jax_typify
  from pytensor.sparse.basic import Dot, StructuredDot
  from pytensor.sparse.type import SparseTensorType
label_desc: Use image node_id 2 for calling a global function with example usage: jax_funcify_sparse_dot(op, node) and returns: sparse_dot, out