code: def setUp(self):
      self.variables = ["intel", "diff", "grade"]
      self.card = [3, 2, 3]
      self.cardinalities = {"intel": 3, "diff": 2, "grade": 3}
      self.intel_tm = {
          0: {0: 0.1, 1: 0.25, 2: 0.65},
          1: {0: 0.5, 1: 0.3, 2: 0.2},
          2: {0: 0.3, 1: 0.3, 2: 0.4},
      }
      self.intel_tm_matrix = np.array(
          [[0.1, 0.25, 0.65], [0.5, 0.3, 0.2], [0.3, 0.3, 0.4]]
      )
      self.diff_tm = {0: {0: 0.3, 1: 0.7}, 1: {0: 0.75, 1: 0.25}}
      self.diff_tm_matrix = np.array([[0.3, 0.7], [0.75, 0.25]])
      self.grade_tm = {
          0: {0: 0.4, 1: 0.2, 2: 0.4},
          1: {0: 0.9, 1: 0.05, 2: 0.05},
          2: {0: 0.1, 1: 0.4, 2: 0.5},
      }
      self.grade_tm_matrix = [
          [0.4, 0.2, 0.4],
          [0.9, 0.05, 0.05],
          [0.1, 0.4, 0.5],
      ]
      self.start_state = [
          State("intel", 0),
          State("diff", 1),
          State("grade", 2),
      ]
      self.model = MC()
  
      self.sample = DataFrame(index=range(200), columns=["a", "b"])
      self.sample.a = [1] * 100 + [0] * 100
      self.sample.b = [0] * 100 + [1] * 100
  
imports: import sys
  import unittest
  import numpy
  from mock import call, patch
  from pandas import DataFrame
  from pgmpy.factors.discrete import State
  from pgmpy.models import MarkovChain
label_desc: Use image node_id 1 for calling the TestMarkovChain obj's underlying member method code with example usage: obj.setUp() without return types