Evaluate a given command. The command is parsed and the output
        returned as a list of lines (strings).

        Raises a SCOCmdSyntaxError in case the command cannot be parsed.

        Parameters
        ----------
        cmd : strings
            Command string

        Returns
        -------
        list(stirng)
            Command output as list of strings (lines)

def eval(self, cmd):
        """Evaluate a given command. The command is parsed and the output
        returned as a list of lines (strings).

        Raises a SCOCmdSyntaxError in case the command cannot be parsed.

        Parameters
        ----------
        cmd : strings
            Command string

        Returns
        -------
        list(stirng)
            Command output as list of strings (lines)
        """
        tokens = cmd.upper().split()
        if len(tokens) == 2 and tokens[0] == 'LIST':
            if tokens[1] == 'EXPERIMENTS':
                return self.list_objects(self.sco.experiments_list())
            elif tokens[1] == 'IMAGES':
                return self.list_objects(self.sco.image_groups_list())
            elif tokens[1] == 'MODELS':
                return self.list_objects(self.sco.models_list())
            elif tokens[1] == 'SUBJECTS':
                return self.list_objects(self.sco.subjects_list())
            else:
                raise SCOCmdSyntaxError(cmd, 'unknown type: ' + cmd.split()[1])
        else:
            raise SCOCmdSyntaxError(cmd, 'unknown command')