Source code for abed.results.export

import datetime
import os

from tabulate import tabulate

from .models import AbedTable
from ..conf import settings
from ..io import info
from ..utils import mkdir, clean_str


[docs]def export_tables(tables): summary_tables = [] for table in tables: summary_table = merge_description_table(table) write_table_txt(table, summary_table) write_table_ajax(table, is_summary=False) write_table_ajax(summary_table, is_summary=True) summary_tables.append(summary_table) return summary_tables
[docs]def merge_description_table(table): if (not settings.DATA_DESCRIPTION_CSV is None) and os.path.exists( settings.DATA_DESCRIPTION_CSV ): at = AbedTable() at.from_csv(settings.DATA_DESCRIPTION_CSV) summary_table = table.left_insert(at) else: summary_table = table.summary_table() return summary_table
[docs]def get_table_fname(table, ext, _type): if _type == "html": outdir = "%s%s%s" % (settings.OUTPUT_DIR, os.sep, "html") elif _type == "txt": outdir = "%s%s%s" % (settings.OUTPUT_DIR, os.sep, "txt") mkdir(outdir) if table.is_metric: fname = "%s%sABED_%s_%s_%s%s" % ( outdir, os.sep, clean_str(table.target), clean_str(table.name), clean_str(table.type), ext, ) else: fname = "%s%sABED_%s_%s%s" % ( outdir, os.sep, clean_str(table.target), clean_str(table.type), ext, ) return fname
[docs]def write_table_txt(table, summary_table): fname = get_table_fname(table, ".txt", "txt") now = datetime.datetime.now() with open(fname, "w") as fid: fid.write( "%% Result file generated by ABED at %s\n" % now.strftime("%c") ) fid.write("%% Table for label: %s\n" % table.target) fid.write("%% Showing: %s\n" % table.type) if table.is_metric: fid.write("%% Metric: %s\n\n" % table.name) txttable = [[i] + r for i, r in table] fmt = ".%df" % settings.RESULT_PRECISION tabtxt = tabulate(txttable, headers=table.headers, floatfmt=fmt) fid.write(tabtxt) fid.write("\n\n") sumtable = [[i] + r for i, r in summary_table] tabtxt = tabulate( sumtable, headers=summary_table.headers, floatfmt=fmt ) fid.write(tabtxt) info("Created output file: %s" % fname)
[docs]def write_table_ajax(table, is_summary=False): if is_summary: fname = get_table_fname(table, "_summary_ajax.txt", "html") else: fname = get_table_fname(table, "_ajax.txt", "html") with open(fname, "w") as fid: fid.write("{\n") fid.write(' "data": [\n') pairs = [(_id, row) for (_id, row) in table] for _id, row in pairs[:-1]: fid.write(" [\n") fid.write(' "%s",\n' % str(_id)) for elem in row[:-1]: fid.write(' "%s",\n' % str(elem)) fid.write(' "%s"\n' % str(row[-1])) fid.write(" ],\n") _id, row = pairs[-1] fid.write(" [\n") fid.write(' "%s",\n' % str(_id)) for elem in row[:-1]: fid.write(' "%s",\n' % str(elem)) fid.write(' "%s"\n' % str(row[-1])) fid.write(" ]\n") fid.write(" ]\n") fid.write("}\n") info("Created output file: %s" % fname)