Loading obsolete GO terms

Obsolete GO terms are loaded upon request.

Relevant GODag arguments include:

  • load_obsolete=True

  • optional_attrs={‘consider’, ‘replaced_by’}

1) Download GO DAG file, go-basic.obo

from goatools.base import download_go_basic_obo
fin_dag = download_go_basic_obo("go-basic.obo")
requests.get(http://purl.obolibrary.org/obo/go/go-basic.obo, stream=True)
  WROTE: go-basic.obo

2) Read GO terms into a GODag instance: load_obsolete=True

from goatools.obo_parser import GODag

godag = GODag(fin_dag, load_obsolete=True)
go-basic.obo: fmt(1.2) rel(2020-09-10) 50,377 GO Terms

3) Load the optional GODag attributes, consider and replaced_by

godag = GODag(fin_dag, optional_attrs={'consider', 'replaced_by'}, load_obsolete=True)
go-basic.obo: fmt(1.2) rel(2020-09-10) 50,377 GO Terms; optional_attrs(consider replaced_by)

3a) How to suppress the GODag output messages

Set argument: prt=None.

godag = GODag(fin_dag, optional_attrs={'consider', 'replaced_by'}, load_obsolete=True, prt=None)

4) What GO term replaced the obsolete GO terms?

goterms_obsolete = set(o for o in godag.values() if o.is_obsolete)
print('{N:,} GO terms are obsolete'.format(N=len(goterms_obsolete)))

num = 1
for goterm in goterms_obsolete:
    if goterm.replaced_by[:3] == 'GO:':
        print('{I} {OLD} was replaced by {NEW}'.format(
            I=num, OLD=goterm.item_id, NEW=goterm.replaced_by))
        if num == 5:
            break
        num += 1
2,971 GO terms are obsolete
1 GO:0042142 was replaced by GO:0046911
2 GO:0006502 was replaced by GO:0018342
3 GO:0006503 was replaced by GO:0018343
4 GO:0006504 was replaced by GO:0018344
5 GO:0006510 was replaced by GO:0004176

5) What GO terms were considered?

num = 1
for goterm in goterms_obsolete:
    if goterm.consider:
        print('{I} Given {OLD}, consider {NEW}'.format(
            I=num, OLD=goterm.item_id, NEW=goterm.consider))
        if num == 5:
            break
        num += 1
1 Given GO:0006894, consider {'GO:0055107', 'GO:0055108'}
2 Given GO:0045757, consider {'GO:0030837', 'GO:0030835'}
3 Given GO:0052108, consider {'GO:0044117', 'GO:0044115'}
4 Given GO:0006815, consider {'GO:0006814', 'GO:0006813'}
5 Given GO:0006510, consider {'GO:0051603', 'GO:0016485', 'GO:0006508'}

Copyright (C) 2019-present, DV Klopfenstein and Haibao Tang. All rights reserved.