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