def gen_tables(basedir, datasets): mock_h = LogisticRegression(), methods = [method for method, _ in gen_CAP(mock_h, None)] + [method for method, _ in gen_CAP_cont_table(mock_h)] classifiers = [classifier for classifier, _ in gen_classifiers()] os.makedirs('./tables', exist_ok=True) with_oracle = 'oracle' in basedir tex_doc = """ \\documentclass[10pt,a4paper]{article} \\usepackage[utf8]{inputenc} \\usepackage{amsmath} \\usepackage{amsfonts} \\usepackage{amssymb} \\usepackage{graphicx} \\usepackage{tabularx} \\usepackage{color} \\usepackage{colortbl} \\usepackage{xcolor} \\begin{document} """ for classifier in classifiers: for metric in [measure for measure, _ in gen_acc_measure()]: table = Table(datasets, methods, prec_mean=5, clean_zero=True) for method, dataset in itertools.product(methods, datasets): path = getpath(basedir, classifier, metric, dataset, method) if not os.path.exists(path): print('missing ', path) continue results = json.load(open(path, 'r')) true_acc = results['true_acc'] estim_acc = np.asarray(results['estim_acc']) if any(np.isnan(estim_acc)): print(f'nan values found in {method=} {dataset=}') continue if any(estim_acc>1.00001): print(f'values >1 found in {method=} {dataset=} [max={estim_acc.max()}]') continue if any(estim_acc<-0.00001): print(f'values <0 found in {method=} {dataset=} [min={estim_acc.min()}]') continue errors = cap_errors(true_acc, estim_acc) table.add(dataset, method, errors) tex = table.latexTabular() table_name = f'{basedir}_{classifier}_{metric}.tex' table_name = table_name.replace('/', '_') with open(f'./tables/{table_name}', 'wt') as foo: foo.write('\\begin{table}[h]\n') foo.write('\\centering\n') foo.write('\\resizebox{\\textwidth}{!}{%\n') foo.write('\\begin{tabular}{c|'+('c'*len(methods))+'}\n') foo.write(tex) foo.write('\\end{tabular}%\n') foo.write('}\n') foo.write('\\caption{Classifier ' + classifier.replace('_', ' ') + ('(oracle)' if with_oracle else '') + ' evaluated in terms of ' + metric.replace('_', ' ') + '}\n') foo.write('\\end{table}\n') tex_doc += "\input{" + table_name + "}\n\n" tex_doc += """ \\end{document} """ with open(f'./tables/main.tex', 'wt') as foo: foo.write(tex_doc) print("[Tables Done] runing latex") os.chdir('./tables/') os.system('pdflatex main.tex') os.system('rm main.aux main.log')