def run_job(self, request): """ Used by the web application.""" features = [] count = len(request.feature) - 1 while count >= 0: features.append(str(request.feature[count])) count -= 1 prepped_features = Pairwise.prepare_features(request.cohort_id, features) outputs = Pairwise.run_pairwise(prepped_features) results = PairwiseResults(result_vectors=[], filter_messages=[]) logging.info(results) for row_label, row in outputs.items(): if type(row) is dict: results.result_vectors.append( PairwiseResultVector( feature_1=row["feature_A"], feature_2=row["feature_B"], comparison_type=row["comparison_type"], correlation_coefficient=row["correlation_coefficient"], n=int(row["n"]), _logp=float(row["_logp"]), n_A=int(row["n_A"]), p_A=float(row["p_A"]), n_B=int(row["n_B"]), p_B=float(row["p_B"]), exclusion_rules=row["exclusion_rules"], ) ) elif type(row) is unicode: results.filter_messages.append(PairwiseFilterMessage(filter_message=row[0])) return results
def get_pairwise_result(self, feature_array): # Format the feature vectors for pairwise input_vectors = Pairwise.prepare_feature_vector(feature_array) outputs = None results = None try: outputs = Pairwise.run_pairwise(input_vectors) if outputs is not None: results = PairwiseResults(result_vectors=[], filter_messages=[]) for row_label, row in outputs.items(): if type(row) is dict: results.result_vectors.append(PairwiseResultVector(feature_1=row['feature_A'], feature_2=row['feature_B'], comparison_type=row['comparison_type'], correlation_coefficient=row['correlation_coefficient'], n=int(row['n']), _logp=float(row['_logp']), n_A=int(row['n_A']), p_A=float(row['p_A']), n_B=int(row['n_B']), p_B=float(row['p_B']), exclusion_rules=row['exclusion_rules'])) elif type(row) is unicode: results.filter_messages.append(PairwiseFilterMessage(filter_message=row[0])) except Exception as e: outputs = None results = None logger.error(traceback.format_exc()) return results