def prt_gos_grouped(self, prt, **kws_grp): """Print grouped GO list.""" prtfmt = self.datobj.kws['fmtgo'] wrobj = WrXlsxSortedGos(self.name, self.sortobj) # Keyword arguments: control content: hdrgo_prt section_prt top_n use_sections desc2nts = self.sortobj.get_desc2nts(**kws_grp) wrobj.prt_txt_desc2nts(prt, desc2nts, prtfmt)
def cli(self, prt=sys.stdout): """Command-line interface for go_draw script.""" kws = self.objdoc.get_docargs(prt=None) godag = get_godag(kws['obo'], prt=None, loading_bar=False, optional_attrs=['relationship']) usrgos = GetGOs(godag, max_gos=200).get_usrgos(kws.get('GO_FILE'), prt) tcntobj = self._get_tcntobj(usrgos, godag, **kws) # Gets TermCounts or None self.gosubdag = GoSubDag(usrgos, godag, relationships=True, tcntobj=tcntobj, prt=None) grprdflt = GrouperDflts(self.gosubdag, kws['slims']) ver_list = [godag.version, grprdflt.ver_goslims] prt.write("{VER}\n".format(VER="\n".join(ver_list))) sections = self._read_sections(kws['ifile']) # print("SECSECSEC", sections) hdrobj = HdrgosSections(self.gosubdag, grprdflt.hdrgos_dflt, sections) grprobj = Grouper("init", usrgos, hdrobj, self.gosubdag) # Write sections objsecwr = WrSectionsTxt(grprobj, ver_list) if not os.path.exists(kws['ifile']): objsecwr.wr_txt_section_hdrgos(kws['ifile']) objsecwr.wr_txt_section_hdrgos(kws['ofile']) objsecpy = WrSectionsPy(grprobj, ver_list) if 'py' in kws: objsecpy.wr_py_sections(kws['py'], sections, doc=godag.version) # Write user GO IDs in sections sortobj = Sorter(grprobj) objgowr = WrXlsxSortedGos("init", sortobj, ver_list) objgowr.wr_txt_gos(kws['txt'], sortby=objsecpy.fncsortnt) #objwr.wr_txt_section_hdrgos(kws['ofile'], sortby=objwr.fncsortnt) self._prt_cnt_usrgos(usrgos, sys.stdout)
def write(self, fout_xlsx=None, fout_txt=None, verbose=False): """Command-line interface for go_draw script.""" sortby = self._get_fncsortnt(self.objgrpd.grprobj.gosubdag.prt_attr['flds']) kws_sort = {'sortby' if verbose else 'section_sortby': sortby} sortobj = Sorter(self.objgrpd.grprobj, **kws_sort) # KWS: hdrgo_prt=True section_prt=None top_n=None use_sections=True # RET: {sortobj, sections, hdrgo_prt} or {sortobj flat hdrgo_prt} desc2nts = sortobj.get_desc2nts_fnc( hdrgo_prt=verbose, section_prt=True, top_n=None, use_sections=True) # print('FFFF', desc2nts['flds']) # Write user GO IDs in sections objgowr = WrXlsxSortedGos("init", sortobj, self.objgrpd.ver_list) if fout_xlsx is not None: kws_xlsx = {'shade_hdrgos':verbose} if not verbose: kws_xlsx['prt_flds'] = [f for f in desc2nts['flds'] if f not in self.excl_flds] objgowr.wr_xlsx_nts(fout_xlsx, desc2nts, **kws_xlsx) fout_desc = '{BASE}_desc.txt'.format(BASE=os.path.splitext(fout_xlsx)[0]) self._wr_ver_n_key(fout_desc, verbose) if fout_txt is not None: self._wr_txt_nts(fout_txt, desc2nts, objgowr, verbose) if fout_xlsx is None and fout_txt is None: self._prt_ver_n_key(sys.stdout, verbose) prtfmt = self._get_prtfmt(objgowr, verbose) summary_dct = objgowr.prt_txt_desc2nts(sys.stdout, desc2nts, prtfmt) self._prt_ver_n_key(sys.stdout, verbose) if summary_dct: print("\n{N} GO IDs in {S} sections".format( N=desc2nts['num_items'], S=desc2nts['num_sections']))
def _wr_xlsx(name, grprobj, **kws): """Group, sort, and print xlsx file.""" # Exclude ungrouped "Misc." section of sections var(sec_rd) fout_xlsx = "{NAME}.xlsx".format(NAME=name) # kws Sorter: hdrgo_prt section_prt top_n use_sections sortobj = Sorter(grprobj) desc2nts = sortobj.get_desc2nts(**kws) objwr = WrXlsxSortedGos(name, sortobj) # kws WrXlsxSortedGos wr_xlsx_nts: title hdrs objwr.wr_xlsx_nts(fout_xlsx, desc2nts, **kws)
def _wr_xlsx(name, grprobj, **kws): """Group, sort, and print xlsx file.""" # print('\nTEST {} kws_sortobj: {}'.format(name, kws)) # KWS SORT OBJ kws_sort = {'sortby', 'hdrgo_sortby', 'section_sortby'} # KWS SORT FUNC: hdrgo_prt section_prt top_n use_sections prtfmt # Exclude ungrouped "Misc." section of sections var(sec_rd) fout_xlsx = "{NAME}.xlsx".format(NAME=name) # kws Sorter: hdrgo_prt section_prt top_n use_sections sortobj = Sorter(grprobj, **{k:v for k, v in kws.items() if k in kws_sort}) desc2nts = sortobj.get_desc2nts(**kws) objwr = WrXlsxSortedGos(name, sortobj) # kws WrXlsxSortedGos wr_xlsx_nts: title hdrs objwr.wr_xlsx_nts(fout_xlsx, desc2nts, **kws)
def wr_xlsx(self, fout_xlsx): """Print grouped GOEA results into an xlsx file.""" objwr = WrXlsxSortedGos("GOEA", self.sortobj) #### fld2fmt['ratio_in_study'] = '{:>8}' #### fld2fmt['ratio_in_pop'] = '{:>12}' #### ntfld2wbfmtdict = { # ntfld_wbfmt = { # 'ratio_in_study': {'align':'right'}, # 'ratio_in_pop':{'align':'right'}} kws_xlsx = { 'title': self.ver_list, 'fld2fmt': {f:'{:8.2e}' for f in self.flds_cur if f[:2] == 'p_'}, #'ntfld_wbfmt': ntfld_wbfmt, #### 'ntval2wbfmtdict': ntval2wbfmtdict, #'hdrs': [], 'prt_flds': self.flds_cur} objwr.wr_xlsx_nts(fout_xlsx, self.desc2nts, **kws_xlsx)
def wr_xlsx_nts(self, fout_xlsx, desc2nts, **kws): """Write grouped and sorted user GO IDs into an xlsx file.""" # kws (content): hdrgo_prt section_prt use_sections # kws (prt fmt): title fld2col_widths ... xlsxobj = WrXlsxSortedGos("sortname", self) xlsxobj.wr_xlsx_nts(fout_xlsx, desc2nts, **kws)