From 37a8a825450ff4db473d03f03258b38dd16967ab Mon Sep 17 00:00:00 2001 From: "Mads M. Pedersen" <mmpe@dtu.dk> Date: Thu, 4 May 2017 11:56:56 +0200 Subject: [PATCH] flex test bugfix --- wetb/flex/_io.py | 38 +++++++++++++++++++++++++-------- wetb/flex/tests/test_flex_io.py | 6 +++--- wetb/flex/tests/test_sensor.py | 9 +++++++- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/wetb/flex/_io.py b/wetb/flex/_io.py index d3e4e3ea..f9419f8b 100644 --- a/wetb/flex/_io.py +++ b/wetb/flex/_io.py @@ -7,7 +7,16 @@ import struct import numpy as np import os -def load(filename, dtype=np.float): +def load(filename, name_stop=8, dtype=np.float): + """ + Parameters + ---------- + - filename + - name_stop : int or str + if int: Number of characters for name + if str: name-description delimiter, e.g. " " + - dtype + """ if isinstance(filename, str): fid = open(filename,'rb') elif hasattr(filename, "name"): @@ -50,7 +59,7 @@ def load(filename, dtype=np.float): sensor_filename = os.path.join(os.path.dirname(filename), "sensor") - sensor_info = {info[0]:info[1:] for info in read_sensor_info(sensor_filename) } + sensor_info = {info[0]:info[1:] for info in read_sensor_info(sensor_filename, name_stop) } # set gain and offset for "Time" gains = [] @@ -83,7 +92,15 @@ def load(filename, dtype=np.float): return time, data, info -def read_sensor_info(sensor_file): +def read_sensor_info(sensor_file, name_stop=8): + """ + Parameters + ---------- + - sensor_file + - name_stop : int or str + if int: Number of characters for name + if str: name-description delimiter, e.g. " " + """ if hasattr(sensor_file, 'readlines'): sensor_info_lines = sensor_file.readlines()[2:] @@ -99,12 +116,15 @@ def read_sensor_info(sensor_file): gain = float(line[1]) offset = float(line[2]) unit = line[5] - name_desc = " ".join(line[6:]) - name = name_desc[:8].split()[0] - description = name_desc[8:] -# name = line[6] -# description = " ".join(line[7:]) - + if isinstance(name_stop,int): + name_desc = " ".join(line[6:]) + name = name_desc[:name_stop].strip() + description = name_desc[name_stop:].strip() + elif isinstance(name_stop,str): + name_desc = (" ".join(line[6:])).split(name_stop) + name = name_desc[0].strip() + description = name_stop.join(name_desc[1:]).strip() + sensor_info.append((nr, name, unit, description, gain, offset)) return sensor_info diff --git a/wetb/flex/tests/test_flex_io.py b/wetb/flex/tests/test_flex_io.py index 85aff612..b82a693c 100644 --- a/wetb/flex/tests/test_flex_io.py +++ b/wetb/flex/tests/test_flex_io.py @@ -15,9 +15,9 @@ class Test(unittest.TestCase): def test_load(self): time, data, info = flex.load(tfp+"test1/test.int") self.assertEqual(data.shape, (800,7)) - self.assertEqual(info['attribute_names'][1], "WSP_gl._") - self.assertEqual(info['attribute_units'][1], "m/s") - self.assertEqual(info['attribute_descriptions'][1], " Free wind speed Vy, gl. coo, of gl. pos 0.75, 0.00, -40.75") + self.assertEqual(info['attribute_names'][0], "WSP_gl._") + self.assertEqual(info['attribute_units'][0], "m/s") + self.assertEqual(info['attribute_descriptions'][0], "Free wind speed Vy, gl. coo, of gl. pos 0.75, 0.00, -40.75") self.assertAlmostEqual(data[0, 1], 12.037,3) diff --git a/wetb/flex/tests/test_sensor.py b/wetb/flex/tests/test_sensor.py index 3a88479b..5a3e3ffe 100644 --- a/wetb/flex/tests/test_sensor.py +++ b/wetb/flex/tests/test_sensor.py @@ -16,10 +16,17 @@ class Test(unittest.TestCase): sensor_info = read_sensor_info(tfp + "test_sensor_info/sensor") nr, name, unit, description, _, _ = sensor_info[17] self.assertEqual(nr, 18) - self.assertEqual(name, "Mz coo: ") + self.assertEqual(name, "Mz coo:") self.assertEqual(unit, "kNm") self.assertEqual(description, "MomentMz Mbdy:tower nodenr: 1 coo: tower tower base flange") + def test_sensor_load_name_stop(self): + sensor_info = read_sensor_info(tfp + "test_sensor_info/sensor"," ") + nr, name, unit, description, _, _ = sensor_info[17] + self.assertEqual(nr, 18) + self.assertEqual(name, "Mz") + self.assertEqual(unit, "kNm") + self.assertEqual(description, "coo: MomentMz Mbdy:tower nodenr: 1 coo: tower tower base flange") if __name__ == "__main__": #import sys;sys.argv = ['', 'Test.test_sensor_load'] -- GitLab