예제 #1
0
def main(args_list=None):
    if not args_list:
        args_list = sys.argv[1:]
    args = parse_args(parser, args_list)
    print(args)
    if args.hits_txt and len(args.hits_txt) > 0:
        dataset = Dataset.from_peptides_text_files(args.hits_txt)
        dataset = dataset.assemble_contigs()
    else:
        dataset = Dataset.from_csv(args.dataset_csv)

    dataframes = []

    for allele, allele_dataset in dataset.groupby_allele():
        print("-- %s" % allele)
        df = allele_dataset.to_dataframe()
        netmhciipan = NetMHCIIpan([allele])

        # pad peptides with alanines in case they're shorter than 9mer
        peptides = ensure_peptide_lengths(df.peptide)
        n_peptides = len(peptides)
        binding_predictions = netmhciipan.predict_peptides(peptides)
        ic50_pred = np.array([x.affinity for x in binding_predictions])
        percentile_rank_pred = np.array(
            [x.percentile_rank for x in binding_predictions])
        assert len(ic50_pred) == n_peptides
        assert len(percentile_rank_pred) == n_peptides
        df["netmhciipan_ic50"] = ic50_pred
        df["netmhciipan_percentile_rank"] = percentile_rank_pred
        dataframes.append(df)
        combined_df = pd.concat(dataframes)
        combined_df.to_csv(args.output_csv, index=False)
예제 #2
0
def test_class2_8mer_fails():
    ii_pan_predictor = NetMHCIIpan(alleles=["HLA-DRB1*01:01"])
    with assert_raises(ValueError):
        ii_pan_predictor.predict_peptides(["A" * 8])
예제 #3
0
def test_class2_9mer_success():
    ii_pan_predictor = NetMHCIIpan(alleles=["HLA-DRB1*01:01"])
    predictions = ii_pan_predictor.predict_peptides(["A" * 9])
    eq_(len(predictions), 1)