code: def get_go_color(self, **kws):
          
          ret = {'GOs':set(), 'go2color':{}}
          if 'GO' in kws:
              self._goargs(ret, kws['GO'])
          if 'go_file' in kws:
              self._rdtxt_gos(ret, kws['go_file'])
          if 'draw-children' in kws:
              ret['GOs'].update(get_leaf_children(ret['GOs'], self.go2obj))
          # If there have been no GO IDs explicitly specified by the user
          if not ret['GOs']:
              # If the GO-DAG is sufficiently small, print all GO IDs
              if len(self.go2obj) < self.max_gos:
                  main_gos = set(o.id for go, o in self.go2obj.items() if go != o.id)
                  go_leafs = set(go for go, o in self.go2obj.items() if not o.children)
                  ret['GOs'] = go_leafs.difference(main_gos)
              else:
                  raise RuntimeError("GO IDs NEEDED")
          go2obj = {go:self.go2obj[go] for go in ret['GOs']}
          ret['GOs'] = set(get_go2obj_unique(go2obj))
          return [ret['GOs'], ret['go2color']]
docs: Return source GO IDs .