docstr: Metric is computed by evaluating a deterministic function, implemented in f.
  
  Args:
      name: Name of the metric.
      f: A callable accepting a dictionary from parameter names to
          values and returning a float metric value.
      noise_sd: Scale of normal noise added to the function result. If
          None, interpret the function as noisy with unknown noise level.
      lower_is_better: Flag for metrics which should be minimized.
  
  Note: Since this metric setup uses a generic callable it cannot be serialized
  and will not play well with storage.
docstr_tok: ["Metric","is","computed","by","evaluating","a","deterministic","function",",","implemented","in","f.","Args",":","name",":","Name","of","the","metric",".","f",":","A","callable","accepting","a","dictionary","from","parameter","names","to","values","and","returning","a","float","metric","value",".","noise_sd",":","Scale","of","normal","noise","added","to","the","function","result",".","If","None",",","interpret","the","function","as","noisy","with","unknown","noise","level",".","lower_is_better",":","Flag","for","metrics","which","should","be","minimized",".","Note",":","Since","this","metric","setup","uses","a","generic","callable","it","can","not","be","serialized","and","will","not","play","well","with","storage","."]
code: def __init__(
      self,
      name: str,
      f: Callable[[TParameterization], float],
      noise_sd: Optional[float] = 0.0,
      lower_is_better: Optional[bool] = None,
  ) -> None:
      """
      Metric is computed by evaluating a deterministic function, implemented in f.
  
      Args:
          name: Name of the metric.
          f: A callable accepting a dictionary from parameter names to
              values and returning a float metric value.
          noise_sd: Scale of normal noise added to the function result. If
              None, interpret the function as noisy with unknown noise level.
          lower_is_better: Flag for metrics which should be minimized.
  
      Note: Since this metric setup uses a generic callable it cannot be serialized
      and will not play well with storage.
      """
      self._f = f
      self.noise_sd = noise_sd
      Metric.__init__(self, name=name, lower_is_better=lower_is_better)
  
imports: from __future__ import annotations
  from typing import Any, Callable, List, Optional
  import numpy
  import pandas
  from ax.core.base_trial import BaseTrial
  from ax.core.data import Data
  from ax.core.metric import Metric, MetricFetchE, MetricFetchResult
  from ax.core.types import TParameterization
  from ax.utils.common.result import Err, Ok
label_desc: Use image node_id 1 to create a new GenericNoisyFunctionMetric object from inherited base classes: NoisyFunctionMetric with example: obj = GenericNoisyFunctionMetric(name, f, noise_sd, lower_is_better)