From 5002daced9bfc9152b8527ff9434975d297a5245 Mon Sep 17 00:00:00 2001
From: Yngve Levinsen <yngve.levinsen@ess.eu>
Date: Wed, 19 Aug 2020 10:56:18 +0200
Subject: [PATCH] some changes in ess.fieldmap.create_tw_fieldmap using loadtxt
 rather than genfromtxt (did not need genfromtxt) using skiprows and comments
 instead of header do not assume z coordinate start at 0 Used to generate MEBT
 field maps

---
 ess/fieldmap.py | 34 +++++++++++++++-------------------
 1 file changed, 15 insertions(+), 19 deletions(-)

diff --git a/ess/fieldmap.py b/ess/fieldmap.py
index 821f440..3aa1dbe 100644
--- a/ess/fieldmap.py
+++ b/ess/fieldmap.py
@@ -13,7 +13,7 @@ v0.3:
     added function unify_grid_size
 
 v0.4:
-    added function create_TW_fieldmap
+    added function create_tw_fieldmap
     added function uniform_mesh
     fixed a bug in function save_to_ascii which was writing Nx, Ny and Nz as floats
     -- M. Eshraqi 2018 Aug 09
@@ -539,10 +539,11 @@ def create_tw_fieldmap(
     tabular_file_name: str,
     fieldmap_dim: int = 1,
     n_col: int = 1,
-    header: bool = True,
+    skiprows: int = 0,
+    comments: str = "#",
     extensions=["F1", "F2", "F3", "F4", "F5", "F6"],
     xyz=[1, 2, 3],
-    delimiter="\t",
+    delimiter=None,
 ):
     """
     parameters
@@ -554,18 +555,20 @@ def create_tw_fieldmap(
         n_col is the number of data columns except coordinate ones (1-6)
         coordinates should be on a uniform grid on each axis (but different axes are independent)
     fieldmap_dim: int
-        dimension of the fieldmap data, default is 1
+        dimension of the fieldmap data
     n_col:  int
-        number of data columns in fieldmap, default is 1
-    header: boolean
-        if the file has header or not, default is True
+        number of data columns in fieldmap
+    skiprows: int
+        number of header lines to skip
+    comments: str
+        Comment lines start with this character
     extensions: list
         list of column names to be used for naming the files, default is [F1, F2, F3, F4, F5, F6]
     xyz: list
         order of columns, xyz = [col_number(x), col), col_number(y), col_number(z)]
         e.g.if column 1 is x, col 2 is y and col 3 is z, xyz list = [1,2,3] (default)
-    delimeter: string
-         used in the data, default is tab '\t'
+    delimiter: string
+         Delimiter character that separates columns. Default is whitespace
 
     """
 
@@ -574,13 +577,7 @@ def create_tw_fieldmap(
         return
 
     tabular_file_with_path = os.path.join(fieldmaps_path, tabular_file_name)
-    field_File = open(tabular_file_with_path, "r")
-
-    if header is True:
-        field_array = np.genfromtxt(field_File, delimiter=delimiter, skip_header=1)
-    else:
-        field_array = np.genfromtxt(field_File, delimiter=delimiter, skip_header=0)
-    field_File.close()
+    field_array = np.loadtxt(tabular_file_with_path, delimiter=delimiter, skiprows=skiprows, comments=comments)
 
     items_per_row = np.array([[2, 1, 0, 0], [2, 2, 1, 0], [2, 3, 3, 1]])  # for 1D, 2D and 3D fields in an ASCII fieldmap in TraceWin format
     l_header = np.sum(items_per_row[fieldmap_dim - 1, :], axis=0)  # getting the length of the header from the items
@@ -593,7 +590,7 @@ def create_tw_fieldmap(
         if chk_mesh:
             if i == fieldmap_dim - 1:
                 Header[0] = n_mesh
-                Header[1] = max(coor)
+                Header[1] = max(coor) - min(coor)
                 # \n
             if fieldmap_dim == 1:
                 Header[2] = 1
@@ -601,7 +598,7 @@ def create_tw_fieldmap(
             elif fieldmap_dim == 2:
                 if i == fieldmap_dim - 2:
                     Header[2] = n_mesh
-                    Header[3] = max(coor)
+                    Header[3] = max(coor) - min(coor)
                     # \n
                     Header[4] = 1
                     # \n
@@ -624,7 +621,6 @@ def create_tw_fieldmap(
                 return
         ordr = np.argsort(coor, kind="mergesort")
         field_array = field_array[ordr, :]
-
     filename_wo_ext = os.path.splitext(tabular_file_name)[0]
     for i in range(fieldmap_dim, fieldmap_dim + n_col):
         save_to_ascii(
-- 
GitLab