Repository 'hedm_npz_to_tesr'
hg clone https://radegast.galaxyproject.org/repos/ximgchess/hedm_npz_to_tesr

Changeset 0:bd74229f61e8 (2021-04-01)
Next changeset 1:e90d5493a744 (2022-07-07)
Commit message:
"planemo upload for repository https://github.com/ximg-chess/galaxytools/tools/hedm_npz_to_tesr commit 0db0d2633f65e2ceca2e34c8899a52b18965d059-dirty"
added:
example_data.tesr
hedm_npz_to_tesr.py
hedm_npz_to_tesr.xml
b
diff -r 000000000000 -r bd74229f61e8 example_data.tesr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/example_data.tesr Thu Apr 01 18:30:44 2021 +0000
b
b'@@ -0,0 +1,1000020 @@\n+***tesr\n+ **format\n+   2.0 ascii\n+ **general\n+   3\n+   100 100 100\n+   0.005 0.005 0.005\n+ **cell\n+   133\n+  *id\n+     1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18\n+  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36\n+  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54\n+  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72\n+  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90\n+  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108\n+ 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126\n+ 127 128 129 130 131 132 133\n+ **data\n+   27\n+27\n+27\n+27\n+27\n+27\n+27\n+27\n+27\n+27\n+113\n+113\n+113\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+27\n+27\n+27\n+27\n+27\n+27\n+27\n+27\n+27\n+113\n+113\n+113\n+113\n+113\n+113\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+16\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+27\n+27\n+27\n+27\n+27\n+27\n+27\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+27\n+27\n+27\n+27\n+27\n+27\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+27\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+62\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+113\n+100\n+100\n+100\n+100\n+113\n+100\n+113\n+113\n+113\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+42\n+62\n+127\n+127\n+127\n+113\n+113\n+113\n+100\n+100\n+100\n+100\n+100\n+100\n+100\n+100\n+100\n+100\n+113\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+6\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+101\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+92\n+58\n+58\n'..b'22\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+4\n+4\n+4\n+4\n+4\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+9\n+9\n+9\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+125\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+125\n+125\n+125\n+125\n+125\n+125\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+13\n+13\n+13\n+13\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+125\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+13\n+13\n+13\n+13\n+13\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+122\n+122\n+122\n+122\n+122\n+122\n+122\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+37\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+120\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+9\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+13\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+48\n+***end\n'
b
diff -r 000000000000 -r bd74229f61e8 hedm_npz_to_tesr.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hedm_npz_to_tesr.py Thu Apr 01 18:30:44 2021 +0000
[
@@ -0,0 +1,108 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Created on Mon Nov 19 08:32:06 2018
+
+@author: dcp99
+"""
+
+
+#%%
+
+import argparse
+import numpy as np
+import re
+
+def __main__():
+
+    parser = argparse.ArgumentParser(
+        description='Convert an HEDM_map.npz file to a neper tesr file')
+    parser.add_argument(
+        'input',
+        type=argparse.FileType('rb'),
+        help='HEDM_map.npz')
+    parser.add_argument(
+        'output',
+        type=argparse.FileType('w'),
+        help='neper tesr file' )
+    parser.add_argument('-s', '--voxel_spacing', type=float, default=0.005, help='voxel spacing')
+    parser.add_argument('-x', '--x_name', default='^.*X.*$', help='X array name')
+    parser.add_argument('-y', '--y_name', default='^.*Y.*$', help='Y array name')
+    parser.add_argument('-z', '--z_name', default='^.*Z.*$', help='Z array name')
+    parser.add_argument('-g', '--grain_map', default='^.*grain.*$', help='grain map name')
+    parser.add_argument('-d', '--debug', action='store_true', help='Debug')
+    args = parser.parse_args()
+    data=np.load(args.input)
+    grain_map = Xs = Ys = Zs = None
+    for f in data.files:
+        if re.match(args.grain_map, f):
+            grain_map = data[f]
+        elif re.match(args.x_name, f):
+            Xs = data[f]
+        elif re.match(args.y_name, f):
+            Ys = data[f]
+        elif re.match(args.z_name, f):
+            Zs = data[f]
+    voxel_spacing = args.voxel_spacing
+
+    #CREATE ASSEMBLED DATA -- LIST OF [VOXEL COORDINATES (X,Y,Z),GRAIN ID]
+
+    coordinate_list=np.vstack((Xs.ravel(),Ys.ravel(),Zs.ravel()))
+    assembled_data=np.hstack((coordinate_list.T,np.atleast_2d(grain_map.ravel()).T))
+
+    #%% SORT BY ROWS Z AND THEN Y
+
+    assembled_data=assembled_data[assembled_data[:,2].argsort()]
+    total_size=int(grain_map.shape[0]*grain_map.shape[1]*grain_map.shape[2])
+
+    stack_size=int(grain_map.shape[0]*grain_map.shape[1])
+    for ii in np.arange(int(total_size/stack_size)):
+         tmp_args=assembled_data[ii*stack_size:(ii+1)*stack_size,1].argsort()
+         assembled_data[ii*stack_size:(ii+1)*stack_size,:]=assembled_data[ii*stack_size+tmp_args,:]
+     
+    stack_size=grain_map.shape[1]
+    for ii in np.arange(int(total_size/stack_size)):
+         tmp_args=assembled_data[ii*stack_size:(ii+1)*stack_size,0].argsort()
+         assembled_data[ii*stack_size:(ii+1)*stack_size,:]=assembled_data[ii*stack_size+tmp_args,:]
+
+    #%%
+
+    np.set_printoptions(threshold=np.inf)
+    l1  = '***tesr'
+    l2  = ' **format'
+    l3  = '   2.0 ascii'
+    l4  = ' **general'
+    l5  = '   3'
+    l6  = '   ' + str(grain_map.shape[1]) + ' ' + str(grain_map.shape[0])  + ' ' + str(grain_map.shape[2]) 
+    l7  = '   ' + str(voxel_spacing) + ' ' + str(voxel_spacing) + ' ' + str(voxel_spacing)
+    l8  = ' **cell';
+    l9  = '   ' + str(np.max(grain_map).astype('int'))
+    l10 = '  *id';
+    l11 = '   ' + str(np.arange(1,np.max(grain_map)+1).astype('int'))[1:-1]
+    l12 = ' **data'
+    #l13 = '   ' + str(assembled_data[:,3].astype('int'))[1:-1]
+    l14 = '***end'
+    
+    #%%
+    output = args.output
+    output.write('%s\n' % l1)
+    output.write('%s\n' % l2)
+    output.write('%s\n' % l3)
+    output.write('%s\n' % l4)
+    output.write('%s\n' % l5)
+    output.write('%s\n' % l6)
+    output.write('%s\n' % l7)
+    output.write('%s\n' % l8)
+    output.write('%s\n' % l9)
+    output.write('%s\n' % l10)
+    output.write('%s\n' % l11)
+    output.write('%s\n' % l12)
+    output.write('   ')
+    np.savetxt(output,np.atleast_2d(assembled_data[:,3]).T,fmt='%d')
+    #output.write('%s\n' % l13)
+    output.write('%s\n' % l14)
+    output.close()
+
+
+if __name__ == "__main__":
+    __main__()
b
diff -r 000000000000 -r bd74229f61e8 hedm_npz_to_tesr.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hedm_npz_to_tesr.xml Thu Apr 01 18:30:44 2021 +0000
[
@@ -0,0 +1,51 @@
+<tool id="hedm_npz_to_tesr" name="HEDM to tesr" version="0.1.0" python_template_version="3.5">
+    <description>Convert HEDM npz to a Neper tesr</description>
+    <requirements>
+        <requirement type="package" version="1.19">numpy</requirement>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+        $__tool_directory__/hedm_npz_to_tesr.py 
+        --voxel_spacing $voxel_spacing 
+        #if $names.x_name:
+            -x '$names.x_name'
+        #end if 
+        #if $names.y_name:
+            -y '$names.y_name'
+        #end if 
+        #if $names.z_name:
+            -z '$names.z_name'
+        #end if 
+        #if $names.grain_map:
+            --grain_map '$names.grain_map'
+        #end if 
+        '$input' 
+        '$output'
+    ]]></command>
+    <inputs>
+        <!-- change format to approriate npz subclass when available -->
+        <param name="input" type="data" format="zip" label="HEDM npz file"/>
+        <param name="voxel_spacing" type="float" value="0.005" min="0" label="Voxel spacing"/>
+        <section name="names" expanded="false" title="Specify names used in HEDM.npz input file">
+            <param name="x_name" type="text" value="" label="Name of the X array in the input" optional="true" help="Deafault is a name containing 'X'"/>
+            <param name="y_name" type="text" value="" label="Name of the Y array in the input" optional="true" help="Deafault is a name containing 'Y'"/>
+            <param name="z_name" type="text" value="" label="Name of the Z array in the input" optional="true" help="Deafault is a name containing 'Z'"/>
+            <param name="grain_map" type="text" value="" label="Name of the grain map in the input" optional="true" help="Deafault is a name containing 'grain'"/>
+ </section>
+    </inputs>
+    <outputs>
+        <!-- output format should be changed to tesr when that is available -->
+        <data name="output" format="txt" label="${input.name.rsplit(sep='.',maxsplit=1)[0]}.tesr"/>
+    </outputs>
+    <tests>
+        <test>
+            <!-- change format to approriate npz subclass when available -->
+            <param name="input" ftype="zip" value="HEDM_map.npz"/>
+            <output name="output" file="HEDM_map.tesr"/> 
+        </test>
+    </tests>
+    <help><![CDATA[
+        Create a neper compatible tesr format file from a HEDM numpy compressed file.  
+        The converter will look for columns named: Xs, Ys, Zs, and grain_map by default,
+        If the input file uses different names, the user should specify them.
+    ]]></help>
+</tool>