# HG changeset patch # User proteore # Date 1549372967 18000 # Node ID 2080e2a4f20940ee01a60aca95594a9600dfda55 # Parent 68cee865018e76782493f8d1d77f827047dfe9e1 planemo upload commit ef71f7a32bb76c79052b535be1d0beceff6e03a5-dirty diff -r 68cee865018e -r 2080e2a4f209 filter_kw_val.py --- a/filter_kw_val.py Wed Jan 16 08:30:53 2019 -0500 +++ b/filter_kw_val.py Tue Feb 05 08:22:47 2019 -0500 @@ -43,13 +43,18 @@ def is_number(number_format, n): float_format = re.compile(r"^[-]?[0-9][0-9]*.?[0-9]+$") int_format = re.compile(r"^[-]?[0-9][0-9]*$") + scientific_number = re.compile(r"^[-+]?[\d]+\.?[\d]*[Ee](?:[-+]?[\d]+)?$") test = "" if number_format == "int": test = re.match(int_format, n) elif number_format == "float": test = re.match(float_format, n) + if test is None : test = re.match(scientific_number,n) + if test: return True + else : + return False #Filter the document def filters(args): @@ -75,7 +80,7 @@ for v in args.value: v[0] = v[0].replace(",",".") if is_number("float", v[0]): - csv_file = comma_number_to_float(csv_file,v[1],header) + csv_file = comma_number_to_float(csv_file,column_from_txt(v[1]),header) results_dict = filter_value(csv_file, header, results_dict, v[0], v[1], v[2]) else: raise ValueError("Please enter a number in filter by value") @@ -83,7 +88,7 @@ if args.values_range: for vr in args.values_range: vr[:2] = [value.replace(",",".") for value in vr[:2]] - csv_file = comma_number_to_float(csv_file,vr[2],header) + csv_file = comma_number_to_float(csv_file,column_from_txt(vr[2]),header) if (is_number("float", vr[0]) or is_number("int", vr[0])) and (is_number("float",vr[1]) or is_number("int",vr[1])): results_dict = filter_values_range(csv_file, header, results_dict, vr[0], vr[1], vr[2], vr[3]) @@ -143,6 +148,7 @@ tab= [line for i,line in enumerate(tab) if i not in unsortable_lines] if only_number(tab,sort_col) and any_float(tab,sort_col) : + tab = comma_number_to_float(tab,sort_col,False) tab = sorted(tab, key=lambda row: float(row[sort_col]), reverse=reverse) elif only_number(tab,sort_col): tab = sorted(tab, key=lambda row: int(row[sort_col]), reverse=reverse) @@ -167,7 +173,6 @@ #turn into float a column def comma_number_to_float(csv_file,ncol,header) : - ncol = int(ncol.replace("c","")) - 1 if header : tmp=[csv_file[0]] csv_file=csv_file[1:] @@ -190,7 +195,6 @@ return False def only_number(tab,col) : - for line in tab : if not (is_number("float",line[col].replace(",",".")) or is_number("int",line[col].replace(",","."))) : return False diff -r 68cee865018e -r 2080e2a4f209 filter_kw_val.xml --- a/filter_kw_val.xml Wed Jan 16 08:30:53 2019 -0500 +++ b/filter_kw_val.xml Tue Feb 05 08:22:47 2019 -0500 @@ -1,4 +1,4 @@ - +