Source code for goatools.grouper.tasks
"""Tasks for grouping."""
__copyright__ = "Copyright (C) 2016-2018, DV Klopfenstein, H Tang, All rights reserved."
__author__ = "DV Klopfenstein"
from goatools.grouper.hdrgos import HdrgosSections
[docs]
class SummarySec2dHdrGos(object):
"""Summary for a sections variable containing sets of header GO IDs."""
[docs]
def summarize_sec2hdrgos(self, sec2d_hdrgos):
"""Get counts of header GO IDs and sections."""
hdrgos_all = set([])
hdrgos_grouped = set()
hdrgos_ungrouped = set()
sections_grouped = set()
for sectionname, hdrgos in sec2d_hdrgos:
self._chk_hdrgoids(hdrgos)
hdrgos_all.update(hdrgos)
if sectionname != HdrgosSections.secdflt:
hdrgos_grouped.update(hdrgos)
sections_grouped.add(sectionname)
else:
hdrgos_ungrouped.update(hdrgos)
return {'G': hdrgos_grouped,
'S': sections_grouped,
'U': hdrgos_all.difference(hdrgos_grouped)}
[docs]
def summarize_sec2hdrnts(self, sec2d_hdrnts):
"""Given namedtuples in each sectin, get counts of header GO IDs and sections."""
sec2d_hdrgos = [(s, set(nt.GO for nt in nts)) for s, nts in sec2d_hdrnts]
return self.summarize_sec2hdrgos(sec2d_hdrgos)
@staticmethod
def _chk_hdrgoids(hdrgos):
"""Check that hdrgo set is a set of GO IDs."""
goid = next(iter(hdrgos))
if isinstance(goid, str) and goid[:3] == "GO:":
return
assert False, "HDRGOS DO NOT CONTAIN GO IDs: {E}".format(E=goid)
# Copyright (C) 2016-2018, DV Klopfenstein, H Tang, All rights reserved.