{"action":"created","issue":{"url":"https://api.github.com/repos/tlycken/Interpolations.jl/issues/5","labels_url":"https://api.github.com/repos/tlycken/Interpolations.jl/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/tlycken/Interpolations.jl/issues/5/comments","events_url":"https://api.github.com/repos/tlycken/Interpolations.jl/issues/5/events","html_url":"https://github.com/tlycken/Interpolations.jl/issues/5","id":49760427,"number":5,"title":"Feature wishlist","user":{"login":"tlycken","id":1550920,"avatar_url":"https://avatars.githubusercontent.com/u/1550920?v=3","gravatar_id":"","url":"https://api.github.com/users/tlycken","html_url":"https://github.com/tlycken","followers_url":"https://api.github.com/users/tlycken/followers","following_url":"https://api.github.com/users/tlycken/following{/other_user}","gists_url":"https://api.github.com/users/tlycken/gists{/gist_id}","starred_url":"https://api.github.com/users/tlycken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tlycken/subscriptions","organizations_url":"https://api.github.com/users/tlycken/orgs","repos_url":"https://api.github.com/users/tlycken/repos","events_url":"https://api.github.com/users/tlycken/events{/privacy}","received_events_url":"https://api.github.com/users/tlycken/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2014-11-21T23:19:41Z","updated_at":"2015-04-11T06:58:06Z","closed_at":null,"body":"Now that basic functionality is in place, we need to extend what we have with more cases, to make the library feature complete. That's a good case for a wishlist =) This issue is intended to keep track of overall progress toward feature parity with (interpolation parts of) Grid.jl - actual implementation details can be discussed in separate issues.\r\n\r\n**Boundary condtions** (assuming a grid on `1:n`)\r\n\r\n* [x] `Flat`, i.e. `f'(x=1) = f'(x=n) = 0` (#8)\r\n* [x] `Line` (or `Natural`), i.e. `f''(x=1) = f''(x=n) = 0` (#9)\r\n* [ ] `Tangent`, i.e. with specified derivatives at the edges (`Flat` is essentially `Tangent(0,0)`)\r\n* [x] `Reflect`, i.e. *all* continuous derivatives are 0 at the edge, to preserve continuity properties when extrapolating (Added in #20)\r\n* [x] `Periodic`, i.e. function value and all derivatives are equal at both edges; with `OnGrid`, the data should include both cell boundaries (and `A[1]==A[end]`), while with `OnCell` this assumption is not necessary (but rather `A[-.5] == A[end+.5]`) (#9)\r\n* [x] `Free`, i.e. with extra continuous derivatives close to the edges, to close the system. (For e.g. cubic splines, which have continuous second derivatives, the third derivatives are also continuous at the second-to-last boundaries). (#9)\r\n\r\n**Extrapolation behaviors**\r\n\r\n* [x] `Constant`, i.e. return the value at the closest data point (#8)\r\n* [x] `Linear` (#23)\r\n* [ ] `Quadratic` etc, valid up to the same degree as the interpolation. When the same degree, just continue the outermost polynomial; when lower degree, construct an extrapolation polynomial with as many continuous derivatives as necessary for a smooth transition. For example, linear extrapolation of a quadratic interpolation object, would have continuous value and first derivative (which conveniently specifies the extrapolation uniquely...).\r\n* [x] `Periodic`, i.e. `f(x + T) = f(x)` for a function with period `T` (#9)\r\n* [x] `Reflec`, i.e. `f(end - 1 + T/3) = f(end - T/3 + 1)` (#9)\r\n\r\n**Interpolation degrees**\r\n\r\n* [ ] Cubic b-splines\r\n\r\n**Other functionality**\r\n\r\n* [x] Derivative evaluation, up to the highest continuous degree supported by the interpolation object. E.g. `gradient(itp::Quadratic, x)` or `hessian(itp::Cubic, x)`. (Gradient fixed in #18, higher orders will be added when higher order interpolations are added...)\r\n* [x] Multi-valued interpolation (i.e. interpolation that yields more than one value per coordinate), More of a decision: do we do anything special to make it easier, or just force users to shape their data accordingly? Discussed separately under #3 \r\n* [ ] Range/vector-valued indexing (i.e. indexing with multiple values at the same time, e.g. `itp[1:.1:10]`) (#24)\r\n* [ ] Non-uniform interpolation (#11)\r\n* [ ] Uniform interpolation on non-unit scales (the same problem that `CoordInterpGrid` in `Grid.jl` solves) (#25)"},"comment":{"url":"https://api.github.com/repos/tlycken/Interpolations.jl/issues/comments/91777950","html_url":"https://github.com/tlycken/Interpolations.jl/issues/5#issuecomment-91777950","issue_url":"https://api.github.com/repos/tlycken/Interpolations.jl/issues/5","id":91777950,"user":{"login":"tlycken","id":1550920,"avatar_url":"https://avatars.githubusercontent.com/u/1550920?v=3","gravatar_id":"","url":"https://api.github.com/users/tlycken","html_url":"https://github.com/tlycken","followers_url":"https://api.github.com/users/tlycken/followers","following_url":"https://api.github.com/users/tlycken/following{/other_user}","gists_url":"https://api.github.com/users/tlycken/gists{/gist_id}","starred_url":"https://api.github.com/users/tlycken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tlycken/subscriptions","organizations_url":"https://api.github.com/users/tlycken/orgs","repos_url":"https://api.github.com/users/tlycken/repos","events_url":"https://api.github.com/users/tlycken/events{/privacy}","received_events_url":"https://api.github.com/users/tlycken/received_events","type":"User","site_admin":false},"created_at":"2015-04-11T06:58:06Z","updated_at":"2015-04-11T06:58:06Z","body":"@kzapfe PyCall/PyPlot are of a very specific type of Julia packages - they're both wrappers for code in other languages that have had much more time than Julia to evolve and mature. Thus, comparison to pure Julia packages like Interpolations.jl isn't quite \"fair\" to either type of package. Since PyPlot is built specifically for showing things on-screen, it's maybe not so surprising that it focuses its efforts on 2D. Did you have any other packages with the same limitations in mind? \r\n\r\nIt's also a much larger problem to write general code that works in any number of dimensions than to write for just one case, so if you only need 1D and 2D there's no reason to build something more general. \r\n\r\nThat said, you can probably find a lot of good interpolation code in various languages that already has been/would be easy enough to wrap in Julia and that does what you need. \r\n\r\nMy ambition with this library is to, eventually, eliminate the need for calling out to other languages, at least if you don't need something very specific - but part of the reason for building it is to have an excuse to practice Julia programming :) "}}