code: def test_basic(self):
      x = pt.vector("x")
      y = pt.exp(x) / pt.sum(pt.exp(x))
  
      new_x = pt.matrix("new_x")
      [new_y] = vectorize_graph([y], {x: new_x})
  
      # Check we can pass both a sequence or a single variable
      alt_new_y = vectorize_graph(y, {x: new_x})
      assert equal_computations([new_y], [alt_new_y])
  
      fn = function([new_x], new_y)
      test_new_y = np.array([[0, 1, 2], [2, 1, 0]]).astype(
          config.floatX
      )
      np.testing.assert_allclose(
          fn(test_new_y),
          scipy.special.softmax(test_new_y, axis=-1),
      )
  
imports: import numpy
  import pytest
  import scipy.special
  import pytensor.tensor
  from pytensor import config, function, shared
  from pytensor.graph.basic import equal_computations, graph_inputs
  from pytensor.graph.replace import clone_replace, graph_replace, vectorize_graph, vectorize_node
  from pytensor.tensor import dvector, fvector, vector
  from tests import unittest_tools
  from tests.graph.utils import MyOp, MyVariable, op_multiple_outputs
label_desc: Use image node_id 1 for calling the TestVectorizeGraph obj's underlying member method code with example usage: obj.test_basic() without return types