-
Notifications
You must be signed in to change notification settings - Fork 14
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
Generalize transfer operator #424
Comments
Hey, @rusandris! Thanks for bringing this up. Your suggestion makes perfect sense. There is no reason that the transfer operator should operate on binned outcome spaces only. The reason I never implemented a generic version of If designed cleverly, this should work on any outcome space. My initial thought is that the
This way, it will automagically work for any new implemented outcome space with no additional effort from the user. Does that make sense? |
Currently, estimation keywords to |
Yes. We first use
Is there a typo here? Both things are the same. @kahaaga I don't think we need to complicate anything here. |
Yes, it should be
The transfer operator already has configurable keywords that go beyond those specified in ValueBinning (regarding e.g. boundary conditions and number of iterations for inferring the stationary distribution). These keyword have nothing to do with the binning in other contexts. I'd say introducing keywords at the level of |
This also links to #420, where I also want the outcomes explicitly. These will be needed to preserve information about visitors that would otherwise be lost if simply passing the symbolic time series alone to the transfer operator estimator |
Aaah now I understand. Okay sure, but I would argue this could be a normal keyword(s) for |
As always with ComplexityMeasures.jl the situation is more complex than I thought :D and it doesn't have a simple clean straightforward solution... Haha! If you are both participating in the JuliaDynamics meetings then we can discuss this there. You can add it to the agenda @kahaaga @rusandris . |
We can always create a SimpleMeasures.jl package for anything that doesn't belong here 🌝 |
I think I'll make the meeting, so let's do! |
Another thing to think about: should there be an equivalent to |
I guess it's a good idea to have both
And
Great idea! We can talk about this in detail at the meetings |
Unfortunately I don't agree with this approach. I believe it is not a good design for the Julia language to change the return type based on keywords due to the fundamental type instability this creates. I also don't think it is a good software design principle in general, although this is more subjective. I think we would need two different functions, one that returns both and one that is as now. |
Agreed. Two separate methods is the way to go, although we might need to deal with code duplication then (the two methods do almost exactly the same thing) but that's not that big of an issue. |
It's likely possible to get around code duplication by just writing a clever internal method that is called by both exported functions. |
Right now the transfer operator works only on an
AbstractBinning
outcome space.It would be nice to have a more general notion of the transfer operator so that one could compute the
transferoperator
regardless of which outcome space was used.This way
transferoperator
would become something that operates on a series of outcomes (symbolic trajectories) instead of being itself an outcome space. At least this is the way we did it in StateTransitionNetworks.jl .Let me know if this make sense.
The text was updated successfully, but these errors were encountered: