Source code for graphdot.graph.reorder.pbr.config

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tempfile
import contextlib


default_config = {
    # general
    'mode': 'recursive',
    'objective': 'cut',
    'seed': -1,
    'cmaxnet': -1,
    'vcycles': 0,
    # main -> preprocessing -> min hash sparsifier
    'p-use-sparsifier': 'false',
    # main -> preprocessing -> community detection
    'p-detect-communities': 'false',
    # main -> coarsening
    'c-type': 'heavy_lazy',
    'c-s': 3.25,
    'c-t': 160,
    # main -> coarsening -> rating
    'c-rating-score': 'heavy_edge',
    'c-rating-use-communities': 'false',
    'c-rating-heavy_node_penalty': 'no_penalty',
    'c-rating-acceptance-criterion': 'best',
    'c-fixed-vertex-acceptance-criterion': 'fixed_vertex_allowed',
    # main -> initial partitioning
    # 'i-mode': 'recursive',
    # 'i-technique': 'multi',
    'i-mode': 'direct',
    'i-technique': 'flat',
    # initial partitioning -> coarsening
    # 'i-c-type': 'ml_style',
    # 'i-c-s': 1,
    # 'i-c-t': 150,
    # initial partitioning -> coarsening -> rating
    # 'i-c-rating-score': 'heavy_edge' ,
    # 'i-c-rating-use-communities': 'true',
    # 'i-c-rating-heavy_node_penalty': 'no_penalty',
    # 'i-c-rating-acceptance-criterion': 'best_prefer_unmatched',
    # 'i-c-fixed-vertex-acceptance-criterion': 'fixed_vertex_allowed',
    # initial partitioning -> initial partitioning
    'i-algo': 'pool',
    'i-runs': 20,
    # initial partitioning -> local search
    'i-r-type': 'twoway_fm',
    'i-r-runs': -1,
    'i-r-fm-stop': 'simple',
    'i-r-fm-stop-i': 50,
    # main -> local search
    'r-type': 'twoway_fm',
    'r-runs': -1,
    'r-fm-stop': 'simple',
    'r-fm-stop-alpha': 1,
    'r-fm-stop-i': 350,
}


[docs]@contextlib.contextmanager def to_ini(config=None): '''Converts a dictionary-based configuration set to an .ini file so that it can be loaded by Kahypar's C extension module. Parameters ---------- config: dict Key-value pairs as appears in https://github.com/kahypar/kahypar/tree/master/config. ''' config = config if config is not None else default_config try: f = tempfile.NamedTemporaryFile(buffering=0) s = '\n'.join([f'{key}={value}' for key, value in config.items()]) f.write(s.encode()) yield f.name finally: pass