Code Monkey home page Code Monkey logo

nonuniformresampling1d.jl's People

Contributors

firionus avatar

Watchers

 avatar  avatar

nonuniformresampling1d.jl's Issues

Improve Testing

Come up with a good way to state the requirements and how to test them.

Implement Boundary Conditions

Currently, an error is thrown if out-of-bounds points would be required. I think this is a good default behavior, but for advanced usage some boundary conditions would be useful like:

  • Mirror-Periodic
  • Periodic
  • OnGrid/OnCell (see Interpolations.jl for the meaning)

Rebrand to "NonuniformSmoothing"

During early development, I noticed that the use case of resampling from arbitrary grids to something else is a bit too special for me. Therefore, I'll focus on resampling from uniform to nonuniform grids with the main goal of smoothing FFT data, even though upsampling would also be supported.

Alternative Name: NonuniformResampling

Pros:

  • Better describes that this package completely provides resampling from uniform to nonuniform sample locations

Cons:

  • Doesn't really describe that it only works in 1D, but none of the names I know would do that
  • Doesn't really describe that sampling from nonuniform grids is not supported
  • Does not emphasize that smoothing is the target use case

EDIT: ToDo

  • Rename Basis Functions
    • rename type to Kernel/Window/... ?
    • rename individual functions to not clash with DSP.jl and to follow Julia conventions
      • rectwin: not very readable with the mashed abbreviations
      • WindowFuncitons.rect: long, wordy, the important part (rect) at the end
      • rect_window: my favorite so far
    • associated functions?
    • associated comments, file names and docs
  • Rename main API
    • regrid -> resample/nuresample/resample1d/nuresample1d/... ?
  • Rename library to NonuniformResampling/NonuniformResampling1D

Put in logrange and polyrange

EDIT: I think this would be better put into a separate package that depends on this one, called something like "NonuniformSmoothing1D".

Move private implementations for logrange and polyrange into the repo.

Improve the API to be as close to Base's range as possible. Use something like step=1/24, base=2 for 24 points per octave in logrange.

Check if it makes sense to return an iterator instead of an array (see here: https://stackoverflow.com/questions/59985035/does-there-exist-any-alternative-of-logspace-in-julia-v1-3-1/59987565#59987565)

The end goal is to have a high level API to perform log or poly non-linear smoothing.

Ready for first "release"

  • Give status hint in README
  • Fix #8
  • Make sure we're ready for a first release
  • Is there an advantage to doing a GitHub release? Don't think so.
  • Keep main as release branch, document that dev branches need to be used for further development
  • Tag first release

Add Documentation

Some suggested content:

  • API Docs
  • Document return values of functions. Follow this template: https://discourse.julialang.org/t/coordinating-community-efforts-to-enrich-function-docs/80338/45
  • There should be a diagram and concise explanation of the resampling approach in the README.
    • Create Diagram Code
    • Set Up Documenter and README Documentation
    • Is Doctest run?
    • Document an Example in the docstring where all args are used
    • Document how to construct and call your own window functions
  • Diagrams and Explanations of the different windows and their parameters

Examples, e.g. frequency response measurements -> do that in smoothing library

Set Up Performance Testing

E.g. use the hopefully already existing examples. This should be low priority.

Once done, the following list of performance concerns could be tackled:

  • Float64(xin.step) is calculated again and again in different places -> bad?
  • use buffer for upsampled values that is allocated at a call to regrid instead of allocating every time. Problem: With current upsampling scheme, the maximum length required for this buffer is not well defined.

Add Linter

Perform a Style Check, etc.

  • VS Code Linter
  • Aqua.jl

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.