New peakshape#137
Merged
Merged
Conversation
0eece4a to
85f54f2
Compare
85f54f2 to
9b05070
Compare
745608a to
b0ff46c
Compare
Collaborator
|
This looks awesome. Want to throw a few tests in if you get a chance? It's one of the last entirely-uncovered bits :) |
Collaborator
Author
|
Sure! I'll probably have a go in a couple of days! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR proposes a completely different algorithm to find the FWHM.
The old algorithm estimated the FWHM by finding the closest values to the half maximum value. This meant that it could easily make mistakes when spectra had multiple peaks (see plots below).
The new algorithm starts from the maximum value and then moves left (then right) until it finds the first value that falls below the half maximum value. This means it will never be fooled by multiple peaks
(left plot is the old algorithm and right plot is the new one)
With the old algorithm, it was very had to determine when the FWHM overlapped with the wavelength range. This means that the right-hand side value (
HWHM.r) was not actually at half maximum but was the lowest value to the right of the FWHM.With the new algorithm, it's trivial to detect such cases and
peakshape()now accordingly returnsNAwhen the FWHM range overlaps with the wavelength range.(left plot is the old algorithm and right plot is the new one)
The new algorithm is slower (spends 150% of the time spent before) than the old one but I may still be able to improve it a bit(fixed by ffeb760)