code: def test_pyro_convert():
      data = Tensor(torch.randn(2, 2), OrderedDict([("time", Bint[2])]))
  
      bias_dist = dist_to_funsor(random_mvn((), 2))
  
      trans_mat = torch.randn(3, 3)
      trans_mvn = random_mvn((), 3)
      trans = matrix_and_mvn_to_funsor(
          trans_mat, trans_mvn, (), "prev", "curr"
      )
  
      obs_mat = torch.randn(3, 2)
      obs_mvn = random_mvn((), 2)
      obs = matrix_and_mvn_to_funsor(
          obs_mat, obs_mvn, (), "state", "obs"
      )
  
      log_prob = 0
      bias = Variable("bias", Reals[2])
      log_prob += bias_dist(value=bias)
  
      state_0 = Variable("state_0", Reals[3])
      log_prob += obs(state=state_0, obs=bias + data(time=0))
  
      state_1 = Variable("state_1", Reals[3])
      log_prob += trans(prev=state_0, curr=state_1)
      log_prob += obs(state=state_1, obs=bias + data(time=1))
  
      log_prob = log_prob.reduce(ops.logaddexp)
      assert isinstance(log_prob, Tensor), log_prob.pretty()
  
file_path: funsor/test/examples/test_sensor_fusion.py
imports: from collections import OrderedDict
  import pytest
  import torch
  import funsor.ops
  import funsor.torch.distributions
  from funsor.cnf import Contraction
  from funsor.domains import Bint, Reals
  from funsor.gaussian import Gaussian
  from funsor.pyro.convert import dist_to_funsor, matrix_and_mvn_to_funsor
  from funsor.tensor import Tensor
  from funsor.terms import Subs, Variable
  from funsor.testing import random_mvn
label_desc: Use image node_id 2 for calling a global function with example usage: test_pyro_convert() without return types