"""
This module contains some useful methods
"""
import logging
from collections import defaultdict
from datetime import datetime
from ago import human
from os.path import exists
from oncodrivefml import __logger_name__
logger = logging.getLogger(__logger_name__)
[docs]def executor_run(executor):
"""
Method to call the run method
Args:
executor (:class:`~oncodrivefml.executors.bymutation.ElementExecutor`):
Returns:
:meth:`~oncodrivefml.executors.bymutation.ElementExecutor.run`
"""
return executor.run()
[docs]def defaultdict_list():
"""
Shortcut
Returns:
:class:`~collections.defaultdict` of :obj:`list`
"""
return defaultdict(list)
[docs]def loop_logging(iterable, size=None, step=1):
"""
Loop through an iterable object displaying messages
using :func:`~logging.info`
Args:
iterable:
size (int): Defaults to None.
step (int): Defaults to 1.
Yields:
The iterable element
"""
if size is None:
size = len(iterable)
i = 0
start_time = datetime.now()
for i, value in enumerate(iterable):
if i % step == 0:
logger.info("[%d of %d]", i+1, size)
yield value
logger.info("[%d of %d]", i+1, size)
logger.debug("Time: %s", human(start_time))
[docs]def exists_path(path):
return False if path is None else exists(path)