Hi Thomas,
I did put some optimisations
into the underlying JIDT TE estimator (e.g. updating the embedding rather than
re-reading the whole lot), but they should only make a real difference
for large history length (and not 50x difference for k=1).
I've run something similar with 10^7 samples using JIDT directly, and there's no discernable performance difference.
Possibly it's in the preparsing in IDTxl, I'll have to come back to that.
In
any case, re taking conditionals you have a couple of options depending on what it is you're trying to do. The underlying JIDT estimators do provide a
ConditionalTransferEntropyCalculatorDiscrete estimator, but we haven't put a wrapper on them for IDTxl (you could use them directly though). (You're
also able to use the JidtDiscreteTE estimator in IDTxl with a
multivariate source, though I guess that doesn't help if you're wanting
to only compute a conditional value).
If you're trying to build the
parent set, you can turn on analytic nulls for the discrete estimators
in IDTxl also, you don't need to add other code for that - indeed I
think they're on by default.
Does that help? Maybe you can describe more directly what you're trying to do if not
Re
the use of larger delays: the target past should always be only one lag
behind the target next, regardless of the source-target lag that you
use (we discuss the theory behind this
here).
So you'll need to adjust target_past to something like raster[j,2:-1]
(though my python's not so great so think that through).
Hope that helps,