This is a generator function to parse and yield the various groups of parameters from
    CONFIG_FILE one at a time.
    Input arguments:
        config_file - a file handle to an open file stream that is reading the
                      input config file to the pipeline.
    Return (Yielded) Values:
        group_name - The name of the group that is being yielded
        group_params - The parameters for the group GROUPNAME

def tool_specific_param_generator(job, config_file):
    """
    This is a generator function to parse and yield the various groups of parameters from
    CONFIG_FILE one at a time.
    Input arguments:
        config_file - a file handle to an open file stream that is reading the
                      input config file to the pipeline.
    Return (Yielded) Values:
        group_name - The name of the group that is being yielded
        group_params - The parameters for the group GROUPNAME
    """
    work_dir = job.fileStore.getLocalTempDir()
    # Initialize the return values.  group_name == None will be used to bypass the first #-prefixed
    # group in the file
    group_params = defaultdict()
    group_name = None
    for line in config_file:
        line = line.strip()
        if line.startswith('##') or len(line) == 0:
            continue
        if line.startswith('#'):
            # Skip first #-prefixed string
            if group_name is None:
                group_name = line.lstrip('#').strip()
                continue
            else:
                yield group_name, group_params
                group_params = defaultdict(int)
                group_name = line.lstrip('#').strip()
                continue
        else:
            line = line.strip().split()
            if len(line) != 2:
                raise ParameterError('Found a problem in the config file while attempting to ' +
                                     'parse %s in group %s' % (line[0], group_name) + '.  Every ' +
                                     'parameter takes ONLY one argument.')
            # If a file is of the type file, vcf, tar or fasta, it needs to be downloaded from S3 if
            # reqd, then written to job store.
            if [x for x in ['file', 'vcf', 'tar', 'fasta', 'fai', 'idx', 'dict'] if x in line[0]]:
                group_params[line[0]] = job.addChildJobFn(get_pipeline_inputs, line[0],
                                                          line[1]).rv()
            else:
                group_params[line[0]] = line[1]
    yield group_name, group_params