def fetchKegg(project): from ductape.kegg.kegg import KeggNet, KeggAPI from ductape.terminal import RunThread # Check if we have to fetch the whole kegg DB fetch = False proj = Project(project) k = KeggAPI() try: k.getDBVersion() release = k.result[1] except Exception as e: logger.warning("Could not fetch the KEGG DB version (%s)" % str(e)) release = None if proj.isKegg(): if release and proj.kegg < release: logger.warning("A new KEGG DB version is available (%s, was %s)" % (str(release), str(proj.kegg))) fetch = True else: fetch = True if fetch: logger.info("Fetching the whole KEGG metabolic map") if release: logger.info("KEGG DB release %s" % str(release)) kegg = Kegg(project) avoid = [kid for kid in kegg.getAllIDs()] knet = KeggNet(avoid=avoid) if not RunThread(knet): return False # Details kegg.addPathways(knet.result.path) logger.info("Added %d Path IDs" % len(knet.result.path)) kegg.addReactions(knet.result.react) logger.info("Added %d Re IDs" % len(knet.result.react)) kegg.addCompounds(knet.result.comp) logger.info("Added %d Co IDs" % len(knet.result.comp)) kegg.addRPairs(knet.result.rpair) logger.info("Added %d RPair IDs" % len(knet.result.rpair)) # Links kegg.addPathReacts(knet.result.pathreact) kegg.addReactComps(knet.result.reactcomp) kegg.addCompReacts(knet.result.compreact) kegg.addPathComps(knet.result.pathcomp) kegg.addReactRPairs(knet.result.reactrpair) kegg.addRPairReacts(knet.result.rpairreact) logger.info("Added Kegg links") # HTML maps kegg.addPathHtml(knet.result.pathmaps) logger.info("Added Kegg maps") # Add the release version if release: proj.setKegg(release) else: logger.info("KEGG db is up-to-date")