# runs BF on data and saves the best RPN expressions in results.dat
# all the .dat files are created after I run this script
# the .scr are needed to run the fortran code

import numpy as np
import os
import shutil
import subprocess
from subprocess import call
import sys
import csv
import sympy as sp

from pathlib import Path

from sympy.parsing.sympy_parser import parse_expr

# sep_type = 3 for add and 2 for mult and 1 for normal
def brute_force(pathdir,filename,BF_try_time,BF_ops_file_type,sep_type="*"):
    try_time = BF_try_time
    try_time_prefactor = BF_try_time
    file_type = BF_ops_file_type
    try:
        os.remove("results.dat")
    except:
        pass
    if sep_type=="*":
        # 'check=False' because it will return exit status 124 when it time out
        subprocess.run([Path("./brute_force_oneFile_v2.scr").resolve(),
                        file_type, "%s" %try_time,
                        Path(pathdir+filename).resolve()],
                       shell=False, check=False)
        #subprocess.call(["./brute_force_oneFile_mdl_v3.scr", file_type, "%s" %try_time, pathdir+filename, "10", "0"])
    if sep_type=="+":
        # 'check=False' because it will return exit status 124 when it time out
        subprocess.run([Path("./brute_force_oneFile_v3.scr").resolve(),
                        file_type, "%s" %try_time,
                        Path(pathdir+filename).resolve()],
                       shell=False, check=False) 
        #subprocess.call(["./brute_force_oneFile_mdl_v2.scr", file_type, "%s" %try_time, pathdir+filename, "10", "0"])
    return 1

