code: def ebi_expression_atlas(accession: str, *, filter_boring: bool = False):
      
      experiment_dir = settings.datasetdir / accession
      dataset_path = experiment_dir / "{}.h5ad".format(accession)
      try:
          adata = anndata.read(dataset_path)
          if filter_boring:
              adata.obs = _filter_boring(adata.obs)
          return adata
      except OSError:
          # Dataset couldn't be read for whatever reason
          pass
  
      download_experiment(accession)
  
      print("Downloaded {} to {}".format(accession, experiment_dir.absolute()))
  
      with ZipFile(experiment_dir / "expression_archive.zip", "r") as f:
          adata = read_expression_from_archive(f)
      obs = pd.read_csv(
          experiment_dir / "experimental_design.tsv", sep="\t", index_col=0
      )
  
      adata.obs[obs.columns] = obs
      adata.write(dataset_path, compression="gzip")  # To be kind to disk space
  
      if filter_boring:
          adata.obs = _filter_boring(adata.obs)
  
      return adata
docs: Load a dataset from the `EBI Single Cell Expression Atlas <https://www.ebi.ac.uk/gxa/sc/experiments>`__.
  
      Downloaded datasets are saved in directory specified by `sc.settings.datasetdir`.
  
      Params
      ------
      accession
          Dataset accession. Like ``E-GEOD-98816`` or ``E-MTAB-4888``. This can
          be found in the url on the datasets page. For example:
          ``https://www.ebi.ac.uk/gxa/sc/experiments/E-GEOD-98816/results/tsne``
      filter_boring
          Whether boring labels in `.obs` should be automatically removed.
  
      Example
      -------
      >>> adata = sc.datasets.ebi_expression_atlas("E-MTAB-4888")