def prt_txt(self, prt, goea_results, prtfmt=None, **kws): """Print GOEA results in text format.""" if prtfmt is None: prtfmt = "{GO} {NS} {p_uncorrected:5.2e} {study_count:>5} {name}\n" prtfmt = self.adjust_prtfmt(prtfmt) prt_flds = RPT.get_fmtflds(prtfmt) data_nts = get_goea_nts_prt(goea_results, prt_flds, **kws) RPT.prt_txt(prt, data_nts, prtfmt, prt_flds, **kws) return data_nts
def prt_sections(prt, sections, prtfmt, secspc=False): """Print GO namedtuples in their sections.""" num_goids = 0 for section, nts_flat in sections: # Add an empty line between sections, if desired if secspc: prt.write("\n") prt.write("{SECTION}\n".format(SECTION=section)) num_nts = len(nts_flat) num_goids += num_nts prt_txt(prt, nts_flat, prtfmt=prtfmt)
def prt_txt(prt, goea_results, prtfmt=None, **kws): """Print GOEA results in text format.""" objprt = PrtFmt() if prtfmt is None: flds = ['GO', 'NS', 'p_uncorrected', 'ratio_in_study', 'ratio_in_pop', 'depth', 'name', 'study_items'] prtfmt = objprt.get_prtfmt_str(flds) prtfmt = objprt.adjust_prtfmt(prtfmt) prt_flds = RPT.get_fmtflds(prtfmt) data_nts = MgrNtGOEAs(goea_results).get_goea_nts_prt(prt_flds, **kws) RPT.prt_txt(prt, data_nts, prtfmt, prt_flds, **kws) return data_nts
def prt_nts(self, desc2nts, prt=sys.stdout, prtfmt=None): """Print grouped and sorted GO IDs.""" # deprecated # Set print format string if prtfmt is None: prtfmt = "{{hdr1usr01:2}} {FMT}\n".format(FMT=self.grprobj.gosubdag.prt_attr['fmt']) # 1-D: data to print is a flat list of namedtuples if 'flat' in desc2nts: prt_txt(prt, desc2nts['flat'], prtfmt=prtfmt) # 2-D: data to print is a list of [(section, nts), ... else: WrSectionsTxt.prt_sections(prt, desc2nts['sections'], prtfmt)
def prt_nts(self, desc2nts, prt=sys.stdout, prtfmt=None): """Print grouped and sorted GO IDs.""" # deprecated # Set print format string if prtfmt is None: prtfmt = "{{hdr1usr01:2}} {FMT}\n".format( FMT=self.grprobj.gosubdag.prt_attr['fmt']) # 1-D: data to print is a flat list of namedtuples if 'flat' in desc2nts: prt_txt(prt, desc2nts['flat'], prtfmt=prtfmt) # 2-D: data to print is a list of [(section, nts), ... else: WrSectionsTxt.prt_sections(prt, desc2nts['sections'], prtfmt)
def prt_txt(self, prt, goea_results, prtfmt=None, **kws): """Print GOEA results in text format.""" objprt = PrtFmt() if prtfmt is None: flds = ['GO', 'NS', 'p_uncorrected', 'ratio_in_study', 'ratio_in_pop', 'depth', 'name', 'study_items'] prtfmt = objprt.get_prtfmt_str(flds) #### prtfmt = " ".join([objprt.default_fld2fmt[f] for f in flds]) #### prtfmt = ("{GO} {NS} {p_uncorrected:5.2e} {ratio_in_study:>6} {ratio_in_pop:>9} " #### "{depth:02} {name:40} {study_items}\n") prtfmt = objprt.adjust_prtfmt(prtfmt) prt_flds = RPT.get_fmtflds(prtfmt) data_nts = MgrNtGOEAs(goea_results).get_goea_nts_prt(prt_flds, **kws) RPT.prt_txt(prt, data_nts, prtfmt, prt_flds, **kws) return data_nts
def wr_txt(self, fout_txt): """Write counts of GO terms at all levels and depths.""" from goatools.wr_tbl import prt_txt data = self.get_data() with open(fout_txt, 'w') as prt: prtfmt = "{Depth_Level:>7} " \ "{BP_D:6,} {MF_D:6,} {CC_D:>6,} " \ "{BP_L:>6,} {MF_L:>6,} {CC_L:>6,}\n" prt.write("{TITLE}\n\n".format(TITLE=self.title)) prt.write(" |<---- Depth ---->| |<---- Level ---->|\n") prt.write("Dep/Lev BP MF CC BP MF CC\n") prt.write("------- ----- ----- ----- ----- ----- -----\n") prt_txt(prt, data, prtfmt=prtfmt, title=self.title) sys.stdout.write(" {N:>5,} items WROTE: {TXT}\n".format( N=len(data), TXT=fout_txt))
def prt_txt_desc2nts(self, prt, desc2nts, prtfmt): """Print grouped and sorted GO IDs.""" # 1-D: data to print is a flat list of namedtuples if 'flat' in desc2nts: nts = desc2nts.get('flat') # sys.stdout.write("FLAT NTS: {FLDS}\n".format(FLDS=" ".join(next(iter(nts))._fields))) prt_txt(prt, nts, prtfmt) # 2-D: data to print is a list of [(section, nts), ... else: for section, nts in desc2nts['sections']: prt.write("\nSECTION: {SEC}\n".format(SEC=section)) prt_txt(prt, nts, prtfmt) grprobj = self.sortobj.grprobj dat = SummarySec2dHdrGos().summarize_sec2hdrnts(desc2nts['sections']) ugos_y = dat['G'].intersection(grprobj.usrgos) ugos_n = dat['U'].intersection(grprobj.usrgos) return {'GO_DESC':'usr', 'SECs':len(dat['S']), 'GOs':len(ugos_y), 'UNGRP':len(ugos_n), 'undesc':'ungrpd'}
def wr_txt(self, fout_txt="gos_depth01.txt", title=None): """write text table of depth-01 GO terms and their letter representation.""" data_nts = self.get_d1nts() with open(fout_txt, 'w') as prt: if title is not None: prt.write("{TITLE}\n\n".format(TITLE=title)) prt.write( " D1 : Letter representing the depth-01 GO term\n") prt.write(" dcnt: Total number of all descendants\n") prt.write(" dep: Depth; The maximum length path to ") prt.write("leaf-level (childless) GO descendant(s)\n\n") prt.write("D1 NS dcnt dep GO ID Description\n") prt.write( "- -- ------ --- ---------- ------------------------------\n" ) prt_txt(prt, data_nts) sys.stdout.write(" {N:>5} items WROTE: {TXT}\n".format( N=len(data_nts), TXT=fout_txt))
def prt_genes(fout_genes, geneids, taxid, log): """Print 'cell cycle' geneids, with or without Symbol and description information.""" fin_symbols = "genes_NCBI_{TAXID}_All.py".format(TAXID=taxid) # If gene Symbol information is available, print geneid and Symbol if os.path.isfile(fin_symbols): import importlib module_name = "".join(["goatools.test_data.", fin_symbols[:-3]]) module = importlib.import_module(module_name) GeneID2nt = module.GeneID2nt fmtstr = "{GeneID:>9} {Symbol:<16} {description}\n" nts = [GeneID2nt[geneid] for geneid in sorted(geneids) if geneid in GeneID2nt] with open(fout_genes, 'w') as prt: prt_txt(prt, nts, fmtstr) if log is not None: log.write(" WROTE {N:>5} genes: {FOUT}\n".format(FOUT=fout_genes, N=len(nts))) # Just print geneids else: with open(fout_genes, 'w') as prt: for geneid in geneids: prt.write("{geneid}\n".format(geneid=geneid)) if log is not None: log.write(" WROTE {N:>5} genes: {FOUT}\n".format(FOUT=fout_genes, N=len(geneids)))
def prt_genes(fout_genes, geneids, taxid, log): """Print 'cell cycle' geneids, with or without Symbol and description information.""" fin_symbols = "genes_NCBI_{TAXID}_All.py".format(TAXID=taxid) # If gene Symbol information is available, print geneid and Symbol if os.path.isfile(fin_symbols): import importlib module_name = "".join(["goatools.test_data.", fin_symbols[:-3]]) module = importlib.import_module(module_name) geneid2nt = module.GENEID2NT fmtstr = "{GeneID:>9} {Symbol:<16} {description}\n" nts = [geneid2nt[geneid] for geneid in sorted(geneids) if geneid in geneid2nt] with open(fout_genes, 'w') as prt: prt_txt(prt, nts, fmtstr) if log is not None: log.write(" WROTE {N:>5} genes: {FOUT}\n".format(FOUT=fout_genes, N=len(nts))) # Just print geneids else: with open(fout_genes, 'w') as prt: for geneid in geneids: prt.write("{geneid}\n".format(geneid=geneid)) if log is not None: log.write(" WROTE {N:>5} genes: {FOUT}\n".format( FOUT=fout_genes, N=len(geneids)))
def prt_txt_desc2nts(self, prt, desc2nts, prtfmt): """Print grouped and sorted GO IDs.""" # 1-D: data to print is a flat list of namedtuples if 'flat' in desc2nts: nts = desc2nts.get('flat') # sys.stdout.write("FLAT NTS: {FLDS}\n".format(FLDS=" ".join(next(iter(nts))._fields))) prt_txt(prt, nts, prtfmt) # 2-D: data to print is a list of [(section, nts), ... else: for section, nts in desc2nts['sections']: prt.write("\nSECTION: {SEC}\n".format(SEC=section)) prt_txt(prt, nts, prtfmt) grprobj = self.sortobj.grprobj dat = SummarySec2dHdrGos().summarize_sec2hdrnts( desc2nts['sections']) ugos_y = dat['G'].intersection(grprobj.usrgos) ugos_n = dat['U'].intersection(grprobj.usrgos) return { 'GO_DESC': 'usr', 'SECs': len(dat['S']), 'GOs': len(ugos_y), 'UNGRP': len(ugos_n), 'undesc': 'ungrpd' }
def prt_txt(self, prt, results_nt, prtfmt, **kws): """Print GOEA results in text format.""" prtfmt = self.adjust_prtfmt(prtfmt) prt_flds = RPT.get_fmtflds(prtfmt) data_nts = self._get_nts(results_nt, prt_flds, True, **kws) RPT.prt_txt(prt, data_nts, prtfmt, prt_flds, **kws)
def prt_mdtbl(self, nts, prt_flds=None, prt=sys.stdout): """Write specified namedtuples into an Excel spreadsheet.""" if prt_flds is None: prt_flds = self.prt_flds prtfmt = "|{DATA}|\n".format(DATA="|".join(self.fld2prtfmt[f] for f in prt_flds)) prt_txt(prt, nts, prtfmt=prtfmt)