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'
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