71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
import logging
|
|
import os
|
|
import shutil
|
|
import sys
|
|
from pathlib import Path
|
|
from time import gmtime
|
|
from typing import Any, Final
|
|
|
|
import py4cytoscape as p4c
|
|
|
|
from lang_main.io import load_toml_config
|
|
|
|
# ** py4cytoscape config
|
|
p4c.set_summary_logger(False)
|
|
p4c.py4cytoscape_logger.detail_logger.setLevel('ERROR')
|
|
p4c.py4cytoscape_logger.detail_logger.removeHandler(p4c.py4cytoscape_logger.detail_handler)
|
|
p4c.py4cytoscape_logger.detail_logger.addHandler(logging.NullHandler())
|
|
|
|
# ** lang-main config
|
|
logging.Formatter.converter = gmtime
|
|
LOG_FMT: Final[str] = '%(asctime)s | %(module)s:%(levelname)s | %(message)s'
|
|
LOG_DATE_FMT: Final[str] = '%Y-%m-%d %H:%M:%S +0000'
|
|
logging.basicConfig(
|
|
stream=sys.stdout,
|
|
format=LOG_FMT,
|
|
datefmt=LOG_DATE_FMT,
|
|
)
|
|
|
|
CONFIG_FILENAME: Final[str] = 'lang_main_config.toml'
|
|
CYTO_STYLESHEET_FILENAME: Final[str] = r'cytoscape_config/lang_main.xml'
|
|
USE_INTERNAL_CONFIG: Final[bool] = False
|
|
pkg_dir = Path(__file__).parent
|
|
cfg_path_internal = (pkg_dir / CONFIG_FILENAME).resolve()
|
|
cyto_stylesheet_path = (pkg_dir / CYTO_STYLESHEET_FILENAME).resolve()
|
|
|
|
# ** load config data: internal/external
|
|
if USE_INTERNAL_CONFIG:
|
|
loaded_cfg = load_toml_config(path_to_toml=cfg_path_internal)
|
|
else:
|
|
cfg_path_external = (Path.cwd() / CONFIG_FILENAME).resolve()
|
|
if not cfg_path_external.exists():
|
|
shutil.copy(cfg_path_internal, cfg_path_external)
|
|
sys.exit(
|
|
(
|
|
'No config file was found. A new one with default values was created '
|
|
'in the execution path. Please fill in the necessary values and '
|
|
'restart the programm.'
|
|
)
|
|
)
|
|
# raise NotImplementedError("External config data not implemented yet.")
|
|
loaded_cfg = load_toml_config(path_to_toml=cfg_path_external)
|
|
|
|
CONFIG: Final[dict[str, Any]] = loaded_cfg.copy()
|
|
|
|
# ** Cytoscape configuration
|
|
# stylesheet
|
|
if not cyto_stylesheet_path.exists():
|
|
raise FileNotFoundError(
|
|
f'Visual stylesheet for Cytoscape not found under: >>{cyto_stylesheet_path}<<'
|
|
)
|
|
|
|
CYTO_PATH_STYLESHEET: Final[Path] = cyto_stylesheet_path
|
|
|
|
|
|
# TODO check removal
|
|
# append Graphviz binary folder to system path if not already contained
|
|
if sys.platform == 'win32':
|
|
path = Path(r'C:\Program Files\Graphviz\bin')
|
|
if path.is_dir() and str(path).lower() not in os.environ['PATH'].lower():
|
|
os.environ['PATH'] += f';{path}'
|