code: def get_experiment_info(self):
          
          dependencies = set()
          sources = set()
          for ing, _ in self.traverse_ingredients():
              dependencies |= ing.dependencies
              sources |= ing.sources
  
          for dep in dependencies:
              dep.fill_missing_version()
  
          mainfile = (self.mainfile.to_json(self.base_dir)[0]
                      if self.mainfile else None)
  
          def name_lower(d):
              return d.name.lower()
  
          return dict(
              name=self.path,
              base_dir=self.base_dir,
              sources=[s.to_json(self.base_dir) for s in sorted(sources)],
              dependencies=[d.to_json()
                            for d in sorted(dependencies, key=name_lower)],
              repositories=collect_repositories(sources),
              mainfile=mainfile
          )
docs: Get a dictionary with information about this experiment.
  
          Contains:
            * *name*: the name
            * *sources*: a list of sources (filename, md5)
            * *dependencies*: a list of package dependencies (name, version)
  
          :return: experiment information
          :rtype: dict