예제 #1
0
    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
예제 #2
0
    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