kkonganti@0: #!/usr/bin/env python kkonganti@0: kkonganti@0: import sys kkonganti@0: import yaml kkonganti@0: from textwrap import dedent kkonganti@0: kkonganti@0: def main() : kkonganti@0: """ kkonganti@0: Takes a tab-delimited text file with a mandatory header kkonganti@0: column and generates an HTML table. kkonganti@0: """ kkonganti@0: kkonganti@0: args = sys.argv kkonganti@0: if (len(args) < 2 or len(args) > 3): kkonganti@0: print(f"\nTwo CL arguments are required!\n") kkonganti@0: exit(1) kkonganti@0: kkonganti@0: table_sum_on = args[1].lower() kkonganti@0: workflow_name = args[2].lower() kkonganti@0: kkonganti@0: with open(f"{table_sum_on}.tblsum.txt", "r") as tbl: kkonganti@0: header = tbl.readline() kkonganti@0: header_cols = header.strip().split('\t') kkonganti@0: kkonganti@0: html = [ kkonganti@0: dedent( kkonganti@0: f""" kkonganti@0:
kkonganti@0: kkonganti@0: kkonganti@0: kkonganti@0: """ kkonganti@0: ) kkonganti@0: ] kkonganti@0: kkonganti@0: for header_col in header_cols: kkonganti@0: html.append( kkonganti@0: dedent( kkonganti@0: f""" kkonganti@0: """ kkonganti@0: ) kkonganti@0: ) kkonganti@0: kkonganti@0: html.append( kkonganti@0: dedent( kkonganti@0: """ kkonganti@0: kkonganti@0: kkonganti@0: """ kkonganti@0: ) kkonganti@0: ) kkonganti@0: kkonganti@0: for row in tbl: kkonganti@0: html.append("\n") kkonganti@0: data_cols = row.strip().split('\t') kkonganti@0: if ( len(header_cols) != len(data_cols) ): kkonganti@0: print(f"\nWARN: Number of header columns ({len(header_cols)}) and data " + kkonganti@0: f"columns ({len(data_cols)}) are not equal!\nWill append empty columns!\n") kkonganti@0: if ( len(header_cols) > len(data_cols) ): kkonganti@0: data_cols += (( len(header_cols) - len(data_cols) ) * ' ' ) kkonganti@0: print(len(data_cols)) kkonganti@0: else: kkonganti@0: header_cols += (( len(data_cols) - len(header_cols) ) * ' ') kkonganti@0: kkonganti@0: html.append( kkonganti@0: dedent( kkonganti@0: f""" kkonganti@0: kkonganti@0: """ kkonganti@0: ) kkonganti@0: ) kkonganti@0: kkonganti@0: for data_col in data_cols[1:]: kkonganti@0: html.append( kkonganti@0: dedent( kkonganti@0: f""" kkonganti@0: """ kkonganti@0: ) kkonganti@0: ) kkonganti@0: html.append("\n") kkonganti@0: html.append("\n") kkonganti@0: html.append("
{header_col}
{data_cols[0]}{data_col}
\n") kkonganti@0: html.append("
\n") kkonganti@0: kkonganti@0: mqc_yaml = { kkonganti@0: "id": f"{table_sum_on.upper()}_collated_table", kkonganti@0: "section_name": f"{table_sum_on.upper()}", kkonganti@0: "section_href": f"https://cfsan-git.fda.gov/Kranti.Konganti/{workflow_name}", kkonganti@0: "plot_type": "html", kkonganti@0: "description": "The results table shown here is a collection from all samples.", kkonganti@0: "data": ('').join(html), kkonganti@0: } kkonganti@0: kkonganti@0: with open(f"{table_sum_on.lower()}_mqc.yml", "w") as html_mqc: kkonganti@0: yaml.dump(mqc_yaml, html_mqc, default_flow_style=False) kkonganti@0: kkonganti@0: if __name__ == "__main__": kkonganti@0: main()