Skip to content
Snippets Groups Projects
python_API_test.py 4 KiB
Newer Older
import binary_c_python_api
from binarycpython.utils.custom_logging_functions import (
    autogen_C_logging_code,
    binary_c_log_code,
    create_and_load_logging_function,
)
from binarycpython.utils.functions import temp_dir
############################################################
# TODO: Add asserts to these functions and use em as
############################################################

    m1 = 15.0  # Msun
    m2 = 14.0  # Msun
    separation = 0  # 0 = ignored, use period
    orbital_period = 4530.0  # days
    eccentricity = 0.0
    metallicity = 0.02
    max_evolution_time = 15000
    argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g}  ".format(
        m1,
        m2,
        separation,
        orbital_period,
        eccentricity,
        metallicity,
        max_evolution_time,
    )
    output = binary_c_python_api.run_system(argstring=argstring)
    print(output)
    m1 = 15.0  # Msun
    m2 = 14.0  # Msun
    separation = 0  # 0 = ignored, use period
    orbital_period = 4530.0  # days
    eccentricity = 0.0
    metallicity = 0.02
    max_evolution_time = 15000

    log_filename = temp_dir() + "/test_log.txt"
    api_log_filename_prefix = temp_dir() + "/test_log"

    argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} log_filename {7:s} api_log_filename_prefix {8:s}".format(
        m1,
        m2,
        separation,
        orbital_period,
        eccentricity,
        metallicity,
        max_evolution_time,
        log_filename,
        api_log_filename_prefix,
    )

    output = binary_c_python_api.run_system(argstring=argstring, write_logfile=1)

def test_run_system_with_custom_logging():
    """
    """

    # generate logging lines. Here you can choose whatever you want to have logged, and with what header
    # this generates working print statements
    logging_line = autogen_C_logging_code(
        {"MY_STELLAR_DATA": ["model.time", "star[0].mass"],}
    )

    # Generate entire shared lib code around logging lines
    custom_logging_code = binary_c_log_code(logging_line)

    # Load memory adress
    func_memaddr, shared_lib_filename = create_and_load_logging_function(
        custom_logging_code
    )
    m1 = 15.0  # Msun
    m2 = 14.0  # Msun
    separation = 0  # 0 = ignored, use period
    orbital_period = 4530.0  # days
    eccentricity = 0.0
    metallicity = 0.02
    max_evolution_time = 15000

    argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g}".format(
        m1,
        m2,
        separation,
        orbital_period,
        eccentricity,
        metallicity,
        max_evolution_time,
    )

    out = binary_c_python_api.run_system(
        argstring, custom_logging_func_memaddr=func_memaddr
    )
# Testing other utility functions
def test_return_help():
    out = binary_c_python_api.return_help("M_1")
    print(out)


def test_return_arglines():
    out = binary_c_python_api.return_arglines()
    print(out)
def test_return_help_all():
    out = binary_c_python_api.return_help_all("M_1")
    print(out)

def test_return_version_info():
    out = binary_c_python_api.return_version_info()
    print(out)