Description:
We need to implement a project-level grading pipeline that evaluates subframes within distinct filter planes across multi-night datasets using a Z-score distribution model. This issue covers adding global parameter inputs to the Settings tab, refactoring the actions on the Projects tab, and executing the statistical culling loop.
Required Changes:
-
Settings Tab UI:
-
Add a new QGroupBox titled "Subframe Grading Defaults" below the Updates section.
-
Implement QDoubleSpinBox fields for the following parameters:
-
Max Star Roundness Limit (Default: 0.22, range: 0.05 to 0.50)
-
Rejection Cutoff Threshold (Default: 0.55, range: 0.10 to 0.90)
-
HFD Weight, SNR Weight, and Sky Flux Weight inputs.
-
Add a Save button that pushes these configuration values to the local settings table/JSON file, including a validation rule ensuring the three weights sum up to exactly 1.0.
-
Projects Tab UI & Action Button:
-
Refactor the "Import Quality Data" button to be named "Grade Project Subframes" (or "Recalculate Project Grades").
-
Connect its click-handler to a worker that pulls the custom parameters from settings and executes the grading loop on all subframes tied to the selected project.
-
Backend Grading Execution:
-
Group the active project's frames by filter.
-
Apply a hard gate for any frame exceeding the Max Star Roundness Limit.
-
Calculate statistical Z-scores for HFD (lower is better), SNR Weight (higher is better), and Sky Flux (lower is better) relative to the filter group's mean and standard deviation.
-
Combine metrics via user weights to produce a quality_score (between 0 and 1, flag frames below the cutoff as Rejected and frames equal to or above the objective as Approved, and trigger a refresh of the project's goal counters.
Description:
We need to implement a project-level grading pipeline that evaluates subframes within distinct filter planes across multi-night datasets using a Z-score distribution model. This issue covers adding global parameter inputs to the Settings tab, refactoring the actions on the Projects tab, and executing the statistical culling loop.
Required Changes:
Settings Tab UI:
Add a new
QGroupBoxtitled"Subframe Grading Defaults"below the Updates section.Implement
QDoubleSpinBoxfields for the following parameters:Max Star Roundness Limit (Default:
0.22, range:0.05to0.50)Rejection Cutoff Threshold (Default:
0.55, range:0.10to0.90)HFD Weight, SNR Weight, and Sky Flux Weight inputs.
Add a Save button that pushes these configuration values to the local settings table/JSON file, including a validation rule ensuring the three weights sum up to exactly
1.0.Projects Tab UI & Action Button:
Refactor the "Import Quality Data" button to be named "Grade Project Subframes" (or "Recalculate Project Grades").
Connect its click-handler to a worker that pulls the custom parameters from settings and executes the grading loop on all subframes tied to the selected project.
Backend Grading Execution:
Group the active project's frames by filter.
Apply a hard gate for any frame exceeding the Max Star Roundness Limit.
Calculate statistical Z-scores for HFD (lower is better), SNR Weight (higher is better), and Sky Flux (lower is better) relative to the filter group's mean and standard deviation.
Combine metrics via user weights to produce a
quality_score(between 0 and 1, flag frames below the cutoff as Rejected and frames equal to or above the objective as Approved, and trigger a refresh of the project's goal counters.