diff --git a/downloads-generation/data_mass_spec_benchmark/run_predictors.py b/downloads-generation/data_mass_spec_benchmark/run_predictors.py
index 14916c45cfd6304d6820500bd4993f9fae03b96b..5bdd02db8a4d2d3486f613e5b9dafb6c2bc6f820 100644
--- a/downloads-generation/data_mass_spec_benchmark/run_predictors.py
+++ b/downloads-generation/data_mass_spec_benchmark/run_predictors.py
@@ -394,8 +394,31 @@ def do_predictions_mhctools(work_item_dicts, constant_data=None):
                 program_name="netMHCpan-4.0",
                 mode="elution_score")
         elif predictor_name == "mixmhcpred":
-            predictor = mhctools.MixMHCpred(
-                alleles=alleles)
+            # Empirically determine supported alleles.
+            mixmhcpred_usable_alleles = []
+            unusable_alleles = []
+            for allele in alleles:
+                predictor = mhctools.MixMHCpred(alleles=[allele])
+
+                # We use inf not nan to indicate unsupported alleles since
+                # we use nan to indicate incomplete results that still need
+                # to execute.
+                empty_results = pandas.Series(index=peptides,
+                    dtype=numpy.float16)
+                empty_results[:] = numpy.inf
+                try:
+                    predictor.predict_peptides_dataframe(["PEPTIDESS"])
+                    mixmhcpred_usable_alleles.append(allele)
+                except ValueError:
+                    unusable_alleles.append(allele)
+                    for col in cols:
+                        result["%s %s" % (allele, col)] = empty_results.values
+
+            print("MixMHCpred usable alleles: ", *mixmhcpred_usable_alleles)
+            print("MixMHCpred unusable alleles: ", *unusable_alleles)
+            predictor = mhctools.MixMHCpred(alleles=alleles)
+            assert mixmhcpred_usable_alleles, mixmhcpred_usable_alleles
+            alleles = mixmhcpred_usable_alleles
         else:
             raise ValueError("Unsupported", predictor_name)