Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_mhcflurry():
predictor = MHCflurry(alleles=[DEFAULT_ALLELE])
binding_predictions = predictor.predict_subsequences(
protein_sequence_dict,
peptide_lengths=[9])
eq_(4, len(binding_predictions),
"Expected 4 binding predictions from %s" % (binding_predictions,))
prediction_scores = {
(x.peptide, x.allele): x.affinity for x in binding_predictions
}
predictor = Class1AffinityPredictor.load()
# test one prediction at a time to make sure there's no peptide/allele mixup
for (peptide, allele), affinity in prediction_scores.items():
prediction = predictor.predict([peptide], allele=allele)
assert len(prediction) == 1
# testing.assert_almost_equal(round(prediction[0], 2), round(affinity, 2))
testing.assert_almost_equal(prediction[0], affinity)
"""
# moving import here since the mhcflurry package imports
# Keras and its backend (either Theano or TF) which end up
# slowing down responsive for any CLI application using MHCtools
from mhcflurry import Class1AffinityPredictor
BasePredictor.__init__(
self,
alleles=alleles,
default_peptide_lengths=default_peptide_lengths,
min_peptide_length=8,
max_peptide_length=15)
if predictor:
self.predictor = predictor
elif models_path:
logging.info("Loading MHCflurry models from %s" % models_path)
self.predictor = Class1AffinityPredictor.load(models_path)
else:
self.predictor = Class1AffinityPredictor.load()
# relying on BasePredictor and MHCflurry to both normalize
# allele names the same way using mhcnames
for allele in self.alleles:
if allele not in self.predictor.supported_alleles:
raise UnsupportedAllele(allele)
# Keras and its backend (either Theano or TF) which end up
# slowing down responsive for any CLI application using MHCtools
from mhcflurry import Class1AffinityPredictor
BasePredictor.__init__(
self,
alleles=alleles,
default_peptide_lengths=default_peptide_lengths,
min_peptide_length=8,
max_peptide_length=15)
if predictor:
self.predictor = predictor
elif models_path:
logging.info("Loading MHCflurry models from %s" % models_path)
self.predictor = Class1AffinityPredictor.load(models_path)
else:
self.predictor = Class1AffinityPredictor.load()
# relying on BasePredictor and MHCflurry to both normalize
# allele names the same way using mhcnames
for allele in self.alleles:
if allele not in self.predictor.supported_alleles:
raise UnsupportedAllele(allele)
def predict_peptides(self, peptides):
"""
Predict MHC affinity for peptides.
"""
# importing locally to avoid slowing down CLI applications which
# don't use MHCflurry
from mhcflurry.encodable_sequences import EncodableSequences
binding_predictions = []
encodable_sequences = EncodableSequences.create(peptides)
for allele in self.alleles:
predictions_df = self.predictor.predict_to_dataframe(
encodable_sequences, allele=allele)
for (_, row) in predictions_df.iterrows():
binding_prediction = BindingPrediction(
allele=allele,
peptide=row.peptide,
affinity=row.prediction,
percentile_rank=(
row.prediction_percentile
if 'prediction_percentile' in row else nan),
prediction_method_name="mhcflurry")
binding_predictions.append(binding_prediction)
return BindingPredictionCollection(binding_predictions)