diff --git a/atdb/taskdatabase/services/calculated_qualities.py b/atdb/taskdatabase/services/calculated_qualities.py index fe83c0be14fc504c489a98bc748d045a5b0cddf7..732ef6543aa741c1beafb2fae77f55f0d1c82778 100644 --- a/atdb/taskdatabase/services/calculated_qualities.py +++ b/atdb/taskdatabase/services/calculated_qualities.py @@ -76,8 +76,18 @@ def calculate_qualities(task, tasks_for_this_sasid, quality_thresholds): summary_flavour = get_summary_flavour(task) if summary_flavour == SummaryFlavour.IMAGING_COMPRESSION.value: + # shortcut, if quality is already calculated by the workflow then no need to calculate + try: + quality = summary['details']['quality'] + if quality in ['poor', 'moderate', 'good']: + return quality + except: + # no quality key found, continue with rfi_percent + pass + rfi_percent = float(summary['details']['rfi_percent']) + if summary_flavour == SummaryFlavour.DEFAULT.value: # there is 1 key, but it is a filename which not known for key in summary: diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index e17823fc58660d3dad639e180b31317019f47080..b4d295e83a73086e9db8eb0eda5e1ac143a7d00a 100644 --- a/atdb/taskdatabase/templates/taskdatabase/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/index.html @@ -31,7 +31,7 @@ {% include 'taskdatabase/pagination.html' %} </div> </div> - <p class="footer"> Version 20 Aug 2024 + <p class="footer"> Version 26 Aug 2024 </div> {% include 'taskdatabase/refresh.html' %} diff --git a/atdb/taskdatabase/tests/test_calculated_qualities.py b/atdb/taskdatabase/tests/test_calculated_qualities.py index a3dcab9fff615441245c77821d13c00b58248821..72984f05fcf5ff6324c82e72732d9c25b4dd500d 100644 --- a/atdb/taskdatabase/tests/test_calculated_qualities.py +++ b/atdb/taskdatabase/tests/test_calculated_qualities.py @@ -281,3 +281,34 @@ class TestCalculatedQualities(TestCase): # Assert self.assertEqual(remarks, annotation) + + def test_provided_quality_ok(self): + # Arrange + workflow = Workflow(workflow_uri="workflow_imaging_compression") + workflow.save() + + task = Task(sas_id=77777, new_status='stored', outputs=outputs.imaging_compression_with_provided_quality_ok, workflow=workflow) + + # Act + task.save() + quality = task.calculated_qualities['per_task'] + + # Assert + # good is based on quality field + self.assertEqual(quality, "moderate") + + def test_provided_quality_not_ok_use_rfi_percent(self): + # Arrange + workflow = Workflow(workflow_uri="workflow_imaging_compression") + workflow.save() + + task = Task(sas_id=77777, new_status='stored', outputs=outputs.imaging_compression_with_provided_quality_not_ok, + workflow=workflow) + + # Act + task.save() + quality = task.calculated_qualities['per_task'] + + # Assert + # good is based on rfi_percent + self.assertEqual(quality, "good") \ No newline at end of file diff --git a/atdb/taskdatabase/tests/test_calculated_qualities_outputs.py b/atdb/taskdatabase/tests/test_calculated_qualities_outputs.py index 596b28059903aba8a233869fc253eadc53c3b940..42dd531e24dca91c47f70756595fc608ec721001 100644 --- a/atdb/taskdatabase/tests/test_calculated_qualities_outputs.py +++ b/atdb/taskdatabase/tests/test_calculated_qualities_outputs.py @@ -406,4 +406,104 @@ link_target_summary_without_rfi = { "location": "file:///project/ldv/Share/run/2023/6/16/1352_35011/3c48_LINC_target_summary.json", "nameroot": "3c48_LINC_target_summary" }, +} + +imaging_compression_with_provided_quality_ok = { + "quality": { + "summary": { + "details": { + "DStDev": { + "CS001": 15372035.9671943, + "UK608": 22423233.01862699 + }, + "target": [ + "3C295" + ], + "antennas": [ + "CS001HBA0", + "IE613HBA" + ], + "pointing": { + "Sun": 98.62325727494583, + "CasA": 63.8887478639975, + "CygA": 57.33860706164162, + "HerA": 57.53230892059052, + "Moon": 82.10124202600636, + "TauA": 93.60818880478796, + "VirA": 44.64319497995252, + "Jupiter": 65.56149628509407, + "elevation_fraction": 1 + }, + "rfi_percent": 1.7186448587105623, + "quality": "moderate", + "antenna_configuration": "FULL", + "antennas_not_available": [ + "LV614" + ] + }, + "applied_fixes": [], + "rfi_perc_total": "good", + "elevation_score": "good", + "sun_interference": "good", + "unfixable_issues": [], + "moon_interference": "good", + "jupiter_interference": "good", + "degree_incompleteness_array": [], + "array_missing_important_pairs_is": "good", + "array_missing_important_pairs_dutch": "good", + "aggregated_array_data_losses_percentage": "poor", + "array_high_data_loss_on_is_important_pair": "good", + "array_high_data_loss_on_dutch_important_pair": "good" + } + }, +} + +imaging_compression_with_provided_quality_not_ok = { + "quality": { + "summary": { + "details": { + "DStDev": { + "CS001": 15372035.9671943, + "UK608": 22423233.01862699 + }, + "target": [ + "3C295" + ], + "antennas": [ + "CS001HBA0", + "IE613HBA" + ], + "pointing": { + "Sun": 98.62325727494583, + "CasA": 63.8887478639975, + "CygA": 57.33860706164162, + "HerA": 57.53230892059052, + "Moon": 82.10124202600636, + "TauA": 93.60818880478796, + "VirA": 44.64319497995252, + "Jupiter": 65.56149628509407, + "elevation_fraction": 1 + }, + "rfi_percent": 1.7186448587105623, + "quality": "no_a_quality", + "antenna_configuration": "FULL", + "antennas_not_available": [ + "LV614" + ] + }, + "applied_fixes": [], + "rfi_perc_total": "good", + "elevation_score": "good", + "sun_interference": "good", + "unfixable_issues": [], + "moon_interference": "good", + "jupiter_interference": "good", + "degree_incompleteness_array": [], + "array_missing_important_pairs_is": "good", + "array_missing_important_pairs_dutch": "good", + "aggregated_array_data_losses_percentage": "poor", + "array_high_data_loss_on_is_important_pair": "good", + "array_high_data_loss_on_dutch_important_pair": "good" + } + }, } \ No newline at end of file