code: def space_to_folders(self, current_result_list, current_query, param_space,
                           runs, current_directory):
          
          # Base case: we iterate over the runs and copy files in the final
          # directory.
          if not param_space:
              for run, r in enumerate(current_result_list[:runs]):
                  files = self.db.get_result_files(r)
                  new_dir = os.path.join(current_directory, "run=%s" % run)
                  os.makedirs(new_dir, exist_ok=True)
                  for filename, filepath in files.items():
                      shutil.copyfile(filepath, os.path.join(new_dir, filename))
              return
  
          [key, value] = list(param_space.items())[0]
          # Iterate over dictionary values
          for v in value:
              next_query = deepcopy(current_query)
              temp_query = deepcopy(current_query)
  
              # For each list, recur 'fixing' that dimension.
              next_query[key] = v  # Update query
  
              # Create folder
              folder_name = ("%s=%s" % (key, v)).replace('/', '_')
              new_dir = os.path.join(current_directory, folder_name)
              os.makedirs(new_dir, exist_ok=True)
  
              next_param_space = deepcopy(param_space)
              del(next_param_space[key])
  
              temp_query[key] = v
              temp_result_list = [r for r in current_result_list if
                                  self.satisfies_query(r, temp_query)]
  
              self.space_to_folders(temp_result_list, next_query,
                                    next_param_space, runs, new_dir)
docs: Convert a parameter space specification to a directory tree with a
          nested structure.