<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def predict_netmhcii_binding(job, peptfile, allele, univ_options, netmhciipan_options):
 """ Predict binding for each peptide in `peptfile` to `allele` using netMHCIIpan. :param toil.fileStore.FileID peptfile: The input peptide fasta :param str allele: Allele to predict binding against :param dict univ_options: Dict of universal options used by almost all tools :param dict netmhciipan_options: Options specific to netmhciipan binding prediction :return: tuple of fsID for file containing the predictions and the predictor used (netMHCIIpan) :rtype: tuple(toil.fileStore.FileID, str) """

    work_dir = os.getcwd()
    input_files = {
        'peptfile.faa': peptfile}
    input_files = get_files_from_filestore(job, input_files, work_dir, docker=True)
    peptides = read_peptide_file(os.path.join(os.getcwd(), 'peptfile.faa'))
    if not peptides:
        return job.fileStore.writeGlobalFile(job.fileStore.getLocalTempFile()), None
    # netMHCIIpan accepts differently formatted alleles so we need to modify the input alleles
    if allele.startswith('HLA-DQA') or allele.startswith('HLA-DPA'):
        allele = re.sub(r'[*:]', '', allele)
        allele = re.sub(r'/', '-', allele)
    elif allele.startswith('HLA-DRB'):
        allele = re.sub(r':', '', allele)
        allele = re.sub(r'\*', '_', allele)
        allele = allele.lstrip('HLA-')
    else:
        raise RuntimeError('Unknown allele seen')
    parameters = ['-a', allele,
                  '-xls', '1',
                  '-xlsfile', 'predictions.tsv',
                  '-f', input_files['peptfile.faa']]
    # netMHC writes a lot of useless stuff to sys.stdout so we open /dev/null and dump output there.
    with open(os.devnull, 'w') as output_catcher:
        docker_call(tool='netmhciipan', tool_parameters=parameters, work_dir=work_dir,
                    dockerhub=univ_options['dockerhub'], outfile=output_catcher,
                    tool_version=netmhciipan_options['version'])
    output_file = job.fileStore.writeGlobalFile('/'.join([work_dir, 'predictions.tsv']))
    job.fileStore.logToMaster('Ran netmhciipan on %s successfully' % allele)
    return output_file, 'netMHCIIpan'