From 5737ed7a1bbdbbd662aa085951255bc9dae8868e Mon Sep 17 00:00:00 2001
From: Tim O'Donnell <timodonnell@gmail.com>
Date: Sun, 21 May 2017 21:33:39 -0400
Subject: [PATCH] fixes

---
 .../class1_affinity_predictor.py              | 20 +++++++++++--------
 test/test_class1_binding_predictor_A0205.py   | 12 ++++++++++-
 2 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/mhcflurry/class1_affinity_prediction/class1_affinity_predictor.py b/mhcflurry/class1_affinity_prediction/class1_affinity_predictor.py
index 42305241..82ea3f70 100644
--- a/mhcflurry/class1_affinity_prediction/class1_affinity_predictor.py
+++ b/mhcflurry/class1_affinity_prediction/class1_affinity_predictor.py
@@ -256,7 +256,7 @@ class Class1AffinityPredictor(object):
             'peptide': peptides,
             'allele': alleles,
         })
-        df["normalized_allele"] = input_df.allele.map(
+        df["normalized_allele"] = df.allele.map(
             mhcnames.normalize_allele_name)
 
         if self.class1_pan_allele_models:
@@ -283,13 +283,17 @@ class Class1AffinityPredictor(object):
         df_predictions = df[
             [c for c in df.columns if c.startswith("model_")]
         ]
-        log_means = numpy.log(df_predictions).mean(1)
+        logs = numpy.log(df_predictions)
+        log_means = logs.mean(1)
         df["prediction"] = numpy.exp(log_means)
-        df["prediction_low"] = numpy.exp(log_means.quantile(q=.05, axis=1))
-        df["prediction_high"] = numpy.exp(log_means.quantile(q=.05, axis=1))
+        df["prediction_low"] = numpy.exp(logs.quantile(0.05, axis=1))
+        df["prediction_high"] = numpy.exp(logs.quantile(0.95, axis=1))
 
+        del df["normalized_allele"]
         if include_individual_model_predictions:
-            return df
-        return df[
-            [c for c in df.columns if c not in df_predictions.columns]
-        ]
\ No newline at end of file
+            columns = sorted(df.columns, key=lambda c: c.startswith('model_'))
+        else:
+            columns = [
+                c for c in df.columns if c not in df_predictions.columns
+            ]
+        return df[columns]
\ No newline at end of file
diff --git a/test/test_class1_binding_predictor_A0205.py b/test/test_class1_binding_predictor_A0205.py
index fc486469..fcdcd274 100644
--- a/test/test_class1_binding_predictor_A0205.py
+++ b/test/test_class1_binding_predictor_A0205.py
@@ -49,7 +49,7 @@ def test_class1_neural_network_A0205_training_accuracy():
 def test_class1_neural_network_A0205_training_accuracy():
     predictor = Class1AffinityPredictor()
     predictor.fit_allele_specific_predictors(
-        n_models=1,
+        n_models=2,
         architecture_hyperparameters=hyperparameters,
         allele=allele,
         peptides=df.peptide.values,
@@ -64,3 +64,13 @@ def test_class1_neural_network_A0205_training_accuracy():
         rtol=0.2,
         atol=0.2)
 
+    ic50_pred_df = predictor.predict_to_dataframe(
+        df.peptide.values, allele=allele)
+    print(ic50_pred_df)
+
+    ic50_pred_df2 = predictor.predict_to_dataframe(
+        df.peptide.values,
+        allele=allele,
+        include_individual_model_predictions=True)
+    print(ic50_pred_df2)
+
-- 
GitLab