diff --git a/plots/M87/POS1/animated_loop/M87_005_log_core.gif b/plots/M87/POS1/animated_loop/M87_005_log_core.gif index 9e1a584..5f66fd5 100644 Binary files a/plots/M87/POS1/animated_loop/M87_005_log_core.gif and b/plots/M87/POS1/animated_loop/M87_005_log_core.gif differ diff --git a/plots/M87/POS1/animated_loop/M87_020_lin_core.gif b/plots/M87/POS1/animated_loop/M87_020_lin_core.gif index 11e1d50..dba3172 100644 Binary files a/plots/M87/POS1/animated_loop/M87_020_lin_core.gif and b/plots/M87/POS1/animated_loop/M87_020_lin_core.gif differ diff --git a/plots/M87/POS1/animated_loop/M87_020_lin_core.png b/plots/M87/POS1/animated_loop/M87_020_lin_core.png deleted file mode 100644 index d0ac5bc..0000000 Binary files a/plots/M87/POS1/animated_loop/M87_020_lin_core.png and /dev/null differ diff --git a/plots/M87/POS1/animated_loop/test.gif b/plots/M87/POS1/animated_loop/test.gif new file mode 100644 index 0000000..3c153b5 Binary files /dev/null and b/plots/M87/POS1/animated_loop/test.gif differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005.png new file mode 100644 index 0000000..5f349c0 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005.png differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_I.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_I.png new file mode 100644 index 0000000..a37bd79 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_I.png differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_IQU.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_IQU.png new file mode 100644 index 0000000..a8e051c Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_IQU.png differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_I_err.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_I_err.png new file mode 100644 index 0000000..f6f70d8 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_I_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P.png new file mode 100644 index 0000000..1868d57 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P.png differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P_err.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P_err.png new file mode 100644 index 0000000..36150e1 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P_flux.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P_flux.png new file mode 100644 index 0000000..5c17748 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_P_flux.png differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_SNRi.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_SNRi.png new file mode 100644 index 0000000..ea967b6 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_SNRi.png differ diff --git a/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_SNRp.png b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_SNRp.png new file mode 100644 index 0000000..ef473da Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1995_FOC_combine_FWHM005_SNRp.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005.png new file mode 100644 index 0000000..365923d Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_I.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_I.png new file mode 100644 index 0000000..9e72d1b Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_I.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_IQU.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_IQU.png new file mode 100644 index 0000000..302a66f Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_IQU.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_I_err.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_I_err.png new file mode 100644 index 0000000..247f2af Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_I_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P.png new file mode 100644 index 0000000..dc8fcd4 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P_err.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P_err.png new file mode 100644 index 0000000..29a53b9 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P_flux.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P_flux.png new file mode 100644 index 0000000..511477f Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_P_flux.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_SNRi.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_SNRi.png new file mode 100644 index 0000000..33bcf7a Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_SNRi.png differ diff --git a/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_SNRp.png b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_SNRp.png new file mode 100644 index 0000000..1cdd03d Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1996_FOC_combine_FWHM005_SNRp.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005.png new file mode 100644 index 0000000..8fea4ab Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_I.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_I.png new file mode 100644 index 0000000..00f602b Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_I.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_IQU.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_IQU.png new file mode 100644 index 0000000..d7d2798 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_IQU.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_I_err.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_I_err.png new file mode 100644 index 0000000..67a25e6 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_I_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P.png new file mode 100644 index 0000000..fabacaf Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P_err.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P_err.png new file mode 100644 index 0000000..fe9ed35 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P_flux.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P_flux.png new file mode 100644 index 0000000..b6f8760 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_P_flux.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_SNRi.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_SNRi.png new file mode 100644 index 0000000..2afb8f0 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_SNRi.png differ diff --git a/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_SNRp.png b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_SNRp.png new file mode 100644 index 0000000..819e6eb Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1997_FOC_combine_FWHM005_SNRp.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005.png new file mode 100644 index 0000000..cfea091 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_I.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_I.png new file mode 100644 index 0000000..0d0cb5e Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_I.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_IQU.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_IQU.png new file mode 100644 index 0000000..db2b70b Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_IQU.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_I_err.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_I_err.png new file mode 100644 index 0000000..c1382b8 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_I_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P.png new file mode 100644 index 0000000..67b4fa7 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P_err.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P_err.png new file mode 100644 index 0000000..b221a63 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P_flux.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P_flux.png new file mode 100644 index 0000000..2b4fab9 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_P_flux.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_SNRi.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_SNRi.png new file mode 100644 index 0000000..31a6de3 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_SNRi.png differ diff --git a/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_SNRp.png b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_SNRp.png new file mode 100644 index 0000000..cf3858d Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1998_FOC_combine_FWHM005_SNRp.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005.png new file mode 100644 index 0000000..dabcaf3 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_I.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_I.png new file mode 100644 index 0000000..4a29bde Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_I.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_IQU.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_IQU.png new file mode 100644 index 0000000..41e900b Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_IQU.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_I_err.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_I_err.png new file mode 100644 index 0000000..cd44485 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_I_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P.png new file mode 100644 index 0000000..752ab01 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P_err.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P_err.png new file mode 100644 index 0000000..074c0c1 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P_err.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P_flux.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P_flux.png new file mode 100644 index 0000000..4e2a958 Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_P_flux.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_SNRi.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_SNRi.png new file mode 100644 index 0000000..d98875a Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_SNRi.png differ diff --git a/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_SNRp.png b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_SNRp.png new file mode 100644 index 0000000..67813db Binary files /dev/null and b/plots/M87/POS3/M87_POS3_1999_FOC_combine_FWHM005_SNRp.png differ diff --git a/plots/M87/POS3/animated_loop/test.gif b/plots/M87/POS3/animated_loop/test.gif new file mode 100644 index 0000000..8413e30 Binary files /dev/null and b/plots/M87/POS3/animated_loop/test.gif differ diff --git a/src/FOC_reduction.py b/src/FOC_reduction.py index 681b236..4110e6d 100755 --- a/src/FOC_reduction.py +++ b/src/FOC_reduction.py @@ -16,94 +16,99 @@ from lib.deconvolve import from_file_psf import matplotlib.pyplot as plt from astropy.wcs import WCS +##### User inputs +## Input and output locations +#globals()['data_folder'] = "../data/NGC1068_x274020/" +#globals()['infiles'] = ['x274020at_c0f.fits','x274020bt_c0f.fits','x274020ct_c0f.fits', +# 'x274020dt_c0f.fits','x274020et_c0f.fits','x274020ft_c0f.fits', +# 'x274020gt_c0f.fits','x274020ht_c0f.fits','x274020it_c0f.fits'] +##psf_file = 'NGC1068_f253m00.fits' +#globals()['plots_folder'] = "../plots/NGC1068_x274020/" + +#globals()['data_folder'] = "../data/IC5063_x3nl030/" +#globals()['infiles'] = ['x3nl0301r_c0f.fits','x3nl0302r_c0f.fits','x3nl0303r_c0f.fits'] +##psf_file = 'IC5063_f502m00.fits' +#globals()['plots_folder'] = "../plots/IC5063_x3nl030/" + +#globals()['data_folder'] = "../data/NGC1068_x14w010/" +#globals()['infiles'] = ['x14w0101t_c0f.fits','x14w0102t_c0f.fits','x14w0103t_c0f.fits', +# 'x14w0104t_c0f.fits','x14w0105p_c0f.fits','x14w0106t_c0f.fits'] +#globals()['plots_folder'] = "../plots/NGC1068_x14w010/" + +#globals()['data_folder'] = "../data/3C405_x136060/" +#globals()['infiles'] = ['x1360601t_c0f.fits','x1360602t_c0f.fits','x1360603t_c0f.fits'] +#globals()['plots_folder'] = "../plots/3C405_x136060/" + +#globals()['data_folder'] = "../data/CygnusA_x43w0/" +#globals()['infiles'] = ['x43w0101r_c0f.fits', 'x43w0102r_c0f.fits', 'x43w0103r_c0f.fits', +# 'x43w0104r_c0f.fits', 'x43w0105r_c0f.fits', 'x43w0106r_c0f.fits', +# 'x43w0107r_c0f.fits', 'x43w0108r_c0f.fits', 'x43w0109r_c0f.fits'] +#globals()['infiles'] = ['x43w0201r_c0f.fits', 'x43w0202r_c0f.fits', 'x43w0203r_c0f.fits', +# 'x43w0204r_c0f.fits', 'x43w0205r_c0f.fits', 'x43w0206r_c0f.fits'] +#globals()['plots_folder'] = "../plots/CygnusA_x43w0/" + +#globals()['data_folder'] = "../data/3C109_x3mc010/" +#globals()['infiles'] = ['x3mc0101m_c0f.fits','x3mc0102m_c0f.fits','x3mc0103m_c0f.fits'] +#globals()['plots_folder'] = "../plots/3C109_x3mc010/" + +#globals()['data_folder'] = "../data/MKN463_x2rp030/" +#globals()['infiles'] = ['x2rp0201t_c0f.fits', 'x2rp0202t_c0f.fits', 'x2rp0203t_c0f.fits', +# 'x2rp0204t_c0f.fits', 'x2rp0205t_c0f.fits', 'x2rp0206t_c0f.fits', +# 'x2rp0207t_c0f.fits', 'x2rp0301t_c0f.fits', 'x2rp0302t_c0f.fits', +# 'x2rp0303t_c0f.fits', 'x2rp0304t_c0f.fits', 'x2rp0305t_c0f.fits', +# 'x2rp0306t_c0f.fits', 'x2rp0307t_c0f.fits'] +#globals()['plots_folder'] = "../plots/MKN463_x2rp030/" + +#globals()['data_folder'] = "../data/PG1630+377_x39510/" +#globals()['infiles'] = ['x3990201m_c0f.fits', 'x3990205m_c0f.fits', 'x3995101r_c0f.fits', +# 'x3995105r_c0f.fits', 'x3995109r_c0f.fits', 'x3995201r_c0f.fits', +# 'x3995205r_c0f.fits', 'x3990202m_c0f.fits', 'x3990206m_c0f.fits', +# 'x3995102r_c0f.fits', 'x3995106r_c0f.fits', 'x399510ar_c0f.fits', +# 'x3995202r_c0f.fits','x3995206r_c0f.fits'] +#globals()['plots_folder'] = "../plots/PG1630+377_x39510/" + +#globals()['data_folder'] = "../data/MKN3_x3nl010/" +#globals()['infiles'] = ['x3nl0101r_c0f.fits','x3nl0102r_c0f.fits','x3nl0103r_c0f.fits'] +#globals()['plots_folder'] = "../plots/MKN3_x3nl010/" + +#globals()['data_folder'] = "../data/MKN3_x3md010/" +#globals()['infiles'] = ['x3md0101r_c0f.fits', 'x3md0102r_c0f.fits', 'x3md0103r_c0f.fits'] +#globals()['infiles'] = ['x3md0104r_c0f.fits', 'x3md0105r_c0f.fits', 'x3md0106r_c0f.fits'] +#globals()['plots_folder'] = "../plots/MKN3_x3md010/" + +#globals()['data_folder'] = "../data/MKN78_x3nl020/" +#globals()['infiles'] = ['x3nl0201r_c0f.fits','x3nl0202r_c0f.fits','x3nl0203r_c0f.fits'] +#globals()['plots_folder'] = "../plots/MKN78_x3nl020/" + +#globals()['data_folder'] = "../data/3C273_x0u20/" +#globals()['infiles'] = ['x0u20101t_c0f.fits','x0u20102t_c0f.fits','x0u20103t_c0f.fits', +# 'x0u20104t_c0f.fits','x0u20105t_c0f.fits','x0u20106t_c0f.fits', +# 'x0u20201t_c0f.fits','x0u20202t_c0f.fits','x0u20203t_c0f.fits', +# 'x0u20204t_c0f.fits','x0u20205t_c0f.fits','x0u20206t_c0f.fits', +# 'x0u20301t_c0f.fits','x0u20302t_c0f.fits','x0u20303t_c0f.fits', +# 'x0u20304t_c0f.fits','x0u20305t_c0f.fits','x0u20306t_c0f.fits'] +#globals()['plots_folder'] = "../plots/3C273_x0u20/" + +#BEWARE: 5 observations separated by 1 year each (1995, 1996, 1997, 1998, 1999) +#globals()['data_folder'] = "../data/M87/POS1/" +#globals()['infiles'] = ['x2py010ct_c0f.fits','x2py010dt_c0f.fits','x2py010et_c0f.fits','x2py010ft_c0f.fits'] #1995 +#globals()['infiles'] = ['x3be010ct_c0f.fits','x3be010dt_c0f.fits','x3be010et_c0f.fits','x3be010ft_c0f.fits'] #1996 +#globals()['infiles'] = ['x43r010km_c0f.fits','x43r010mm_c0f.fits','x43r010om_c0f.fits','x43r010rm_c0f.fits'] #1997 +#globals()['infiles'] = ['x43r110kr_c0f.fits','x43r110mr_c0f.fits','x43r110or_c0f.fits','x43r110rr_c0f.fits'] #1998 +#globals()['infiles'] = ['x43r210kr_c0f.fits','x43r210mr_c0f.fits','x43r210or_c0f.fits','x43r210rr_c0f.fits'] #1999 +#globals()['plots_folder'] = "../plots/M87/POS1/" + +#BEWARE: 5 observations separated by 1 year each (1995, 1996, 1997, 1998, 1999) +globals()['data_folder'] = "../data/M87/POS3/" +globals()['infiles'] = ['x2py030at_c0f.fits','x2py030bt_c0f.fits','x2py030ct_c0f.fits','x2py0309t_c0f.fits'] #1995 +#globals()['infiles'] = ['x3be030at_c0f.fits','x3be030bt_c0f.fits','x3be030ct_c0f.fits','x3be0309t_c0f.fits'] #1996 +#globals()['infiles'] = ['x43r030em_c0f.fits','x43r030gm_c0f.fits','x43r030im_c0f.fits','x43r030lm_c0f.fits'] #1997 +#globals()['infiles'] = ['x43r130er_c0f.fits','x43r130fr_c0f.fits','x43r130ir_c0f.fits','x43r130lr_c0f.fits'] #1998 +#globals()['infiles'] = ['x43r230er_c0f.fits','x43r230fr_c0f.fits','x43r230ir_c0f.fits','x43r230lr_c0f.fits'] #1999 +globals()['plots_folder'] = "../plots/M87/POS3/" + def main(): - ##### User inputs - ## Input and output locations -# globals()['data_folder'] = "../data/NGC1068_x274020/" -# infiles = ['x274020at_c0f.fits','x274020bt_c0f.fits','x274020ct_c0f.fits', -# 'x274020dt_c0f.fits','x274020et_c0f.fits','x274020ft_c0f.fits', -# 'x274020gt_c0f.fits','x274020ht_c0f.fits','x274020it_c0f.fits'] -## psf_file = 'NGC1068_f253m00.fits' -# globals()['plots_folder'] = "../plots/NGC1068_x274020/" - -# globals()['data_folder'] = "../data/IC5063_x3nl030/" -# infiles = ['x3nl0301r_c0f.fits','x3nl0302r_c0f.fits','x3nl0303r_c0f.fits'] -## psf_file = 'IC5063_f502m00.fits' -# globals()['plots_folder'] = "../plots/IC5063_x3nl030/" - -# globals()['data_folder'] = "../data/NGC1068_x14w010/" -# infiles = ['x14w0101t_c0f.fits','x14w0102t_c0f.fits','x14w0103t_c0f.fits', -# 'x14w0104t_c0f.fits','x14w0105p_c0f.fits','x14w0106t_c0f.fits'] -# globals()['plots_folder'] = "../plots/NGC1068_x14w010/" - -# globals()['data_folder'] = "../data/3C405_x136060/" -# infiles = ['x1360601t_c0f.fits','x1360602t_c0f.fits','x1360603t_c0f.fits'] -# globals()['plots_folder'] = "../plots/3C405_x136060/" - -# globals()['data_folder'] = "../data/CygnusA_x43w0/" -# infiles = ['x43w0101r_c0f.fits', 'x43w0102r_c0f.fits', 'x43w0103r_c0f.fits', -# 'x43w0104r_c0f.fits', 'x43w0105r_c0f.fits', 'x43w0106r_c0f.fits', -# 'x43w0107r_c0f.fits', 'x43w0108r_c0f.fits', 'x43w0109r_c0f.fits'] -# infiles = ['x43w0201r_c0f.fits', 'x43w0202r_c0f.fits', 'x43w0203r_c0f.fits', -# 'x43w0204r_c0f.fits', 'x43w0205r_c0f.fits', 'x43w0206r_c0f.fits'] -# globals()['plots_folder'] = "../plots/CygnusA_x43w0/" - -# globals()['data_folder'] = "../data/3C109_x3mc010/" -# infiles = ['x3mc0101m_c0f.fits','x3mc0102m_c0f.fits','x3mc0103m_c0f.fits'] -# globals()['plots_folder'] = "../plots/3C109_x3mc010/" - -# globals()['data_folder'] = "../data/MKN463_x2rp030/" -# infiles = ['x2rp0201t_c0f.fits', 'x2rp0202t_c0f.fits', 'x2rp0203t_c0f.fits', -# 'x2rp0204t_c0f.fits', 'x2rp0205t_c0f.fits', 'x2rp0206t_c0f.fits', -# 'x2rp0207t_c0f.fits', 'x2rp0301t_c0f.fits', 'x2rp0302t_c0f.fits', -# 'x2rp0303t_c0f.fits', 'x2rp0304t_c0f.fits', 'x2rp0305t_c0f.fits', -# 'x2rp0306t_c0f.fits', 'x2rp0307t_c0f.fits'] -# globals()['plots_folder'] = "../plots/MKN463_x2rp030/" - -# globals()['data_folder'] = "../data/PG1630+377_x39510/" -# infiles = ['x3990201m_c0f.fits', 'x3990205m_c0f.fits', 'x3995101r_c0f.fits', -# 'x3995105r_c0f.fits', 'x3995109r_c0f.fits', 'x3995201r_c0f.fits', -# 'x3995205r_c0f.fits', 'x3990202m_c0f.fits', 'x3990206m_c0f.fits', -# 'x3995102r_c0f.fits', 'x3995106r_c0f.fits', 'x399510ar_c0f.fits', -# 'x3995202r_c0f.fits','x3995206r_c0f.fits'] -# globals()['plots_folder'] = "../plots/PG1630+377_x39510/" - -# globals()['data_folder'] = "../data/MKN3_x3nl010/" -# infiles = ['x3nl0101r_c0f.fits','x3nl0102r_c0f.fits','x3nl0103r_c0f.fits'] -# globals()['plots_folder'] = "../plots/MKN3_x3nl010/" - -# globals()['data_folder'] = "../data/MKN3_x3md010/" -# infiles = ['x3md0101r_c0f.fits', 'x3md0102r_c0f.fits', 'x3md0103r_c0f.fits'] -# infiles = ['x3md0104r_c0f.fits', 'x3md0105r_c0f.fits', 'x3md0106r_c0f.fits'] -# globals()['plots_folder'] = "../plots/MKN3_x3md010/" - -# globals()['data_folder'] = "../data/MKN78_x3nl020/" -# infiles = ['x3nl0201r_c0f.fits','x3nl0202r_c0f.fits','x3nl0203r_c0f.fits'] -# globals()['plots_folder'] = "../plots/MKN78_x3nl020/" - -# globals()['data_folder'] = "../data/3C273_x0u20/" -# infiles = ['x0u20101t_c0f.fits','x0u20102t_c0f.fits','x0u20103t_c0f.fits','x0u20104t_c0f.fits','x0u20105t_c0f.fits','x0u20106t_c0f.fits','x0u20201t_c0f.fits','x0u20202t_c0f.fits','x0u20203t_c0f.fits','x0u20204t_c0f.fits','x0u20205t_c0f.fits','x0u20206t_c0f.fits','x0u20301t_c0f.fits','x0u20302t_c0f.fits','x0u20303t_c0f.fits','x0u20304t_c0f.fits','x0u20305t_c0f.fits','x0u20306t_c0f.fits'] -# globals()['plots_folder'] = "../plots/3C273_x0u20/" - -#BEWARE: 5 observations separated by 1 year each (1995, 1996, 1997, 1998, 1999) - globals()['data_folder'] = "../data/M87/POS1/" -# infiles = ['x2py010ct_c0f.fits','x2py010dt_c0f.fits','x2py010et_c0f.fits','x2py010ft_c0f.fits'] #1995 -# infiles = ['x3be010ct_c0f.fits','x3be010dt_c0f.fits','x3be010et_c0f.fits','x3be010ft_c0f.fits'] #1996 -# infiles = ['x43r010km_c0f.fits','x43r010mm_c0f.fits','x43r010om_c0f.fits','x43r010rm_c0f.fits'] #1997 -# infiles = ['x43r110kr_c0f.fits','x43r110mr_c0f.fits','x43r110or_c0f.fits','x43r110rr_c0f.fits'] #1998 - infiles = ['x43r210kr_c0f.fits','x43r210mr_c0f.fits','x43r210or_c0f.fits','x43r210rr_c0f.fits'] #1999 - globals()['plots_folder'] = "../plots/M87/POS1/" - -#BEWARE: 5 observations separated by 1 year each (1995, 1996, 1997, 1998, 1999) -# globals()['data_folder'] = "../data/M87/POS3/" -# infiles = ['x2py030at_c0f.fits','x2py030bt_c0f.fits','x2py030ct_c0f.fits','x2py0309t_c0f.fits'] #1995 -# infiles = ['x3be030at_c0f.fits','x3be030bt_c0f.fits','x3be030ct_c0f.fits','x3be0309t_c0f.fits'] #1996 -# infiles = ['x43r030em_c0f.fits','x43r030gm_c0f.fits','x43r030im_c0f.fits','x43r030lm_c0f.fits'] #1997 -# infiles = ['x43r130er_c0f.fits','x43r130fr_c0f.fits','x43r130ir_c0f.fits','x43r130lr_c0f.fits'] #1998 -# infiles = ['x43r230er_c0f.fits','x43r230fr_c0f.fits','x43r230ir_c0f.fits','x43r230lr_c0f.fits'] #1999 -# globals()['plots_folder'] = "../plots/M87/POS3/" - ## Reduction parameters # Deconvolution deconvolve = False @@ -123,7 +128,7 @@ def main(): # Data binning rebin = True if rebin: - pxsize = 0.20 + pxsize = 0.05 px_scale = 'arcsec' #pixel, arcsec or full rebin_operation = 'sum' #sum or average # Alignement @@ -131,7 +136,7 @@ def main(): display_data = False # Smoothing smoothing_function = 'combine' #gaussian_after, weighted_gaussian_after, gaussian, weighted_gaussian or combine - smoothing_FWHM = 0.20 #If None, no smoothing is done + smoothing_FWHM = 0.07 #If None, no smoothing is done smoothing_scale = 'arcsec' #pixel or arcsec # Rotation rotate_stokes = True #rotation to North convention can give erroneous results @@ -140,8 +145,8 @@ def main(): crop = False #Crop to desired ROI final_display = True # Polarization map output - figname = 'M87_POS1_1999_FOC' #target/intrument name - figtype = '_combine_FWHM020' #additionnal informations + figname = 'M87_POS3_1995_FOC' #target/intrument name + figtype = '_combine_FWHM005' #additionnal informations SNRp_cut = 3. #P measurments with SNR>3 SNRi_cut = 30. #I measurments with SNR>30, which implies an uncertainty in P of 4.7%. step_vec = 0 #plot all vectors in the array. if step_vec = 2, then every other vector will be plotted @@ -198,8 +203,7 @@ def main(): ## Step 3: # Rotate images to have North up if rotate_stokes: - alpha = headers[0]['orientat'] - I_stokes, Q_stokes, U_stokes, Stokes_cov, data_mask, headers = proj_red.rotate_Stokes(I_stokes, Q_stokes, U_stokes, Stokes_cov, data_mask, headers, -alpha, SNRi_cut=None) + I_stokes, Q_stokes, U_stokes, Stokes_cov, data_mask, headers = proj_red.rotate_Stokes(I_stokes, Q_stokes, U_stokes, Stokes_cov, data_mask, headers, SNRi_cut=None) # Compute polarimetric parameters (polarization degree and angle). P, debiased_P, s_P, s_P_P, PA, s_PA, s_PA_P = proj_red.compute_pol(I_stokes, Q_stokes, U_stokes, Stokes_cov, headers) diff --git a/src/lib/fits.py b/src/lib/fits.py index 3602a35..5367d3c 100755 --- a/src/lib/fits.py +++ b/src/lib/fits.py @@ -52,25 +52,20 @@ def get_obs_data(infiles, data_folder="", compute_flux=False): new_wcs = wcs.WCS(header).deepcopy() if new_wcs.wcs.has_cd() or (new_wcs.wcs.cdelt == np.array([1., 1.])).all(): # Update WCS with relevant information - HST_aper = 2400. # HST aperture in mm - f_ratio = header['f_ratio'] - px_dim = np.array([25., 25.]) # Pixel dimension in µm - if header['pxformt'].lower() == 'zoom': - px_dim[0] = 50. - #new_cdelt = 206.3/3600.*px_dim/(f_ratio*HST_aper) - new_cdelt = np.abs(np.linalg.eig(new_wcs.wcs.cd)[0]) if new_wcs.wcs.has_cd(): old_cd = new_wcs.wcs.cd del new_wcs.wcs.cd keys = list(new_wcs.to_header().keys())+['CD1_1','CD1_2','CD2_1','CD2_2'] for key in keys: header.remove(key, ignore_missing=True) + new_cdelt = np.linalg.eig(old_cd)[0] elif (new_wcs.wcs.cdelt == np.array([1., 1.])).all() and \ (new_wcs.array_shape in [(512, 512),(1024,512),(512,1024),(1024,1024)]): old_cd = new_wcs.wcs.pc new_wcs.wcs.pc = np.dot(old_cd, np.diag(1./new_cdelt)) new_wcs.wcs.cdelt = new_cdelt - header.update(new_wcs.to_header()) + for key, val in new_wcs.to_header().items(): + header[key] = val if compute_flux: for i in range(len(infiles)): diff --git a/src/lib/plots.py b/src/lib/plots.py index 86501db..99ae57f 100755 --- a/src/lib/plots.py +++ b/src/lib/plots.py @@ -462,8 +462,8 @@ class align_maps(object): data = self.map[0].data other_data = self.other_map[0].data - plt.rcParams.update({'font.size': 16}) - self.fig = plt.figure(figsize=(25,15)) + plt.rcParams.update({'font.size': 10}) + self.fig = plt.figure(figsize=(10,10)) #Plot the UV map self.ax1 = self.fig.add_subplot(121, projection=self.wcs_map) self.ax1.set_facecolor('k') @@ -522,8 +522,10 @@ class align_maps(object): #Selection button self.axapply = self.fig.add_axes([0.80, 0.01, 0.1, 0.04]) self.bapply = Button(self.axapply, 'Apply reference') + self.bapply.label.set_fontsize(8) self.axreset = self.fig.add_axes([0.60, 0.01, 0.1, 0.04]) self.breset = Button(self.axreset, 'Leave as is') + self.breset.label.set_fontsize(8) def get_aligned_wcs(self): return self.wcs_map, self.wcs_other @@ -751,7 +753,8 @@ class overplot_pol(align_maps): class align_pol(object): def __init__(self, maps, **kwargs): - maps = np.array(maps) + order = np.argsort(np.array([curr[0].header['mjd-obs'] for curr in maps])) + maps = np.array(maps)[order] self.ref_map, self.other_maps = maps[0], maps[1:] self.wcs = WCS(self.ref_map[0].header) @@ -797,13 +800,16 @@ class align_pol(object): plt.rcdefaults() fig = plt.figure(figsize=(10,10)) ax = fig.add_subplot(111, projection=wcs) - ax.set(xlabel="Right Ascension (J2000)", ylabel="Declination (J2000)", facecolor='k') + ax.set(xlabel="Right Ascension (J2000)", ylabel="Declination (J2000)", facecolor='k', + title="target {0:s} observed on {1:s}".format(curr_map[0].header['targname'], curr_map[0].header['date-obs'])) fig.subplots_adjust(hspace=0, wspace=0, right=0.9) cbar_ax = fig.add_axes([0.95, 0.12, 0.01, 0.75]) if not ax_lim is None: lim = np.concatenate([wcs.world_to_pixel(ax_lim[i]) for i in range(len(ax_lim))]) x_lim, y_lim = lim[0::2], lim[1::2] + print(x_lim[0], y_lim[0], wcs.pixel_to_world(x_lim[0], y_lim[0])) + print(x_lim[1], y_lim[1], wcs.pixel_to_world(x_lim[1], y_lim[1])) ax.set(xlim=x_lim,ylim=y_lim) if v_lim is None: @@ -856,9 +862,11 @@ class align_pol(object): vmin, vmax = np.min([vmin, np.min(self.ref_map[0].data[self.ref_map[0].data > 0.])]), np.max([vmax, np.max(self.ref_map[0].data[self.ref_map[0].data > 0.])]) v_lim = np.array([vmin, vmax]) - fig, ax = self.single_plot(self.ref_map, self.wcs, v_lim = v_lim, SNRp_cut=SNRp_cut, SNRi_cut=SNRi_cut, savename=savename, **kwargs) + fig, ax = self.single_plot(self.ref_map, self.wcs, v_lim = v_lim, SNRp_cut=SNRp_cut, SNRi_cut=SNRi_cut, savename=savename+'_0', **kwargs) x_lim, y_lim = ax.get_xlim(), ax.get_ylim() ax_lim = np.array([self.wcs.pixel_to_world(x_lim[i], y_lim[i]) for i in range(len(x_lim))]) + print(x_lim[0], y_lim[0], ax_lim[0]) + print(x_lim[1], y_lim[1], ax_lim[1]) for i, curr_map in enumerate(self.other_maps): self.single_plot(curr_map, self.wcs_other[i], v_lim=v_lim, ax_lim=ax_lim, SNRp_cut=SNRp_cut, SNRi_cut=SNRi_cut, savename=savename+'_'+str(i+1), **kwargs) diff --git a/src/lib/reduction.py b/src/lib/reduction.py index a7b26b7..704d1a0 100755 --- a/src/lib/reduction.py +++ b/src/lib/reduction.py @@ -651,7 +651,7 @@ def rebin_array(data_array, error_array, headers, pxsize, scale, if scale.lower() in ['px', 'pixel']: Dxy = np.array([pxsize,]*2) elif scale.lower() in ['arcsec','arcseconds']: - Dxy = np.floor(pxsize/w.wcs.cdelt/3600.).astype(int) + Dxy = np.floor(pxsize/np.abs(w.wcs.cdelt)/3600.).astype(int) elif scale.lower() in ['full','integrate']: Dxy = np.floor(image.shape).astype(int) else: @@ -1389,7 +1389,7 @@ def compute_pol(I_stokes, Q_stokes, U_stokes, Stokes_cov, headers): def rotate_Stokes(I_stokes, Q_stokes, U_stokes, Stokes_cov, data_mask, headers, - ang, SNRi_cut=None): + ang=None, SNRi_cut=None): """ Use scipy.ndimage.rotate to rotate I_stokes to an angle, and a rotation matrix to rotate Q, U of a given angle in degrees and update header @@ -1411,9 +1411,10 @@ def rotate_Stokes(I_stokes, Q_stokes, U_stokes, Stokes_cov, data_mask, headers, 2D boolean array delimiting the data to work on. headers : header list List of headers corresponding to the reduced images. - ang : float + ang : float, optional Rotation angle (in degrees) that should be applied to the Stokes - parameters + parameters. If None, will rotate to have North up. + Defaults to None. SNRi_cut : float, optional Cut that should be applied to the signal-to-noise ratio on I. Any SNR < SNRi_cut won't be displayed. If None, cut won't be applied. @@ -1450,6 +1451,11 @@ def rotate_Stokes(I_stokes, Q_stokes, U_stokes, Stokes_cov, data_mask, headers, U_stokes[i,j] = eps*np.sqrt(Stokes_cov[2,2][i,j]) #Rotate I_stokes, Q_stokes, U_stokes using rotation matrix + if ang is None: + ang = np.zeros((len(headers),)) + for i,head in enumerate(headers): + ang[i] = -head['orientat'] + ang = ang.mean() alpha = ang*np.pi/180. mrot = np.array([[1., 0., 0.], [0., np.cos(2.*alpha), np.sin(2.*alpha)], @@ -1490,33 +1496,22 @@ def rotate_Stokes(I_stokes, Q_stokes, U_stokes, Stokes_cov, data_mask, headers, #Update headers to new angle new_headers = [] mrot = np.array([[np.cos(-alpha), -np.sin(-alpha)], - [np.sin(-alpha), np.cos(-alpha)]]) + [np.sin(-alpha), np.cos(-alpha)]]) for header in headers: new_header = deepcopy(header) new_header['orientat'] = header['orientat'] + ang new_wcs = WCS(header).deepcopy() - if new_wcs.wcs.has_cd(): # CD matrix - # Update WCS with relevant information - HST_aper = 2400. # HST aperture in mm - f_ratio = header['f_ratio'] - px_dim = np.array([25., 25.]) # Pixel dimension in µm - if ref_header['pxformt'].lower() == 'zoom': - px_dim[0] = 50. - #new_cdelt = 206.3/3600.*px_dim/(f_ratio*HST_aper) - new_cdelt = np.abs(np.linalg.eig(new_wcs.wcs.cd)[0]) - old_cd = new_wcs.wcs.cd - del new_wcs.wcs.cd - keys = ['CD1_1','CD1_2','CD2_1','CD2_2'] - for key in keys: - new_header.remove(key, ignore_missing=True) - new_wcs.wcs.pc = np.dot(mrot, np.dot(old_cd, np.diag(1./new_cdelt))) - new_wcs.wcs.cdelt = new_cdelt - elif new_wcs.wcs.has_pc(): # PC matrix + CDELT - newpc = np.dot(mrot, new_wcs.wcs.get_pc()) - new_wcs.wcs.pc = newpc + + new_wcs.wcs.pc = np.dot(mrot, new_wcs.wcs.pc) + print(new_wcs.wcs.pc) new_wcs.wcs.crpix = np.dot(mrot, new_wcs.wcs.crpix - old_center[::-1]) + new_center[::-1] new_wcs.wcs.set() - new_header.update(new_wcs.to_header()) + for key, val in new_wcs.to_header().items(): + new_header.set(key,val) + if new_wcs.wcs.pc[0,0] == 1.: + new_header.set('PC1_1',1.) + if new_wcs.wcs.pc[1,1] == 1.: + new_header.set('PC2_2',1.) new_headers.append(new_header) @@ -1619,33 +1614,18 @@ def rotate_data(data_array, error_array, data_mask, headers, ang): #Update headers to new angle new_headers = [] mrot = np.array([[np.cos(-alpha), -np.sin(-alpha)], - [np.sin(-alpha), np.cos(-alpha)]]) + [np.sin(-alpha), np.cos(-alpha)]]) for header in headers: new_header = deepcopy(header) new_header['orientat'] = header['orientat'] + ang new_wcs = WCS(header).deepcopy() - if new_wcs.wcs.has_cd(): # CD matrix - # Update WCS with relevant information - HST_aper = 2400. # HST aperture in mm - f_ratio = ref_header['f_ratio'] - px_dim = np.array([25., 25.]) # Pixel dimension in µm - if ref_header['pxformt'].lower() == 'zoom': - px_dim[0] = 50. - new_cdelt = 206.3/3600.*px_dim/(f_ratio*HST_aper) - old_cd = new_wcs.wcs.cd - del new_wcs.wcs.cd - keys = ['CD1_1','CD1_2','CD2_1','CD2_2'] - for key in keys: - new_header.remove(key, ignore_missing=True) - new_wcs.wcs.pc = np.dot(mrot, np.dot(old_cd, np.diag(1./new_cdelt))) - new_wcs.wcs.cdelt = new_cdelt - elif new_wcs.wcs.has_pc(): # PC matrix + CDELT - newpc = np.dot(mrot, new_wcs.wcs.get_pc()) - new_wcs.wcs.pc = newpc + + new_wcs.wcs.pc = np.dot(mrot, new_wcs.wcs.pc) new_wcs.wcs.crpix = np.dot(mrot, new_wcs.wcs.crpix - old_center[::-1]) + new_center[::-1] new_wcs.wcs.set() - new_header.update(new_wcs.to_header()) + for key, val in new_wcs.to_header().items(): + new_header[key] = val new_headers.append(new_header) globals()['theta'] = theta - alpha diff --git a/src/overplot.py b/src/overplot.py index 1c0f0a9..1e09ddb 100755 --- a/src/overplot.py +++ b/src/overplot.py @@ -45,15 +45,28 @@ from matplotlib.colors import LogNorm #G = overplot_pol(Stokes_UV, Stokes_IR, norm=LogNorm(vmin=1e-17,vmax=5e-15), cmap='inferno_r') #G.plot(SNRp_cut=3.0, SNRi_cut=60.0, savename='../plots/IC5063_x3nl030/IR_overplot_forced.png', norm=LogNorm(vmin=1e-17,vmax=5e-15), cmap='inferno_r') -data_folder = "../data/M87/POS1/" -plots_folder = "../plots/M87/POS1/" -basename = "M87_005_log_core" -M87_95 = fits.open(data_folder+"M87_POS1_1995_FOC_combine_FWHM005.fits") -M87_96 = fits.open(data_folder+"M87_POS1_1996_FOC_combine_FWHM005.fits") -M87_97 = fits.open(data_folder+"M87_POS1_1997_FOC_combine_FWHM005.fits") -M87_98 = fits.open(data_folder+"M87_POS1_1998_FOC_combine_FWHM005.fits") -M87_99 = fits.open(data_folder+"M87_POS1_1999_FOC_combine_FWHM005.fits") +#data_folder1 = "../data/M87/POS1/" +#plots_folder1 = "../plots/M87/POS1/" +#basename1 = "test" +#M87_1_95 = fits.open(data_folder1+"M87_POS1_1995_FOC_combine_FWHM005.fits") +#M87_1_96 = fits.open(data_folder1+"M87_POS1_1996_FOC_combine_FWHM005.fits") +#M87_1_97 = fits.open(data_folder1+"M87_POS1_1997_FOC_combine_FWHM005.fits") +#M87_1_98 = fits.open(data_folder1+"M87_POS1_1998_FOC_combine_FWHM005.fits") +#M87_1_99 = fits.open(data_folder1+"M87_POS1_1999_FOC_combine_FWHM005.fits") +# +#H = align_pol(np.array([M87_1_95,M87_1_96,M87_1_97,M87_1_98,M87_1_99]))#, norm=LogNorm()) +#H.plot(SNRp_cut=3.0, SNRi_cut=30.0, savename=plots_folder1+'animated_loop/'+basename1, norm=LogNorm()) +#command("convert -delay 20 -loop 0 {0:s}animated_loop/{1:s}*.png {0:s}animated_loop/{1:s}.gif && rm {0:s}animated_loop/{1:s}*.png".format(plots_folder1, basename1)) -H = align_pol(np.array([M87_95,M87_96,M87_97,M87_98,M87_99]), norm=LogNorm()) -H.plot(SNRp_cut=3.0, SNRi_cut=30.0, savename=plots_folder+'animated_loop/'+basename, norm=LogNorm()) -command("convert -delay 20 -loop 0 {0:s}animated_loop/{1:s}*.png {0:s}animated_loop/{1:s}.gif && rm {0:s}animated_loop/{1:s}*.png".format(plots_folder, basename)) +data_folder3 = "../data/M87/POS3/" +plots_folder3 = "../plots/M87/POS3/" +basename3 = "test" +M87_3_95 = fits.open(data_folder3+"M87_POS3_1995_FOC_combine_FWHM005.fits") +M87_3_96 = fits.open(data_folder3+"M87_POS3_1996_FOC_combine_FWHM005.fits") +M87_3_97 = fits.open(data_folder3+"M87_POS3_1997_FOC_combine_FWHM005.fits") +M87_3_98 = fits.open(data_folder3+"M87_POS3_1998_FOC_combine_FWHM005.fits") +M87_3_99 = fits.open(data_folder3+"M87_POS3_1999_FOC_combine_FWHM005.fits") + +I = align_pol(np.array([M87_3_95,M87_3_96,M87_3_97,M87_3_98,M87_3_99]))#, norm=LogNorm()) +I.plot(SNRp_cut=3.0, SNRi_cut=30.0, savename=plots_folder3+'animated_loop/'+basename3, norm=LogNorm()) +command("convert -delay 20 -loop 0 {0:s}animated_loop/{1:s}*.png {0:s}animated_loop/{1:s}.gif && rm {0:s}animated_loop/{1:s}*.png".format(plots_folder3, basename3))