Beispiel #1
0
def build_allplots_def(pconfig, page_num):
    """Write the configuration file for Allplots that it's expecting on stdin

    Allplots used to check for 'Allplots.def' in the dcurrent
    directory but we modified it to be able to read this configuration
    on stdin, this writes in that format.

    """
    parsing.first_page_title(pconfig)
    parsing.following_page_title(pconfig)
    lines = []
    wl = lines.append

    # NB: the "Plot Title" is disregarded, but that line
    # should also contain the total number of bases
    wl("%s %d" % ("FOOBAR", pconfig['length']))

    # Nucleotide(s)_plotted (e.g.: `% CG`)
    wl(''.join(pconfig['nucleotides']))
    # First-Page title
    wl(pconfig['first_page_title'].format(page_num))
    # Title of following pages
    wl(pconfig['following_page_title'].format(page_num))
    # write the rest of the filenames that allplots might read from
    for k in FILE_KEYS:
        # allplots doesn't like blank lines so make sure there is at
        # least a dummy value on every line.
        wl(pconfig.get(k, "None"))
    return '\n'.join(lines) + '\n'
Beispiel #2
0
def allplots(config, executor):
    after = []
    try:
        after.extend(extract.plan(config, executor))
    except:
        pass
    after.extend(nprofile.plan(config, executor))
    after.extend(acgt_gamma.plan(config, executor))

    parsing.length(config)
    parsing.first_page_title(config)
    parsing.following_page_title(config)
    parsing.endBase(config)

    h = Hasher()
    # Strip down to the config for this task only
    rconfig = reducedict(config, KEYS + FILE_KEYS)

    basesPerGraph = rconfig['basesPerGraph']
    graphsPerPage = rconfig['graphsPerPage']
    startBase = rconfig.pop('startBase')
    endBase = rconfig.pop('endBase')
    bp_per_page = rconfig['bp_per_page'] = basesPerGraph * graphsPerPage
    page_count = math.ceil(float(endBase - startBase) / bp_per_page)
    log.info("Generating %d pages of allplots", page_count)
    page_num = 1  # page number offset
    filenames = []
    waiton = []
    # per-page loop
    while startBase < endBase:
        pconfig = dict(rconfig.items())
        pconfig['page_num'] = page_num
        pconfig['startBase'] = startBase
        if startBase + bp_per_page < endBase:
            pconfig['endBase'] = startBase + bp_per_page
        else:
            pconfig['endBase'] = endBase
        h = Hasher().hashdict(pconfig).hashfiletime(BIN).hashfiletime(__file__)
        psname = parsing.derive_filename(config, h.hexdigest(), 'ps')
        filenames.append(psname)
        waiton.extend(enqueue(_ap, executor, pconfig, psname, after=after))
        page_num += 1
        startBase += bp_per_page

    # Finally set the output filenames into the master config dict
    config['psnames'] = filenames
    return waiton