def validate(self, args_dict):
        schema_dict = self.CONFIGURATION.get('input_schema', None)
        if schema_dict is None:
            return

        jsonSchema = JSONSchema(schema_dict)
        schema_property_names = jsonSchema.get_default_section_names()
        json_dict = {}
        for property_name in schema_property_names:
            if property_name in args_dict:
                json_dict[property_name] = args_dict[property_name]

        jsonSchema.validate(json_dict)
    def __init__(self, input=None):
        """Create InputParser object."""
        self._sections = OrderedDict()
        self._original_sections = OrderedDict()
        self._filename = None
        self._inputdict = None
        if input is not None:
            if isinstance(input, dict):
                self._inputdict = input
            elif isinstance(input, str):
                self._filename = input
            else:
                raise AquaChemistryError("Invalid parser input type.")

        self._section_order = [
            JSONSchema.NAME, JSONSchema.PROBLEM, InputParser.DRIVER,
            InputParser._UNKNOWN, InputParser.OPERATOR, JSONSchema.ALGORITHM
        ]
        for pluggable_type in local_pluggables_types():
            if pluggable_type != JSONSchema.ALGORITHM:
                self._section_order.append(pluggable_type)

        self._section_order.append(JSONSchema.BACKEND)

        jsonfile = os.path.join(os.path.dirname(__file__),
                                'substitutions.json')
        with open(jsonfile) as json_file:
            self._substitutions = json.load(json_file)

        self._json_schema = JSONSchema(
            os.path.join(os.path.dirname(__file__), 'input_schema.json'))

        # get some properties from algorithms schema
        self._json_schema.copy_section_from_aqua_schema(JSONSchema.ALGORITHM)
        self._json_schema.copy_section_from_aqua_schema(JSONSchema.BACKEND)
        self._json_schema.copy_section_from_aqua_schema(JSONSchema.PROBLEM)
        self._json_schema.schema['properties'][JSONSchema.PROBLEM][
            'properties'][InputParser.AUTO_SUBSTITUTIONS] = {
                "type": "boolean",
                "default": "true"
            }
        self._json_schema.populate_problem_names()

        self._json_schema.commit_changes()