tick
tick copied to clipboard
Error in HawkesBasisKernels when n_basis is not specified
I've encountered a critical error in HawkesBasisKernels in tick version 0.7.0.1.
Minimal error reproduction example:
import numpy as np
from tick.hawkes import HawkesBasisKernels
hawkes_model = HawkesBasisKernels(kernel_support = 4)
ticks = [[np.array([1.,2.,3.,4.,5.])]]
hawkes_model = hawkes_model.fit(ticks)
Error:
RuntimeError Traceback (most recent call last)
<ipython-input-7-0a26049ca8d2> in <module>
5 ticks = [[np.array([1.,2.,3.,4.,5.])]]
6
----> 7 hawkes_model = hawkes_model.fit(ticks)
~/.local/lib/python3.8/site-packages/tick/hawkes/inference/hawkes_basis_kernels.py in fit(self, events, end_times, baseline_start, amplitudes_start, basis_kernels_start)
204 """
205 LearnerHawkesNoParam.fit(self, events, end_times=end_times)
--> 206 self.solve(baseline_start=baseline_start,
207 amplitudes_start=amplitudes_start,
208 basis_kernels_start=basis_kernels_start)
~/.local/lib/python3.8/site-packages/tick/solver/base/solver.py in solve(self, *args, **kwargs)
107 def solve(self, *args, **kwargs):
108 self._start_solve()
--> 109 self._solve(*args, **kwargs)
110 self._end_solve()
111 return self.solution
~/.local/lib/python3.8/site-packages/tick/hawkes/inference/hawkes_basis_kernels.py in _solve(self, baseline_start, amplitudes_start, basis_kernels_start)
260 prev_basis_kernels = self.basis_kernels.copy()
261
--> 262 rel_ode = self._learner.solve(self.baseline, self.basis_kernels,
263 self._amplitudes_2d,
264 self.ode_max_iter, self.ode_tol)
~/.local/lib/python3.8/site-packages/tick/hawkes/inference/build/hawkes_inference.py in solve(self, mu, gdm, auvd, max_iter_gdm, max_tol_gdm)
934 def solve(self, mu: 'ArrayDouble &', gdm: 'ArrayDouble2d &', auvd: 'ArrayDouble2d &', max_iter_gdm: 'ulong', max_tol_gdm: 'double') -> "double":
935 r"""solve(HawkesBasisKernels self, ArrayDouble & mu, ArrayDouble2d & gdm, ArrayDouble2d & auvd, ulong max_iter_gdm, double max_tol_gdm) -> double"""
--> 936 return _hawkes_inference.HawkesBasisKernels_solve(self, mu, gdm, auvd, max_iter_gdm, max_tol_gdm)
937
938 def get_kernel_support(self) -> "double":
RuntimeError: basis functions / gdm argument must be an array of shape (1, 10)
This error for some reason does not effect the example here, despite having the same type for ticks.
This problem appears to occur only when n_basis=None (which is the default value). If you specify n_basis, then the error does not occur.