docs: def close(self, figs=True, data=False, ds=False, remove_only=False):
          """
          Close this project instance
  
          Parameters
          ----------
          figs: bool
              Close the figures
          data: bool
              delete the arrays from the (main) project
          ds: bool
              If True, close the dataset as well
          remove_only: bool
              If True and `figs` is True, the figures are not closed but the
              plotters are removed"""
          import matplotlib.pyplot as plt
          close_ds = ds
          for arr in self[:]:
              if figs and arr.psy.plotter is not None:
                  if remove_only:
                      for fmto in arr.psy.plotter._fmtos:
                          try:
                              fmto.remove()
                          except Exception:
                              pass
                  else:
                      plt.close(arr.psy.plotter.ax.get_figure().number)
                  arr.psy.plotter = None
              if data:
                  self.remove(arr)
                  if not self.is_main:
                      try:
                          self.main.remove(arr)
                      except ValueError:  # arr not in list
                          pass
              if close_ds:
                  if isinstance(arr, InteractiveList):
                      for ds in [val['ds'] for val in six.itervalues(
                                 arr._get_ds_descriptions(
                                      arr.array_info(ds_description=['ds'],
                                                     standardize_dims=False)))]:
                          ds.close()
                  else:
                      arr.psy.base.close()
          if self.is_main and self is gcp(True) and data:
              scp(None)
          elif self.is_main and self.is_cmp:
              self.oncpchange.emit(self)
          elif self.main.is_cmp:
              self.oncpchange.emit(self.main)