diff --git a/binarycpython/utils/run_system_wrapper.py b/binarycpython/utils/run_system_wrapper.py index eb33767a7e67ece510fd163c030e23dfdaf66aff..6c2f0fef5e0b9739585c0a96b408224c58a92cb9 100644 --- a/binarycpython/utils/run_system_wrapper.py +++ b/binarycpython/utils/run_system_wrapper.py @@ -12,12 +12,24 @@ from binarycpython.utils.custom_logging_functions import ( def run_system(**kwargs): """ - Wrapper to run a system with settings + Function that runs a system. Mostly as a useful utility function that handles all the setup of argument lists etc. + + All~ the arguments known to binary_c can be passed to this function as kwargs. + Several extra arguments can be passed through the kwargs: + * custom_logging_code (string): Should contain a string containing the c-code for the shared library. + If this is provided binary_c will use that custom logging code to output its data + * log_filename (string): Should contain name of the binary_c system logfile. + Passing this will make sure that the filename gets written for a run (its default behaviour is NOT to write a logfile for a system) + * parse_function (function): should contain a function that parses the output. The parse function should take 1 required parameter: the output of the binaryc run + Passing this will call the parse_function by passing it the output of the binary_c call and returns what the parse_function returns - This function determines which underlying python-c api function will be called based upon the arguments that are passed via kwargs. + examples: + * run_system(M_1=10): will run a system with ZAMS mass 1 = 10 + * run_system(M_1=10, log_filename="~/example_log.txt"): Will run a system and write the logfile to + * run_system(M_1=10, parse_function=fancy_parsing_function) - - if custom_logging_code or custom_logging_dict is included in the kwargs then it will - - if + Todo: + * Expand functionality. """ @@ -45,10 +57,15 @@ def run_system(**kwargs): write_logfile = 1 + # Construct arguments string and final execution string arg_string = create_arg_string(binary_c_args) - arg_string = "binary_c {}".format(arg_string) + binary_c_command = "binary_c {}".format(arg_string) + + output = binary_c_python_api.run_system(binary_c_command, custom_logging_func_memaddr=func_memaddr, write_logfile=write_logfile) - output = binary_c_python_api.run_system(arg_string, custom_logging_func_memaddr=func_memaddr, write_logfile=write_logfile) - return output \ No newline at end of file + if "parse_function" in kwargs: + return kwargs["parse_function"](output) + else: + return output \ No newline at end of file