From f0d5a6a7aac876232ec6f4ce572f5adf3d854802 Mon Sep 17 00:00:00 2001
From: David Hendriks <davidhendriks93@gmail.com>
Date: Wed, 11 Sep 2019 15:28:04 +0100
Subject: [PATCH] added new function to get the default args of binaryc

---
 binary_c_api.c                                |  47 ++++++++++++++++++
 binary_c_api.h                                |   3 ++
 binary_c_api_python.h                         |   3 ++
 binary_c_python.c                             |  20 +++++++-
 binary_c_python.h                             |   3 ++
 binary_c_python_api.c                         |  47 ++++++++++++++++++
 binaryc_python_utils/defaults.py              |   2 +
 binaryc_python_utils/functions.py             |  24 +++++++--
 build/temp.linux-x86_64-3.6/binary_c_python.o | Bin 50096 -> 51640 bytes
 test_new_api_command.py                       |  34 +++++++++++++
 tests_david/testing_automatic_log_readout.py  |  18 ++++---
 11 files changed, 191 insertions(+), 10 deletions(-)
 create mode 100644 test_new_api_command.py

diff --git a/binary_c_api.c b/binary_c_api.c
index 48e776882..afd31aa64 100644
--- a/binary_c_api.c
+++ b/binary_c_api.c
@@ -124,3 +124,50 @@ int run_binary(char * argstring,
     
     return 0;
 }
+
+int return_arglines(char ** buffer,
+               size_t * nbytes)
+{
+    /* memory for N binary systems */
+    struct libbinary_c_stardata_t *stardata;
+    struct libbinary_c_store_t * store = NULL;
+
+    /* make new stardata */
+    stardata = NULL;
+    char * empty_str = "";
+    binary_c_new_system(&stardata,
+                        NULL,
+                        NULL,
+                        &store,
+                        &empty_str,
+                        -1);
+
+    /* disable logging */
+    snprintf(stardata->preferences->log_filename,
+             STRING_LENGTH-1,
+             "%s",
+             "/dev/null");
+    snprintf(stardata->preferences->api_log_filename_prefix,
+             STRING_LENGTH-1,
+             "%s",
+             "/dev/null");
+
+    /* output to strings */
+    stardata->preferences->internal_buffering = 2;
+    stardata->preferences->internal_buffering_compression = 0;
+    stardata->preferences->batchmode = BATCHMODE_LIBRARY;
+
+    /* List available arguments */
+    binary_c_list_args(stardata);
+
+    /* get buffer pointer */
+    binary_c_buffer_info(stardata,buffer,nbytes);
+
+    /* set raw_buffer_size = -1 to prevent it being freed */
+    stardata->tmpstore->raw_buffer_size = -1;
+    
+    /* free stardata (except the buffer) */
+    binary_c_free_memory(&stardata,TRUE,TRUE,FALSE);
+    binary_c_free_store_contents(store);
+    return 0;
+}
\ No newline at end of file
diff --git a/binary_c_api.h b/binary_c_api.h
index ef9f2ccdb..950f505aa 100644
--- a/binary_c_api.h
+++ b/binary_c_api.h
@@ -9,6 +9,9 @@ int run_binary(char * argstring,
                char ** buffer,
                size_t * nbytes);
 
+int return_arglines(char ** buffer,
+               size_t * nbytes);
+
 /* C macros */
 #define BINARY_C_APITEST_VERSION 0.1
 #define APIprint(...) APIprintf(__VA_ARGS__);
diff --git a/binary_c_api_python.h b/binary_c_api_python.h
index ef9f2ccdb..950f505aa 100644
--- a/binary_c_api_python.h
+++ b/binary_c_api_python.h
@@ -9,6 +9,9 @@ int run_binary(char * argstring,
                char ** buffer,
                size_t * nbytes);
 
+int return_arglines(char ** buffer,
+               size_t * nbytes);
+
 /* C macros */
 #define BINARY_C_APITEST_VERSION 0.1
 #define APIprint(...) APIprintf(__VA_ARGS__);
diff --git a/binary_c_python.c b/binary_c_python.c
index 7e122d212..3496da885 100644
--- a/binary_c_python.c
+++ b/binary_c_python.c
@@ -35,7 +35,8 @@ static char new_binary_system_docstring[] =
     "Return an object containing a binary, ready for evolution";
 static char function_prototype_docstring[] =
     "The prototype for a binary_c python function";
-
+static char return_arglines_docstring[] =
+    "Return the default args for a binary_c system";
 static struct libbinary_c_store_t *store = NULL;
 
 #ifdef __DEPRECATED
@@ -44,6 +45,8 @@ static PyObject* binary_c_create_binary(PyObject *self, PyObject *args);
 static PyObject* binary_c_run_binary(PyObject *self, PyObject *args);
 static PyObject* binary_c_function_prototype(PyObject *self, PyObject *args);
 static PyObject* binary_c_new_binary_system(PyObject *self, PyObject *args);
+static PyObject* binary_c_return_arglines(PyObject *self, PyObject *args);
+
 
     
 /*
@@ -59,6 +62,7 @@ static PyMethodDef module_methods[] = {
     {"run_binary", binary_c_run_binary, METH_VARARGS, run_binary_docstring},
     {"function_prototype", binary_c_function_prototype, METH_VARARGS, function_prototype_docstring},
     {"new_system", binary_c_new_binary_system, METH_VARARGS, new_binary_system_docstring},
+    {"return_arglines", binary_c_return_arglines, METH_VARARGS, return_arglines_docstring},
     
     {NULL, NULL, 0, NULL}
 };
@@ -186,3 +190,17 @@ static PyObject* binary_c_run_binary(PyObject *self, PyObject *args)
         return ret;
     }
 }
+
+static PyObject* binary_c_return_arglines(PyObject *self, PyObject *args)
+{
+    /* Binary structures */
+    char * buffer;
+    int nbytes;
+    int out MAYBE_UNUSED = return_arglines(&buffer,
+                                      &nbytes);
+    /* copy the buffer to a python string */
+    PyObject * ret = Py_BuildValue("s", buffer);
+    free(buffer);
+    /* Return an object containing the arg list */
+    return ret;
+}
\ No newline at end of file
diff --git a/binary_c_python.h b/binary_c_python.h
index d208a52b3..87de6de73 100644
--- a/binary_c_python.h
+++ b/binary_c_python.h
@@ -13,6 +13,9 @@ int run_binary (char * argstring,
                 char ** outstring,
                 int * nbytes);
 
+int return_arglines(char ** buffer,
+               int * nbytes);
+
 /* C macros */
 #define BINARY_C_APITEST_VERSION 0.1
 #define APIprint(...) APIprintf(__VA_ARGS__);
diff --git a/binary_c_python_api.c b/binary_c_python_api.c
index 360a44999..4e0086d27 100644
--- a/binary_c_python_api.c
+++ b/binary_c_python_api.c
@@ -120,3 +120,50 @@ int run_binary(char * argstring,
     binary_c_free_store_contents(store);
     return 0;
 }
+
+int return_arglines(char ** buffer,
+                    int * nbytes)
+{
+    /* memory for N binary systems */
+    struct libbinary_c_stardata_t *stardata;
+    struct libbinary_c_store_t * store = NULL;
+
+    /* make new stardata */
+    stardata = NULL;
+    char * empty_str = "";
+    binary_c_new_system(&stardata,
+                        NULL,
+                        NULL,
+                        &store,
+                        &empty_str,
+                        -1);
+
+    /* disable logging */
+    snprintf(stardata->preferences->log_filename,
+             STRING_LENGTH-1,
+             "%s",
+             "/dev/null");
+    snprintf(stardata->preferences->api_log_filename_prefix,
+             STRING_LENGTH-1,
+             "%s",
+             "/dev/null");
+
+    /* output to strings */
+    stardata->preferences->internal_buffering = 2;
+    stardata->preferences->internal_buffering_compression = 0;
+    stardata->preferences->batchmode = BATCHMODE_LIBRARY;
+
+    /* List available arguments */
+    binary_c_list_args(stardata);
+
+    /* get buffer pointer */
+    binary_c_buffer_info(stardata,buffer,nbytes);
+
+    /* set raw_buffer_size = -1 to prevent it being freed */
+    stardata->tmpstore->raw_buffer_size = -1;
+    
+    /* free stardata (except the buffer) */
+    binary_c_free_memory(&stardata,TRUE,TRUE,FALSE);
+    binary_c_free_store_contents(store);
+    return 0;
+}
\ No newline at end of file
diff --git a/binaryc_python_utils/defaults.py b/binaryc_python_utils/defaults.py
index f2e6906cd..aba0d28e9 100644
--- a/binaryc_python_utils/defaults.py
+++ b/binaryc_python_utils/defaults.py
@@ -1,3 +1,5 @@
+# WARNING DEPRECATED FROM 11-aug-2019
+
 # File containing physics_defaults
 physics_defaults = {
     
diff --git a/binaryc_python_utils/functions.py b/binaryc_python_utils/functions.py
index 2cf2ed3a3..ace2c62cb 100644
--- a/binaryc_python_utils/functions.py
+++ b/binaryc_python_utils/functions.py
@@ -14,13 +14,30 @@ def create_arg_string(arg_dict):
     arg_string = arg_string.strip()
     return arg_string
 
+def get_defaults():
+    """
+    Function that calls the binaryc get args function and cast it into a dictionary
+    All the values are strings
+    """
+    default_output = binary_c.return_arglines()
+    default_dict = {}
+
+    for default in default_output.split('\n'):
+        if not default  in ['__ARG_BEGIN', '__ARG_END', '']:
+            key, value = default.split(' = ')
+
+            # Filter out NULLS (not compiled anyway)
+            if not value=='NULL':
+                default_dict[key] = value
+    return default_dict
+
 def run_system(**kwargs):
     """
     Wrapper to run a system with settings 
     """
 
-    # Load args
-    physics_args = physics_defaults.copy()
+    # Load default args
+    physics_args = get_defaults()
 
     # For example
     # physics_args['M_1'] = 20
@@ -81,4 +98,5 @@ def parse_output(output, selected_header):
         for key in keys:
             final_values_dict[key].append(value_dict[key])
 
-    return final_values_dict
\ No newline at end of file
+    return final_values_dict
+
diff --git a/build/temp.linux-x86_64-3.6/binary_c_python.o b/build/temp.linux-x86_64-3.6/binary_c_python.o
index af46f6afbc91b58d8074d7de4f69635428a0328d..7f9c6db721791a3a435987a618f423c5bfbb65b6 100644
GIT binary patch
literal 51640
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

delta 17838
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

diff --git a/test_new_api_command.py b/test_new_api_command.py
new file mode 100644
index 000000000..45cb036ed
--- /dev/null
+++ b/test_new_api_command.py
@@ -0,0 +1,34 @@
+#!/usr/bin/python3
+
+import binary_c
+
+############################################################
+# Test script to run a binary using the binary_c Python
+# module.
+############################################################
+
+def run_test_binary():
+    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
+    buffer = ""
+    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.run_binary(argstring)
+
+    print ("\n\nBinary_c output:\n\n")
+    print (output)
+
+
+
+binary_star=binary_c.new_system()
+
+print(dir(binary_c))
+# print(binary_star)
+run_test_binary()
+ding = binary_c.return_arglines()
+print(ding)
\ No newline at end of file
diff --git a/tests_david/testing_automatic_log_readout.py b/tests_david/testing_automatic_log_readout.py
index 941fd595c..5cb370e2b 100644
--- a/tests_david/testing_automatic_log_readout.py
+++ b/tests_david/testing_automatic_log_readout.py
@@ -5,7 +5,10 @@ from collections import defaultdict
 import numpy as np
 import pandas as pd
 
+# sys.path.append('../')
 import binary_c
+
+
 from binaryc_python_utils.defaults import physics_defaults
 from binaryc_python_utils.functions import create_arg_string, parse_output, run_system
 
@@ -28,10 +31,13 @@ print("The following keys are present in the results:\n{}".format(result.keys())
 
 # Cast the data into a dataframe. 
 df = pd.DataFrame.from_dict(result, dtype=np.float64)
-sliced_df = df[df.t < 1000] # Cut off late parts of evolution
-print(sliced_df["t"])
+print(df)
+
+
+# sliced_df = df[df.t < 1000] # Cut off late parts of evolution
+# print(sliced_df["t"])
 
-plt.plot(sliced_df['t'], sliced_df['radius'])
-plt.xlabel('Time (Myr)')
-plt.ylabel('Radius (Rsol)')
-plt.show()
\ No newline at end of file
+# plt.plot(sliced_df['t'], sliced_df['radius'])
+# plt.xlabel('Time (Myr)')
+# plt.ylabel('Radius (Rsol)')
+# plt.show()
\ No newline at end of file
-- 
GitLab