code: def add_fixed_features(
      tunable_points: np.ndarray,
      d: int,
      fixed_features: Optional[Dict[int, float]],
      tunable_feature_indices: np.ndarray,
  ) -> np.ndarray:
      """Add fixed features to points in tunable space.
  
      Args:
          tunable_points: Points in tunable space.
          d: Dimension of parameter space.
          fixed_features: A map {feature_index: value} for features that
              should be fixed to a particular value during generation.
          tunable_feature_indices: Parameter indices (in d) which are tunable.
  
      Returns:
          points: Points in the full d-dimensional space, defined by bounds.
      """
      n = np.shape(tunable_points)[0]
      points = np.zeros((n, d))
      points[:, tunable_feature_indices] = tunable_points
      if fixed_features:
          fixed_feature_indices = np.array(list(fixed_features.keys()))
          fixed_values = np.tile(list(fixed_features.values()), (n, 1))
          points[:, fixed_feature_indices] = fixed_values
      return points
  
imports: from __future__ import annotations
  import itertools
  import warnings
  from typing import Callable, Dict, List, Optional, Protocol, Set, Tuple, Union
  import numpy
  import torch
  from ax.core.search_space import SearchSpaceDigest
  from ax.exceptions.core import SearchSpaceExhausted, UnsupportedError
  from ax.models.types import TConfig
  from ax.utils.common.typeutils import checked_cast
  from botorch.acquisition.risk_measures import RiskMeasureMCObjective
  from torch import Tensor
label_desc: Use image node_id 3 for calling a global function with example usage: add_fixed_features(tunable_points, d, fixed_features, tunable_feature_indices) and returns: points