Source code for abed.init

"""
Functions for creating a skeleton config file

"""

import os

from .constants import (
    CONFIG_FILENAME,
    DATASET_DIRNAME,
    EXECS_DIRNAME,
    TASKS_FILENAME,
    AUTO_FILENAME,
)
from .io import info
from .utils import mkdir, touch


[docs]def init_config(): txt = """ ############################################################################## # General Settings # ############################################################################## PROJECT_NAME = '' TASK_FILE = '{task_file}' AUTO_FILE = '{auto_file}' RESULT_DIR = '/path/to/local/results' STAGE_DIR = '/path/to/local/stagedir' MAX_FILES = 1000 ZIP_DIR = './zips' LOG_DIR = './logs' OUTPUT_DIR = './output' AUTO_SLEEP = 120 HTML_PORT = 8000 COMPRESSION = 'bzip2' RESULT_EXTENSION = '.txt' ############################################################################## # Server parameters and settings # ############################################################################## REMOTE_USER = 'username' REMOTE_HOST = 'address.of.host' REMOTE_DIR = '/home/%s/projects/%s' % (REMOTE_USER, PROJECT_NAME) REMOTE_PORT = 22 REMOTE_SCRATCH = None REMOTE_SCRATCH_ENV = 'TMPDIR' ############################################################################## # Settings for Master/Worker program # ############################################################################## MW_SENDATONCE = 100 # number of tasks (hashes!) to send at once MW_COPY_WORKER = False MW_COPY_SLEEP = 120 MW_NUM_WORKERS = None ############################################################################## # Experiment type # ############################################################################## # Uncomment the desired type # Model assessment # #TYPE = 'ASSESS' # Cross validation with train and test dataset # #TYPE = 'CV_TT' #CV_BASESEED = 123456 #YTRAIN_LABEL = 'y_train' # Commands defined in a text file # #TYPE = 'RAW' #RAW_CMD_FILE = '/path/to/file.txt' ############################################################################## # Build settings # ############################################################################## NEEDS_BUILD = False # If remote compilation is required BUILD_DIR = 'build' # Relative directory where build takes place BUILD_CMD = 'make all' # Build command ############################################################################## # Experiment parameters and settings # ############################################################################## DATADIR = '{data_dir}' EXECDIR = '{exec_dir}' DATASETS = ['dataset_1', 'dataset_2'] DATASET_NAMES = {{k:str(i) for i, k in enumerate(DATASETS)}} METHODS = ['method_1', 'method_2'] PARAMS = {{ 'method_1': {{ 'param_1': [val_1, val_2], 'param_2': [val_3, val_4], 'param_3': [val_5, val_6] }}, 'method_2': {{ 'param_1': [val_1, val_2, val_3], }}, }} COMMANDS = {{ 'method_1': ("{{execdir}}/method_1 {{datadir}}/{{dataset}} {{param_1}} " "{{param_2}} {{param_3}}"), 'method_2': "{{execdir}}/method_2 {{datadir}}/{{dataset}} {{param_1}}" }} METRICS = {{ 'NAME_1': {{ 'metric': metric_function_1, 'best': max }}, 'NAME_2': {{ 'metric': metric_function_2, 'best': min }} }} SCALARS = {{ 'time': {{ 'best': min }}, }} RESULT_PRECISION = 4 DATA_DESCRIPTION_CSV = None REFERENCE_METHOD = None SIGNIFICANCE_LEVEL = 0.05 ############################################################################### # PBS Settings # ############################################################################### PBS_NODES = 1 PBS_WALLTIME = 360 # Walltime in minutes PBS_CPUTYPE = None PBS_CORETYPE = None PBS_PPN = None PBS_MODULES = ['mpicopy', 'python/2.7.9'] PBS_EXPORTS = ['PATH=$PATH:/home/%s/.local/bin/abed' % REMOTE_USER] PBS_MPICOPY = ['{data_dir}', '{exec_dir}', TASK_FILE] PBS_TIME_REDUCE = 600 # Reduction of runtime in seconds PBS_LINES_BEFORE = [] PBS_LINES_AFTER = [] """.format( task_file=TASKS_FILENAME, auto_file=AUTO_FILENAME, data_dir=DATASET_DIRNAME, exec_dir=EXECS_DIRNAME, ) configfile = os.path.join(os.getcwd(), CONFIG_FILENAME) with open(configfile, "w") as fid: fid.write(txt) mkdir(os.path.join(os.getcwd(), DATASET_DIRNAME)) mkdir(os.path.join(os.getcwd(), EXECS_DIRNAME)) touch(AUTO_FILENAME) touch(TASKS_FILENAME) info("Initialized new Abed project in %s." % os.getcwd())