Skip to content
This repository has been archived by the owner on Sep 7, 2022. It is now read-only.

Commit

Permalink
Update bio_2_bel_utils.py
Browse files Browse the repository at this point in the history
  • Loading branch information
cthoyt committed Nov 20, 2018
1 parent 26f464c commit 5551dca
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions src/biokeen/cli_utils/bio_2_bel_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,43 +44,47 @@ def _import_bio2bel_module(name: str):

def install_bio2bel_module(name, connection, rebuild):
"""Install Bio2BEL module."""
bio2bel_module_name = f"bio2bel_{name}"
if name == 'compath': # special case for compath
module_name = 'compath_resources'
else:
module_name = f"bio2bel_{name}"

pykeen_df_path = os.path.join(DATA_DIR, f'{name}.keen.tsv')
pickle_path = os.path.join(DATA_DIR, f'{name}.bel.pickle')

if os.path.exists(pykeen_df_path) and not rebuild:
click.secho(f'{EMOJI} {bio2bel_module_name} has already been retrieved. See: {pykeen_df_path}', bold=True)
click.secho(f'{EMOJI} {module_name} has already been retrieved. See: {pykeen_df_path}', bold=True)
return pykeen_df_path

if os.path.exists(pickle_path):
click.secho(f'{EMOJI} loaded {bio2bel_module_name} pickle: {pickle_path}', bold=True)
click.secho(f'{EMOJI} loaded {module_name} pickle: {pickle_path}', bold=True)
graph = from_pickle(pickle_path)
to_pykeen_file(graph, pykeen_df_path)
return pykeen_df_path

bio2bel_module = _import_bio2bel_module(name)
click.secho(f'{EMOJI} imported {bio2bel_module_name}', bold=True)
click.secho(f'{EMOJI} imported {module_name}', bold=True)

manager_cls = bio2bel_module.Manager

if not issubclass(manager_cls, BELManagerMixin):
click.secho(f'{EMOJI} {bio2bel_module_name} does not produce BEL', bold=True, fg='red')
click.secho(f'{EMOJI} {module_name} does not produce BEL', bold=True, fg='red')
sys.exit(1)

manager = manager_cls(connection=connection)

if issubclass(manager_cls, AbstractManager):
if not manager.is_populated():
click.secho(f'{EMOJI} populating {bio2bel_module_name}', bold=True)
click.secho(f'{EMOJI} populating {module_name}', bold=True)
manager.populate()
else:
click.secho(f'{EMOJI} {bio2bel_module_name} has already been populated', bold=True)
click.secho(f'{EMOJI} {module_name} has already been populated', bold=True)

click.secho(f'{EMOJI} generating BEL for {bio2bel_module_name}', bold=True)
click.secho(f'{EMOJI} generating BEL for {module_name}', bold=True)
graph = manager.to_bel()
click.echo(f'Summary: {graph.number_of_nodes()} nodes / {graph.number_of_edges()} edges')
to_pickle(graph, pickle_path)
click.secho(f'{EMOJI} generating PyKEEN TSV for {bio2bel_module_name}', bold=True)
click.secho(f'{EMOJI} generating PyKEEN TSV for {module_name}', bold=True)
to_pykeen_file(graph, pykeen_df_path)

return pykeen_df_path

0 comments on commit 5551dca

Please sign in to comment.