diff --git a/README.md b/README.md index 06abe5f..c6d1724 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,8 @@ This package contains a collection of tools to perform fundamental and advanced - [Regression](https://github.com/caseykneale/ChemometricsTools.jl/blob/master/shootouts/RegressionShootout.jl) - [Fault Detection](https://github.com/caseykneale/ChemometricsTools.jl/blob/master/shootouts/AnomalyShootout.jl) -### Package Status => Fleshing Out (v 0.5.8) -ChemometricsTools has been accepted as an official Julia package! Yep, so you can ```Pkg.add("ChemometricsTools")``` to install it. A lot of features have been added since the first public release (v 0.2.3 ). In 0.5.7 almost all of the functionality available can be used/abused. If you find a bug or want a new feature don't be shy - file an issue. In v0.5.1 Plots was removed as a dependency, new plot recipes were added, and now the package compiles much faster! Multilinear modeling, univariate modeling, and DOE functions are now available. Making headway into the release plan for v0.6.0. Convenience functions, documentation, bug fixes, refactoring and clean up are in progress bare with me. The git repo's master branch typically has the most advanced version, but the features on it may be less reliable because I like to do development on it. +### Package Status => Closer to Acceptability (v 0.5.8) +ChemometricsTools has been accepted as an official Julia package! Yep, so you can ```Pkg.add("ChemometricsTools")``` to install it. A lot of features have been added since the first public release (v 0.2.3 ). In 0.5.8 almost all of the functionality available can be used/abused. If you find a bug or want a new feature don't be shy - file an issue. In v0.5.1 Plots was removed as a dependency, new plot recipes were added, and now the package compiles much faster! Multilinear modeling, univariate modeling, and DOE functions are now available. Making headway into the release plan for v0.6.0. Convenience functions, documentation, bug fixes, refactoring and clean up are in progress bare with me. The git repo's master branch typically has the most advanced version, but the features on it may be less reliable because I like to do development on it. ### Seeking Collaborators So my time and efforts for building this package are constrained. I really would like to find some collaborators to help flesh this package out, use it, find bugs. Even if your interests are more leaning towards machine learning/statistics I'd love to hear from you. Please file an issue if you are interested - or send me a message on Julia Discourse (ckneale)! diff --git a/docs/src/Demos/CurveResolution.md b/docs/src/Demos/CurveResolution.md index 9ee973d..583ecdc 100644 --- a/docs/src/Demos/CurveResolution.md +++ b/docs/src/Demos/CurveResolution.md @@ -1,3 +1,6 @@ +# WARNING +Please note that I recently discovered a few bugs that made the examples in this document appear better then they actually are! Woops! The syntax is still useful and the examples as well - but don't feel bad if you don't get the same results. I'll update this when I can... + # Curve Resolution Demo ChemometricsTools has some curve resolution methods baked in. So far NMF, SIMPLISMA, and MCR-ALS are included. If you aren't familiar with them, they are used to extract spectral and concentration estimates from unknown mixtures in chemical signals. Below is an example of spectra which are composed of signals from a mixture of a 3 components. I could write a volume analyzing this simple set, but this is just a show-case of some methods and how to call them, what kind of results they might give you. The beauty of this example is that, we know what is in it, in a forensic or real-world situation we won't know what is in it, and we have to rely on domain knowledge, physical reasoning, and metrics to determine the validity of our results. @@ -53,6 +56,6 @@ As we can see, NMF does resolve a few components that resemble a few of the actu ![MCRALSC](https://raw.githubusercontent.com/caseykneale/ChemometricsTools/master/images/CurveResolutionDemo/MCRALSC.png) -SIMPLISMA basically botched this dataset with regards to the concentration profiles. While NMF and MCR-ALS do quite good. Of course preprocessing can help here, and tinkering too. Ultimately not bad, given the mixture components. I do have a paper that shows another approach to this problem doubtful I'd be allowed to rewrite the code, I think my university owns it! +SIMPLISMA basically botched this dataset with regards to the concentration profiles. While NMF and MCR-ALS do quite good. Of course preprocessing can help here, and tinkering too. Ultimately not bad, given the mixture components. I do have a paper that shows another approach to this problem doubtful I'd be allowed to rewrite the code, I think my previous university owns it! Casey Kneale, Steven D. Brown, [Band target entropy minimization and target partial least squares for spectral recovery and quantitation](http://www.sciencedirect.com/science/article/pii/S0003267018309188), Analytica Chimica Acta, Volume 1031, 2018, Pages 38-46, ISSN 0003-2670, https://doi.org/10.1016/j.aca.2018.07.054. diff --git a/docs/src/index.md b/docs/src/index.md index 9c78e0c..0fed777 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -14,11 +14,11 @@ Pkg.add("ChemometricsTools") This package was written in [Julia 1.0.3](https://julialang.org/) but it runs fine on 1.1, 1.2 and later releases. That's the beauty of from scratch code with minimal dependencies. ## Ethos -Dependencies: Only base libraries (LinearAlgebra, StatsBase, Statistics, Plots) etc will be required. This is for longevity, and to provide a fast precompilation time. As wonderful as it is that other packages exist to do some of the internal operations this one needs, we won't have to worry about a breaking change made by an external author working out the kinks in a separate package. I want this to be long-term reliable without much upkeep. I'm a busy guy working a day job; I write this to warm-up before work, and unwind afterwards. +Dependencies: Only base libraries (Distributions, LinearAlgebra, StatsBase, Statistics, Plots) etc will be required. This is for longevity, and to provide a fast precompilation time. As wonderful as it is that other packages exist to do some of the internal operations this one needs, we won't have to worry about a breaking change made by an external author working out the kinks in a separate package. I want this to be long-term reliable without much upkeep. I'm a busy guy working a day job; I write this to warm-up before work, and unwind afterwards. -Arrays Only: In it's current state all of the algorithms available in this package operate exclusively on 1 or 2 Arrays. To be specific, the format of input arrays should be such that the number of rows are the observations, and the number of columns are the variables. This choice was made out of convenience and my personal bias. If enough users want DataFrames, Tables, JuliaDB formats, maybe this will change. +Arrays Only: In it's current state all of the algorithms available in this package operate exclusively on 1, 2, or N-way Arrays. To be specific, for classical chemometrics methods the format of input arrays should be such that the number of rows are the observations, and the number of columns are the variables. This choice was made out of convention with the literature, but more importantly generalizability. If enough users want DataFrames, Tables, JuliaDB formats, maybe this will change for some methods. However, to remain generic and tool agnostic DataFrames do not support >2nd order tensors. It's just a fact of life... -Center-Scaling: None of the methods in this package will center and scale for you. This package won't waste your time deciding if it should auto-center/scale large chunks of data every-time you do a regression/classification. +Center-Scaling: None of the methods in this package will center and scale for you unless it is an explicit step in the algorithm. This package won't waste your time deciding if it should auto-center/scale large chunks of data every-time you do a regression/classification. That's up to the user. ## Why Julia? In Julia we can do mathematics like R or Matlab (no installations/imports), but write glue code as easily as python, with the expressiveness of scala, with (often) the performance of C/C++. Multidispatch makes recycling code painless, and broadcasting allows for intuitive application of operations across collections. I'm not a soft-ware engineer, but, these things have made Julia my language of choice. Try it for a week on Julia 1.0.3, if you don't get hooked, I'd be surprised.