From c2ac3a9b9c045d55975a2517d85b383a26919bd9 Mon Sep 17 00:00:00 2001
From: sgho <sgho@dtu.dk>
Date: Wed, 3 Oct 2018 10:56:30 +0200
Subject: [PATCH] BUGFIX #67 (-blade_nr- in windIO), also extended to -radius-
 variable

---
 wetb/prepost/windIO.py | 69 +++++++++++++++++++++---------------------
 1 file changed, 35 insertions(+), 34 deletions(-)

diff --git a/wetb/prepost/windIO.py b/wetb/prepost/windIO.py
index b11abe5..eb89b67 100755
--- a/wetb/prepost/windIO.py
+++ b/wetb/prepost/windIO.py
@@ -28,6 +28,7 @@ import math
 from time import time
 import codecs
 from itertools import chain
+import re as re
 
 import numpy as np
 import scipy as sp
@@ -1023,17 +1024,18 @@ class LoadResults(ReadHawc2):
                 dscr_list = misc.remove_items(dscr_list, '')
                 sensortype = self.ch_details[ch, 0].split(',')[0]
 
-                # is this always valid?
-                blade_nr = self.ch_details[ch, 2].split('blade  ')[1][0]
+                # Blade number is identified as the first integer in the string
+                blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group()
+                blade_nr = int(blade_nr)
                 # sometimes the units for aero sensors are wrong!
                 units = self.ch_details[ch, 1]
                 # there is no label option
 
                 # radius what you get
-#                 radius = dscr_list[-1]
-                # radius what you asked for
-                tmp = self.ch_details[ch, 0].split('R=')
-                radius = misc.remove_items(tmp, '')[-1].strip()
+                # radius = dscr_list[-1]
+                # radius what you asked for, identified as the last float in the string
+                s=self.ch_details[ch, 0]
+                radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1])
 
                 # and tag it
                 tag = '%s-%s-%s' % (sensortype, blade_nr, radius)
@@ -1041,7 +1043,7 @@ class LoadResults(ReadHawc2):
                 channelinfo = {}
                 channelinfo['sensortype'] = sensortype
                 channelinfo['radius'] = float(radius)
-                channelinfo['blade_nr'] = int(blade_nr)
+                channelinfo['blade_nr'] = blade_nr
                 channelinfo['units'] = units
                 channelinfo['chi'] = ch
 
@@ -1087,10 +1089,10 @@ class LoadResults(ReadHawc2):
                 blade_nr = int(items[5])
 
                 # radius what you get
-#                 radius = float(items[8].replace(',', ''))
-                # radius what you asked for
-                tmp = self.ch_details[ch, 0].split(' ')
-                radius = float(misc.remove_items(tmp, '')[-1])
+                #  radius = float(items[8].replace(',', ''))
+                # radius what you asked for, identified as the last float in the string
+                s=self.ch_details[ch, 0]
+                radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1])
 
                 items = self.ch_details[ch, 0].split(',')
                 component = items[0][-2:]
@@ -1122,17 +1124,16 @@ class LoadResults(ReadHawc2):
 
                 items = self.ch_details[ch, 2].split(' ')
                 items = misc.remove_items(items, '')
-                # find blade number
-                tmp = self.ch_details[ch, 2].split('blade ')[1].strip()
-                blade_nr = int(tmp.split(' ')[0])
-                tmp = self.ch_details[ch, 2].split('radius ')[1].strip()
-                tmp = tmp.split(',')
-
+                # Blade number is identified as the first integer in the string
+                blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group()
+                blade_nr = int(blade_nr)
                 # radius what you get
-#                 radius = float(tmp[0])
-                # radius what you asked for
-                tmp = self.ch_details[ch, 0].split(' ')
-                radius = float(misc.remove_items(tmp, '')[-1])
+                # tmp = self.ch_details[ch, 2].split('radius ')[1].strip()
+                # tmp = tmp.split(',')
+                # radius = float(tmp[0])
+                # radius what you asked for, identified as the last float in the string
+                s=self.ch_details[ch, 0]
+                radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1])
 
                 if len(tmp) > 1:
                     coord = tmp[1].strip()
@@ -1218,16 +1219,17 @@ class LoadResults(ReadHawc2):
                 units = self.ch_details[ch, 1].strip()
                 tmp = self.ch_details[ch, 0].split(' ')[1].strip()
                 direction = tmp.replace(',', '')
-                blade_nr = self.ch_details[ch, 2].split('blade')[1].strip()[:2]
                 coord = self.ch_details[ch, 2].split(',')[1].strip()
-                blade_nr = blade_nr.strip()
+                # Blade number is identified as the first integer in the string
+                blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group()
+                blade_nr = int(blade_nr)
 
                 # radius what you get
-#                 radius = self.ch_details[ch, 2].split('radius')[1].split(',')[0]
-#                 radius = radius.strip()
-                # radius what you asked for
-                tmp = self.ch_details[ch, 0].split(' ')
-                radius = misc.remove_items(tmp, '')[-1].strip()
+                # radius = self.ch_details[ch, 2].split('radius')[1].split(',')[0]
+                # radius = radius.strip()
+                # radius what you asked for, identified as the last float in the string
+                s=self.ch_details[ch, 0]
+                radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1])
 
                 # and tag it
                 rpl = (direction, blade_nr, radius, coord)
@@ -1237,7 +1239,7 @@ class LoadResults(ReadHawc2):
                 channelinfo['coord'] = coord
                 # FIXME: direction is the same as component, right?
                 channelinfo['direction'] = direction
-                channelinfo['blade_nr'] = int(blade_nr)
+                channelinfo['blade_nr'] = blade_nr
                 channelinfo['radius'] = float(radius)
                 channelinfo['units'] = units
                 channelinfo['chi'] = ch
@@ -1247,18 +1249,17 @@ class LoadResults(ReadHawc2):
             # 2: Flap angle for blade  3 flap number  1
             elif self.ch_details[ch, 0][:7] == 'setbeta':
                 units = self.ch_details[ch, 1].strip()
-                blade_nr = self.ch_details[ch, 2].split('blade')[1].strip()
-                blade_nr = blade_nr.split(' ')[0].strip()
+                # Blade number is identified as the first integer in the string
+                blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group()
+                blade_nr = blade_nr
                 flap_nr = self.ch_details[ch, 2].split(' ')[-1].strip()
 
-                blade_nr = blade_nr.strip()
-
                 # and tag it
                 tag = 'setbeta-bladenr-%s-flapnr-%s' % (blade_nr, flap_nr)
                 # save all info in the dict
                 channelinfo = {}
                 channelinfo['flap_nr'] = int(flap_nr)
-                channelinfo['blade_nr'] = int(blade_nr)
+                channelinfo['blade_nr'] = blade_nr
                 channelinfo['units'] = units
                 channelinfo['chi'] = ch
 
-- 
GitLab