code: def phi_progress(pst,logger=None,filename=None,**kwargs):
      
      if logger is None:
          logger = Logger('Default_Loggger.log', echo=False)
      logger.log("plot phi_progress")
  
      iobj_file = pst.filename.replace(".pst",".iobj")
      if not os.path.exists(iobj_file):
          logger.lraise("couldn't find iobj file {0}".format(iobj_file))
      df = pd.read_csv(iobj_file)
      if "ax" in kwargs:
          ax = kwargs["ax"]
      else:
          fig = plt.figure(figsize=figsize)
          ax = plt.subplot(1,1,1)
      ax.plot(df.model_runs_completed,df.total_phi,marker='.')
      ax.set_xlabel("model runs")
      ax.set_ylabel("$\phi$")
      ax.grid()
      if filename is not None:
          plt.savefig(filename)
      logger.log("plot phi_progress")
      return ax
docs: make plot of phi vs number of model runs - requires
      available pestpp .iobj file
          Parameters
          ----------
          pst : pyemu.Pst
          logger : Logger
              if None, a generic one is created.  Default is None
          filename : str
              PDF filename to save figures to.  If None, figures are returned.  Default is None
          kwargs : dict
              optional keyword args to pass to plotting functions