Blame view

LabTools/IRAP/JPB/phangs_smooth_muse_isrf.pro 5.03 KB
9b0b6d7e   Jean-Philippe Bernard   finished implemen...
1
2
3
4
PRO phangs_smooth_muse_isrf,source_name $
					       ,resolution_filter=resolution_filter $
					       ,save=save $
					       ,test=test
26556ecf   Jean-Philippe Bernard   First commit
5

9b0b6d7e   Jean-Philippe Bernard   finished implemen...
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
;+
; NAME:
;    phangs_smooth_muse_isrf
; PURPOSE:
;    Smoothes ISRF to a given resolution
; CATEGORY:
;    PHANGS ISRF
; CALLING SEQUENCE:
;    phangs_smooth_muse_isrf,source_name[,resolution_filter=][,/save][,/test]=
; INPUTS:
;    source_name            : source name
; OPTIONAL INPUT PARAMETERS:
;    resolution_filter      :resolution of the filter to be used for smoothing (defaults=)
; OUTPUTS:
;    None
; OPTIONAL OUTPUT PARAMETERS:
;    None
; ACCEPTED KEY-WORDS:
;    save      = If set, saves results
;    help      = If set, print this help
; COMMON BLOCKS:
;    None
; SIDE EFFECTS:
;    The following files are written, if they do not already exist:
;    _isrf_min_prediction_*.sav
; RESTRICTIONS:
;    None
; PROCEDURE:
;    
; EXAMPLES
;	phangs_smooth_muse_isrf,'ngc0628',reso_filter='SPIRE3'
; MODIFICATION HISTORY:
;    Written by J.-Ph. Bernard (2023)
;    Evolution details on the DustEMWrap gitlab.
;    See http://dustemwrap.irap.omp.eu/ for FAQ and help.  
;-

IF keyword_set(help) THEN BEGIN
  doc_library,'phangs_smooth_muse_isrf'
  goto,the_end
ENDIF
26556ecf   Jean-Philippe Bernard   First commit
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

dustem_define_la_common
dustem_init

file=!phangs_data_dir+'/ISRF/WORK/'+source_name+'_ref_header.sav' 
restore,file,/verb
;% RESTORE: Restored variable: HREF.

file=!phangs_data_dir+'/ISRF/WORK/'+source_name+'_isrf_min_prediction.sav' 
restore,file,/verb
;% RESTORE: Restored variable: ISRFS.
;% RESTORE: Restored variable: G0S.
;% RESTORE: Restored variable: OBJECT_DISTANCE.
;% RESTORE: Restored variable: OBJECT_THICKNESS.
;% RESTORE: Restored variable: USE_SOURCE_NAME.
9b0b6d7e   Jean-Philippe Bernard   finished implemen...
62
file=!phangs_data_dir+'/ISRF/WORK/'+source_name+'_seds_indices.sav'
26556ecf   Jean-Philippe Bernard   First commit
63
restore,file,/verb
9b0b6d7e   Jean-Philippe Bernard   finished implemen...
64
65
66
67
;% RESTORE: Restored variable: ALL_SEDS_INDICES.

;file=!phangs_data_dir+'/ISRF/WORK/'+source_name+'_all_seds_muse_pixels.sav'
;restore,file,/verb
26556ecf   Jean-Philippe Bernard   First commit
68
69
70
71
72
;% RESTORE: Restored variable: ALL_SEDS.
;% RESTORE: Restored variable: ALL_SEDS_INDICES.

Nwav=(size(ISRFS))[1]
Nvor=(size(ISRFS))[2]
33d0e4eb   Jean-Philippe Bernard   improved
73
74

;=== This is to compute the Voronoi bins sizes
26556ecf   Jean-Philippe Bernard   First commit
75
76
vor_num=lonarr(Nvor)
FOR i=0L,Nvor-1 DO BEGIN
9b0b6d7e   Jean-Philippe Bernard   finished implemen...
77
78
79
80
81
82
83
84
	IF ptr_valid(all_seds_indices[i]) THEN BEGIN
		vor_num[i]=n_elements(*all_seds_indices[i])
		IF vor_num[i] EQ 1 THEN BEGIN
			IF *all_seds_indices[i] EQ -1 THEN BEGIN
				vor_num[i]=0L
			ENDIF
	    ENDIF
	ENDIF
26556ecf   Jean-Philippe Bernard   First commit
85
86
ENDFOR
vor_sizes=2.*sqrt(1.*vor_num*sxpar(href,'CDELT2')^2/!pi)   ;FWHM in deg
33d0e4eb   Jean-Philippe Bernard   improved
87
print,minmax(vor_sizes)*60.^2
26556ecf   Jean-Philippe Bernard   First commit
88

33d0e4eb   Jean-Philippe Bernard   improved
89
;stop
ee1fd9a9   Jean-Philippe Bernard   improved in the f...
90
91
92
93
94
95
;==== remove negative values in ISRFs
;ind=where(ISRFs LE 0,count)
;IF count NE 0 THEN BEGIN
;	ISRFs[ind]=0.
;ENDIF

33d0e4eb   Jean-Philippe Bernard   improved
96
97
;==== Make the ISRF cube
message,'Making the ISRF cube',/info
26556ecf   Jean-Philippe Bernard   First commit
98
99
100
101
102
103
104
Nx=sxpar(href,'NAXIS1')
Ny=sxpar(href,'NAXIS2')
ISRF_cube=fltarr(Nx,Ny,Nwav)+la_undef()

im0=ISRF_cube[*,*,0]
ISRF0=fltarr(Nwav)+la_undef()
FOR i=0L,Nvor-1 DO BEGIN
33d0e4eb   Jean-Philippe Bernard   improved
105
106
107
108
	IF i mod 1000 EQ 0 THEN BEGIN
		message,strtrim(1.*i/Nvor*100,2)+' %',/continue
		;stop
	ENDIF
26556ecf   Jean-Philippe Bernard   First commit
109
110
111
112
113
114
	IF vor_num[i] NE 0 THEN BEGIN
		ij=index2ij(*all_seds_indices[i],[Nx,Ny])
		FOR j=0L,vor_num[i]-1 DO ISRF_cube[ij[j,0],ij[j,1],*]=ISRFS[*,i]
	ENDIF
ENDFOR

33d0e4eb   Jean-Philippe Bernard   improved
115
116
;==== smooth the ISRF
use_reso_filter='SPIRE3'
9b0b6d7e   Jean-Philippe Bernard   finished implemen...
117
IF keyword_set(resolution_filter) THEN use_reso_filter=resolution_filter
26556ecf   Jean-Philippe Bernard   First commit
118

33d0e4eb   Jean-Philippe Bernard   improved
119
120
message,'smoothing the ISRF cube',/info
data_reso=3./60./60.
9b0b6d7e   Jean-Philippe Bernard   finished implemen...
121
reso_str='_'+use_reso_filter
33d0e4eb   Jean-Philippe Bernard   improved
122
final_reso=dustem_filter2reso(use_reso_filter)
26556ecf   Jean-Philippe Bernard   First commit
123

33d0e4eb   Jean-Philippe Bernard   improved
124
125
126
127
128
;stop
;in fact degrade_res can degrade resolution of cubes, so ...
;=== That's a test
IF keyword_set(test) THEN BEGIN
	ISRFs=degrade_res(ISRF_cube[*,*,0:2],href,data_reso,final_reso,hout)
bbfe2364   Jean-Philippe Bernard   fixed a bug
129
	test_str='Test'
33d0e4eb   Jean-Philippe Bernard   improved
130
131
ENDIF ELSE BEGIN
	ISRFs=degrade_res(ISRF_cube,href,data_reso,final_reso,hout)
bbfe2364   Jean-Philippe Bernard   fixed a bug
132
	test_str=''
33d0e4eb   Jean-Philippe Bernard   improved
133
134
135
ENDELSE
header=hout
;stop
26556ecf   Jean-Philippe Bernard   First commit
136

9b0b6d7e   Jean-Philippe Bernard   finished implemen...
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
;=== project ISRFs on reference header for given resolution
file=!phangs_data_dir+'/ISRF/WORK/'+source_name+'_ref_header'+reso_str+'.sav' 
restore,file,/verb
;stop

NNx=sxpar(href,'NAXIS1')
NNy=sxpar(href,'NAXIS2')
proj_ISRFs=fltarr(NNx,NNy,Nwav)
i=0L
proj_ISRFs[*,*,i]=project2(header,ISRFs[*,*,i],href,/silent)
;FOR i=1L,Nwav-1 DO BEGIN
FOR i=1L,(size(ISRFs))[3]-1 DO BEGIN
	proj_ISRFs[*,*,i]=project2(header,ISRFs[*,*,i],href,/previous_lut,/silent)
ENDFOR

;stop
;==== put back ISRFs on voronoi bins
restore,!phangs_data_dir+'/ISRF/WORK/'+use_source_name+'_muse_images'+reso_str+'.sav',/verb
;% RESTORE: Restored variable: ST_TEMPLATES.
;% RESTORE: Restored variable: ST_MUSE_WEIGHTS.
;% RESTORE: Restored variable: VORONOI_ID.
;% RESTORE: Restored variable: AGE_VALUES.
;% RESTORE: Restored variable: METALICITY_VALUES.
;% RESTORE: Restored variable: BINS.
;% RESTORE: Restored variable: HREF.
NNvor=max(voronoi_id)+1
out_ISRFS=fltarr(Nwav,NNvor)
FOR i=0L,NNvor-1 DO BEGIN
	ind=where(voronoi_id EQ i,count)
	IF count NE 1 THEN BEGIN
		message,'count should be 1',/continue
		stop
	ENDIF ELSE BEGIN
		ij=index2ij(ind,[NNx,NNy])
		out_ISRFS[*,i]=reform(proj_ISRFs[ij[0,0],ij[0,1],*])
	ENDELSE
ENDFOR
;ISRFs=proj_ISRFs
ISRFs=out_ISRFs

33d0e4eb   Jean-Philippe Bernard   improved
177
178
IF keyword_set(save) THEN BEGIN
	file_save=!phangs_data_dir+'/ISRF/WORK/'+test_str+source_name+'_isrf_min_prediction'+reso_str+'.sav' 
9b0b6d7e   Jean-Philippe Bernard   finished implemen...
179
	save,ISRFs,href,use_reso_filter,file=file_save
33d0e4eb   Jean-Philippe Bernard   improved
180
181
	message,'Saved '+file_save,/continue
ENDIF
26556ecf   Jean-Philippe Bernard   First commit
182

9b0b6d7e   Jean-Philippe Bernard   finished implemen...
183
184
the_end:
;stop
26556ecf   Jean-Philippe Bernard   First commit
185
186

END