phangs_extract_seds.pro 7.18 KB
PRO phangs_extract_seds,source_name=source_name $
											,resolution_filter=resolution_filter $
											,reset_seds=reset_seds $
											,help=help

;+
; NAME:
;    phangs_extract_seds
; PURPOSE:
;    extract SEDs in Muse Voronoi bins
; CATEGORY:
;    PHANGS ISRF
; CALLING SEQUENCE:
;    phangs_extract_seds[,source_name=][,/save][,/reset_seds]
; INPUTS:
;    None
; OPTIONAL INPUT PARAMETERS:
;    source_name            : source name (default = 'ngc0628')
; OUTPUTS:
;    None
; OPTIONAL OUTPUT PARAMETERS:
;    None
; ACCEPTED KEY-WORDS:
;    help       = If set, print this help
;	   nostop     = if set, does not stop
;    reset_seds = if set, removes all SED saved files from disk and recomputes all.
; COMMON BLOCKS:
;    None
; SIDE EFFECTS:
;    The following files are written, if they do not already exist (unless /reset_seds is used) :
;    _seds_indices.sav
;    _jwst_seds_muse_pixels.sav
;    _muse_seds_muse_pixels.sav
;    _astrosat_seds_muse_pixels.sav
;    _herschel_seds_muse_pixels.sav
;    _all_seds_muse_pixels.sav
; RESTRICTIONS:
;    None
; PROCEDURE:
;    
; EXAMPLES
;	phangs_extract_seds,source_name='ngc0628'
; 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_extract_seds'
  goto,the_end
ENDIF

use_source_name='ngc0628'
IF keyword_set(source_name) THEN use_source_name=source_name

reso_str=''
IF keyword_set(resolution_filter) THEN BEGIN
		reso_str='_'+resolution_filter
ENDIF

data_dir=!phangs_data_dir+'/ISRF/WORK/'

IF keyword_set(reset_seds) THEN BEGIN
  files_2b_removed=data_dir+use_source_name+'*seds_muse_pixels*'+reso_str+'.sav'
  str='rm '+files_2b_removed
  message,'spawning '+str,/continue
  ;stop
  spawn,str
  files_2b_removed=data_dir+use_source_name+'*_seds_indices*'+reso_str+'.sav'
  str='rm '+files_2b_removed
  message,'spawning '+str,/continue
  ;stop
  spawn,str  
ENDIF

extract_seds:

file=data_dir+use_source_name+'_muse_data'+reso_str+'.sav'
st_info=file_info(file)
IF st_info.exists NE 1 THEN BEGIN
	message,'Could not find '+file,/continue
	stop
ENDIF
restore,file,/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.
file=data_dir+use_source_name+'_jwst_images'+reso_str+'.sav'
st_info=file_info(file)
IF st_info.exists NE 1 THEN BEGIN
	message,'Could not find '+file,/continue
	stop
ENDIF
restore,file,/verb
;% RESTORE: Restored variable: JWST_IMAGES.
;% RESTORE: Restored variable: FILTERS.
;% RESTORE: Restored variable: HREF.
;% RESTORE: Restored variable: NHCO.
file=data_dir+use_source_name+'_astrosat_images'+reso_str+'.sav'
st_info=file_info(file)
IF st_info.exists NE 1 THEN BEGIN
	message,'Could not find '+file,/continue
	stop
ENDIF
restore,file,/verb     ;changed to astrosat_images
;% RESTORE: Restored variable: ASTROSAT_IMAGES.
;% RESTORE: Restored variable: ASTROSAT_FILTERS.
;% RESTORE: Restored variable: HREF.
file=data_dir+use_source_name+'_muse_filters_images'+reso_str+'.sav'
st_info=file_info(file)
IF st_info.exists NE 1 THEN BEGIN
	message,'Could not find '+file,/continue
	stop
ENDIF
restore,file,/verb    ;changed to muse_images
;% RESTORE: Restored variable: MUSE_IMAGES.
;% RESTORE: Restored variable: MUSE_FILTERS.
;% RESTORE: Restored variable: HREF.
file=data_dir+use_source_name+'_herschel_images'+reso_str+'.sav'
st_info=file_info(file)
IF st_info.exists NE 1 THEN BEGIN
	message,'Could not find '+file,/continue
	stop
ENDIF
restore,file,/verb
;% RESTORE: Restored variable: HERSCHEL_IMAGES.
;% RESTORE: Restored variable: HERSCHEL_FILTERS.
;% RESTORE: Restored variable: HREF.

help,jwst_images,astrosat_images,muse_images,herschel_images


;stop

;This is the file used to store seds indices
file_save_indices=data_dir+use_source_name+'_seds_indices'+reso_str+'.sav'

;This is the file used to save JWST seds in Muse voronoi bins
file_save=data_dir+use_source_name+'_jwst_seds_muse_pixels'+reso_str+'.sav'
res=file_info(file_save)

IF not res.exists THEN BEGIN
	;stop
	all_seds=extract_all_muse_phangs_seds(use_source_name,voronoi_id,jwst_images,filters,indices=all_seds_indices,counts=counts)
	save,all_seds,file=file_save
	message,'Saved '+file_save,/info
	save,all_seds_indices,file=file_save_indices
	message,'Saved '+file_save_indices,/info	
ENDIF ELSE BEGIN
	message,'File '+file_save+' already exist',/continue
	stop
ENDELSE

;stop

restore,file_save_indices,/verb  ;just to get the all_seds_indices variable
;% RESTORE: Restored variable: ALL_SEDS_INDICES

;==== extract Muse SEDs, using previously computed all_seds_indices
file_save=data_dir+use_source_name+'_muse_seds_muse_pixels'+reso_str+'.sav'
res=file_info(file_save)
IF not res.exists THEN BEGIN
	all_seds=extract_all_muse_phangs_seds(use_source_name,voronoi_id,muse_images,muse_filters,use_these_indices=all_seds_indices,counts=counts)
	save,all_seds,file=file_save
	message,'Saved '+file_save,/info	
ENDIF ELSE BEGIN
	message,'File '+file_save+' already exist',/continue
	stop
ENDELSE

file_save=data_dir+use_source_name+'_astrosat_seds_muse_pixels'+reso_str+'.sav'
res=file_info(file_save)
IF not res.exists THEN BEGIN
	all_seds=extract_all_muse_phangs_seds(source_name,voronoi_id,astrosat_images,astrosat_filters,use_these_indices=all_seds_indices,counts=counts)
	save,all_seds,file=file_save
	message,'Saved '+file_save,/info	
ENDIF ELSE BEGIN
	message,'File '+file_save+' already exist',/continue
	stop
ENDELSE

file_save=data_dir+use_source_name+'_herschel_seds_muse_pixels'+reso_str+'.sav'
res=file_info(file_save)
IF not res.exists THEN BEGIN
	all_seds=extract_all_muse_phangs_seds(source_name,voronoi_id,herschel_images,herschel_filters,use_these_indices=all_seds_indices,counts=counts)
	save,all_seds,file=file_save
	message,'Saved '+file_save,/info	
ENDIF ELSE BEGIN
	message,'File '+file_save+' already exist',/continue
	stop
ENDELSE

;==== The following is not really useful, can be done through SED aggregation later
;==== However, not equivalent to the above, because of undefined pixels in some of the images, and the way this is handled by sed extractor
;stop

file_save=data_dir+use_source_name+'_all_seds_muse_pixels'+reso_str+'.sav'
res=file_info(file_save)
IF not res.exists THEN BEGIN
	use_filters=[astrosat_filters,muse_filters,filters,herschel_filters]
	use_Nfilters=n_elements(use_filters)
	use_images=fltarr([sxpar(href,'NAXIS1'),sxpar(href,'NAXIS2'),2,use_Nfilters])
	from=0L & to=from+n_elements(filters)-1
	use_images[*,*,*,from:to]=jwst_images
	from=to+1 & to=from+n_elements(muse_filters)-1
	use_images[*,*,*,from:to]=muse_images
	from=to+1 & to=from+n_elements(astrosat_filters)-1
	use_images[*,*,*,from:to]=astrosat_images
	from=to+1 & to=from+n_elements(herschel_filters)-1
	use_images[*,*,*,from:to]=herschel_images
	all_seds=extract_all_muse_phangs_seds(use_source_name,voronoi_id,use_images,use_filters,indices=all_seds_indices,counts=counts)
	save,all_seds,file=file_save
	message,'Saved '+file_save,/info
ENDIF ELSE BEGIN
	message,'File '+file_save+' already exist',/continue
	stop
ENDELSE

the_end:

END