Exemplo n.º 1
0
import MEGA
from MEGA import GO
import pickle
import bz2

onts = {}
isa = {}
levels = {}
namespaces = {}
for rec in GO.parse(bz2.open(MEGA.GOFile, 'rt', encoding='utf-8')):
    id = rec["id"][0]
    onts[id] = rec
    namespaces.setdefault(rec["namespace"][0], []).append(id)
    if "is_a" in rec:
        for ref in rec["is_a"]:
            isa.setdefault(id, []).append(ref[0])
    else:
        levels[id] = {0: set()}

cisa = dict(isa)
while len(cisa) > 0:
    dels = []
    for id, owners in list(cisa.items()):
        levels.setdefault(id, {})
        for owner in owners:
            if owner not in cisa:
                ownerLevels = list(levels[owner].keys())
                for level in ownerLevels:
                    levels[id].setdefault(level + 1, set()).add(owner)
                cisa[id].remove(owner)
        if len(cisa[id]) == 0: