def ilp_rsd(input_dict): rsd = RSD() settings = input_dict.get('settings',None) pos = input_dict.get('pos', None) neg = input_dict.get('neg', None) examples = input_dict.get('examples', None) b = input_dict['b'] subgroups = input_dict['subgroups'] == 'true' # Parse settings if settings: rsd.settingsAsFacts(settings) # Parse settings provided as parameters (these have higher priority) for setting, def_val in RSD.ESSENTIAL_PARAMS.items(): rsd.set(setting, input_dict.get(setting, def_val)) # Check for illegal predicates for pl_script in [b, pos, neg, examples]: check_input(pl_script) # Run rsd features, arff, rules = rsd.induce(b, examples=examples, pos=pos, neg=neg, cn2sd=subgroups) return {'features' : features, 'arff' : arff, 'rules' : rules}