class_docstr: TCAV object: runs TCAV for one target and a set of concepts.
  The static methods (get_direction_dir_sign, compute_tcav_score,
  get_directional_dir) invole getting directional derivatives and calculating
  TCAV scores. These are static because they might be useful independently,
  for instance, if you are developing a new interpretability method using
  CAVs.
  See https://arxiv.org/abs/1711.11279
docstr: Get tuples of parameters to run TCAV with.
  
  TCAV builds random concept to conduct statistical significance testing
  againts the concept. To do this, we build many concept vectors, and many
  random vectors. This function prepares runs by expanding parameters.
  
  Args:
    num_random_exp: number of random experiments to run to compare.
    random_concepts: A list of names of random concepts for the random experiments
                 to draw from. Optional, if not provided, the names will be
                 random500_{i} for i in num_random_exp.
docstr_tok: ["Get","tuples","of","parameters","to","run","TCAV","with",".","TCAV","builds","random","concept","to","conduct","statistical","significance","testing","againts","the","concept",".","To","do","this",",","we","build","many","concept","vectors",",","and","many","random","vectors",".","This","function","prepares","runs","by","expanding","parameters",".","Args",":","num_random_exp",":","number","of","random","experiments","to","run","to","compare",".","random_concepts",":","A","list","of","names","of","random","concepts","for","the","random","experiments","to","draw","from",".","Optional",",","if","not","provided",",","the","names","will","be","random500_","{","i","}","for","i","in","num_random_exp","."]
code: def _process_what_to_run_expand(
      self, num_random_exp=100, random_concepts=None
  ):
      """Get tuples of parameters to run TCAV with.
  
      TCAV builds random concept to conduct statistical significance testing
      againts the concept. To do this, we build many concept vectors, and many
      random vectors. This function prepares runs by expanding parameters.
  
      Args:
        num_random_exp: number of random experiments to run to compare.
        random_concepts: A list of names of random concepts for the random experiments
                     to draw from. Optional, if not provided, the names will be
                     random500_{i} for i in num_random_exp.
      """
  
      target_concept_pairs = [(self.target, self.concepts)]
  
      # take away 1 random experiment if the random counterpart already in random concepts
      # take away 1 random experiment if computing Relative TCAV
      (
          all_concepts_concepts,
          pairs_to_run_concepts,
      ) = utils.process_what_to_run_expand(
          utils.process_what_to_run_concepts(target_concept_pairs),
          self.random_counterpart,
          num_random_exp=num_random_exp
          - (
              1
              if random_concepts
              and self.random_counterpart in random_concepts
              else 0
          )
          - (1 if self.relative_tcav else 0),
          random_concepts=random_concepts,
      )
  
      pairs_to_run_randoms = []
      all_concepts_randoms = []
  
      # ith random concept
      def get_random_concept(i):
          return (
              random_concepts[i]
              if random_concepts
              else "random500_{}".format(i)
          )
  
      if self.random_counterpart is None:
          # TODO random500_1 vs random500_0 is the same as 1 - (random500_0 vs random500_1)
          for i in range(num_random_exp):
              (
                  all_concepts_randoms_tmp,
                  pairs_to_run_randoms_tmp,
              ) = utils.process_what_to_run_expand(
                  utils.process_what_to_run_randoms(
                      target_concept_pairs, get_random_concept(i)
                  ),
                  num_random_exp=num_random_exp - 1,
                  random_concepts=random_concepts,
              )
  
              pairs_to_run_randoms.extend(pairs_to_run_randoms_tmp)
              all_concepts_randoms.extend(all_concepts_randoms_tmp)
  
      else:
          # run only random_counterpart as the positve set for random experiments
          (
              all_concepts_randoms_tmp,
              pairs_to_run_randoms_tmp,
          ) = utils.process_what_to_run_expand(
              utils.process_what_to_run_randoms(
                  target_concept_pairs, self.random_counterpart
              ),
              self.random_counterpart,
              num_random_exp=num_random_exp
              - (
                  1
                  if random_concepts
                  and self.random_counterpart in random_concepts
                  else 0
              ),
              random_concepts=random_concepts,
          )
  
          pairs_to_run_randoms.extend(pairs_to_run_randoms_tmp)
          all_concepts_randoms.extend(all_concepts_randoms_tmp)
  
      self.all_concepts = list(
          set(all_concepts_concepts + all_concepts_randoms)
      )
      self.pairs_to_test = (
          pairs_to_run_concepts
          if self.relative_tcav
          else pairs_to_run_concepts + pairs_to_run_randoms
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from multiprocessing import dummy
  from six.moves import range
  from tcav.cav import CAV
  from tcav.cav import get_or_train_cav
  from tcav import run_params
  from tcav import utils
  import numpy
  import time
  import tensorflow
label_desc: Use image node_id 7 for calling the TCAV obj's underlying member method code with example usage: obj._process_what_to_run_expand(num_random_exp, random_concepts) and returns: unknown