Commit 0cf486f6ed8b410ef06649a0485cbd8587250372
Exists in
master
Merge branch 'master' of https://gitlab.irap.omp.eu/OV-GSO-DC/dustem-wrapper_idl
Showing
5 changed files
with
62 additions
and
18 deletions
Show diff stats
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 |
@@ -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' |