def plug_in(self, out=sys.stdout, hadoop=False, filter_id=None, subtree=True): """Generates a basic javascript implementation of local predictions `out` is file descriptor to write the javascript code. """ # fill the camelcase variable names with the JS_KEYWORDS restrictions objective_field = self.tree.fields[self.tree.objective_id] camelcase = to_camel_js(unidecode(objective_field['name']), False) objective_field['CamelCase'] = camelcase for field in [(key, val) for key, val in sort_fields(self.tree.fields)]: field_obj = self.tree.fields[field[0]] field_obj['camelCase'] = to_camel_js(unidecode(field_obj['name'])) body, term_analysis_predicates, item_analysis_predicates = \ self.tree.plug_in_body() terms_body = "" items_body = "" if term_analysis_predicates: terms_body = self.js_term_analysis_body(term_analysis_predicates) if item_analysis_predicates: items_body = self.js_item_analysis_body(item_analysis_predicates) output = self.js_pre_body() output += terms_body + items_body + body output += u"%sreturn null;\n}\n" % INDENT if not PY3: output = output.encode("utf8") out.write(output) out.flush()
def js_signature(self, input_map=False): """Returns a the javascript signature for a prediction method. """ objective_field = self.tree.fields[self.tree.objective_id] if not 'CamelCase' in objective_field: camelcase = to_camel_js(unidecode(objective_field['name']), False) objective_field['CamelCase'] = camelcase output = u"function predict%s(" % objective_field['CamelCase'] args = [] if len(self.tree.fields) > MAX_ARGS_LENGTH or input_map: args.append("data") else: for field in [(key, val) for key, val in sort_fields(self.tree.fields)]: field_obj = self.tree.fields[field[0]] if not 'camelCase' in field_obj: field_obj['camelCase'] = to_camel_js( \ unidecode(field_obj['name'])) if field[0] != self.tree.objective_id: args.append(u"%s" % field_obj['camelCase']) args_string = u", ".join(args) output += args_string + u")" return output
def plug_in(self, out=sys.stdout, filter_id=None, subtree=True): """Writes an R function that implements the model. """ # fill the dotted variable names with the R_KEYWORDS restrictions objective_field = self.tree.fields[self.tree.objective_id] camelcase = to_camel_js(objective_field['name'], False) objective_field['CamelCase'] = camelcase default = "NA" args = [] for field in [(key, val) for key, val in sort_fields(self.tree.fields)]: field_obj = self.tree.fields[field[0]] field_obj['dotted'] = dot(field_obj['name']) args.append("%s=%s" % (field_obj['dotted'], default)) body, term_analysis_predicates, item_analysis_predicates = \ self.tree.plug_in_body() terms_body = "" items_body = "" if term_analysis_predicates: terms_body = self.r_term_analysis_body(term_analysis_predicates) if item_analysis_predicates: items_body = self.r_item_analysis_body(item_analysis_predicates) predictor_definition = (u"predict%s <- function" % camelcase) depth = len(predictor_definition) + 1 predictor = u"%s(%s){\n" % (predictor_definition, (",\n" + " " * depth).join(args)) join_str = "\n#" docstring = join_str.join(self.docstring().split("\n")) predictor_doc = (u"# " + docstring + u"\n" + u"#\n") output = predictor_doc + predictor output += terms_body + items_body + body output += u"%sreturn(NA)\n}\n" % INDENT if not PY3: output = output.encode("utf8") out.write(output) out.flush()