code: def nasa_indicator(
      points,
      transform,
      joint,
      hparams,
      need_transformation=True,
      noise=None,
  ):
      """Compute the NASA indicator values for query points.
  
      Args:
        points: tf.Tensor, [batch, n_points, n_dims] or [batch_size, n_parts,
          n_points, n_dims], query points.
        transform: tf.Tensor, [batch, n_parts, transform_dims], transformations.
        joint: tf.Tensor, [batch_size, n_parts, n_dims], joint locations.
        hparams: hyperparameters as absl.flags.FLAGS.
        need_transformation: bool, true if points are transformed before fed to MLP.
        noise: tf.Tensor, [batch_size, n_parts, n_points, n_noise, n_dims], gaussian
          noise used to blur the boundary during tracking. Set to None if it is not
          needed.
  
      Returns:
        point_indicators: tf.Tensor, [batch, n_points, 1].
        point_perpart_indicators: tf.Tensor, [batch, n_parts, n_points, 1].
      """
      n_dims = 3
      cerb_dims = int(
          np.ceil(1.0 * hparams.total_dim / hparams.n_parts)
      )
      shared_decoder = hparams.shared_decoder
      n_parts = hparams.n_parts
      use_joint = hparams.use_joint
      n_parts = hparams.n_parts
      batch_size = points.shape[0]
  
      if len(points.shape) < 4:
          points = tf.tile(
              tf.expand_dims(points, axis=1), [1, n_parts, 1, 1]
          )
      if need_transformation:
          points = transform_points(points, transform)
      if noise is not None:
          points = tf.expand_dims(points, axis=3) + noise
          points = tf.reshape(points, [batch_size, n_parts, -1, n_dims])
      n_points = tf.shape(points)[2]
  
      if use_joint:
          root = tf.tile(
              tf.expand_dims(joint[:, :1], axis=1), [1, n_parts, 1, 1]
          )
          root = transform_points(root, transform)
          if not hparams.projection:
              trans_feature = tf.tile(
                  tf.reshape(root, [batch_size, 1, 1, -1]),
                  [1, n_parts, n_points, 1],
              )
          else:
              reduced_root = reduce_dimension(
                  tf.reshape(root, [batch_size, -1]), n_parts
              )
              reduced_root = tf.reshape(
                  reduced_root, [batch_size, n_parts, 1, -1]
              )
              trans_feature = tf.tile(reduced_root, [1, 1, n_points, 1])
          points = tf.concat([points, trans_feature], axis=-1)
  
      return nasa_mlp(
          points, hparams, dims=cerb_dims, shared=shared_decoder
      )
  
file_path: graphics/tensorflow_graphics/projects/nasa/lib/model_utils.py
imports: import numpy
  import tensorflow.compat.v1
label_desc: Use image node_id 5 for calling a global function with example usage: nasa_indicator(points, transform, joint, hparams, need_transformation, noise) and returns: nasa_mlp