code: def test_MTExperimentFlow(self) -> None:
      self.assertTrue(self.experiment.supports_trial_type("type1"))
      self.assertTrue(self.experiment.supports_trial_type("type2"))
      self.assertFalse(self.experiment.supports_trial_type(None))
  
      n = 10
      arms = get_branin_arms(n=n, seed=0)
  
      b1 = self.experiment.new_batch_trial()
      b1.add_arms_and_weights(arms=arms)
      self.assertEqual(b1.trial_type, "type1")
      b1.run()
      self.assertEqual(b1.run_metadata["dummy_metadata"], "dummy1")
  
      self.experiment.update_runner(
          "type2", SyntheticRunner(dummy_metadata="dummy3")
      )
      b2 = self.experiment.new_batch_trial()
      b2.trial_type = "type2"
      b2.add_arms_and_weights(arms=arms)
      self.assertEqual(b2.trial_type, "type2")
      b2.run()
      self.assertEqual(b2.run_metadata["dummy_metadata"], "dummy3")
  
      df = self.experiment.fetch_data().df
      for _, row in df.iterrows():
          # Make sure proper metric present for each batch only
          self.assertEqual(
              row["metric_name"],
              "m1" if row["trial_index"] == 0 else "m2",
          )
  
      arm_0_slice = df.loc[df["arm_name"] == "0_0"]
      self.assertNotEqual(
          float(arm_0_slice[df["trial_index"] == 0]["mean"]),
          float(arm_0_slice[df["trial_index"] == 1]["mean"]),
      )
      self.assertEqual(len(df), 2 * n)
      self.assertEqual(self.experiment.default_trials, {0})
      # Set 2 metrics to be equal
      self.experiment.update_tracking_metric(
          BraninMetric("m2", ["x1", "x2"]), trial_type="type2"
      )
      df = self.experiment.fetch_data().df
      arm_0_slice = df.loc[df["arm_name"] == "0_0"]
      self.assertAlmostEqual(
          float(arm_0_slice[df["trial_index"] == 0]["mean"]),
          float(arm_0_slice[df["trial_index"] == 1]["mean"]),
          places=10,
      )
  
file_path: Ax/ax/core/tests/test_multi_type_experiment.py
imports: from ax.metrics.branin import BraninMetric
  from ax.runners.synthetic import SyntheticRunner
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_branin_arms, get_multi_type_experiment
label_desc: Use image node_id 2 for calling the MultiTypeExperimentTest obj's underlying member method code with example usage: obj.test_MTExperimentFlow() without return types