41 #include <irplib_utils.h>
49 #include <flames_utils_science.h>
50 #include <flames_utils.h>
52 #include <flames_dfs.h>
53 #include <uves_chip.h>
54 #include <uves_pfits.h>
56 #include <uves_error.h>
57 #include <uves_utils_wrappers.h>
59 #define recipe_id "flames_utl_unpack"
72 flames_unpack_spectra_from_image(cpl_frame* frm,
73 cpl_parameterlist * parameters,
76 flames_unpack_image_from_cube(cpl_frame* frm,
77 cpl_parameterlist * parameters,
84 static char flames_utl_unpack_description[] =
85 "This recipe unpack flames-uves packed products.\n"
86 "Information on relevant parameters can be found with\n"
87 "esorex --params flames_utl_unpack\n"
88 "esorex --help flames_utl_unpack\n"
112 cpl_recipe * recipe = cpl_calloc(1,
sizeof *recipe ) ;
113 cpl_plugin * plugin = &recipe->interface ;
115 cpl_plugin_init(plugin,
118 CPL_PLUGIN_TYPE_RECIPE,
120 "Unpack flames-uves packed frames",
121 flames_utl_unpack_description,
123 "Andrea.Modigliani@eso.org",
129 cpl_pluginlist_append(list, plugin) ;
146 cpl_recipe * recipe ;
149 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
150 recipe = (cpl_recipe *)plugin ;
156 recipe->parameters = cpl_parameterlist_new() ;
174 cpl_recipe * recipe ;
176 cpl_errorstate initial_errorstate = cpl_errorstate_get();
179 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
180 recipe = (cpl_recipe *)plugin ;
187 if (!cpl_errorstate_is_equal(initial_errorstate)) {
190 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
205 cpl_recipe * recipe ;
208 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
209 recipe = (cpl_recipe *)plugin ;
212 cpl_parameterlist_delete(recipe->parameters) ;
233 const char* tag=NULL;
234 const char* name=NULL;
236 uves_msg(
"Welcome to UVES Pipeline release %d.%d.%d",
237 UVES_MAJOR_VERSION,UVES_MINOR_VERSION,UVES_MICRO_VERSION);
247 n=cpl_frameset_get_size(
set);
261 check_nomsg(flames_unpack_image_from_cube(frm,parlist,
set));
262 }
else if (naxis==2) {
263 check_nomsg(flames_unpack_spectra_from_image(frm,parlist,
set));
268 uves_free_propertylist(&plist);
275 if (cpl_error_get_code()) {
284 static cpl_error_code
285 flames_unpack_image_from_cube(cpl_frame* frm,
286 cpl_parameterlist * parameters,
290 const char* name=NULL;
291 const char* fname=NULL;
292 const char* tag=NULL;
295 cpl_imagelist* iml=NULL;
298 cpl_frame*
frame=NULL;
301 cknull_nomsg(parameters);
307 check_nomsg(iml=cpl_imagelist_load(name,CPL_TYPE_FLOAT,0));
309 for(i=0;i<size;i++) {
310 frame=cpl_frame_new();
312 check_nomsg(fname=uves_sprintf(
"slic_%d_%s",i,flames_get_basename(name)));
313 check_nomsg( uves_save_image(img,fname,hout,
true,
true) );
315 check_nomsg(cpl_frame_set_filename(frame, fname)) ;
317 check_nomsg(cpl_frame_set_type(frame, CPL_FRAME_TYPE_IMAGE)) ;
318 check_nomsg(cpl_frame_set_group(frame, CPL_FRAME_GROUP_PRODUCT)) ;
319 check(cpl_frame_set_level(frame, CPL_FRAME_LEVEL_FINAL),
320 "Error while initialising the product frame") ;
322 cpl_frameset_insert(
set,frame);
354 uves_free_propertylist(&href);
355 uves_free_propertylist(&hout);
356 uves_free_imagelist(&iml);
359 return cpl_error_get_code() ;
365 static cpl_error_code
366 flames_unpack_spectra_from_image(cpl_frame* frm,
367 cpl_parameterlist * parameters,
373 const char* name=NULL;
374 const char* fname=NULL;
375 const char* tag=NULL;
376 cpl_propertylist* href=NULL;
377 cpl_propertylist* hout=NULL;
381 cpl_frame* frame=NULL;
386 cknull_nomsg(parameters);
390 check_nomsg(hout=cpl_propertylist_duplicate(href));
392 check_nomsg(ima=cpl_image_load(name,CPL_TYPE_FLOAT,0,0));
397 frame=cpl_frame_new();
399 check_nomsg(img=cpl_image_extract(ima,1,i+1,sx,i+1));
400 check_nomsg(fname=uves_sprintf(
"slic_%d_%s",i,flames_get_basename(name)));
401 cpl_image_save(img,fname,CPL_BPP_IEEE_FLOAT,hout,CPL_IO_DEFAULT);
407 check_nomsg(cpl_frame_set_filename(frame, fname)) ;
409 check_nomsg(cpl_frame_set_type(frame, CPL_FRAME_TYPE_IMAGE)) ;
410 check_nomsg(cpl_frame_set_group(frame, CPL_FRAME_GROUP_PRODUCT)) ;
411 check(cpl_frame_set_level(frame, CPL_FRAME_LEVEL_FINAL),
412 "Error while initialising the product frame") ;
413 cpl_frameset_insert(
set,frame);
443 uves_free_image(&img);
449 cpl_propertylist_delete(href);
450 cpl_propertylist_delete(hout);
451 uves_free_image(&ima);
452 uves_free_image(&img);
454 return cpl_error_get_code() ;