new feature: preview and import of pshell data files
This commit is contained in:
@ -1,36 +1,51 @@
|
||||
#pragma rtGlobals=3 // Use modern global access method and strict wave access.
|
||||
#pragma IgorVersion = 6.1
|
||||
#pragma ModuleName = PearlDataExplorer
|
||||
#pragma version = 1.41
|
||||
#include "pearl-area-import", version >= 1.06
|
||||
#include "pearl-area-profiles", version >= 1.04
|
||||
#include "pearl-area-display", version >= 1.04
|
||||
|
||||
// preview and import panel for PEARL data:
|
||||
// scienta analyser, prosilica cameras, s-scans, otf-scans
|
||||
|
||||
// $Id$
|
||||
// author: matthias.muntwiler@psi.ch
|
||||
// Copyright (c) 2013-14 Paul Scherrer Institut
|
||||
#pragma version = 1.43
|
||||
#include "pearl-area-import"
|
||||
#include "pearl-area-profiles"
|
||||
#include "pearl-area-display"
|
||||
#include "pearl-pshell-import"
|
||||
|
||||
// copyright (c) 2013-16 Paul Scherrer Institut
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
// http:///www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
/// @file
|
||||
/// @brief preview and import panel for PEARL data
|
||||
/// @ingroup ArpesPackage
|
||||
///
|
||||
///
|
||||
/// preview and import panel for PEARL data:
|
||||
/// scienta analyser, prosilica cameras, s-scans, otf-scans
|
||||
|
||||
/// @namespace PearlDataExplorer
|
||||
/// @brief preview and import panel for PEARL data
|
||||
///
|
||||
/// PearlDataExplorer is declared in @ref pearl-data-explorer.ipf.
|
||||
|
||||
static strconstant package_name = "pearl_explorer"
|
||||
static strconstant package_path = "root:packages:pearl_explorer:"
|
||||
|
||||
static strconstant ks_filematch_adh5 = "*.h5"
|
||||
static strconstant ks_filematch_pshell = "psh*.h5"
|
||||
static strconstant ks_filematch_itx = "*.itx"
|
||||
|
||||
function pearl_data_explorer()
|
||||
init_package()
|
||||
load_prefs()
|
||||
execute /q/z "PearlDataExplorer()"
|
||||
end
|
||||
|
||||
/// initialize the global variables of the data explorer.
|
||||
///
|
||||
/// initializes the global variables and data folder for this procedure file
|
||||
/// must be called once before the panel is created
|
||||
/// warning: this function overwrites previous values
|
||||
static function init_package()
|
||||
// initializes the global variables and data folder for this procedure file
|
||||
// must be called once before the panel is created
|
||||
// warning: this function overwrites previous values
|
||||
|
||||
dfref savefolder = GetDataFolderDFR()
|
||||
SetDataFolder root:
|
||||
@ -64,7 +79,8 @@ static function init_package()
|
||||
string /g s_preview_source = "" // data source, e.g. EPICS channel name, of the current preview
|
||||
string /g s_profiles_graph = "" // window name of the current preview if the data is two-dimensional
|
||||
string /g s_preview_trace_graph = "" // window name of the current preview if the data is one-dimensional
|
||||
|
||||
string /g s_file_info = "" // description of selected file
|
||||
|
||||
variable/g v_InitPanelDone = 1
|
||||
|
||||
SetDataFolder savefolder
|
||||
@ -201,9 +217,11 @@ static function preview_file(filename)
|
||||
|
||||
dfref saveDF = GetDataFolderDFR()
|
||||
|
||||
if (StringMatch(filename, "*.h5"))
|
||||
if (StringMatch(filename, ks_filematch_pshell))
|
||||
wave /z image = preview_pshell_file(filename)
|
||||
elseif (StringMatch(filename, ks_filematch_adh5))
|
||||
wave /z image = preview_hdf_file(filename)
|
||||
elseif (StringMatch(filename, "*.itx"))
|
||||
elseif (StringMatch(filename, ks_filematch_itx))
|
||||
wave /z image = preview_itx_file(filename)
|
||||
endif
|
||||
|
||||
@ -224,6 +242,49 @@ static function preview_file(filename)
|
||||
setdatafolder saveDF
|
||||
end
|
||||
|
||||
/// load the preview of a PShell HDF5 file (not implemented).
|
||||
///
|
||||
/// the preview is an arbitrary detector image extracted from the file, see adh5_load_preview().
|
||||
/// the preview is loaded to the preview_image wave in the pear_explorer data folder.
|
||||
///
|
||||
/// the s_file_info string is updated with information about the scan dimensions.
|
||||
///
|
||||
/// @param filename name of a file in the directory specified by the pearl_explorer_filepath path object.
|
||||
///
|
||||
/// @return wave reference of the preview image
|
||||
///
|
||||
static function /wave preview_pshell_file(filename)
|
||||
string filename
|
||||
|
||||
dfref saveDF = GetDataFolderDFR()
|
||||
setdatafolder $package_path
|
||||
svar s_preview_file
|
||||
svar s_preview_source
|
||||
psh5_load_preview("preview_image", "pearl_explorer_filepath", filename)
|
||||
s_preview_file = filename
|
||||
s_preview_source = ""
|
||||
wave /z preview_image
|
||||
|
||||
svar /z s_file_info
|
||||
if (! svar_exists(s_file_info))
|
||||
string /g s_file_info
|
||||
endif
|
||||
if (strlen(s_preview_file) > 0)
|
||||
s_file_info = psh5_load_info("pearl_explorer_filepath", filename)
|
||||
else
|
||||
s_file_info = ""
|
||||
endif
|
||||
|
||||
if (DataFolderExists("attr"))
|
||||
setdatafolder attr
|
||||
preview_attributes(GetDataFolderDFR())
|
||||
setdatafolder ::
|
||||
endif
|
||||
|
||||
setdatafolder saveDF
|
||||
return preview_image
|
||||
end
|
||||
|
||||
/// load the preview of a PEARL HDF5 file.
|
||||
///
|
||||
/// the preview is an arbitrary detector image extracted from the file, see adh5_load_preview().
|
||||
@ -777,13 +838,19 @@ static function load_file(filename, [options])
|
||||
|
||||
dfref saveDF = GetDataFolderDFR()
|
||||
|
||||
if (StringMatch(filename, "*.h5"))
|
||||
if (StringMatch(filename, ks_filematch_pshell))
|
||||
if (ParamIsDefault(options))
|
||||
load_pshell_file(filename)
|
||||
else
|
||||
load_pshell_file(filename, options=options)
|
||||
endif
|
||||
elseif (StringMatch(filename, ks_filematch_adh5))
|
||||
if (ParamIsDefault(options))
|
||||
load_hdf_file(filename)
|
||||
else
|
||||
load_hdf_file(filename, options=options)
|
||||
endif
|
||||
elseif (StringMatch(filename, "*.itx"))
|
||||
elseif (StringMatch(filename, ks_filematch_itx))
|
||||
load_itx_file(filename)
|
||||
endif
|
||||
|
||||
@ -796,7 +863,7 @@ static function prompt_hdf_options(options)
|
||||
string mode = StringByKey("mode", options, ":", ";")
|
||||
string reduction_func = StringByKey("reduction_func", options, ":", ";")
|
||||
|
||||
string modes = "adh5_load_reduced"
|
||||
string modes = "load_reduced"
|
||||
string reduction_functions = adh5_list_reduction_funcs()
|
||||
|
||||
if (strlen(mode) == 0)
|
||||
@ -817,17 +884,19 @@ static function prompt_hdf_options(options)
|
||||
return v_flag // 0 = OK, 1 = cancel
|
||||
end
|
||||
|
||||
/// prototype for prompting for processing function parameters.
|
||||
///
|
||||
/// the function should prompt the user for function parameters,
|
||||
/// and update the param argument if the user clicked OK.
|
||||
/// returns 0 if the user clicked OK, 1 if the user cancelled.
|
||||
///
|
||||
/// prompt functions must have the same name as the corresponding reduction function
|
||||
/// with the prefix "prompt_".
|
||||
/// be aware of the limited length of function names in Igor.
|
||||
///
|
||||
/// this function is a prototype. it does nothing but returns OK.
|
||||
///
|
||||
function prompt_default_process(param)
|
||||
// prototype for prompting for processing function parameters.
|
||||
// the function should prompt the user for function parameters,
|
||||
// and update the param argument if the user clicked OK.
|
||||
// returns 0 if the user clicked OK, 1 if the user cancelled.
|
||||
|
||||
// prompt functions must have the same name as the corresponding reduction function
|
||||
// with the prefix "prompt_".
|
||||
// be aware of the limited length of function names in Igor.
|
||||
|
||||
// this function is a prototype. it does nothing but returns OK.
|
||||
string ¶m
|
||||
|
||||
return 0
|
||||
@ -847,6 +916,57 @@ function prompt_func_params(func_name, func_param)
|
||||
endif
|
||||
end
|
||||
|
||||
static function /df load_pshell_file(filename, [options])
|
||||
string filename
|
||||
string options
|
||||
|
||||
dfref saveDF = GetDataFolderDFR()
|
||||
string nickname = ad_suggest_foldername(filename)
|
||||
string loaded_filename = ""
|
||||
|
||||
if (ParamIsDefault(options))
|
||||
loaded_filename = psh5_load_complete(nickname, "pearl_explorer_filepath", filename)
|
||||
else
|
||||
if (strlen(options) == 0)
|
||||
svar pref_options = $(package_path + "s_hdf_options")
|
||||
options = pref_options
|
||||
if (prompt_hdf_options(options) == 0)
|
||||
// OK
|
||||
pref_options = options
|
||||
else
|
||||
// cancel
|
||||
options = ""
|
||||
endif
|
||||
endif
|
||||
|
||||
string mode = StringByKey("mode", options, ":", ";")
|
||||
|
||||
strswitch(mode)
|
||||
case "load_reduced":
|
||||
string reduction_func = StringByKey("reduction_func", options, ":", ";")
|
||||
svar pref_params = $(package_path + "s_reduction_params")
|
||||
string reduction_params = pref_params
|
||||
if (prompt_func_params(reduction_func, reduction_params) == 0)
|
||||
pref_params = reduction_params
|
||||
psh5_load_reduced(nickname, "pearl_explorer_filepath", filename, $reduction_func, reduction_params)
|
||||
svar s_filepath
|
||||
loaded_filename = s_filepath
|
||||
endif
|
||||
break
|
||||
endswitch
|
||||
endif
|
||||
|
||||
dfref dataDF
|
||||
if (strlen(loaded_filename) > 0)
|
||||
setdatafolder $("root:" + nickname)
|
||||
dataDF = GetDataFolderDFR()
|
||||
string /g pearl_explorer_import = "load_pshell_file"
|
||||
endif
|
||||
|
||||
setdatafolder saveDF
|
||||
return dataDF
|
||||
end
|
||||
|
||||
static function /df load_hdf_file(filename, [options])
|
||||
string filename
|
||||
string options
|
||||
@ -873,7 +993,7 @@ static function /df load_hdf_file(filename, [options])
|
||||
string mode = StringByKey("mode", options, ":", ";")
|
||||
|
||||
strswitch(mode)
|
||||
case "adh5_load_reduced":
|
||||
case "load_reduced":
|
||||
string reduction_func = StringByKey("reduction_func", options, ":", ";")
|
||||
svar pref_params = $(package_path + "s_reduction_params")
|
||||
string reduction_params = pref_params
|
||||
|
Reference in New Issue
Block a user