Delete an existing experiment and/or projectname

        Parameters
        ----------
        projectname: str
            The name for which the data shall be removed. If True, the
            project will be determined by the experiment. If not None, all
            experiments for the given project will be removed.
        complete: bool
            If set, delete not only the experiments and config files, but also
            all the project files
        yes: bool
            If True/set, do not ask for confirmation
        all_projects: bool
            If True/set, all projects are removed

        Warnings
        --------
        This will remove the entire folder and all the related informations in
        the configurations!

def remove(self, projectname=None, complete=False,
               yes=False, all_projects=False, **kwargs):
        """
        Delete an existing experiment and/or projectname

        Parameters
        ----------
        projectname: str
            The name for which the data shall be removed. If True, the
            project will be determined by the experiment. If not None, all
            experiments for the given project will be removed.
        complete: bool
            If set, delete not only the experiments and config files, but also
            all the project files
        yes: bool
            If True/set, do not ask for confirmation
        all_projects: bool
            If True/set, all projects are removed

        Warnings
        --------
        This will remove the entire folder and all the related informations in
        the configurations!
        """
        self.app_main(**kwargs)
        if projectname in self.config.projects:
            self.projectname = projectname
        all_experiments = self.config.experiments
        projects_info = self.config.projects
        if all_projects:
            experiments = list(all_experiments.keys())
            projects = list(projects_info.keys())
        elif projectname is not None:
            experiments = all_experiments.project_map[projectname]
            projects = [self.projectname]
        else:
            experiments = [self.experiment]
            projects = [self.projectname]
        if not yes:
            if complete:
                msg = ('Are you sure to remove all experiments (%s) and '
                       'directories for the project instances %s?' % (
                           ', '.join(experiments), ', '.join(projects)))
            else:
                msg = ('Are you sure to remove the experiments %s' % (
                    ', '.join(experiments)))
            answer = ''
            while answer.lower() not in ['n', 'no', 'y', 'yes']:
                answer = input(msg + '[y/n] ')
            if answer.lower() in ['n', 'no']:
                return
        for exp in experiments:
            if not self.is_archived(exp):
                self.logger.debug("Removing experiment %s", exp)
                try:
                    exp_dict = self.fix_paths(all_experiments[exp])
                except KeyError:  # experiment has been removed already
                    pass
                else:
                    if osp.exists(exp_dict['expdir']):
                        shutil.rmtree(exp_dict['expdir'])
                    self.config.remove_experiment(exp)

        if complete:
            for project in projects:
                self.logger.debug("Removing project %s", project)
                projectdir = projects_info.pop(project)['root']
                if osp.exists(projectdir):
                    shutil.rmtree(projectdir)