3487 - | def test_rflag_timeavg_on_residual(self): |
3488 - | '''flagdata: rflag with timeavg on residual (corrected - model), and compare |
3489 - | vs mstransform + rflag without timeavg''' |
3490 - | |
3491 - | |
3492 - | vis = "Four_ants_3C286.ms" |
3493 - | |
3494 - | timebin = '8s' |
3495 - | |
3496 - | |
3497 - | flagdata(vis, flagbackup=False, mode='unflag') |
3498 - | |
3499 - | |
3500 - | |
3501 - | spws = '0,1,2' |
3502 - | |
3503 - | |
3504 - | res1 = flagdata(vis=vis, spw=spws, action='calculate', mode='rflag', |
3505 - | datacolumn='residual', extendflags=False) |
3506 - | |
3507 - | |
3508 - | flagged1 = 'test_rflag_timeavg_residual_step2.ms' |
3509 - | mstransform(vis=vis, spw=spws, outputvis=flagged1, |
3510 - | datacolumn='data', timeaverage=True, timebin=timebin) |
3511 - | res2 = flagdata(vis=vis, spw=spws, action='calculate', mode='rflag', |
3512 - | datacolumn='residual', extendflags=False) |
3513 - | |
3514 - | |
3515 - | res3 = flagdata(vis=vis, spw=spws, action='calculate', mode='rflag', |
3516 - | datacolumn='residual', timeavg=True, timebin=timebin, |
3517 - | extendflags=False) |
3518 - | |
3519 - | def check_reports_timeavg(report1, report2, report3): |
3520 - | import numpy as np |
3521 - | report1 = res1['report0'] |
3522 - | report2 = res2['report0'] |
3523 - | report3 = res3['report0'] |
3524 - | self.assertEqual(report2['type'], 'rflag') |
3525 - | self.assertEqual(report3['type'], report2['type']) |
3526 - | freq_tol = 1e-1 |
3527 - | self.assertTrue(np.allclose(report1['freqdev'], report2['freqdev'], |
3528 - | rtol=freq_tol)) |
3529 - | self.assertTrue(np.allclose(report2['freqdev'], report3['freqdev'], |
3530 - | rtol=freq_tol)) |
3531 - | time_tol = 1e-1 |
3532 - | self.assertTrue(np.allclose(report1['timedev'], report2['timedev'], |
3533 - | rtol=time_tol)) |
3534 - | |
3535 - | time_div_tol = 2.5e-1 |
3536 - | report1['timedev'][:,2] = report1['timedev'][:,2] / np.sqrt(8) |
3537 - | self.assertTrue(np.allclose(report1['timedev'], |
3538 - | report3['timedev'], rtol=time_div_tol)) |
3539 - | |
3540 - | self.assertEqual(res1['type'], 'list') |
3541 - | self.assertEqual(res1['type'], res2['type']) |
3542 - | self.assertEqual(res1['type'], res3['type']) |
3543 - | check_reports_timeavg(res1['report0'], res2['report0'], res3['report0']) |
3544 - | |
3570 - | def test_rflag_chanavg_on_residual(self): |
3571 - | '''flagdata: rflag with chanavg on residual (corrected - model), and compare |
3572 - | vs mstransform + rflag without average''' |
3573 - | |
3574 - | |
3575 - | vis = "Four_ants_3C286.ms" |
3576 - | |
3577 - | timebin = '8s' |
3578 - | |
3579 - | |
3580 - | flagdata(vis, flagbackup=False, mode='unflag') |
3581 - | |
3582 - | |
3583 - | |
3584 - | spws = '0,1,2' |
3585 - | |
3586 - | |
3587 - | res1 = flagdata(vis=vis, spw=spws, action='calculate', mode='rflag', |
3588 - | datacolumn='residual', extendflags=False) |
3589 - | |
3590 - | |
3591 - | flagged1 = 'test_rflag_timeavg_residual_step2.ms' |
3592 - | mstransform(vis=vis, spw=spws, outputvis=flagged1, |
3593 - | datacolumn='data', chanaverage=True, chanbin=32) |
3594 - | res2 = flagdata(vis=vis, spw=spws, action='calculate', mode='rflag', |
3595 - | datacolumn='residual', extendflags=False) |
3596 - | |
3597 - | |
3598 - | res3 = flagdata(vis=vis, spw=spws, action='calculate', mode='rflag', |
3599 - | datacolumn='residual', channelavg=True, chanbin=32, |
3600 - | extendflags=False) |
3601 - | |
3602 - | def check_reports_chanavg(report1, report2, report3): |
3603 - | import numpy as np |
3604 - | self.assertEqual(report2['type'], 'rflag') |
3605 - | self.assertEqual(report3['type'], report2['type']) |
3606 - | freq_tol = 1e-1 |
3607 - | self.assertTrue(np.allclose(report1['freqdev'], report2['freqdev'], |
3608 - | rtol=freq_tol)) |
3609 - | |
3610 - | freq_div_tol = 2.5e-1 |
3611 - | report2['freqdev'][:,2] = report2['freqdev'][:,2] / 2 |
3612 - | self.assertTrue(np.allclose(report2['freqdev'], report3['freqdev'], |
3613 - | rtol=freq_div_tol)) |
3614 - | time_tol = 1e-1 |
3615 - | self.assertTrue(np.allclose(report1['timedev'], report2['timedev'], |
3616 - | rtol=time_tol)) |
3617 - | time_div_tol = 6e-1 |
3618 - | report1['timedev'][:,2] = report1['timedev'][:,2] / 4 |
3619 - | self.assertTrue(np.allclose(report1['timedev'], |
3620 - | report3['timedev'], rtol=time_div_tol)) |
3621 - | |
3622 - | self.assertEqual(res1['type'], 'list') |
3623 - | self.assertEqual(res1['type'], res2['type']) |
3624 - | self.assertEqual(res1['type'], res3['type']) |
3625 - | check_reports_chanavg(res1['report0'], res2['report0'], res3['report0']) |
3626 - | |
3615 + | |
3616 + | |
3617 + | |
3618 + | |
3619 + | |
3620 + | class test_preaveraging_rflag_residual(test_base): |
3621 + | """Test pre-averaging (channel / time) with RFlag and datacolumn='residual'""" |
3622 + | |
3623 + | def setUp(self): |
3624 + | self.setUp_data4tfcrop() |
3625 + | |
3626 + | def tearDown(self): |
3627 + | os.system('rm -rf test_rflag_timeavg_residual*step2*ms') |
3628 + | os.system('rm -rf test_rflag_channelavg_residual*step2*ms') |
3629 + | |
3630 + | def test_rflag_timeavg_on_residual(self): |
3631 + | '''flagdata: rflag with timeavg on residual (corrected - model), and compare |
3632 + | vs mstransform + rflag without timeavg''' |
3633 + | |
3634 + | |
3635 + | timebin = '8s' |
3636 + | |
3637 + | |
3638 + | |
3639 + | spws = '0,1,2' |
3640 + | |
3641 + | |
3642 + | res1 = flagdata(vis=self.vis, spw=spws, action='calculate', mode='rflag', |
3643 + | datacolumn='residual', extendflags=False) |
3644 + | |
3645 + | |
3646 + | flagged2 = 'test_rflag_timeavg_residual_step2.ms' |
3647 + | mstransform(vis=self.vis, spw=spws, outputvis=flagged2, |
3648 + | datacolumn='data,model,corrected', timeaverage=True, timebin=timebin) |
3649 + | res2 = flagdata(vis=flagged2, spw=spws, action='calculate', mode='rflag', |
3650 + | datacolumn='residual', extendflags=False) |
3651 + | |
3652 + | |
3653 + | res3 = flagdata(vis=self.vis, spw=spws, action='calculate', mode='rflag', |
3654 + | datacolumn='residual', timeavg=True, timebin=timebin, |
3655 + | extendflags=False) |
3656 + | |
3657 + | def check_reports_timeavg(report1, report2, report3): |
3658 + | import numpy as np |
3659 + | print "report 1", report1 |
3660 + | print "report 2", report2 |
3661 + | print "report 3", report3 |
3662 + | self.assertEqual(report2['type'], 'rflag') |
3663 + | self.assertEqual(report3['type'], report2['type']) |
3664 + | freq_tol = 1e-1 |
3665 + | self.assertTrue(np.allclose(report1['freqdev'], report3['freqdev'], |
3666 + | rtol=freq_tol)) |
3667 + | self.assertTrue(np.allclose(report2['freqdev'], report3['freqdev'], |
3668 + | rtol=freq_tol)) |
3669 + | |
3670 + | report1['timedev'][:,2] = report1['timedev'][:,2] / np.sqrt(8) |
3671 + | time_div_tol = 3.3e-1 |
3672 + | self.assertTrue(np.allclose(report1['timedev'], report3['timedev'], |
3673 + | rtol=time_div_tol)) |
3674 + | time_tol = 1.5e-1 |
3675 + | self.assertTrue(np.allclose(report2['timedev'], |
3676 + | report3['timedev'], rtol=time_tol)) |
3677 + | |
3678 + | self.assertEqual(res1['type'], 'list') |
3679 + | self.assertEqual(res1['type'], res2['type']) |
3680 + | self.assertEqual(res1['type'], res3['type']) |
3681 + | check_reports_timeavg(res1['report0'], res2['report0'], res3['report0']) |
3682 + | |
3683 + | def test_rflag_channelavg_on_residual(self): |
3684 + | '''flagdata: rflag with channelavg on residual (corrected - model), and compare |
3685 + | vs mstransform + rflag without average''' |
3686 + | |
3687 + | |
3688 + | timebin = '8s' |
3689 + | |
3690 + | |
3691 + | |
3692 + | spws = '0,1,2' |
3693 + | |
3694 + | |
3695 + | res1 = flagdata(vis=self.vis, spw=spws, action='calculate', mode='rflag', |
3696 + | datacolumn='residual', extendflags=False) |
3697 + | |
3698 + | |
3699 + | flagged2 = 'test_rflag_channelavg_residual_step2.ms' |
3700 + | mstransform(vis=self.vis, spw=spws, outputvis=flagged2, |
3701 + | datacolumn='data,model,corrected', chanaverage=True, chanbin=32) |
3702 + | res2 = flagdata(vis=flagged2, spw=spws, action='calculate', mode='rflag', |
3703 + | datacolumn='residual', extendflags=False) |
3704 + | |
3705 + | |
3706 + | res3 = flagdata(vis=self.vis, spw=spws, action='calculate', mode='rflag', |
3707 + | datacolumn='residual', channelavg=True, chanbin=32, |
3708 + | extendflags=False) |
3709 + | |
3710 + | def check_reports_channelavg(report1, report2, report3): |
3711 + | import numpy as np |
3712 + | self.assertEqual(report2['type'], 'rflag') |
3713 + | self.assertEqual(report3['type'], report2['type']) |
3714 + | |
3715 + | report1['freqdev'][:,2] = report1['freqdev'][:,2] / 2 |
3716 + | freq_div_tol = 1e-1 |
3717 + | self.assertTrue(np.allclose(report1['freqdev'], report3['freqdev'], |
3718 + | rtol=freq_div_tol)) |
3719 + | freq_tol = 5e-2 |
3720 + | self.assertTrue(np.allclose(report2['freqdev'], report3['freqdev'], |
3721 + | rtol=freq_tol)) |
3722 + | |
3723 + | report1['timedev'][:,2] = report1['timedev'][:,2] / 4 |
3724 + | time_div_tol = 6.6e-1 |
3725 + | self.assertTrue(np.allclose(report1['timedev'], report3['timedev'], |
3726 + | rtol=time_div_tol)) |
3727 + | time_tol = 5e-2 |
3728 + | self.assertTrue(np.allclose(report2['timedev'], |
3729 + | report3['timedev'], rtol=time_tol)) |
3730 + | |
3731 + | self.assertEqual(res1['type'], 'list') |
3732 + | self.assertEqual(res1['type'], res2['type']) |
3733 + | self.assertEqual(res1['type'], res3['type']) |
3734 + | check_reports_channelavg(res1['report0'], res2['report0'], res3['report0']) |
3735 + | |
3736 + | |