def update_settings(self, settings):
        """Update the settings

        If a derived class has an ALLOWED_SETTINGS dict, we check here that
        incoming settings from the web app are allowed, and set the child
        properties as appropriate.

        """

        def error_string(setting, setting_val):
            return ('{val} is not an acceptable value for '
                    'parameter {param} for visualization'
                    '{vis}.').format(val=setting_val,
                                     param=setting,
                                     vis=self.__class__.__name__)

        for setting in settings:
            if settings[setting] in self.ALLOWED_SETTINGS[setting]:
                # if the setting is allowed, set the attribute but remove
                # invalid variable characters
                #
                # see:
                #
                # https://stackoverflow.com/questions/3303312/how-do-i-convert-a-string-to-a-valid-variable-name-in-python
                setattr(self, '_' + re.sub('\W|^(?=\d)', '_', setting).lower(),
                        settings[setting])
            else:
                raise ValueError(error_string(settings[setting], setting))
Update the settings

        If a derived class has an ALLOWED_SETTINGS dict, we check here that
        incoming settings from the web app are allowed, and set the child
        properties as appropriate.