def get_members(agent): dbname, dbid = agent.get_grounding() if dbname not in ['FPLX', 'BE']: return None eh = hierarchies['entity'] uri = eh.get_uri(dbname, dbid) children_uris = sorted(eh.get_children(uri)) children_agents = [ expand_families._agent_from_uri(uri) for uri in children_uris ] return children_agents
def _get_members(agent): if 'FPLX' not in agent.db_refs: return None dbname, dbid = 'FPLX', agent.db_refs['FPLX'] eh = hierarchies['entity'] uri = eh.get_uri(dbname, dbid) children_uris = sorted(eh.get_children(uri)) children_agents = [ expand_families._agent_from_uri(uri) for uri in children_uris ] return children_agents
def suggest_relevant_relations(groundings): def make_nice_list(lst): if len(lst) == 1: return lst[0] pre = ', '.join(lst[:-1]) full = '%s, or %s' % (pre, lst[-1]) return full prefix1 = 'By the way, I recognized' prefix2 = 'I also recognized' msg_parts = [] for entity_txt, (dbn, dbi) in groundings.items(): if dbn == 'FPLX': ag = Agent(name=entity_txt, db_refs={dbn: dbi}) children = expander.get_children(ag) print(children) if not children: continue children_names = [ch[1] for ch in children] children_str = make_nice_list(children_names) prefix = prefix1 if not msg_parts else prefix2 msg = ('%s "%s" as a family or complex, ' 'you might be interested in asking about some of its ' 'specific members like %s.') % (prefix, entity_txt, children_str) msg_parts.append(msg) if dbn == 'HGNC': name = hgnc_client.get_hgnc_name(dbi) uri = expander.entities.get_uri(dbn, name) print(uri) parent_uris = expander.entities.get_parents(uri) parents = [ expand_families._agent_from_uri(uri) for uri in parent_uris ] print(parents) if not parents: continue parent_names = [p.name for p in parents] parents_str = make_nice_list(parent_names) prefix = prefix1 if not msg_parts else prefix2 msg = ('%s "%s" as a protein that is part of a family or complex, ' 'you might be interested in asking about some of those too ' 'like %s.') % (prefix, entity_txt, parents_str) msg_parts.append(msg) full_msg = ' '.join(msg_parts) return full_msg
def get_binding_site_name(agent): """Return a binding site name from a given agent.""" # Try to construct a binding site name based on parent grounding = agent.get_grounding() if grounding != (None, None): uri = hierarchies['entity'].get_uri(grounding[0], grounding[1]) # Get highest level parents in hierarchy parents = hierarchies['entity'].get_parents(uri, 'top') if parents: # Choose the first parent if there are more than one parent_uri = sorted(parents)[0] parent_agent = _agent_from_uri(parent_uri) binding_site = _n(parent_agent.name).lower() return binding_site # Fall back to Agent's own name if one from parent can't be constructed binding_site = _n(agent.name).lower() return binding_site