res_reg_lmnt_awikner.start_deepthought2_run

  1import numpy as np
  2import os
  3import subprocess
  4import re
  5import time
  6
  7def start_deepthought2_run(system = 'KS', traintype = 'normal', noisetype = 'gaussian', \
  8        noise_realizations = 1, res_size = 500, trainlen = 3000, testlen = 0, rho = 0.5, sigma = 1.0,\
  9        leakage = 1.0, tau = 0.25, win_type = 'full', bias_type = 'old',\
 10        noise_values_array = np.logspace(-3, 0, num = 19, base = 10)[5:11], \
 11        alpha_values = np.append(0., np.logspace(-7, -3, 9)), num_res = 3,\
 12        num_trains = 4, num_tests = 4, metric = 'mss_var', machine = 'deepthought2', \
 13        returnall = False, savepred = False, squarenodes = False, savetime = False, max_valid_time = 500, \
 14        debug = False, num_nodes = 4, cpus_per_node = None, runtime = '2:00:00', \
 15        account = 'physics-hi',debug_part = False, just_process = False, parallel = True,\
 16        res_start = 0, train_start = 0, test_start = 0, \
 17        import_res = False, import_train = False, import_test = False,\
 18        import_noise = False, reg_train_times = None, discard_time = 500, prior = 'zero',\
 19        save_eigenvals = False, pmap = False):
 20
 21    if isinstance(reg_train_times, np.ndarray) or isinstance(reg_train_times, list):
 22        reg_train_times_str = '%d' % reg_train_times[0]
 23        for reg_train_time in reg_train_times[1:]:
 24            reg_train_times_str += ',%d' % reg_train_time
 25    else:
 26        reg_train_times_str = 'None'
 27
 28    noise_values_str = '%e' % noise_values_array[0]
 29    for noise in noise_values_array[1:]:
 30        noise_values_str += ',%e' % noise
 31
 32    reg_values_str = '%e' % alpha_values[0]
 33    for reg in alpha_values[1:]:
 34        reg_values_str += ',%e' % reg
 35
 36    if isinstance(cpus_per_node, int):
 37        cpus_str = '--cpus-per-node=%d' % cpus_per_node
 38    else:
 39        cpus_str = ''
 40
 41    if debug_part:
 42        debug_part_str = '-p debug'
 43    else:
 44        debug_part_str = ''
 45
 46    if savepred:
 47        savepred_str = 'True'
 48    else:
 49        savepred_str = 'False'
 50
 51    if returnall:
 52        returnall_str = 'True'
 53    else:
 54        returnall_str = 'False'
 55    if save_eigenvals:
 56        save_eigenvals_str = 'True'
 57    else:
 58        save_eigenvals_str = 'False'
 59
 60    if debug:
 61        debug_str = 'True'
 62    else:
 63        debug_str ='False'
 64
 65    if savetime:
 66        savetime_str = 'True'
 67    else:
 68        savetime_str = 'False'
 69
 70    if parallel:
 71        parallel_str = 'True'
 72        parallel_str_bash = 'true'
 73    else:
 74        parallel_str = 'False'
 75        parallel_str_bash = 'false'
 76
 77    if squarenodes:
 78        squarenodes_str = 'True'
 79    else:
 80        squarenodes_str = 'False'
 81
 82    if pmap:
 83        pmap_str = 'True'
 84    else:
 85        pmap_str = 'False'
 86
 87    if import_res:
 88        import_res_str = 'True'
 89    else:
 90        import_res_str = 'False'
 91
 92    if import_train:
 93        import_train_str = 'True'
 94    else:
 95        import_train_str = 'False'
 96
 97    if import_test:
 98        import_test_str = 'True'
 99    else:
100        import_test_str = 'False'
101
102    if import_noise:
103        import_noise_str = 'True'
104    else:
105        import_noise_str = 'False'
106
107
108
109    testname = '%s_%s_%s_%d_%dnodes_%dtrain_rho%0.1f_sigma%0.1e_leakage%0.1f_tau%0.3f' % \
110            (system, traintype, noisetype, noise_realizations, res_size, trainlen, rho, sigma, leakage,  tau)
111    options_str = '--savepred=%s --system=%s --noisetype=%s --traintype=%s -r %d --rho=%f --sigma=%f --leakage=%f --win_type=%s --bias_type=%s --tau=%f -N %d -T %d --testtime=%d --res=%d --tests=%d --trains=%d --debug=%s --squarenodes=%s --metric=%s --returnall=%s --savetime=%s --noisevals=%s --regvals=%s --maxvt=%d --machine=%s --parallel=%s --resstart=%d --trainstart=%d --teststart=%d --importres=%s --importtrain=%s --importtest=%s --importnoise=%s --regtraintimes=%s --discardlen=%d --prior=%s --saveeigenvals=%s --pmap=%s' % (savepred_str, system, noisetype, traintype, noise_realizations,  rho,sigma, leakage, win_type, bias_type, tau, res_size, trainlen, testlen, num_res, num_tests, num_trains, debug_str, squarenodes_str, metric, returnall_str, savetime_str, noise_values_str, reg_values_str, max_valid_time, machine, parallel_str, res_start, train_start, test_start, import_res_str, import_train_str, import_test_str, import_noise_str, reg_train_times_str, discard_time, prior,save_eigenvals_str, pmap_str)
112    input_str = 'python slurm-launch.py --ifray %s --exp-name %s --command "python -u reservoir_train_test.py %s" --num-nodes %d %s --load-env "conda activate res39" -t %s -A %s %s' % (parallel_str_bash, testname, options_str, num_nodes, cpus_str, runtime, account, debug_part_str)
113    print(input_str)
114    run_out = subprocess.check_output(input_str, shell=True)
115    time.sleep(1)
116
117    log_file = re.search('log_files/(.*).log', str(run_out))
118    time_str = log_file.group(1)[-11:]
119
120    job_id = str(run_out)[-11:-3]
121    if just_process:
122        os.system('scancel %s' % job_id)
123    template = open('data_scripts/process_test_data.py', 'r')
124    lines = template.readlines()
125    template.close()
126
127    script_name = 'data_scripts/process_test_data_%s.py' % job_id
128    log_name = '%s_%s_process_data' % (testname, time_str)
129    script = open(script_name, 'w')
130    for line in lines:
131        if '#SBATCH -t ' in line and debug_part:
132            debug_part = False
133            script.write('#SBATCH -p debug\n')
134            script.write('#SBATCH -t 15:00\n')
135        elif just_process and '{{JOB_ID}}' in line:
136            pass
137        else:
138            script.write(line.replace('{{JOB_ID}}',job_id).replace('{{JOB_NAME}}', log_name).replace('{{ACCOUNT}}', account))
139    script.close()
140
141    os.system('sbatch %s %s' % (script_name, options_str))
142
143    time.sleep(1)
def start_deepthought2_run( system='KS', traintype='normal', noisetype='gaussian', noise_realizations=1, res_size=500, trainlen=3000, testlen=0, rho=0.5, sigma=1.0, leakage=1.0, tau=0.25, win_type='full', bias_type='old', noise_values_array=array([0.00681292, 0.01 , 0.01467799, 0.02154435, 0.03162278, 0.04641589]), alpha_values=array([0.00000000e+00, 1.00000000e-07, 3.16227766e-07, 1.00000000e-06, 3.16227766e-06, 1.00000000e-05, 3.16227766e-05, 1.00000000e-04, 3.16227766e-04, 1.00000000e-03]), num_res=3, num_trains=4, num_tests=4, metric='mss_var', machine='deepthought2', returnall=False, savepred=False, squarenodes=False, savetime=False, max_valid_time=500, debug=False, num_nodes=4, cpus_per_node=None, runtime='2:00:00', account='physics-hi', debug_part=False, just_process=False, parallel=True, res_start=0, train_start=0, test_start=0, import_res=False, import_train=False, import_test=False, import_noise=False, reg_train_times=None, discard_time=500, prior='zero', save_eigenvals=False, pmap=False):
  8def start_deepthought2_run(system = 'KS', traintype = 'normal', noisetype = 'gaussian', \
  9        noise_realizations = 1, res_size = 500, trainlen = 3000, testlen = 0, rho = 0.5, sigma = 1.0,\
 10        leakage = 1.0, tau = 0.25, win_type = 'full', bias_type = 'old',\
 11        noise_values_array = np.logspace(-3, 0, num = 19, base = 10)[5:11], \
 12        alpha_values = np.append(0., np.logspace(-7, -3, 9)), num_res = 3,\
 13        num_trains = 4, num_tests = 4, metric = 'mss_var', machine = 'deepthought2', \
 14        returnall = False, savepred = False, squarenodes = False, savetime = False, max_valid_time = 500, \
 15        debug = False, num_nodes = 4, cpus_per_node = None, runtime = '2:00:00', \
 16        account = 'physics-hi',debug_part = False, just_process = False, parallel = True,\
 17        res_start = 0, train_start = 0, test_start = 0, \
 18        import_res = False, import_train = False, import_test = False,\
 19        import_noise = False, reg_train_times = None, discard_time = 500, prior = 'zero',\
 20        save_eigenvals = False, pmap = False):
 21
 22    if isinstance(reg_train_times, np.ndarray) or isinstance(reg_train_times, list):
 23        reg_train_times_str = '%d' % reg_train_times[0]
 24        for reg_train_time in reg_train_times[1:]:
 25            reg_train_times_str += ',%d' % reg_train_time
 26    else:
 27        reg_train_times_str = 'None'
 28
 29    noise_values_str = '%e' % noise_values_array[0]
 30    for noise in noise_values_array[1:]:
 31        noise_values_str += ',%e' % noise
 32
 33    reg_values_str = '%e' % alpha_values[0]
 34    for reg in alpha_values[1:]:
 35        reg_values_str += ',%e' % reg
 36
 37    if isinstance(cpus_per_node, int):
 38        cpus_str = '--cpus-per-node=%d' % cpus_per_node
 39    else:
 40        cpus_str = ''
 41
 42    if debug_part:
 43        debug_part_str = '-p debug'
 44    else:
 45        debug_part_str = ''
 46
 47    if savepred:
 48        savepred_str = 'True'
 49    else:
 50        savepred_str = 'False'
 51
 52    if returnall:
 53        returnall_str = 'True'
 54    else:
 55        returnall_str = 'False'
 56    if save_eigenvals:
 57        save_eigenvals_str = 'True'
 58    else:
 59        save_eigenvals_str = 'False'
 60
 61    if debug:
 62        debug_str = 'True'
 63    else:
 64        debug_str ='False'
 65
 66    if savetime:
 67        savetime_str = 'True'
 68    else:
 69        savetime_str = 'False'
 70
 71    if parallel:
 72        parallel_str = 'True'
 73        parallel_str_bash = 'true'
 74    else:
 75        parallel_str = 'False'
 76        parallel_str_bash = 'false'
 77
 78    if squarenodes:
 79        squarenodes_str = 'True'
 80    else:
 81        squarenodes_str = 'False'
 82
 83    if pmap:
 84        pmap_str = 'True'
 85    else:
 86        pmap_str = 'False'
 87
 88    if import_res:
 89        import_res_str = 'True'
 90    else:
 91        import_res_str = 'False'
 92
 93    if import_train:
 94        import_train_str = 'True'
 95    else:
 96        import_train_str = 'False'
 97
 98    if import_test:
 99        import_test_str = 'True'
100    else:
101        import_test_str = 'False'
102
103    if import_noise:
104        import_noise_str = 'True'
105    else:
106        import_noise_str = 'False'
107
108
109
110    testname = '%s_%s_%s_%d_%dnodes_%dtrain_rho%0.1f_sigma%0.1e_leakage%0.1f_tau%0.3f' % \
111            (system, traintype, noisetype, noise_realizations, res_size, trainlen, rho, sigma, leakage,  tau)
112    options_str = '--savepred=%s --system=%s --noisetype=%s --traintype=%s -r %d --rho=%f --sigma=%f --leakage=%f --win_type=%s --bias_type=%s --tau=%f -N %d -T %d --testtime=%d --res=%d --tests=%d --trains=%d --debug=%s --squarenodes=%s --metric=%s --returnall=%s --savetime=%s --noisevals=%s --regvals=%s --maxvt=%d --machine=%s --parallel=%s --resstart=%d --trainstart=%d --teststart=%d --importres=%s --importtrain=%s --importtest=%s --importnoise=%s --regtraintimes=%s --discardlen=%d --prior=%s --saveeigenvals=%s --pmap=%s' % (savepred_str, system, noisetype, traintype, noise_realizations,  rho,sigma, leakage, win_type, bias_type, tau, res_size, trainlen, testlen, num_res, num_tests, num_trains, debug_str, squarenodes_str, metric, returnall_str, savetime_str, noise_values_str, reg_values_str, max_valid_time, machine, parallel_str, res_start, train_start, test_start, import_res_str, import_train_str, import_test_str, import_noise_str, reg_train_times_str, discard_time, prior,save_eigenvals_str, pmap_str)
113    input_str = 'python slurm-launch.py --ifray %s --exp-name %s --command "python -u reservoir_train_test.py %s" --num-nodes %d %s --load-env "conda activate res39" -t %s -A %s %s' % (parallel_str_bash, testname, options_str, num_nodes, cpus_str, runtime, account, debug_part_str)
114    print(input_str)
115    run_out = subprocess.check_output(input_str, shell=True)
116    time.sleep(1)
117
118    log_file = re.search('log_files/(.*).log', str(run_out))
119    time_str = log_file.group(1)[-11:]
120
121    job_id = str(run_out)[-11:-3]
122    if just_process:
123        os.system('scancel %s' % job_id)
124    template = open('data_scripts/process_test_data.py', 'r')
125    lines = template.readlines()
126    template.close()
127
128    script_name = 'data_scripts/process_test_data_%s.py' % job_id
129    log_name = '%s_%s_process_data' % (testname, time_str)
130    script = open(script_name, 'w')
131    for line in lines:
132        if '#SBATCH -t ' in line and debug_part:
133            debug_part = False
134            script.write('#SBATCH -p debug\n')
135            script.write('#SBATCH -t 15:00\n')
136        elif just_process and '{{JOB_ID}}' in line:
137            pass
138        else:
139            script.write(line.replace('{{JOB_ID}}',job_id).replace('{{JOB_NAME}}', log_name).replace('{{ACCOUNT}}', account))
140    script.close()
141
142    os.system('sbatch %s %s' % (script_name, options_str))
143
144    time.sleep(1)