import os import pandas as pd import re import sys def write_to_excel(output_filename, dfs_towrite, index = False, col_width=22): with pd.ExcelWriter(output_filename) as writer: for name, df in dfs_towrite.items(): df.to_excel(writer, sheet_name = name, index = index) num_col = len(df.columns) if index else len(df.columns)-1 writer.sheets[name].set_column(0, num_col, col_width) print("Write to", output_filename) def read_model_excel(model_excel_filename, sheet_name): if not os.path.isfile(model_excel_filename): raise FileNotFoundError(f"Missing model excel file, expected at {model_excel_filename}") if sheet_name not in pd.ExcelFile(model_excel_filename).sheet_names: raise ValueError(f"{sheet_name} are expected to be in the parsed model excel file - {model_excel_filename}") sheet_df = pd.read_excel(model_excel_filename, sheet_name=sheet_name) sheet_df = sheet_df.fillna("") return sheet_df def read_mapping(mapping_filename): if not os.path.isfile(mapping_filename): raise FileNotFoundError(f"Missing mapping file, expected at {mapping_filename}") mapping_df = pd.read_excel(mapping_filename) mapping_df = mapping_df[mapping_df["has_mapping"] == True] mapping_dict = dict(zip(mapping_df["model_tag"], mapping_df["gene_id"])) return mapping_dict