code: def find_measurable_dimshuffles(
      fgraph, node
  ) -> Optional[List[MeasurableDimShuffle]]:
      r"""Finds `Dimshuffle`\s for which a `logprob` can be computed."""
  
      rv_map_feature: Optional[PreserveRVMappings] = getattr(
          fgraph, "preserve_rv_mappings", None
      )
  
      if rv_map_feature is None:
          return None  # pragma: no cover
  
      if not rv_map_feature.request_measurable(node.inputs):
          return None
  
      base_var = node.inputs[0]
  
      # We can only apply this rewrite directly to `RandomVariable`s, as those are
      # the only `Op`s for which we always know the support axis. Other measurable
      # variables can have arbitrary support axes (e.g., if they contain separate
      # `MeasurableDimShuffle`s). Most measurable variables with `DimShuffle`s
      # should still be supported as long as the `DimShuffle`s can be merged/
      # lifted towards the base RandomVariable.
      # TODO: If we include the support axis as meta information in each
      # intermediate MeasurableVariable, we can lift this restriction.
      if not isinstance(base_var.owner.op, RandomVariable):
          return None  # pragma: no cover
  
      measurable_dimshuffle = MeasurableDimShuffle(
          node.op.input_broadcastable, node.op.new_order
      )(base_var)
  
      return [measurable_dimshuffle]
  
imports: from typing import List, Optional, Union
  import pytensor
  from pytensor import tensor
  from pytensor.graph.op import compute_test_value
  from pytensor.graph.rewriting.basic import node_rewriter
  from pytensor.tensor.basic import Alloc, Join, MakeVector
  from pytensor.tensor.elemwise import DimShuffle
  from pytensor.tensor.random.op import RandomVariable
  from pytensor.tensor.random.rewriting import local_dimshuffle_rv_lift, local_rv_size_lift
  from pymc.logprob.abstract import MeasurableVariable, _logprob, _logprob_helper
  from pymc.logprob.rewriting import PreserveRVMappings, assume_measured_ir_outputs, measurable_ir_rewrites_db
  from pymc.logprob.utils import check_potential_measurability, replace_rvs_by_values
  from pymc.pytensorf import constant_fold
label_desc: Use image node_id 6 for calling a global function with example usage: find_measurable_dimshuffles(fgraph, node) and returns: list, None, None, None