def _get_react_name_by_kegg_react_id(react_id): if not react_id.startswith('rn:'): react_id = 'rn:' + react_id try: name, equ = KeggReaction.infos_by_id()[react_id] return name except KeyError: return react_id + ' (can not map kegg id)'
def populate_kegg_reactions_table(): """ TODO use sqlite3 std lib to use bulk insert takes too long... """ import bioservices logging.info('Getting all kegg reactions..') kegg = bioservices.KEGG() logging.info('Done.') r = kegg.list('reaction') reactions = r.strip().split('\n') logging.info('Begin insertion...') for react in reactions: react_id, plus = react.split('\t') p = plus.split(';') try: name, equation = p[0], p[1] except (ValueError, IndexError): name, equation = p[0], p[0] k = KeggReaction() k.id = react_id k.name = name k.organism = equation k.save() logging.info('Done.')