def go_gene_sets(tax_id: str) -> None: domain = 'go' ontology = go.Ontology(filename=f'{data_path}/{domain}/gene_ontology.obo') annotations = go.Annotations(tax_id, filename=f'{data_path}/{domain}/{tax_id}.tab', ontology=ontology) def to_gene_set(term: go.Term) -> Optional[GeneSet]: genes = annotations.get_genes_by_go_term(term.id) if len(genes) > 0: return GeneSet( gs_id=term.id, name=term.name, genes=set(genes), hierarchy=('GO', term.namespace), organism=tax_id, link=f'http://amigo.geneontology.org/amigo/term/{term.id}') gene_sets = GeneSets([ gs for gs in [to_gene_set(term) for term in ontology.terms.values()] if gs is not None ]) for gs_group in gene_sets.split_by_hierarchy(): hierarchy = gs_group.common_hierarchy() gs_group.to_gmt_file_format( f'{data_path}/gene_sets/{filename(hierarchy, tax_id)}')
def go_gene_sets(org): """ Returns gene sets from GO. """ ontology = go.Ontology() annotations = go.Annotations(org, ontology=ontology) gene_sets = [] for termn, term in ontology.terms.items(): genes = annotations.get_genes_by_go_term(termn) hier = ('GO', term.namespace) if len(genes) > 0: gs = GeneSet(gs_id=termn, name=term.name, genes=genes, hierarchy=hier, organism=org, link=GO_TERM_LINK.format(termn)) gene_sets.append(gs) return GeneSets(gene_sets)
def Load(self): a = self.available_annotations[self.annotation_index] if self.ontology is None: self.ontology = go.Ontology() if a.taxid != self.loaded_annotation_code: self.annotations = None gc.collect() # Force run garbage collection self.annotations = go.Annotations(a.taxid) self.loaded_annotation_code = a.taxid count = defaultdict(int) geneSets = defaultdict(set) for anno in self.annotations.annotations: count[anno.evidence] += 1 geneSets[anno.evidence].add(anno.gene_id) for etype in go.evidenceTypesOrdered: ecb = self.evidenceCheckBoxDict[etype] ecb.setEnabled(bool(count[etype])) ecb.setText(etype + ": %i annots(%i genes)" % (count[etype], len(geneSets[etype])))
from orangecontrib.bioinformatics import go ontology = go.Ontology() annotations = go.Annotations("4932", ontology=ontology) # keys are symbol names, values are Entrez IDs genes_ids = {'Yta7p': '853186', 'RPN2': '854735', 'RPT2': '851557'} res = annotations.get_enriched_terms(genes_ids.values()) print(res) print("Enriched terms:") for go_id, (genes, p_value, ref) in res.items(): if p_value < 0.05: print(ontology[go_id].name + " with p-value: %.4f " % p_value + ", ".join(genes)) # And again for slims annotations.ontology.set_slims_subset('goslim_yeast') res = annotations.get_enriched_terms(genes_ids.values(), slims_only=True) print("\n\nEnriched slim terms:") for go_id, (genes, p_value, _) in res.items(): if p_value < 0.2: print(ontology[go_id].name + " with p-value: %.4f " % p_value + ", ".join(genes))