code: def test_TransformObservationFeatures(self) -> None:
      obsfs_t = self.t.transform_observation_features(
          deepcopy([obs.features for obs in self.observations])
      )
      for obsf in obsfs_t:
          assert obsf.parameters["METRIC_TASK"] == "TARGET"
  
      obsfs_t = self.t.untransform_observation_features(obsfs_t)
      for obsf in obsfs_t:
          assert "METRIC_TASK" not in obsf.parameters
  
      with self.assertRaises(ValueError):
          self.t.untransform_observation_features(
              deepcopy(
                  [
                      obs.features
                      for obs in self.expected_new_observations
                  ]
              )
          )
  
file_path: Ax/ax/modelbridge/transforms/tests/test_metrics_as_task_transform.py
imports: from copy import deepcopy
  import numpy
  from ax.core.observation import Observation, ObservationData, ObservationFeatures
  from ax.core.parameter import ChoiceParameter
  from ax.modelbridge.transforms.metrics_as_task import MetricsAsTask
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_search_space_for_range_values
label_desc: Use image node_id 4 for calling the MetricsAsTaskTransformTest obj's underlying member method code with example usage: obj.test_TransformObservationFeatures() without return types