Source code for epitopepredict.tests

#!/usr/bin/env python

"""
    MHC prediction unit tests
    Created September 2015
    Copyright (C) Damien Farrell
"""

from __future__ import absolute_import, print_function
import sys, os
import pandas as pd
import unittest
from . import base, analysis, sequtils, peptutils, mhclearn
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord

path = os.path.dirname(os.path.abspath(__file__))
testdir = os.path.join(path, 'testing')
datadir = os.path.join(path, 'mhcdata')

[docs]class PredictorTests(unittest.TestCase): """Basic tests for predictor"""
[docs] def setUp(self): self.m2alleles = base.get_preset_alleles('mhc2_supertypes') self.peptides = peptutils.create_random_sequences(50) self.genbankfile = os.path.join(testdir, 'zaire-ebolavirus.gb') self.fastafile = os.path.join(testdir, 'zaire-ebolavirus.faa') self.df = sequtils.genbank_to_dataframe(self.genbankfile, cds=True) self.testdir = testdir if not os.path.exists(self.testdir): os.mkdir(self.testdir) return
[docs] def test_peptide_utils(self): s = peptutils.create_random_sequences(100) print (s) seq = 'MTDDPGSGFTTVWNAVVSELNGDPKVDDGP' f = peptutils.get_fragments(seq=seq) print (f) return
[docs] def test_classes(self): cl = base.get_predictor_classes() for c in cl: P=base.get_predictor(c) print (P)
[docs] def test_cutoffs(self): cl = base.get_predictor_classes() for c in cl: P=base.get_predictor(c) P.get_allele_cutoffs()
[docs] def test_basicmhc1(self): P=base.get_predictor('basicmhc1') print (P) allele='HLA-A*01:01' data = mhclearn.get_training_set(allele) peps = list(data.peptide) P.predict_peptides(peps[:50],alleles=allele) return
[docs] def test_tepitope(self): """Tepitope test""" df = self.df P = base.get_predictor('tepitope') alleles = ["HLA-DRB1*0101", "HLA-DRB1*0305"] print (P) P.predict_proteins(df, length=11, alleles=alleles, path=self.testdir) P.get_binders(data=P.data) return
[docs] def test_netmhcpan(self): """netMHCpan test""" #requires netmHCpan is installed df = self.df P = base.get_predictor('netmhcpan') print (P) seqs = peptutils.create_random_sequences(10) P.predict_peptides(seqs, alleles=['HLA-A*02:02'], threads=1) print (len(P.data)) return
'''def test_netmhciipan(self): """netMHCIIpan test""" #requires netmHCIIpan is installed df = self.df P = base.get_predictor('netmhciipan') alleles = ["HLA-DRB1*0101"] names = ['ZEBOVgp1'] print (P) P.predictProteins(df, length=11, alleles=alleles, names=names, path=self.testdir) P.getBinders(data=P.data) return''' '''def test_iedbmhc1(self): """IEDB MHCI test""" df = self.df P = base.get_predictor('iedbmhc1') base.iedbmhc1path = '/local/iedbmhc1' print (P) if not os.path.exists(base.iedbmhc1path): print ('IEDB MHC-I not found') return alleles = ["HLA-A*02:02", "HLA-A*01:01"] for m in P.methods: if m == 'comblib_sidney2008': continue print (P.name, m) P.predict_proteins(df, length=8, alleles=alleles, method=m) b = P.get_binders(data=P.data, cutoff=5, cutoff_method='rank') print ('%s binders' %len(b)) return'''
[docs] def test_peptide_prediction(self): m2alleles = base.get_preset_alleles('mhc2_supertypes') P = base.get_predictor('tepitope') x = P.predict_peptides(self.peptides, alleles=self.m2alleles) return
[docs] def test_multiproc(self): P = base.get_predictor('tepitope') x = P.predict_peptides(self.peptides, alleles=self.m2alleles, threads=2) return
[docs] def test_fasta(self): """Test fasta predictions""" df = sequtils.fasta_to_dataframe(self.fastafile) alleles = ["HLA-DRB1*0101"] P = base.get_predictor('tepitope') P.predict_proteins(df, length=11, alleles=alleles, path=self.testdir) return
[docs] def test_load(self): """Test re-loading predictions""" infile = os.path.join(self.testdir, 'ZEBOVgp1.csv') P = base.get_predictor('iedbmhc1') P.load(infile) return
[docs] def test_features(self): """Test genbank feature handling""" df = sequtils.fasta_to_dataframe(self.fastafile) name = 'ZEBOVgp1' sequtils.dataframe_to_fasta(df) sequtils.check_tags(df) return
[docs] def test_mhcflurry(self): """Test mhcflurry predictor""" P = base.get_predictor('mhcflurry') print (P) seqs = peptutils.create_random_sequences(10) P.predict_peptides(seqs, alleles=['HLA-A*02:02'], threads=1) print (len(P.data)) return
[docs] def test_iedbmhc1(self): """iedbmhc1 test""" df = self.df P = base.get_predictor('iedbmhc1') if P.check_install() == 0: return seqs = peptutils.create_random_sequences(10, length=11) P.predict_peptides(seqs, alleles=['HLA-A*02:02'], threads=1) print (len(P.data)) return
[docs] def quit(self): self.app.quit()
[docs]def run(): unittest.main()
if __name__ == '__main__': unittest.main()