make intermediate display more readable
This commit is contained in:
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 223 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 49 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 43 KiB |
@@ -98,10 +98,10 @@ def main():
|
|||||||
iterations = 5
|
iterations = 5
|
||||||
algo="richardson"
|
algo="richardson"
|
||||||
# Initial crop
|
# Initial crop
|
||||||
display_crop = True
|
display_crop = False
|
||||||
# Error estimation
|
# Error estimation
|
||||||
error_sub_shape = (10,10)
|
error_sub_shape = (10,10)
|
||||||
display_error = True
|
display_error = False
|
||||||
# Data binning
|
# Data binning
|
||||||
rebin = True
|
rebin = True
|
||||||
if rebin:
|
if rebin:
|
||||||
@@ -110,7 +110,7 @@ def main():
|
|||||||
rebin_operation = 'sum' #sum or average
|
rebin_operation = 'sum' #sum or average
|
||||||
# Alignement
|
# Alignement
|
||||||
align_center = 'image' #If None will align image to image center
|
align_center = 'image' #If None will align image to image center
|
||||||
display_data = True
|
display_data = False
|
||||||
# Smoothing
|
# Smoothing
|
||||||
smoothing_function = 'combine' #gaussian_after, weighted_gaussian_after, gaussian, weighted_gaussian or combine
|
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.20 #If None, no smoothing is done
|
||||||
@@ -120,7 +120,7 @@ def main():
|
|||||||
rotate_data = False #rotation to North convention can give erroneous results
|
rotate_data = False #rotation to North convention can give erroneous results
|
||||||
# Final crop
|
# Final crop
|
||||||
crop = False #Crop to desired ROI
|
crop = False #Crop to desired ROI
|
||||||
final_display = True
|
final_display = False
|
||||||
# Polarization map output
|
# Polarization map output
|
||||||
figname = 'NGC1068_FOC' #target/intrument name
|
figname = 'NGC1068_FOC' #target/intrument name
|
||||||
figtype = '_combine_FWHM020' #additionnal informations
|
figtype = '_combine_FWHM020' #additionnal informations
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ def plot_obs(data_array, headers, shape=None, vmin=0., vmax=6., rectangle=None,
|
|||||||
be saved. Not used if savename is None.
|
be saved. Not used if savename is None.
|
||||||
Defaults to current folder.
|
Defaults to current folder.
|
||||||
"""
|
"""
|
||||||
|
plt.rcParams.update({'font.size': 10})
|
||||||
if shape is None:
|
if shape is None:
|
||||||
shape = np.array([np.ceil(np.sqrt(data_array.shape[0])).astype(int),]*2)
|
shape = np.array([np.ceil(np.sqrt(data_array.shape[0])).astype(int),]*2)
|
||||||
fig, ax = plt.subplots(shape[0], shape[1], figsize=(10,10), dpi=200,
|
fig, ax = plt.subplots(shape[0], shape[1], figsize=(10,10), dpi=200,
|
||||||
@@ -147,6 +148,7 @@ def plot_Stokes(Stokes, savename=None, plots_folder=""):
|
|||||||
wcs = WCS(Stokes[0]).deepcopy()
|
wcs = WCS(Stokes[0]).deepcopy()
|
||||||
|
|
||||||
# Plot figure
|
# Plot figure
|
||||||
|
plt.rcParams.update({'font.size': 10})
|
||||||
fig = plt.figure(figsize=(30,10))
|
fig = plt.figure(figsize=(30,10))
|
||||||
|
|
||||||
ax = fig.add_subplot(131, projection=wcs)
|
ax = fig.add_subplot(131, projection=wcs)
|
||||||
|
|||||||
@@ -261,6 +261,7 @@ def crop_array(data_array, headers, error_array=None, data_mask=None, step=5, nu
|
|||||||
new_shape = np.array([v_array[1]-v_array[0],v_array[3]-v_array[2]])
|
new_shape = np.array([v_array[1]-v_array[0],v_array[3]-v_array[2]])
|
||||||
rectangle = [v_array[2], v_array[0], new_shape[1], new_shape[0], 0., 'b']
|
rectangle = [v_array[2], v_array[0], new_shape[1], new_shape[0], 0., 'b']
|
||||||
if display:
|
if display:
|
||||||
|
plt.rcParams.update({'font.size': 20})
|
||||||
fig, ax = plt.subplots(figsize=(10,10))
|
fig, ax = plt.subplots(figsize=(10,10))
|
||||||
data = data_array[0]
|
data = data_array[0]
|
||||||
instr = headers[0]['instrume']
|
instr = headers[0]['instrume']
|
||||||
@@ -276,13 +277,13 @@ def crop_array(data_array, headers, error_array=None, data_mask=None, step=5, nu
|
|||||||
color='grey', alpha=0.3)
|
color='grey', alpha=0.3)
|
||||||
ax.plot([0,data.shape[1]-1], [data.shape[1]/2, data.shape[1]/2], '--', lw=1,
|
ax.plot([0,data.shape[1]-1], [data.shape[1]/2, data.shape[1]/2], '--', lw=1,
|
||||||
color='grey', alpha=0.3)
|
color='grey', alpha=0.3)
|
||||||
ax.annotate(instr+":"+rootname, color='white', fontsize=5,
|
ax.annotate(instr+":"+rootname, color='white', fontsize=10,
|
||||||
xy=(0.02, 0.95), xycoords='axes fraction')
|
xy=(0.02, 0.95), xycoords='axes fraction')
|
||||||
ax.annotate(filt, color='white', fontsize=10, xy=(0.02, 0.02),
|
ax.annotate(filt, color='white', fontsize=14, xy=(0.02, 0.02),
|
||||||
xycoords='axes fraction')
|
xycoords='axes fraction')
|
||||||
ax.annotate(exptime, color='white', fontsize=5, xy=(0.80, 0.02),
|
ax.annotate(str(exptime)+" s", color='white', fontsize=10, xy=(0.80, 0.02),
|
||||||
xycoords='axes fraction')
|
xycoords='axes fraction')
|
||||||
ax.set(title="Location of cropped image.",
|
ax.set(#title="Location of cropped image.",
|
||||||
xlabel='pixel offset',
|
xlabel='pixel offset',
|
||||||
ylabel='pixel offset')
|
ylabel='pixel offset')
|
||||||
|
|
||||||
@@ -430,7 +431,7 @@ def get_error(data_array, headers, error_array=None, data_mask=None, sub_shape=N
|
|||||||
if error_array is None:
|
if error_array is None:
|
||||||
error_array = np.zeros(data_array.shape)
|
error_array = np.zeros(data_array.shape)
|
||||||
if not data_mask is None:
|
if not data_mask is None:
|
||||||
data, error, mask = data_array, error_array, data_mask#_ = crop_array(data_array, headers, error_array, data_mask, step=5, null_val=0., inside=False)
|
data, error, mask = data_array, error_array, data_mask
|
||||||
else:
|
else:
|
||||||
data, error, _ = crop_array(data_array, headers, error_array, step=5, null_val=0., inside=False)
|
data, error, _ = crop_array(data_array, headers, error_array, step=5, null_val=0., inside=False)
|
||||||
mask = np.ones(data[0].shape, dtype=bool)
|
mask = np.ones(data[0].shape, dtype=bool)
|
||||||
@@ -487,6 +488,7 @@ def get_error(data_array, headers, error_array=None, data_mask=None, sub_shape=N
|
|||||||
print(data_array[i])
|
print(data_array[i])
|
||||||
|
|
||||||
if display:
|
if display:
|
||||||
|
plt.rcParams.update({'font.size': 20})
|
||||||
convert_flux = headers[0]['photflam']
|
convert_flux = headers[0]['photflam']
|
||||||
date_time = np.array([headers[i]['date-obs']+';'+headers[i]['time-obs']
|
date_time = np.array([headers[i]['date-obs']+';'+headers[i]['time-obs']
|
||||||
for i in range(len(headers))])
|
for i in range(len(headers))])
|
||||||
@@ -500,7 +502,7 @@ def get_error(data_array, headers, error_array=None, data_mask=None, sub_shape=N
|
|||||||
for f in np.unique(filt):
|
for f in np.unique(filt):
|
||||||
mask = [fil==f for fil in filt]
|
mask = [fil==f for fil in filt]
|
||||||
ax.scatter(date_time[mask], background[mask]*convert_flux,
|
ax.scatter(date_time[mask], background[mask]*convert_flux,
|
||||||
color=dict_filt[f],label="Filter : {0:s}".format(f))
|
color=dict_filt[f],label="{0:s}".format(f))
|
||||||
ax.errorbar(date_time, background*convert_flux,
|
ax.errorbar(date_time, background*convert_flux,
|
||||||
yerr=error_array[:,0,0]*convert_flux, fmt='+k',
|
yerr=error_array[:,0,0]*convert_flux, fmt='+k',
|
||||||
markersize=0, ecolor=c_filt)
|
markersize=0, ecolor=c_filt)
|
||||||
@@ -511,7 +513,7 @@ def get_error(data_array, headers, error_array=None, data_mask=None, sub_shape=N
|
|||||||
ax.xaxis.set_major_formatter(formatter)
|
ax.xaxis.set_major_formatter(formatter)
|
||||||
ax.set_xlabel("Observation date and time")
|
ax.set_xlabel("Observation date and time")
|
||||||
ax.set_ylabel(r"Flux [$ergs \cdot cm^{-2} \cdot s^{-1} \cdot \AA^{-1}$]")
|
ax.set_ylabel(r"Flux [$ergs \cdot cm^{-2} \cdot s^{-1} \cdot \AA^{-1}$]")
|
||||||
ax.set_title("Background flux and error computed for each image")
|
#ax.set_title("Background flux and error computed for each image")
|
||||||
plt.legend()
|
plt.legend()
|
||||||
|
|
||||||
fig2, ax2 = plt.subplots(figsize=(10,10))
|
fig2, ax2 = plt.subplots(figsize=(10,10))
|
||||||
@@ -524,13 +526,13 @@ def get_error(data_array, headers, error_array=None, data_mask=None, sub_shape=N
|
|||||||
im = ax2.imshow(data0, vmin=data0.min(), vmax=data0.max(), origin='lower', cmap='gray')
|
im = ax2.imshow(data0, vmin=data0.min(), vmax=data0.max(), origin='lower', cmap='gray')
|
||||||
x, y, width, height, angle, color = rectangle[0]
|
x, y, width, height, angle, color = rectangle[0]
|
||||||
ax2.add_patch(Rectangle((x, y),width,height,edgecolor=color,fill=False))
|
ax2.add_patch(Rectangle((x, y),width,height,edgecolor=color,fill=False))
|
||||||
ax2.annotate(instr+":"+rootname, color='white', fontsize=5,
|
ax2.annotate(instr+":"+rootname, color='white', fontsize=10,
|
||||||
xy=(0.02, 0.95), xycoords='axes fraction')
|
xy=(0.02, 0.95), xycoords='axes fraction')
|
||||||
ax2.annotate(filt, color='white', fontsize=10, xy=(0.02, 0.02),
|
ax2.annotate(filt, color='white', fontsize=14, xy=(0.02, 0.02),
|
||||||
xycoords='axes fraction')
|
xycoords='axes fraction')
|
||||||
ax2.annotate(exptime, color='white', fontsize=5, xy=(0.80, 0.02),
|
ax2.annotate(str(exptime)+" s", color='white', fontsize=10, xy=(0.80, 0.02),
|
||||||
xycoords='axes fraction')
|
xycoords='axes fraction')
|
||||||
ax2.set(title="Location of background computation.",
|
ax2.set(#title="Location of background computation.",
|
||||||
xlabel='pixel offset',
|
xlabel='pixel offset',
|
||||||
ylabel='pixel offset')
|
ylabel='pixel offset')
|
||||||
|
|
||||||
@@ -911,7 +913,7 @@ def smooth_data(data_array, error_array, data_mask, headers, FWHM=1.,
|
|||||||
weights = np.ones(error_array[i].shape)
|
weights = np.ones(error_array[i].shape)
|
||||||
if smoothing.lower()[:6] in ['weight']:
|
if smoothing.lower()[:6] in ['weight']:
|
||||||
weights = 1./error_array[i]**2
|
weights = 1./error_array[i]**2
|
||||||
weights /= weights.sum()
|
#weights /= weights.max()
|
||||||
kernel = gaussian2d(x, y, stdev)
|
kernel = gaussian2d(x, y, stdev)
|
||||||
kernel /= kernel.sum()
|
kernel /= kernel.sum()
|
||||||
smoothed[i] = convolve2d(image*weights/image.sum(),kernel,'same')*image.sum()
|
smoothed[i] = convolve2d(image*weights/image.sum(),kernel,'same')*image.sum()
|
||||||
|
|||||||
Reference in New Issue
Block a user