code: def make_eps(asset_array, num_samples, seed, correlation):
      
      assets_by_taxo = group_array(asset_array, 'taxonomy')
      eps = numpy.zeros((len(asset_array), num_samples), numpy.float32)
      for taxonomy, assets in assets_by_taxo.items():
          shape = (len(assets), num_samples)
          logging.info('Building %s epsilons for taxonomy %s', shape, taxonomy)
          zeros = numpy.zeros(shape)
          epsilons = scientific.make_epsilons(zeros, seed, correlation)
          for asset, epsrow in zip(assets, epsilons):
              eps[asset['ordinal']] = epsrow
      return eps
docs: :param asset_array: an array of assets
      :param int num_samples: the number of ruptures
      :param int seed: a random seed
      :param float correlation: the correlation coefficient
      :returns: epsilons matrix of shape (num_assets, num_samples)