Contributing
Reporting issues
If you are having issues with the code, find bugs or otherwise want to report something about the package, please submit an issue at our GitHub repository.
Feature requests
If you have requests for a new method but can't implement it yourself, you can also report it as an issue. The package developers or other volunteers might be able to help with the implementation.
Please mark method requests clearly as "Method request: my new method...", and provide a reference to a scientific publication that outlines the algorithm.
Pull requests
Pull requests for new surrogate methods are very welcome. Ideally, your implementation should use the same API as the existing methods:
- Create a
struct
for your surrogate method, e.g.struct MyNewSurrogateMethod <: Surrogate
, that contain the parameters for the method. The docstring for the method should contain a reference to scientific publications detailing the algorithm,
as well as the intended purpose of the method, and potential implementation details that differ from the original algorithm.
- Implement
surrogenerator(x, method::MyNewSurrogateMethod)
, where you pre-compute things for efficiency and return aSurrogateGenerator
instance. - Implement the
SurrogateGenerator{<:MyNewSurrogateMethod}
functor that produces surrogate time series on demand. This is where the precomputed things are used, and the actual algorithm is implemented. - Then
surrogate(x, method::Surrogate)
will "just work".
If you find this approach difficult and already have a basic implementation of a new surrogate method, the package maintainers may be able to help structuring the code. Let us know in an issue or in a pull request!