class_docstr: Metric representing (partial) learning curves of ML model training jobs.
docstr: Get partial result curves from backend ids.
  
  Args:
      ids: The ids of the backend runs for which to fetch the
          partial result curves.
      names: The names of the curves to fetch (for each of the runs).
          If omitted, fetch data for all available curves (this may be slow).
  
  Returns:
      A dictionary mapping the backend id to the partial result
      curves, each of which is represented as a mapping from
      the metric name to a pandas Series indexed by the progression
      (which will be mapped to the `map_key_info.key` of the metric class).
      E.g. if `curve_name=loss` and `map_key_info.key = training_rows`,
      then a Series should look like:
  
           training_rows (index) | loss
          -----------------------|------
                             100 | 0.5
                             200 | 0.2
code: def get_curves_from_ids(
      self,
      ids: Iterable[Union[int, str]],
      names: Optional[Set[str]] = None,
  ) -> Dict[Union[int, str], Dict[str, pd.Series]]:
      """Get partial result curves from backend ids.
  
      Args:
          ids: The ids of the backend runs for which to fetch the
              partial result curves.
          names: The names of the curves to fetch (for each of the runs).
              If omitted, fetch data for all available curves (this may be slow).
  
      Returns:
          A dictionary mapping the backend id to the partial result
          curves, each of which is represented as a mapping from
          the metric name to a pandas Series indexed by the progression
          (which will be mapped to the `map_key_info.key` of the metric class).
          E.g. if `curve_name=loss` and `map_key_info.key = training_rows`,
          then a Series should look like:
  
               training_rows (index) | loss
              -----------------------|------
                                 100 | 0.5
                                 200 | 0.2
      """
      ...
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from logging import Logger
  from typing import Any, Dict, Iterable, Optional, Set, Union
  import numpy
  import pandas
  from ax.core.base_trial import BaseTrial
  from ax.core.batch_trial import BatchTrial
  from ax.core.experiment import Experiment
  from ax.core.map_data import MapData, MapKeyInfo
  from ax.core.map_metric import MapMetric
  from ax.core.metric import Metric, MetricFetchE, MetricFetchResult
  from ax.core.trial import Trial
  from ax.early_stopping.utils import align_partial_results
  from ax.exceptions.core import UnsupportedError
  from ax.utils.common.logger import get_logger
  from ax.utils.common.result import Err, Ok
  from ax.utils.common.typeutils import checked_cast
label_desc: Use image node_id 4 for calling the AbstractCurveMetric obj's underlying member method code with example usage: obj.get_curves_from_ids(ids, names) without return types