def callScaFES(T_blood=T_blood):

        global count
        global params
        count += 1

        print()
        print('##### ScaFES iteration: {} #####'.format(count))

        case = params['NAME_CONFIGFILE_TEMPLATE'].split('.')[0]
        case = case.split('_')[0]
        params['NAME_CONFIGFILE'] = case + '-pymc-' + TESTED_VARIABLES + '.ini'
        params['NAME_RESULTFILE'] = ''
        config = configparser.ConfigParser()
        config.optionxform = str
        config.read(params['NAME_CONFIGFILE_TEMPLATE'])
        # T_blood.
        config['Brain']['T_BLOOD'] = str(T_blood)
        config['Tumor']['T_BLOOD'] = str(T_blood)

        with open(params['NAME_CONFIGFILE'], 'w') as configfile:
            config.write(configfile)

        # Call simulation.
        parse_config_file(params)
        check_variables(params)
        calc_variables(params)
        check_stability(params)
        if params['USE_MRI_FILE'] == False:
            create_region_file(params)
        create_init_file(params)
        set_environment_variables(params)
        call_simulation(params, params['RUN_SCRIPT'])
        if params['NAME_RESULTFILE'] != '':
            # Compute temperatures of normal, tumor, vessel tisue.
            temp = temperature_array_from_result(params['NAME_RESULTFILE'])
            tumor = region_array_from_file(params['NAME_REGION_FILE'])
            vessels = surface_vessels_array_from_file(
                params['NAME_VESSELS_FILE'])

            T_tumor, _, _, _ = calc_tumor_near_surface_temperatures(
                temp, tumor)
            if params['USE_VESSELS_SEGMENTATION'] == True:
                temp = temp[-1, :, :]
                T_vessel, _, _, _ = calc_vessels_temperatures(temp, vessels)
                T_normal, _, _, _ = calc_non_vessels_temperatures(
                    temp, vessels)
            else:
                T_vessel = -1.0
                T_normal = -1.0
        else:
            print('* ERROR: No result file written.')
            print('Aborting.')
            exit()

        return [T_normal, T_tumor, T_vessel]
def main():
    params = {'NAME_CONFIGFILE': ''}
    params['NAME_RESULTFILE'] = ''
    # Check if path to configfile is provided and if file exists.
    if len(sys.argv) > 1:
        if os.path.isfile(sys.argv[1]) == True:
            params['NAME_CONFIGFILE'] = sys.argv[1]
            run_script = 'RUN_WEAK_SCALINGTEST_HELPER.sh'
        else:
            print('* ERROR:', sys.argv[1], 'does not exist.')
        if len(sys.argv) > 2:
            if os.path.isfile(sys.argv[2]) == True:
                run_script = sys.argv[2]
            else:
                print('* ERROR: Optional run script', sys.argv[2],
                      'does not exist.')
                print('Aborting.')
                exit()
    else:
        print('* ERROR: No command line argument for configfile provided.')

    if params['NAME_CONFIGFILE'] == '':
        print('Usage: python3', sys.argv[0],
              '<PATH/TO/CONFIGFILE> [<PATH/TO/RUN/SCRIPT]')
        print('Aborting.')
        exit()

    print('Start weak scaling test.')

    parse_config_file(params)
    parse_config_file_scaling(params)
    check_variables(params)
    check_variables_scaling(params)

    print('Type of test: {0}.'.format(params['TEST']))

    for factor in params['SCALING']:
        calc_variables(params)
        calc_variables_scaling(factor, params)
        check_stability(params)
        if params['CREATE_INITFILE'] == True:
            create_init_file(params)
        set_environment_variables(params)
        set_environment_variables_scaling(params)
        start_simulation(params, run_script)
        if params['NAME_RESULTFILE'] != '' and params['SPACE_DIM'] == 3:
            plot_surface(params['NAME_RESULTFILE'])

    print()
    print('Test finished.')
    def callScaFES(omega_brain=omega_brain,
                   omega_tumor=omega_tumor,
                   omega_vessel=omega_vessel,
                   T_blood=T_blood,
                   q_brain=q_brain,
                   q_tumor=q_tumor,
                   lambda_bt=lambda_bt,
                   rho_c_brain=rho_c_brain,
                   rho_c_tumor=rho_c_tumor,
                   h=h):

        global count
        global params
        count += 1

        print()
        print('##### ScaFES iteration: {} #####'.format(count))

        case = params['NAME_CONFIGFILE_TEMPLATE'].split('.')[0]
        case = case.split('_')[0]
        params['NAME_CONFIGFILE'] = case + '-pymc-' + TESTED_VARIABLES + '.ini'
        params['NAME_RESULTFILE'] = ''
        config = configparser.ConfigParser()
        config.optionxform = str
        config.read(params['NAME_CONFIGFILE_TEMPLATE'])
        # Omega.
        config['Brain']['OMEGA'] = str(omega_brain)
        config['Tumor']['OMEGA'] = str(omega_tumor)
        config['MRI']['USE_VESSELS_SEGMENTATION'] = 'True'
        config['MRI']['VARIABLES_VESSELS'] = 'omega'
        config['MRI']['VALUES_VESSELS'] = str(omega_vessel)
        config['MRI']['VALUES_NON_VESSELS'] = str(omega_brain)
        # T_blood.
        config['Brain']['T_BLOOD'] = str(T_blood)
        config['Tumor']['T_BLOOD'] = str(T_blood)
        # Q.
        config['Brain']['Q'] = str(q_brain)
        config['Tumor']['Q'] = str(q_tumor)
        # lambda.
        config['Brain']['LAMBDA'] = str(lambda_bt)
        config['Tumor']['LAMBDA'] = str(lambda_bt)
        # rho * c.
        config['Brain']['C'] = str(rho_c_brain)
        config['Brain']['RHO'] = str(1000.0)
        config['Tumor']['C'] = str(rho_c_tumor)
        config['Tumor']['RHO'] = str(1000.0)
        # h.
        config['Parameters']['H'] = str(h)

        with open(params['NAME_CONFIGFILE'], 'w') as configfile:
            config.write(configfile)

        # Call simulation.
        parse_config_file(params)
        check_variables(params)
        calc_variables(params)
        check_stability(params)
        if params['USE_MRI_FILE'] == False:
            create_region_file(params)
        create_init_file(params)
        set_environment_variables(params)
        call_simulation(params, params['RUN_SCRIPT'])
        if params['NAME_RESULTFILE'] != '':
            # Compute temperatures of normal, tumor, vessel tisue.
            temp = temperature_array_from_result(params['NAME_RESULTFILE'])
            tumor = region_array_from_file(params['NAME_REGION_FILE'])
            vessels = surface_vessels_array_from_file(
                params['NAME_VESSELS_FILE'])

            T_tumor, _, _, _ = calc_tumor_near_surface_temperatures(
                temp, tumor)
            if params['USE_VESSELS_SEGMENTATION'] == True:
                temp = temp[-1, :, :]
                T_vessel, _, _, _ = calc_vessels_temperatures(temp, vessels)
                T_normal, _, _, _ = calc_non_vessels_temperatures(
                    temp, vessels)
            else:
                T_vessel = -1.0
                T_normal = -1.0
        else:
            print('* ERROR: No result file written.')
            print('Aborting.')
            exit()

        global dat_file_name
        with open(dat_file_name, 'a') as backupfile:
            backupfile.write(str(omega_brain) + '\t' \
                             + str(omega_tumor) + '\t' \
                             + str(omega_vessel) + '\t' \
                             + str(T_blood) + '\t' \
                             + str(q_brain) + '\t' \
                             + str(q_tumor) + '\t' \
                             + str(lambda_bt) + '\t' \
                             + str(rho_c_brain) + '\t' \
                             + str(rho_c_tumor) + '\t' \
                             + str(h) + '\t' \
                             + str(T_normal) + '\t' \
                             + str(T_tumor) + '\t' \
                             + str(T_vessel) + '\n')

        if (count % 25 == 0):
            searchpath = './' + params['NAME_EXECUTABLE'] + '-' + case + '-*.*'
            log_files = glob.glob(searchpath)
            for f in log_files:
                os.remove(f)

        return [T_normal, T_tumor, T_vessel]