def parse_group_sbml(groups_sbml, chebi): doc = libsbml.SBMLReader().readSBMLFromFile(groups_sbml) groups_model = doc.getModel() groups_plugin = groups_model.getPlugin("groups") r_id2g_id, s_id2gr_id, ub_sps = {}, {}, set() if groups_plugin: for group in groups_plugin.getListOfGroups(): gr_members = [it.getIdRef() for it in group.getListOfMembers()] gr_id, gr_name = group.getId(), group.getName() gr_sbo = group.getSBOTermID() gr_type = next(get_annotations(group, libsbml.BQB_IS_DESCRIBED_BY), None) if not gr_type: continue if SBO_BIOCHEMICAL_REACTION == gr_sbo: if GROUP_TYPE_EQUIV == gr_type: for r_id in gr_members: r_id2g_id[r_id] = gr_id, gr_name, len(gr_members) elif SBO_CHEMICAL_MACROMOLECULE == gr_sbo: if GROUP_TYPE_UBIQUITOUS == gr_type: ub_sps = set(gr_members) elif GROUP_TYPE_EQUIV == gr_type: for s_id in gr_members: term = get_chebi_term_by_annotation(group, chebi) s_id2gr_id[s_id] = gr_id, term if term else gr_name, len(gr_members) else: raise GrPlError() return r_id2g_id, s_id2gr_id, ub_sps
def parse_group_sbml(groups_sbml, chebi): doc = libsbml.SBMLReader().readSBMLFromFile(groups_sbml) groups_model = doc.getModel() groups_plugin = groups_model.getPlugin("groups") r_id2g_id, s_id2gr_id, ub_sps = {}, {}, set() if groups_plugin: for group in groups_plugin.getListOfGroups(): gr_members = [it.getIdRef() for it in group.getListOfMembers()] gr_id, gr_name = group.getId(), group.getName() gr_sbo = group.getSBOTermID() gr_type = next(get_annotations(group, libsbml.BQB_IS_DESCRIBED_BY), None) if not gr_type: continue if SBO_BIOCHEMICAL_REACTION == gr_sbo: if GROUP_TYPE_EQUIV == gr_type: for r_id in gr_members: r_id2g_id[r_id] = gr_id, gr_name, len(gr_members) elif SBO_CHEMICAL_MACROMOLECULE == gr_sbo: if GROUP_TYPE_UBIQUITOUS == gr_type: ub_sps = set(gr_members) elif GROUP_TYPE_EQUIV == gr_type: for s_id in gr_members: term = get_chebi_term_by_annotation(group, chebi) s_id2gr_id[s_id] = gr_id, term if term else gr_name, len(gr_members) else: raise GrPlError() return r_id2g_id, s_id2gr_id, ub_sps
def check_for_groups(groups_sbml, sbo_term, group_type): doc = libsbml.SBMLReader().readSBMLFromFile(groups_sbml) groups_plugin = doc.getModel().getPlugin("groups") if groups_plugin: for group in groups_plugin.getListOfGroups(): gr_sbo = group.getSBOTermID() gr_type = next(get_annotations(group, libsbml.BQB_IS_DESCRIBED_BY), None) if sbo_term == gr_sbo and group_type == gr_type: return True return False
def check_for_groups(groups_sbml, sbo_term, group_type): doc = libsbml.SBMLReader().readSBMLFromFile(groups_sbml) groups_plugin = doc.getModel().getPlugin("groups") if groups_plugin: for group in groups_plugin.getListOfGroups(): gr_sbo = group.getSBOTermID() gr_type = next(get_annotations(group, libsbml.BQB_IS_DESCRIBED_BY), None) if sbo_term == gr_sbo and group_type == gr_type: return True return False