Mercurial > repos > ximgchess > hexrd
view macros.xml @ 8:4bb02acaaabc draft
"planemo upload for repository https://github.com/ximg-chess/galaxytools/tools/hexrd commit 15bca193042c05f262db5cb1efe70e2cbd567615-dirty"
author | ximgchess |
---|---|
date | Thu, 20 Jan 2022 17:56:47 +0000 |
parents | baba452d0613 |
children | e67ad9795525 |
line wrap: on
line source
<macros> <token name="@TOOL_VERSION@">0.8.17</token> <token name="@VERSION_SUFFIX@">0</token> <token name="@PROFILE@">21.09</token> <xml name="requirements"> <requirements> <requirement type="package" version="@TOOL_VERSION@">hexrd</requirement> <yield/> </requirements> </xml> <xml name="citations"> <citations> <citation type="doi">10.1016/j.matchar.2020.110366</citation> <yield /> </citations> </xml> <token name="@CMD_IMPORTS@"> #import re #import yaml #set global $img_panel_dict = dict() #if $detector.panel_assignment == 'panel_table' #set $fh = open(str($detector.image_panel_table),'r') #for $line in $fh: #set $fields = $line.strip().split('\t') #silent $img_panel_dict[$fields[0]] = $fields[1] #end for #end if #set global $panels = $yaml.safe_load(open(str($instrument),'r'))['detectors'].keys() #def identifier_or_name($input1) #if hasattr($input1, 'element_identifier') #return $input1.element_identifier #elif hasattr($input1, 'name') #return $input1.name #else #return str($input1) #end if #end def #def clean($name1) #set $name_clean = $re.sub('[^\w\-_]', '_', $re.sub('(?i)[.](npz|hexrd|yml|dat|out)$','', $name1.split()[-1])) #return $name_clean #end def #def ln_name($ds,$ext) #set $lname = "%s.%s" % ($clean($identifier_or_name($ds)),$ext) #return $lname #end def #def get_panel($img_input): #set $img_name = $identifier_or_name($img_input) #if $img_panel_dict and $img_name in $img_panel_dict: #return $img_panel_dict[$img_name] #end if #for $p in $panels: #if $p in $img_name: #return $p #end if #end for #return $img_name #end def </token> <xml name="common_config" token_multiple_inputs="true" > <param name="inputs" type="data" format="hexrd.images.npz" multiple="true" label="Image series frame-cache"/> <conditional name="detector"> <param name="panel_assignment" type="select" label="Assign detector panel to images"> <option value="infer_from_name" selected="true">Infer the panel from the image name</option> <option value="panel_table">Input a table with image panels assignments</option> </param> <when value="infer_from_name"/> <when value="panel_table"> <param name="image_panel_table" type="data" format="tabular" label="Image panel assignment table"> <help>A 2-column table:image dataset name detector panel name</help> </param> </when> </conditional> <param name="instrument" type="data" format="yaml" label="instrument"/> <param name="material" type="data" format="hexrd.materials.h5" label="material"/> <param name="active_material" type="select" label="active material name"> <options> <filter type="data_meta" ref="material" key="materials"/> </options> </param> <param name="dmin" type="float" value="1.0" min="0" max="10" optional="true" label="dmin angstroms" help="used to figure out the maximum sampling for g-vectors default 1.0"/> <param name="tth_width" type="float" value="0.25" min="0" max="10" optional="true" label="tth tolerance in degrees" help="tth_width default 0.25 "/> <param name="min_sfac_ratio" type="float" value="" min="0" max="1" optional="true" label="min percentage of max to exclude" help="min_sfac_ratio min percentage of max |F|^2 to exclude; default None"/> <!-- <param name="active_material" type="text" value="" label="active material name"> <validator type="empty_field" /> </param> --> </xml> <token name="@CMD_LINKS@"><![CDATA[@CMD_IMPORTS@ mkdir -p imageseries && ln -s '$material' $ln_name($material,'h5') && ln -s '$instrument' $ln_name($instrument,'yml') && #for $input in $inputs ln -s '$input' imageseries/$ln_name($input,'npz') && #end for ]]> </token> <token name="@FIT_GRAIN_LINKS@"><![CDATA[@CMD_LINKS@ ln -s '$ome_map' $ln_name($ome_map,'npz') && ln -s '$accepted_orientations' $ln_name($accepted_orientations,'dat') && ##mkdir -p analysis && ##cp '$grains_estimate' analysis/$ln_name($grains_estimate,'out') && ]]> </token> <token name="@CONVERT2TAB@"><![CDATA[for i in `find analysis -name '[gs]*.out'`; do sed -i.bak "s/[ ][ ][ ]*/\$(printf '\t')/g" \${i}; done]]></token> <token name="@COMMON_YML@"><![CDATA[@CMD_IMPORTS@ #slurp #set instrument_file = $ln_name($instrument,'yml') analysis_name: analysis multiprocessing: -1 material: definitions: $ln_name($material,'h5') active: $active_material #if $dmin dmin: $dmin # defaults to 1.0 angstrom #end if #if $tth_width tth_width: $tth_width # defaults to 0.25 degrees #end if #if $min_sfac_ratio min_sfac_ratio: $min_sfac_ratio # min percentage of max |F|^2 to exclude; default None #end if image_series: format: frame-cache data: #for $input in $inputs - file: imageseries/$ln_name($input,'npz') args: {} panel: $get_panel($input) # must match detector key #end for instrument: $instrument_file ]]></token> <xml name="find_orientations_config"> <expand macro="common_config" token_multiple_inputs="true" /> <section name="orientation_maps" title="Orientation Maps" expanded="true"> <param name="threshold" type="integer" value="25" min="1" label="threshold"/> <param name="bin_frames" type="integer" value="1" label="bin frames"/> <!-- active_hkls should be able to be optional="true" --> <param name="active_hkls" type="text" value="" label="active hkl planes"> <help>commas separated list of planes, e.g.: 0,1,2,3,4,5</help> <validator type="regex" message="plane indices separated by commas">^\d(,\d)*$</validator> </param> </section> <param name="on_map_threshold" type="integer" value="1" min="1" label="on-map threshold used in the scoring"/> <section name="search_options" title="Search Options" expanded="true"> <conditional name="search"> <param name="search_type" type="select" label="Specify Search"> <option value="seed_search" selected="true">use seed search</option> <option value="use_quaternion_grid">use quaternion grid</option> </param> <when value="seed_search"> <!-- hkl_seeds should be able to be optional="true" --> <param name="hkl_seeds" type="text" value="" label="hkl seeds"> <help>commas separated list of planes, e.g.: 0,1,2 (subset of active hkl planes)</help> <validator type="regex" message="">^\d(,\d)*$</validator> </param> <param name="fiber_step" type="float" value="0.5" min="0" max="10" label="fiber step"/> <conditional name="params"> <param name="method" type="select" label="Method"> <option value="label" selected="true">label</option> <option value="blob_dog">blob_dog</option> <option value="blob_log">blob_log</option> </param> <when value="label"> <param name="filter_radius" type="integer" value="1" min="1" label="label filter radius"/> <param name="threshold" type="integer" value="1" min="1" label="label threshold"/> </when> <when value="blob_dog"> <param name="min_sigma" type="float" value="0.5" min="0" max="10" label="blob_dog min_sigma"/> <param name="max_sigma" type="float" value="5.0" min="0" max="10" label="blob_dog max_sigma"/> <param name="sigma_ratio" type="float" value="1.6" min="0" max="10" label="blob_dog sigma_ratio"/> <param name="threshold" type="float" value="0.01" min="0" max="1.0" label="blob_dog threshold"/> <param name="overlap" type="float" value="0.1" min="0" max="1.0" label="blob_dog overlap"/> </when> <when value="blob_log"> <param name="min_sigma" type="float" value="0.5" min="0" max="10" label="blob_log min_sigma"/> <param name="max_sigma" type="float" value="5.0" min="0" max="10" label="blob_log max_sigma"/> <param name="num_sigma" type="integer" value="10" min="0" max="20" label="blob_log num_sigma"/> <param name="threshold" type="float" value="0.01" min="0" max="1.0" label="blob_log threshold"/> <param name="overlap" type="float" value="0.1" min="0" max="1.0" label="blob_log overlap"/> </when> </conditional> </when> <when value="use_quaternion_grid"> <param name="quaternion_grid" type="data" format="npz" label="quaterion grid file"/> </when> </conditional> </section> <section name="omega" title="Omega" expanded="true"> <param name="omega_tolerance" type="float" value="1.0" min="0" max="10.0" label="omega tolerance"/> </section> <section name="eta" title="eta" expanded="true"> <param name="eta_tolerance" type="float" value="1.0" min="0" max="10.0" label="eta tolerance"/> <param name="eta_mask" type="float" value="5.0" min="0" max="10.0" label="eta mask"/> </section> <section name="clustering" title="Clustering" expanded="true"> <param name="clustering_algorithm" type="select" label="Clustering algorithm"> <option value="dbscan" selected="true">dbscan</option> <option value="sph-dbscan">sph-dbscan</option> <option value="ort-dbscan">ort-dbscan</option> <option value="fclusterdata">fclusterdata (won't work for large problems)</option> </param> <param name="clustering_radius" type="float" value="1.0" min="0" max="10" label="clustering radius"/> <param name="clustering_completeness" type="float" value="0.85" min="0" max="1" label="clustering completeness threshold"/> </section> <!-- --> </xml> <token name="@FIND_ORIENTATIONS_YML@"><![CDATA[@COMMON_YML@ #set active_hkls = 'all' #if $orientation_maps.active_hkls: #set active_hkls = '[' + str($orientation_maps.active_hkls) + ']' #end if find_orientations: orientation_maps: # A file name must be specified. If it doesn't exist, one will be created file: null threshold: $orientation_maps.threshold bin_frames: $orientation_maps.bin_frames # defaults to 1 # "all", or a list of hkl orders used to find orientations # defaults to all orders listed in the material definition active_hkls: $active_hkls # either search full quaternion grid, or seed search based on sparse # orientation maps. For input search space: # # use_quaternion_grid: some/file/name # # otherwise defaults to seeded search #if $search_options.search.search_type == 'use_quaternion_grid' use_quaternion_grid: #elif $search_options.search.search_type == 'seed_search' #set hkl_seeds = '[' + str($search_options.search.hkl_seeds) + ']' seed_search: # this section is ignored if use_quaternion_grid is defined hkl_seeds: $hkl_seeds # hkls ids to use, must be defined for seeded search fiber_step: $search_options.search.fiber_step # degrees, defaults to ome tolerance # Method selection: # Now 3 choices: label (the original), 'blob_dog', and 'blob_log' # Each has its own parameter names, examples below. # method: #if $search_options.search.params.method == 'label' label: filter_radius: $search_options.search.params.filter_radius threshold: $search_options.search.params.threshold #elif $search_options.search.params.method == 'blob_dog' blob_dog: min_sigma: $search_options.search.params.min_sigma max_sigma: $search_options.search.params.max_sigma sigma_ratio: $search_options.search.params.sigma_ratio threshold: $search_options.search.params.threshold overlap: $search_options.search.params.overlap #elif $search_options.search.params.method == 'blob_log' blob_log: min_sigma: $search_options.search.params.min_sigma max_sigma: $search_options.search.params.max_sigma num_sigma: $search_options.search.params.num_sigma threshold: $search_options.search.params.threshold overlap: $search_options.search.params.overlap #end if # this is the on-map threshold using in the scoring # defaults to 1 #end if threshold: $on_map_threshold omega: tolerance: $omega.omega_tolerance # in degrees, defaults to 2x ome step eta: tolerance: $eta.eta_tolerance # in degrees, defaults to 2x ome step mask: $eta.eta_mask # degrees, mask angles close to ome rotation axis, defaults to 5 clustering: # algorithm choices are # sph-dbscan # ort-dbscn # dbscan <default> # fclusterdata; this is a fallback and won't work for large problems algorithm: $clustering.clustering_algorithm radius: $clustering.clustering_radius completeness: $clustering.clustering_completeness ]]></token> <xml name="fit_grains_config"> <expand macro="common_config" token_multiple_inputs="true"/> <param name="ome_map" type="data" format="hexrd.eta_ome.npz" label="analysis eta-ome_maps.npz from find_orientations"/> <param name="accepted_orientations" type="data" format="tabular" label="accepted_orientations from find_orientations"/> <param name="grains_estimate" type="data" format="tabular" label="grains.out from find_orientations"/> <param name="do_fit" type="boolean" truevalue="true" falsevalue="false" checked="true" label="fit grains" help="if false, extracts grains but doesn't fit"/> <param name="npdiv" type="integer" value="2" min="1" label="number of polar pixel grid subdivisions"/> <param name="threshold" type="integer" value="25" min="1" label="threshold"/> <section name="tolerance" title="Fit Grain Tolerance" expanded="true"> <repeat name="tolerance_lists" title="Tolerance values" min="1"> <param name="tth" type="float" value="" min="0" label="tth"/> <param name="eta" type="float" value="" min="0" label="eta"/> <param name="omega" type="float" value="" min="0" label="omega"/> </repeat> <param name="refit" type="text" value="1" label="refit" help="float values separated by commas"> <validator type="regex" message="">^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?(,[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?)*$</validator> </param> <conditional name="max_tth"> <param name="tth_max_value" type="select" label="Set tth_max"> <option value="true" selected="true">true</option> <option value="false">false</option> <option value="entered">enter value</option> </param> <when value="true"/> <when value="false"/> <when value="entered"> <param name="tth_max" type="float" value="14.25" label="tth_max"/> </when> </conditional> </section> </xml> <token name="@FIT_GRAINS_YML@"><![CDATA[@COMMON_YML@ find_orientations: orientation_maps: # A file name must be specified. If it doesn't exist, one will be created file: $ln_name($ome_map,'npz') fit_grains: do_fit: $do_fit # if false, extracts grains but doesn't fit. defaults to true # estimate: null npdiv: $npdiv # number of polar pixel grid subdivisions, defaults to 2 threshold: $threshold #set $tth = [] #set $eta = [] #set $omega = [] #set $refit = '[' + str($tolerance.refit) + ']' #for $tol in $tolerance.tolerance_lists #silent $tth.append(float($tol.tth)) #silent $eta.append(float($tol.eta)) #silent $omega.append(float($tol.omega)) #end for tolerance: tth: $tth # tolerance lists must be identical length eta: $eta omega: $omega refit: $refit #if $tolerance.max_tth.tth_max_value == 'entered': tth_max: $tolerance.max_tth.tth_max # true, false, or a non-negative value, defaults to true #else tth_max: $tolerance.max_tth.tth_max_value # true, false, or a non-negative value, defaults to true #end if ]]></token> <token name="@HEXRD_HELP@"><![CDATA[ HEXRD_ provides analysis of x-ray diffraction data, especially high-energy x-ray diffraction. HEXRD is comprised of a library and API for writing scripts, a command line interface, and an interactive graphical user interface. .. _HEXRD: https://github.com/HEXRD/hexrd ]]></token> <token name="@COMMON_INPUTS_HELP@"><![CDATA[ **INPUTS** - imageseries - Detector image files converted to sparse matrix compressed numpy arrays. - instrument - A yaml file that decribes the instrument - materials.hexrd - A "pickled" hexrd Materials object that desscribes the sample material ]]></token> <token name="@FIT_GRAIN_INPUTS_HELP@"><![CDATA[@COMMON_INPUTS_HELP@ - analysis eta-ome_maps.npz from find_orientations - accepted_orientations from find_orientations ]]></token> <token name="@COMMON_OUTPUTS_HELP@"><![CDATA[ **OUTPUTS** - config yaml - parameter for hexrd - log - the hexrd logging output - grains.out ]]></token> <token name="@FIND_ORIENTATIONS_OUTPUTS_HELP@"><![CDATA[@COMMON_OUTPUTS_HELP@ - analysis eta-ome_maps.npz *(used as input for hexrd fit-grains)* - analysis accepted_orientations_analysis.dat *(used as input for hexrd fit-grains)* - analysis scored_orientations_analysis.npz ]]></token> <token name="@FIT_GRAINS_OUTPUTS_HELP@"><![CDATA[@COMMON_OUTPUTS_HELP@ - Collection of spots.out ]]></token> </macros>