Skip to content
Snippets Groups Projects
Commit 0a8c782b authored by David Hendriks's avatar David Hendriks
Browse files

updated todo

parent d9cf1f19
No related branches found
No related tags found
No related merge requests found
TODO2.org 0 → 100644
* Todo list for the binary_c-python
** Logging functionality:
*** Idea
Idea is to be able to give a string via python that will be used in the through the libbinary_c.so so that log_every_timestep.c
The code below is the piece in log_every_timestep that uses it.
if(stardata->preferences->custom_output_function != NULL)
{
Dprint("calling custom output function %p\n",
stardata->preferences->custom_output_function);
stardata->preferences->custom_output_function(stardata);
}
So the function should recieve 'stardata' as input.
We can do that with providing a logging string alltogether, or generate a logging function
In either way, this should be passed to stardata->preferences->custom_output_function as a pointer to that function
*** Provide string for logging
In perl this is done in the following way:
**** code to input
And then to use it via
$population->set(
C_logging_code => '
PRINTF("MY_STELLAR_DATA %g %g %g %g\n",
stardata->model.time,
stardata->star[0].mass,
stardata->model.probability,
stardata->model.dt);
'
);
**** code to handle that input
sub binary_c_log_code
{
my ($code) = @_;
return "
#pragma push_macro(\"MAX\")
#pragma push_macro(\"MIN\")
#undef MAX
#undef MIN
#include \"binary_c.h\"
void custom_output_function(SV * x);
SV * custom_output_function_pointer(void);
SV * custom_output_function_pointer()
{
/*
* use PTR2UV to convert the function pointer
* &custom_output_function to an unsigned int,
* which is then converted to a Perl SV
*/
return (SV*)newSVuv(PTR2UV(&custom_output_function));
}
void custom_output_function(SV * x)
{
struct stardata_t * stardata = (struct stardata_t *)x;
$code;
}
#undef MAX
#undef MIN
#pragma pop_macro(\"MIN\")
#pragma pop_macro(\"MAX\")
";
}
Or use it via:
*** auto logging
We should also try to be able to have the code autogenerate some logging function via the following:
**** input in perl
$population->set( C_auto_logging => {
'MY_STELLAR_DATA' =>
[
'model.time',
'star[0].mass',
'model.probability',
'model.dt'
]
});
**** code to handle that input
Which is handled in perl via (see binary_grid2.pm
sub autogen_C_logging_code
{
# given a hash of arrays of variable names, where the hash
# key is the header, autogenerate PRINTF statements
my ($self) = @_;
my $code = undef;
if(defined $self->{_grid_options}->{C_auto_logging} &&
ref $self->{_grid_options}->{C_auto_logging} eq 'HASH'
)
{
$code = '';
foreach my $header (keys %{$self->{_grid_options}->{C_auto_logging}})
{
if(ref $self->{_grid_options}->{C_auto_logging}->{$header} eq 'ARRAY')
{
$code .= 'PRINTF("'.$header.' ';
foreach my $x (@{$self->{_grid_options}->{C_auto_logging}->{$header}})
{
$code .= '%g ';
}
$code .= '\n"';
foreach my $x (@{$self->{_grid_options}->{C_auto_logging}->{$header}})
{
$code .= ',((double)stardata->'.$x.')';
}
$code .= ');'
}
}
}
print "MADE AUTO CODE \n\n************************************************************\n\n$code\n\n************************************************************\n";
return $code;
}
*** DONE Make function in python that puts code into c function
CLOSED: [2019-10-31 Thu 11:13]
*** DONE Make function in python that generates c-function from a list of arguments
CLOSED: [2019-10-29 Tue 23:52]
*** DONE Resolve current issue malloc
CLOSED: [2019-11-08 Fri 11:12]
➜ binary_c-python git:(master) ✗ python python_API_test.py
Traceback (most recent call last):
File "python_API_test.py", line 3, in <module>
import binary_c
ImportError: /home/david/projects/binary_c_root/binary_c-python/libbinary_c_api.so: undefined symbol: MALLOC
I get this error when I am using the master version of binary_c with either branches of the python wrapper..
That went very deep haha. alot of memory allocation stuff
*** DONE Make sure this works with the last major release of binaryc
CLOSED: [2019-11-08 Fri 15:00]
*** DONE Finish testing a simpler case (see other repo)
CLOSED: [2019-11-08 Fri 09:37]
*** DONE Make master master work
CLOSED: [2019-11-08 Fri 15:00]
*** DONE Sync master with david_branch
CLOSED: [2019-11-08 Fri 15:00]
*** DONE make tag of old master branch for future reference
CLOSED: [2019-11-08 Fri 15:00]
*** DONE Implement the autogeneration of the library
CLOSED: [2019-11-08 Fri 15:48]
*** DONE Load all the things with the c-types
CLOSED: [2019-11-08 Fri 18:49]
*** DONE Implement new function for run_binary_with_custom_logging
CLOSED: [2019-11-08 Fri 21:19]
*** DONE Make new c function run_binary_with_custom_logging
CLOSED: [2019-11-08 Fri 21:19]
*** TODO Put in some new tests in the python test api
*** TODO Make sure the sharedlibs get written to the correct directory
** General:
*** DONE Get a more reliable way of loading the default values (running a ./tbse echo or something?)
CLOSED: [2019-10-29 Tue 17:44]
*** DONE make routine that reads out all the lines, splits them into pieces and reads out the correct key
CLOSED: [2019-10-29 Tue 17:43]
*** TODO Put header and other source files in a dedicated directory
*** TODO Use sphinx or read the docs for auto generation of documentation
*** TODO Have the compiled files put into a build directory
*** TODO add pythonpath thing to readme
*** TODO make script that will set up binaryc automatically so that this can become an out of the box thing
*** TODO Test the importing of this code from different places
** Population ideas
*** TODO Queuing system and some multiprocessing to run many systems
*** TODO Consider rewriting the work that perl does
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment