Commit 0cf486f6ed8b410ef06649a0485cbd8587250372

Authored by Annie Hughes
2 parents 7ecea017 efd9ac73
Exists in master

Merge branch 'master' of https://gitlab.irap.omp.eu/OV-GSO-DC/dustem-wrapper_idl

src/idl/dustem_fit_intensity_example.pro
@@ -370,7 +370,9 @@ end @@ -370,7 +370,9 @@ end
370 ;I think modifications will have to be applied to dustemwrap_plot... 370 ;I think modifications will have to be applied to dustemwrap_plot...
371 ;idea: create a system variable that signals if the fits file has been successfully saved and use it in the dustemwrap_plot(obj/noobj) routine(s) 371 ;idea: create a system variable that signals if the fits file has been successfully saved and use it in the dustemwrap_plot(obj/noobj) routine(s)
372 ;to add the '(From saved FITS file)' string to the title 372 ;to add the '(From saved FITS file)' string to the title
373 -; 373 +
  374 +;stop
  375 +
374 IF keyword_set(fits_save_and_restore) THEN BEGIN 376 IF keyword_set(fits_save_and_restore) THEN BEGIN
375 message,'Writing out results structure: '+fits_save_and_restore,/info 377 message,'Writing out results structure: '+fits_save_and_restore,/info
376 dustem_write_fits_table,filename=fits_save_and_restore,help=help 378 dustem_write_fits_table,filename=fits_save_and_restore,help=help
src/idl/dustem_init.pro
@@ -349,7 +349,7 @@ defsysv,'!dustem_show_plot',1 ;0=show no plot @@ -349,7 +349,7 @@ defsysv,'!dustem_show_plot',1 ;0=show no plot
349 ;== This is for the default mode 349 ;== This is for the default mode
350 dustem_inputs={GRAIN:'GRAIN.DAT',ISRF:'ISRF.DAT',ALIGN:'ALIGN.DAT'} 350 dustem_inputs={GRAIN:'GRAIN.DAT',ISRF:'ISRF.DAT',ALIGN:'ALIGN.DAT'}
351 !dustem_inputs=ptr_new(dustem_inputs) 351 !dustem_inputs=ptr_new(dustem_inputs)
352 - 352 +use_model='DEFAULT'
353 353
354 defsysv, '!dustem_HCD', ptr_new(1.00E20) ;I do not see the reason behind using a pointer in this case. 354 defsysv, '!dustem_HCD', ptr_new(1.00E20) ;I do not see the reason behind using a pointer in this case.
355 355
@@ -357,10 +357,6 @@ defsysv, '!dustem_HCD', ptr_new(1.00E20) ;I do not see the reason behind using a @@ -357,10 +357,6 @@ defsysv, '!dustem_HCD', ptr_new(1.00E20) ;I do not see the reason behind using a
357 ;===This is the Desert option 357 ;===This is the Desert option
358 358
359 IF keyword_set(model) THEN BEGIN 359 IF keyword_set(model) THEN BEGIN
360 -  
361 -defsysv, '!dustem_model', model  
362 -  
363 -  
364 CASE model OF 360 CASE model OF
365 'MC10':BEGIN 361 'MC10':BEGIN
366 (*!dustem_inputs).grain='GRAIN_MC10.DAT' 362 (*!dustem_inputs).grain='GRAIN_MC10.DAT'
@@ -414,8 +410,11 @@ defsysv, '!dustem_model', model @@ -414,8 +410,11 @@ defsysv, '!dustem_model', model
414 stop 410 stop
415 END 411 END
416 ENDCASE 412 ENDCASE
  413 + use_model=model
417 ENDIF 414 ENDIF
418 415
  416 +defsysv, '!dustem_model', use_model
  417 +
419 ;Initialize !dustem_params structure 418 ;Initialize !dustem_params structure
420 IF not keyword_set(dir) THEN BEGIN 419 IF not keyword_set(dir) THEN BEGIN
421 ; CASE getenv('DUSTEM_WHICH') OF 420 ; CASE getenv('DUSTEM_WHICH') OF
src/idl/dustem_initialize_internal_sed.pro 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +FUNCTION dustem_initialize_internal_sed,Nsed
  2 +
  3 +;initializes an SED in the !dustem_data internal format
  4 +
  5 +sed={instru_names:replicate('',Nsed),filt_names:replicate('',Nsed),wav:replicate(la_undef(5),Nsed),values:replicate(la_undef(5),Nsed),sigma:replicate(la_undef(5),Nsed)}
  6 +
  7 +RETURN,sed
  8 +
  9 +END
0 \ No newline at end of file 10 \ No newline at end of file
src/idl/dustem_read_fits_table.pro
@@ -60,7 +60,20 @@ str_predicted_SED=mrdfits(file,unit_predicted_sed,header_predicted_SED) @@ -60,7 +60,20 @@ str_predicted_SED=mrdfits(file,unit_predicted_sed,header_predicted_SED)
60 ;==== add the predicted total spectrum in extension 3 60 ;==== add the predicted total spectrum in extension 3
61 ;str_predicted_spectrum_tot=mrdfits(file,3,header_predicted_spectrum_tot) 61 ;str_predicted_spectrum_tot=mrdfits(file,3,header_predicted_spectrum_tot)
62 62
  63 +used_model=strtrim(sxpar(header_predicted_SED,'MODEL'),2)
  64 +IF used_model NE 'DEFAULT' THEN BEGIN
  65 + dustem_init,model=used_model
  66 +ENDIF ELSE BEGIN
  67 + dustem_init,model=0
  68 +ENDELSE
  69 +!dustem_model=used_model
  70 +
  71 +;stop
  72 +;==== This is to create (*!dustem_data).sed in case it does not exist already
63 Nsed=n_elements(str_input_SED) 73 Nsed=n_elements(str_input_SED)
  74 +sed=dustem_initialize_internal_sed(Nsed)
  75 +(*!dustem_data).sed=ptr_new(sed)
  76 +
64 (*(*!dustem_data).sed).instru_names=dustem_filter2instru(str_input_SED.filter) 77 (*(*!dustem_data).sed).instru_names=dustem_filter2instru(str_input_SED.filter)
65 (*(*!dustem_data).sed).filt_names=str_input_SED.filter 78 (*(*!dustem_data).sed).filt_names=str_input_SED.filter
66 (*(*!dustem_data).sed).wav=str_input_SED.wavelength 79 (*(*!dustem_data).sed).wav=str_input_SED.wavelength
@@ -77,29 +90,34 @@ best_fit_chi2=sxpar(header_predicted_SED,'CHI2') @@ -77,29 +90,34 @@ best_fit_chi2=sxpar(header_predicted_SED,'CHI2')
77 best_fit_rchi2=sxpar(header_predicted_SED,'RCHI2') 90 best_fit_rchi2=sxpar(header_predicted_SED,'RCHI2')
78 91
79 ;===== Fill in header with parameter values 92 ;===== Fill in header with parameter values
80 -parameters_desc=*(*!dustem_fit).PARAM_DESCS  
81 -parameters_init_values=*(*!dustem_fit).PARAM_INIT_VALUES  
82 -best_parameters=*(*!dustem_fit).CURRENT_PARAM_VALUES  
83 -best_parameters_uncertainties=*(*!dustem_fit).CURRENT_PARAM_ERRORS  
84 -best_fit_chi2=(*!dustem_fit).CHI2  
85 -best_fit_rchi2=(*!dustem_fit).RCHI2 93 +;parameters_desc=*(*!dustem_fit).PARAM_DESCS
  94 +;parameters_init_values=*(*!dustem_fit).PARAM_INIT_VALUES
  95 +;best_parameters=*(*!dustem_fit).CURRENT_PARAM_VALUES
  96 +;best_parameters_uncertainties=*(*!dustem_fit).CURRENT_PARAM_ERRORS
  97 +;best_fit_chi2=(*!dustem_fit).CHI2
  98 +;best_fit_rchi2=(*!dustem_fit).RCHI2
86 99
87 Nparams=sxpar(header_predicted_SED,'NPARAMS') 100 Nparams=sxpar(header_predicted_SED,'NPARAMS')
88 parameters_desc=strarr(Nparams) 101 parameters_desc=strarr(Nparams)
89 best_parameters=dblarr(Nparams) 102 best_parameters=dblarr(Nparams)
90 best_parameters_init_values=dblarr(Nparams) 103 best_parameters_init_values=dblarr(Nparams)
91 best_parameters_uncertainties=dblarr(Nparams) 104 best_parameters_uncertainties=dblarr(Nparams)
  105 +parameters_func_values=dblarr(Nparams)
92 FOR i=0L,Nparams-1 DO BEGIN 106 FOR i=0L,Nparams-1 DO BEGIN
93 parameters_desc[i]=sxpar(header_predicted_SED,'PARN'+strtrim(i+1,2)) 107 parameters_desc[i]=sxpar(header_predicted_SED,'PARN'+strtrim(i+1,2))
94 best_parameters[i]=sxpar(header_predicted_SED,'PARV'+strtrim(i+1,2)) 108 best_parameters[i]=sxpar(header_predicted_SED,'PARV'+strtrim(i+1,2))
95 best_parameters_uncertainties[i]=sxpar(header_predicted_SED,'PARU'+strtrim(i+1,2)) 109 best_parameters_uncertainties[i]=sxpar(header_predicted_SED,'PARU'+strtrim(i+1,2))
96 best_parameters_init_values[i]=sxpar(header_predicted_SED,'PARI'+strtrim(i+1,2)) 110 best_parameters_init_values[i]=sxpar(header_predicted_SED,'PARI'+strtrim(i+1,2))
  111 + parameters_func_values[i]=sxpar(header_predicted_SED,'PARI'+strtrim(i+1,2))
97 ENDFOR 112 ENDFOR
98 113
99 -*(*!dustem_fit).PARAM_DESCS=parameters_desc  
100 -*(*!dustem_fit).CURRENT_PARAM_VALUES=best_parameters  
101 -*(*!dustem_fit).CURRENT_PARAM_ERRORS=best_parameters_uncertainties  
102 -*(*!dustem_fit).PARAM_INIT_VALUES=best_parameters_init_values 114 +(*!dustem_fit).PARAM_DESCS=ptr_new(parameters_desc)
  115 +(*!dustem_fit).PARAM_INIT_VALUES=ptr_new(best_parameters_init_values)
  116 +(*!dustem_fit).CURRENT_PARAM_VALUES=ptr_new(best_parameters)
  117 +(*!dustem_fit).CURRENT_PARAM_ERRORS=ptr_new(best_parameters_uncertainties)
  118 +(*!dustem_fit).CHI2=best_fit_chi2
  119 +(*!dustem_fit).RCHI2=best_fit_rchi2
  120 +(*!dustem_fit).PARAM_FUNC=ptr_new(parameters_func_values)
103 121
104 ;=== Below is only to get the same output form as dustem_compute_sed 122 ;=== Below is only to get the same output form as dustem_compute_sed
105 ;Note: If the same model is used, the outputs should be the same as what is in the fits file .... 123 ;Note: If the same model is used, the outputs should be the same as what is in the fits file ....
src/idl/dustem_write_fits_table.pro
@@ -47,6 +47,8 @@ IF not keyword_set(function_name) THEN BEGIN @@ -47,6 +47,8 @@ IF not keyword_set(function_name) THEN BEGIN
47 ENDIF ELSE BEGIN 47 ENDIF ELSE BEGIN
48 ENDELSE 48 ENDELSE
49 49
  50 +used_model=!dustem_model
  51 +
50 Ngrains=n_tags(dustem_spectra_st.sed)-2 52 Ngrains=n_tags(dustem_spectra_st.sed)-2
51 53
52 ;===== define structures containing results 54 ;===== define structures containing results
@@ -89,6 +91,7 @@ best_parameters=*(*!dustem_fit).CURRENT_PARAM_VALUES @@ -89,6 +91,7 @@ best_parameters=*(*!dustem_fit).CURRENT_PARAM_VALUES
89 best_parameters_uncertainties=*(*!dustem_fit).CURRENT_PARAM_ERRORS 91 best_parameters_uncertainties=*(*!dustem_fit).CURRENT_PARAM_ERRORS
90 best_fit_chi2=(*!dustem_fit).CHI2 92 best_fit_chi2=(*!dustem_fit).CHI2
91 best_fit_rchi2=(*!dustem_fit).RCHI2 93 best_fit_rchi2=(*!dustem_fit).RCHI2
  94 +parameters_func_values=*(*!dustem_fit).PARAM_FUNC
92 95
93 Nparams=n_elements(parameters_desc) 96 Nparams=n_elements(parameters_desc)
94 97
@@ -169,6 +172,12 @@ FOR i=0L,Nparams-1 DO BEGIN @@ -169,6 +172,12 @@ FOR i=0L,Nparams-1 DO BEGIN
169 sxaddpar,header_predicted_SED,'PARN'+strtrim(i+1,2),parameters_desc[i],' DustemWrap parameter name' 172 sxaddpar,header_predicted_SED,'PARN'+strtrim(i+1,2),parameters_desc[i],' DustemWrap parameter name'
170 ENDFOR 173 ENDFOR
171 sxaddpar,header_predicted_SED,'COMMENT','===================================================',after='PARN'+strtrim(i,2) 174 sxaddpar,header_predicted_SED,'COMMENT','===================================================',after='PARN'+strtrim(i,2)
  175 +
  176 +;====== write dustem wrap parameter best fit values
  177 +sxaddpar,header_predicted_SED,'COMMENT','======= Dustemwrap dust model used ======',after='COMMENT'
  178 +sxaddpar,header_predicted_SED,'MODEL',used_model,'Dust model used'
  179 +sxaddpar,header_predicted_SED,'COMMENT','===================================================',after='MODEL'
  180 +
172 ;====== write dustem wrap parameter best fit values 181 ;====== write dustem wrap parameter best fit values
173 sxaddpar,header_predicted_SED,'COMMENT','======= Dustemwrap parameter best fit values ======',after='COMMENT' 182 sxaddpar,header_predicted_SED,'COMMENT','======= Dustemwrap parameter best fit values ======',after='COMMENT'
174 FOR i=0L,Nparams-1 DO BEGIN 183 FOR i=0L,Nparams-1 DO BEGIN
@@ -181,14 +190,21 @@ sxaddpar,header_predicted_SED,'COMMENT','======= Dustemwrap best fit parameter u @@ -181,14 +190,21 @@ sxaddpar,header_predicted_SED,'COMMENT','======= Dustemwrap best fit parameter u
181 FOR i=0L,Nparams-1 DO BEGIN 190 FOR i=0L,Nparams-1 DO BEGIN
182 sxaddpar,header_predicted_SED,'PARU'+strtrim(i+1,2),best_parameters_uncertainties[i],'Param. '+parameters_desc[i] 191 sxaddpar,header_predicted_SED,'PARU'+strtrim(i+1,2),best_parameters_uncertainties[i],'Param. '+parameters_desc[i]
183 ENDFOR 192 ENDFOR
184 -sxaddpar,header_predicted_SED,'COMMENT','===================================================',after='PARIU'+strtrim(i,2) 193 +sxaddpar,header_predicted_SED,'COMMENT','===================================================',after='PARU'+strtrim(i,2)
185 194
186 ;====== write dustem wrap parameter initial fit values 195 ;====== write dustem wrap parameter initial fit values
187 sxaddpar,header_predicted_SED,'COMMENT','======= Dustemwrap parameter initial fit values ======',after='COMMENT' 196 sxaddpar,header_predicted_SED,'COMMENT','======= Dustemwrap parameter initial fit values ======',after='COMMENT'
188 FOR i=0L,Nparams-1 DO BEGIN 197 FOR i=0L,Nparams-1 DO BEGIN
189 sxaddpar,header_predicted_SED,'PARI'+strtrim(i+1,2),parameters_init_values[i],'Param. '+parameters_desc[i] 198 sxaddpar,header_predicted_SED,'PARI'+strtrim(i+1,2),parameters_init_values[i],'Param. '+parameters_desc[i]
190 ENDFOR 199 ENDFOR
191 -sxaddpar,header_predicted_SED,'COMMENT','===================================================',after='PARIV'+strtrim(i,2) 200 +sxaddpar,header_predicted_SED,'COMMENT','===================================================',after='PARI'+strtrim(i,2)
  201 +
  202 +;====== write dustem wrap parameter func values (not sure exactly what this is)
  203 +sxaddpar,header_predicted_SED,'COMMENT','======= Dustemwrap parameter func values ======',after='COMMENT'
  204 +FOR i=0L,Nparams-1 DO BEGIN
  205 + sxaddpar,header_predicted_SED,'PARF'+strtrim(i+1,2),parameters_func_values[i],'Param. '+parameters_desc[i]
  206 +ENDFOR
  207 +sxaddpar,header_predicted_SED,'COMMENT','===================================================',after='PARF'+strtrim(i,2)
192 208
193 ;===== complement extension header for predicted spectrum total 209 ;===== complement extension header for predicted spectrum total
194 sxaddpar,header_predicted_spectrum_tot,'TITLE','OUTPUT BEST FIT TOTAL SPECTRUM BY DUSTEMWRAP' 210 sxaddpar,header_predicted_spectrum_tot,'TITLE','OUTPUT BEST FIT TOTAL SPECTRUM BY DUSTEMWRAP'