def test_wr_sections_all(): """Test that all sections files generated by wr_sections have the same content.""" f_sec_rd = "data/gjoneska_pfenning/sections_in.txt" f_sec_wr = "tmp_test_sections_out.txt" # Travis-CI path is cwd f_sec_py = "tmp_test_sections.py" # f_sec_mod = "tmp_test_sections" # Read user GO IDs. Setup to write sections text file and Python file usrgos = [getattr(nt, 'GO') for nt in goea_results] sec_rd = _read_sections(f_sec_rd) # Do preliminaries godag = get_godag("go-basic.obo", prt=None, loading_bar=False, optional_attrs=['relationship']) gosubdag = GoSubDag(usrgos, godag, relationships=True, tcntobj=None) grprdflt = GrouperDflts(gosubdag) # Exclude ungrouped "Misc." section of sections var(sec_rd) hdrobj = HdrgosSections(gosubdag, grprdflt.hdrgos_dflt, sec_rd[:-1]) assert sec_rd[-1][0] == hdrobj.secdflt, sec_rd[-1][0] grprobj = Grouper("test", usrgos, hdrobj, gosubdag) # Create text and Python sections files objsecwr = WrSectionsTxt(grprobj) objsecwr.wr_txt_section_hdrgos(os.path.join(REPO, f_sec_wr)) objsecpy = WrSectionsPy(grprobj) objsecpy.wr_py_sections(os.path.join(REPO, f_sec_py), sec_rd, doc=godag.version) # Read text and Python sections files sec_wr = _read_sections(f_sec_wr) sec_py = _read_sections(f_sec_py)
def test_wr_sections_all(): """Test that all sections files generated by wr_sections have the same content.""" f_sec_rd = os.path.join(REPO, "data/gjoneska_pfenning/sections_in.txt") f_sec_wr = os.path.join(REPO, "tmp_test_sections_out.txt") # Travis-CI path is cwd f_sec_py = os.path.join(REPO, "tmp_test_sections.py") # f_sec_mod = "tmp_test_sections" # Read user GO IDs. Setup to write sections text file and Python file usrgos = [getattr(nt, 'GO') for nt in goea_results] sec_rd = _read_sections(f_sec_rd) # Do preliminaries godag = _get_godag() gosubdag = GoSubDag(usrgos, godag, relationships=True, tcntobj=None) grprdflt = _get_grprdflt(gosubdag) # Exclude ungrouped "Misc." section of sections var(sec_rd) hdrobj = HdrgosSections(gosubdag, grprdflt.hdrgos_dflt, sec_rd[:-1]) assert sec_rd[-1][0] == hdrobj.secdflt, sec_rd[-1][0] grprobj = Grouper("test", usrgos, hdrobj, gosubdag) # Create text and Python sections files objsecwr = WrSectionsTxt(grprobj) objsecwr.wr_txt_section_hdrgos(os.path.join(REPO, f_sec_wr)) objsecpy = WrSectionsPy(grprobj) objsecpy.wr_py_sections(os.path.join(REPO, f_sec_py), sec_rd, doc=godag.version) # Read text and Python sections files sec_wr = _read_sections(f_sec_wr) sec_py = _read_sections(f_sec_py)
def prt_txt(self, prt=sys.stdout): """Print an ASCII text format.""" prtfmt = self.objprtfmt.get_prtfmt_str(self.flds_cur) prt.write("{FLDS}\n".format(FLDS=" ".join(self.flds_cur))) WrSectionsTxt.prt_sections(prt, self.desc2nts['sections'], prtfmt, secspc=True)
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 test_grouper_d2(do_plot=False): """Group depth-02 GO terms under their most specific depth-01 GO parent(s).""" print('CWD', os.getcwd()) # Get GOs to be grouped # Since no "Grouping GOs" were provided, depth-01 GOs are used for grouping. grprdflt = _get_grprdflt() hdrobj = HdrgosSections(grprdflt.gosubdag, grprdflt.hdrgos_dflt, sections=None, hdrgos=None) grprobj = Grouper("Transient Increase", get_data0(), hdrobj, _get_gosubdag(), go2nt=None) objwr = WrSectionsTxt(grprobj) objwr.wr_txt_section_hdrgos("transient_increase_hdrgos.txt") objwr.wr_txt_grouping_gos() if do_plot: # Don't run in Travis-CI because it does not contain 'dot' from goatools.grouper.grprplt import GrouperPlot GrouperPlot(grprobj).plot_groups_unplaced() chk_hdrs(grprobj)
def _wr_sections_txt(fout_txt, usrgos, sections, grprdflt): """Given a list of usrgos and sections, write text file.""" try: hdrobj = HdrgosSections(grprdflt.gosubdag, grprdflt.hdrgos_dflt, sections=sections) grprobj = Grouper(fout_txt, usrgos, hdrobj, grprdflt.gosubdag, go2nt=None) full_txt = os.path.join(REPO, fout_txt) WrSectionsTxt(grprobj).wr_txt_section_hdrgos(full_txt, sortby=None, prt_section=True) assert os.path.exists(full_txt) except RuntimeError as inst: sys.stdout.write("\n **FATAL: {MSG}\n\n".format(MSG=str(inst)))
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 test_grouper_d2(do_plot=False): """Group depth-02 GO terms under their most specific depth-01 GO parent(s).""" # Get GOs to be grouped # Since no "Grouping GOs" were provided, depth-01 GOs are used for grouping. grprdflt = GrouperDflts() hdrobj = HdrgosSections(grprdflt.gosubdag, grprdflt.hdrgos_dflt, sections=None, hdrgos=None) grprobj = Grouper("Transient Increase", get_data0(), hdrobj, grprdflt.gosubdag, go2nt=None) objwr = WrSectionsTxt(grprobj) objwr.wr_txt_section_hdrgos("transient_increase_hdrgos.txt") objwr.wr_txt_grouping_gos() if do_plot: # Don't run in Travis-CI because it does not contain 'dot' from goatools.grouper.grprplt import GrouperPlot GrouperPlot(grprobj).plot_groups_unplaced() chk_hdrs(grprobj)