Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question/feature-request: combining model source code with pre-existing SPE-models #126

Open
Schaechtle opened this issue Sep 8, 2022 · 1 comment

Comments

@Schaechtle
Copy link

Is there a good way to execute SPPL model source code while having it rely on a previously existing model? For example, assume I have an SPPL model m (of type ProductSPE) which models variables a and b.
I have this source code source in form of a string:

if a < 17 
    c ~= bernoulli(p=0.1)

else:
    c ~= bernoulli(p=0.9)

which relies on a being defined but which would otherwise compile fine if I run:

SPPL_Compiler(source).execute_module().model

Obviously, without knowing about m it won't compile because the compiler doesn't know about a. Is there a good way to tell the compiler about a model (like m) as a starting point? i.e. something like this:

SPPL_Compiler(m, source).execute_module().model
@fsaad
Copy link
Collaborator

fsaad commented Sep 9, 2022

Try to use the reverse compiler from the compiled SPE m to an SPPL program source with equivalent semantics and then append it to the original program. Below is a sketch

m =  ...

from sppl.compilers import spe_to_sppl
source_m = spe_to_sppl(m) # return type is io.StringIO
source_m_str = source_m.getvalue()

source_joint = '%s\n\n%s' % (source_m_str, source)
model = SPPL_compiler(source_joint).execute_module().model

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants