kkonganti@17: #!/usr/bin/env python kkonganti@17: kkonganti@17: import os kkonganti@17: import sys kkonganti@17: from textwrap import dedent kkonganti@17: kkonganti@17: import yaml kkonganti@17: kkonganti@17: kkonganti@17: def main(): kkonganti@17: """ kkonganti@17: Takes a tab-delimited text file with a mandatory header kkonganti@17: column and generates an HTML table. kkonganti@17: """ kkonganti@17: kkonganti@17: args = sys.argv kkonganti@17: if len(args) < 2 or len(args) >= 4: kkonganti@17: print( kkonganti@17: f"\nAt least one argument specifying the *.tblsum file is required.\n" kkonganti@17: + "No more than 2 command-line arguments should be passed.\n" kkonganti@17: ) kkonganti@17: exit(1) kkonganti@17: kkonganti@17: table_sum_on = str(args[1]).lower() kkonganti@17: table_sum_on_file = table_sum_on + ".tblsum.txt" kkonganti@17: cell_colors = f"{table_sum_on}.cellcolors.yml" kkonganti@17: kkonganti@17: if len(args) == 3: kkonganti@17: description = str(args[2]) kkonganti@17: else: kkonganti@17: description = "The results table shown here is a collection from all samples." kkonganti@17: kkonganti@17: if os.path.exists(cell_colors) and os.path.getsize(cell_colors) > 0: kkonganti@17: with open(cell_colors, "r") as cc_yml: kkonganti@17: cell_colors = yaml.safe_load(cc_yml) kkonganti@17: else: kkonganti@17: cell_colors = dict() kkonganti@17: kkonganti@17: if not (os.path.exists(table_sum_on_file) and os.path.getsize(table_sum_on_file) > 0): kkonganti@17: exit(0) kkonganti@17: kkonganti@17: with open(table_sum_on_file, "r") as tbl: kkonganti@17: header = tbl.readline() kkonganti@17: header_cols = header.strip().split("\t") kkonganti@17: kkonganti@17: html = [ kkonganti@17: dedent( kkonganti@17: f""" kkonganti@17:
{header_col} | """ kkonganti@17: ) kkonganti@17: ) kkonganti@17: kkonganti@17: html.append( kkonganti@17: dedent( kkonganti@17: """ kkonganti@17:||
---|---|---|
{data_cols[0]} | kkonganti@17: """ kkonganti@17: ) kkonganti@17: ) kkonganti@17: kkonganti@17: for data_col in data_cols[1:]: kkonganti@17: data_col_w_color = f"""{data_col} | kkonganti@17: """ kkonganti@17: if ( kkonganti@17: table_sum_on in cell_colors.keys() kkonganti@17: and data_col in cell_colors[table_sum_on].keys() kkonganti@17: ): kkonganti@17: data_col_w_color = f"""{data_col} | kkonganti@17: """ kkonganti@17: html.append(dedent(data_col_w_color)) kkonganti@17: html.append("