code: def paired_environment_phenotype_grid_circles(environment,
                                                phenotypes, **kwargs):
      
      denom, palette = get_kwargs(environment, kwargs)
  
      plot_world(environment, palette=environment.resource_palette, denom=denom)
      plot_phens_circles(phenotypes, palette=environment.task_palette)
  
      plt.savefig("phenotype_niches_circles"+environment.name, dpi=1000)
  
      return plt.gcf()
docs: Plots the given environment (EnvironmentFile object) and phenotypes
      (2d array of binary strings) onto the same image and saves
      the image based on the name of the environment file. The environment file
      will be represented by coloring square cells, while the phenotypes are
      represented as concentric circles indicating the set of tasks the organism
      at that location can perform.
  
      By default, color is determined using the palettes in the EnvironmentFile
      object passed as the first parameter. The easiest way to change color
      palettes is to assign new palettes to environment.task_palette and
      environment.resource_palette before calling this function. If either the
      environment or phenotypes grids contain integers greater than 1, you should
      pass a `denom` keyword argument indicating how to normalize them. Using
      differnet denoms for the environment and phenotypes is not currently
      supported (if you need to, you should probably just divide everything by
      the appropraite denoms before passing them to this funciton).
  
      Inputs:
            environment - an EnvironmentFile object indicatng the distribution
                           of resources and the appropriate palettes to use.
            phenotypes  - a 2d array of binary strings representing
                          the placement of phenotypes across the environment
  
      kwargs:
            denom - an integer indicating how to normalize numbers in the
                    environment and phenotype grids if neccesary.