code: def calculate_metric(Js, logJs, loglogJs, logloglogJs, loglogloglogJs, \
                       mapping):
      
  
      # How many dimensions in the parameter space?
      maxLen = len(mapping.keys())
  
      metric = numpy.matrix(numpy.zeros(shape=(maxLen,maxLen),dtype=float))
      unmax_metric = numpy.matrix(numpy.zeros(shape=(maxLen+1,maxLen+1),
                                                                    dtype=float))
  
      for i in range(16):
          for j in range(16):
              calculate_metric_comp(metric, unmax_metric, i, j, Js,
                                             logJs, loglogJs, logloglogJs,
                                             loglogloglogJs, mapping)
      return metric, unmax_metric
docs: This function will take the various integrals calculated by get_moments and
      convert this into a metric for the appropriate parameter space.
  
      Parameters
      -----------
      Js : Dictionary
          The list of (log^0 x) * x**(-i/3) integrals computed by get_moments()
          The index is Js[i]
      logJs : Dictionary
          The list of (log^1 x) * x**(-i/3) integrals computed by get_moments()
          The index is logJs[i]
      loglogJs : Dictionary
          The list of (log^2 x) * x**(-i/3) integrals computed by get_moments()
          The index is loglogJs[i]
      logloglogJs : Dictionary
          The list of (log^3 x) * x**(-i/3) integrals computed by get_moments()
          The index is logloglogJs[i]
      loglogloglogJs : Dictionary
          The list of (log^4 x) * x**(-i/3) integrals computed by get_moments()
          The index is loglogloglogJs[i]
      mapping : dictionary
          Used to identify which Lambda components are active in this parameter
          space and map these to entries in the metric matrix.
  
      Returns
      --------
      metric : numpy.matrix
          The resulting metric.