Adds corrected intensities to Corfunc output#3907
Adds corrected intensities to Corfunc output#3907jellybean2004 wants to merge 4 commits intomainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Updates Corfunc’s “Export Extrapolated” workflow to export both raw extrapolated intensities and background-corrected intensities for downstream use.
Changes:
- Export now writes two CSVs:
*_uncorrected.csvand*_corrected.csv(background-subtracted). - CorfuncPerspective passes the calculator background into the export dialog.
- Adds a unit test for the two-file export behavior and updates Corfunc documentation.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
src/sas/qtgui/Perspectives/Corfunc/media/corfunc-how-to.rst |
Documents the updated extrapolated export behavior (two CSV outputs). |
src/sas/qtgui/Perspectives/Corfunc/UnitTesting/SaveExtrapolatedPopupTest.py |
Adds a unit test asserting both uncorrected and corrected files are created with expected contents. |
src/sas/qtgui/Perspectives/Corfunc/SaveExtrapolatedPopup.py |
Implements two-file export and background subtraction in the corrected output. |
src/sas/qtgui/Perspectives/Corfunc/CorfuncPerspective.py |
Wires the calculator background through to the export popup. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| selected_path = Path(filename) | ||
| base_path = selected_path.with_suffix("") | ||
| uncorrected_path = base_path.parent / f"{base_path.name}_uncorrected.csv" | ||
| corrected_path = base_path.parent / f"{base_path.name}_corrected.csv" | ||
|
|
||
| with open(filename, "w") as outfile: | ||
| outfile.write("Q, I(q)\n") | ||
| background = 0.0 if self.background is None else self.background | ||
| background_subtracted_intensity = intensity - background | ||
|
|
||
| with open(uncorrected_path, "w") as uncorrected_file: | ||
| uncorrected_file.write("Q, I(q)\n") | ||
| for q_value, i_value in zip(q, intensity): | ||
| outfile.write("%.6g, %.6g\n"%(q_value, i_value)) | ||
| uncorrected_file.write("%.6g, %.6g\n" % (q_value, i_value)) | ||
|
|
||
| with open(corrected_path, "w") as corrected_file: | ||
| corrected_file.write("Q, I(q)-Background\n") | ||
| for q_value, i_subtracted in zip(q, background_subtracted_intensity): | ||
| corrected_file.write("%.6g, %.6g\n" % (q_value, i_subtracted)) |
There was a problem hiding this comment.
Because the two output filenames are derived from the selected base name, the Qt “overwrite existing file” confirmation (if any) only applies to the user-selected path, not necessarily to *_uncorrected.csv / *_corrected.csv. This can silently overwrite existing exports when the base file doesn’t exist but one/both derived files do. Consider explicitly checking uncorrected_path.exists() / corrected_path.exists() and prompting the user before overwriting.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
9be9766 to
bbf043b
Compare
|
Hi @smk78! If you have some time, would you mind reviewing this PR, please? |
smk78
left a comment
There was a problem hiding this comment.
Installed and tested CI Build #5766 on W11/x64.
Performed Corfunc analysis on example data ISIS_98929.txt using automatic settings and Guinier End: 0.01469087, Porod Start: 0.1658318 and Porod End: 0.2364554. Then used Export Extrapolated setting Lowest Q: 0.001 and Highest Q: 0.3 (input data ranged 0.007 - 0.285).
SasView computed a Background=0.30151 and generated two extrapolation files (_uncorrected and _corrected) which were read back into SasView and then compared with the input data:
Further comparing the data values in all three files showed that the extrapolations were performed and integrated as expected (ie, 0.001 - Guinier End and Porod Start - 0.3) and that the intensities in the _corrected file are those in the _uncorrected file minus the computed Background to 4 decimal places. This is probably sufficient for most use cases, but if anyone performs their own subtractions manually using the Background value quoted (to 5 d.p.) in the GUI they will get very slightly different output.
Otherwise this improved functionality seems to perform exactly as described.
The corfunc-how-to Help file has also been updated to mention that Export Extrapolated now generates two files.
I also reviewed the correlation_function_analysis_in_sasview_v6 Tutorial. Whilst this mentions the Export Extrapolated functionality, it is written in such a way that I do not see a need to make any changes to the Tutorial.
I am happy to approve this.
|
NB: I did not perform a code review! |
Sounds like that might be a job for me then! |
Description
The
Export Extrapolationbutton in Corfunc would save a CSV file with q and I. As suggested by @smk78, I have updated this button to save two files: uncorrected with q and I (same as before) and corrected with q and I minus background.Fixes #2138
How Has This Been Tested?
Added and ran a unit test and manually tested in the build.
Review Checklist:
Documentation
Installers
Licensing