Mercurial > repos > ximgchess > hexrd
view macros.xml @ 0:72deb053b5a5 draft
"planemo upload for repository https://github.com/ximg-chess/galaxytools/tools/hexrd commit 3e41869cdb6ad4c9a60a4b60dcf9bb4a40955cfa-dirty"
author | ximgchess |
---|---|
date | Sat, 21 Nov 2020 03:34:48 +0000 |
parents | |
children | a0be4e3aa66d |
line wrap: on
line source
<macros> <token name="@TOOL_VERSION@">0.8.0</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.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="hexrd.yml" label="instrument"/> <param name="material" type="data" format="material.hexrd" label="material"/> <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,'hexrd') && 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@ analysis_name: analysis multiprocessing: -1 material: definitions: $ln_name($material,'hexrd') active: $active_material instrument: $ln_name($instrument,'yml') 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 ]]></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"/> <param name="active_hkls" type="text" value="" optional="true" label="active hkls"> <validator type="regex" message="">^\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"> <param name="hkl_seeds" type="text" value="" optional="true" label="hkl seeds"> <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="hexrd.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.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"> <validator type="regex" message="">^\d(,\d)*$</validator> </param> <param name="tth_max" type="float" value="14.25" label="tth_max"/> </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 $tth.append(float($tol.tth)) $eta.append(float($tol.eta)) $omega.append(float($tol.omega)) #end for tolerance: tth: $tth # tolerance lists must be identical length eta: $eta omega: $omega refit: $refit tth_max: $tolerance.tth_max # true, false, or a non-negative value, defaults to true ]]></token> </macros>