docstr: In v4 dimensions can be created without passing coordinate values.
  Their lengths are then automatically linked to the corresponding Tensor dimension.
docstr_tok: ["In","v4","dimensions","can","be","created","without","passing","coordinate","values",".","Their","lengths","are","then","automatically","linked","to","the","corresponding","Tensor","dimension","."]
code: def test_symbolic_coords(self):
      """
      In v4 dimensions can be created without passing coordinate values.
      Their lengths are then automatically linked to the corresponding Tensor dimension.
      """
      with pm.Model() as pmodel:
          # Dims created from MutableData are TensorVariables linked to the SharedVariable.shape
          intensity = pm.MutableData(
              "intensity", np.ones((2, 3)), dims=("row", "column")
          )
          assert "row" in pmodel.dim_lengths
          assert "column" in pmodel.dim_lengths
          assert isinstance(pmodel.dim_lengths["row"], TensorVariable)
          assert isinstance(
              pmodel.dim_lengths["column"], TensorVariable
          )
          assert pmodel.dim_lengths["row"].eval() == 2
          assert pmodel.dim_lengths["column"].eval() == 3
  
          intensity.set_value(floatX(np.ones((4, 5))))
          assert pmodel.dim_lengths["row"].eval() == 4
          assert pmodel.dim_lengths["column"].eval() == 5
  
imports: import io
  import itertools
  import re
  import cloudpickle
  import numpy
  import pytensor
  import pytensor.tensor
  import pytest
  from pytensor import shared
  from pytensor.tensor.variable import TensorVariable
  import pymc
  from pymc.data import is_minibatch
  from pymc.pytensorf import GeneratorOp, floatX
label_desc: Use image node_id 14 for calling the TestData obj's underlying member method code with example usage: obj.test_symbolic_coords() without return types