FSharp.Stats
FSharp.Stats copied to clipboard
[Feature Request] Update all comments according to XML documentation styling
Description
Documenting your code with XML documentation has the huge benefit of a structured preview and concise description in the automated API reference:
Current triple slash documentation
/// This function takes a collection of x values performs a log transform
let myFunction (xData: seq<float>) = xData |> Seq.map log
Improved XML documentation
/// <summary>This function takes a collection of x values performs a log transform</summary>
/// <remarks>Note, that the log of 0 is -infinity</remarks>
/// <param name="xData">collection of values to be transformed</param>
/// <returns>A collection of log transformed values</returns>
/// <example>
/// <code>
/// // e.g. abundance data for ABC
/// let xData = vector [|1.;2.;3.;4.;5.;6.|]
///
/// // Apply the log transform to the xData
/// myFunction xData
/// </code>
/// </example>
let myFunction (xData: seq<float>) = xData |> Seq.map log
References
- See this examples
- do not use < or > within the comments, use HTML code instead (
>
for > and<
for <) - For further xml tags see: https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/xml-documentation
- suggested workflow
- search for a module that isn't worked on yet
- go from top to bottom and extend the documentation at any point you can see (modules, types, members, functions)
- try identify and write meaningful code examples within the xml comments
- build the repository yourself and check if the comments work as intended when hovering over the functions/modules...
Hints (click to expand if you need additional pointers)
- To be able to contribute to this library you'll need
- an GitHub account
- an IDE like Visual Studio Community or Visual Studio Code
- dotnet 6 sdk
- to build the binaries yourself follow the instructions
- while working on the FSharp.Stats documentation (any file within https://github.com/fslaborg/FSharp.Stats/tree/developer/docs) you can navigate to the project folder with a prompt of your choice and use the command
./build watchdocs
- unit tests can be executed via
./build runtests
Progress
- [ ] Random
- [ ] Intervals
- [ ] Permutation
- [ ] RunningStats
- [ ] Seq
- [ ] Array
- [ ] List
- [ ] Map
- [ ] JaggedArray
- [ ] Vector
- [ ] Rowvector
- [ ] Matrix
- [ ] Rank
- [ ] Correlation
- [ ] DistanceMetrics
- [ ] Quantile
- [ ] Precision
- [ ] Geometry
- [ ] SpecialFunctions
- [ ] ...
- [ ] Algebra
- [ ] ...
- [ ] RootFinding
- [ ] ...
- [ ] Integration
- [ ] ...
- [ ] Optimization
- [ ] ...
- [x] Interpolation
- [x] Polynomial
- [x] LinearSpline
- [x] Akima
- [x] CubicSpline
- [x] Interpolation
- [x] Approximation
- [ ] Signal
- [x] Normalization
- [] QQPlot
- [ ] Padding guide
- [x] Binning
- [ ] FFT
- [ ] Wavelet
- [ ] ContinuousWavelet
- [ ] Outliers
- [ ] Baseline
- [ ] Filtering <- domain knowledge required
- [ ] Convolution
- [ ] PeakDetection
- [ ] Distributions
- [ ] every member of each distribution
- [ ] Bandwidth
- [ ] Frequency
- [ ] Testing
- [ ] TTest
- [ ] Fitting
- [x] LinearRegression
- [x] OLS
- [x] Linear
- [x] Univariable
- [x] Multivariable
- [ ] RidgeRegression
- [x] Polynomial
- [x] Linear
- [x] RobustRegression
- [x] OLS
- [ ] CrossValidation
- [ ] NonLinearRegression
- [ ] GoodnessOfFit
- [ ] LogisticRegression
- [ ] Spline
- [x] LinearRegression
- [ ] ML
- [ ] ...
- [ ] ConfidenceInterval
I can take a look at this. I will start with the Signal - Padding.