split apart dependencies of vaccine peptide selection

* added unit tests for individual ranking components
* vaccine peptide sorting by four criteria (mutant epitope score, negative wildtype epitope score, number mutated residues, distance of mutation start the edge of vaccine peptide)
* print and write FASTA of vaccine peptides with a little mutation metadata
* print epitopes associated with each mutation
That line should probably be dropped, since we're not necessarily using a
hard cutoff for MHC binding. Really, this whole predictor should be
renamed, since everything we're doing and could do is an incomplete attempt
at predicting immunogenicity: MHC binding, thymic deletion, and potentially
proteasomal cleavage, MHC stability, &c. No one piece of the pipeline
should be designated as THE immunogenicity predictor.

On Sun, Nov 16, 2014 at 2:13 PM, Tavi Nathanson <notifications@github.com>
wrote:

> In immuno/mutation_report.py:
>
> >
> > -    if args.random_mhc:
> > -        scored_epitopes = \
> > -            mhc_random.generate_scored_epitopes(mutated_regions, alleles)
> > -    elif args.iedb_mhc:
> > -        mhc = IEDBMHCBinding(name = 'mhc', alleles=alleles)
> > -        scored_epitopes = mhc.predict(mutated_regions)
> > -    elif args.netmhc_cons:
> > -        predictor = ConsensusBindingPredictor(alleles)
> > -        scored_epitopes = predictor.predict(mutated_regions)
> > +    if args.skip_thymic_deletion:
> > +        scored_epitopes[THYMIC_DELETION_FIELD_NAME] = False
>
> Confusing to me me that skip_thymic_deletion also skips the part of
> immunogenicity.py that does this:
>
>     peptides_df["Immunogenic"] = \
>         ~peptides_df[THYMIC_DELETION_FIELD_NAME] & \
>         (peptides_df[IC50_FIELD_NAME] <= self.binding_threshold)
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/hammerlab/immuno/pull/164/files#r20412209>.
>