# HG changeset patch
# User iuc
# Date 1599873744 0
# Node ID 4678715f7147090be62f56865fd6d3a900693104
# Parent 5a4ae7678bc53ef22980ef0eff0e801f9f04e583
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit daa9af57fe07ee83a45ddc9f855716f9d14a8e12"
diff -r 5a4ae7678bc5 -r 4678715f7147 filters.py
--- a/filters.py Thu Jan 23 07:36:57 2020 -0500
+++ b/filters.py Sat Sep 12 01:22:24 2020 +0000
@@ -32,9 +32,20 @@
p = filter_dict['pattern']
r = filter_dict['replace']
c = int(filter_dict['column']) - 1
- self.func = lambda i, l: '\t'.join(
- [x if j != c else re.sub(p, r, x)
- for j, x in enumerate(l.split('\t'))])
+ if 'add' not in filter_dict\
+ or filter_dict['add'] not in ['prepend',
+ 'append',
+ 'before',
+ 'after']:
+ self.func = lambda i, l: '\t'.join(
+ [x if j != c else re.sub(p, r, x)
+ for j, x in enumerate(l.split('\t'))])
+ else:
+ a = 0 if filter_dict['add'] == 'prepend'\
+ else min(0, c - 1) if filter_dict['add'] == 'before'\
+ else c + 1 if filter_dict['add'] == 'after'\
+ else None
+ self.func = lambda i, l: self.replace_add(l, p, r, c, a)
elif filter_dict['filter'] == 'prepend_line_num':
self.func = lambda i, l: '%d\t%s' % (i, l)
elif filter_dict['filter'] == 'append_line_num':
@@ -69,6 +80,14 @@
fields = line.split('\t')
return '\t'.join([fields[x] for x in cols])
+ def replace_add(self, line, pat, rep, col, pos):
+ fields = line.rstrip('\r\n').split('\t')
+ i = pos if pos else len(fields)
+ val = ''
+ if col < len(fields) and re.search(pat, fields[col]):
+ val = re.sub(pat, rep, fields[col]).replace('\t', ' ')
+ return '\t'.join(fields[:i] + [val] + fields[i:])
+
def normalize(self, line, split_cols, sep):
lines = []
fields = line.rstrip('\r\n').split('\t')
diff -r 5a4ae7678bc5 -r 4678715f7147 load_db.py
--- a/load_db.py Thu Jan 23 07:36:57 2020 -0500
+++ b/load_db.py Sat Sep 12 01:22:24 2020 +0000
@@ -176,7 +176,7 @@
def get_column_def(file_path, table_name, skip=0, comment_char='#',
- column_names=None, max_lines=100, load_named_columns=False,
+ column_names=None, max_lines=1000, load_named_columns=False,
firstlinenames=False, filters=None):
col_pref = ['TEXT', 'REAL', 'INTEGER', None]
col_types = []
@@ -272,8 +272,26 @@
if x else None for i, x in enumerate(fields)]
c.execute(insert_stmt, vals)
except Exception as e:
- print('Failed at line: %d err: %s' % (linenum, e),
+ print('Load %s Failed line: %d err: %s' % (file_path, linenum, e),
file=sys.stderr)
+ for i, val in enumerate(fields):
+ try:
+ col_func[i](val)
+ except Exception:
+ colType = getValueType(val)
+ col_func[i] = float if colType == 'REAL' else int if colType == 'INTEGER' else str
+ print('Changing %s from %s to %s' % (col_names[i], col_types[i], colType),
+ file=sys.stderr)
+ col_types[i] = colType
+ vals = [col_func[i](x)
+ if x else None for i, x in enumerate(fields)]
+ print('%s %s' % (insert_stmt, vals),
+ file=sys.stderr)
+ try:
+ c.execute(insert_stmt, vals)
+ except Exception as e:
+ print('Insert %s line: %d Failed err: %s' % (file_path, linenum, e),
+ file=sys.stderr)
conn.commit()
c.close()
for i, index in enumerate(unique_indexes):
diff -r 5a4ae7678bc5 -r 4678715f7147 macros.xml
--- a/macros.xml Thu Jan 23 07:36:57 2020 -0500
+++ b/macros.xml Sat Sep 12 01:22:24 2020 +0000
@@ -40,6 +40,9 @@
#set $filter_dict['column'] = int(str($fi.filter.column).replace('c',''))
#set $filter_dict['pattern'] = str($fi.filter.regex_pattern)
#set $filter_dict['replace'] = str($fi.filter.regex_replace)
+ #if $fi.filter.add:
+ #set $filter_dict['add'] = str($fi.filter.add)
+ #end if
#silent $input_filters.append($filter_dict)
#elif str($fi.filter.filter_type).endswith('pend_line_num'):
#set $filter_dict = dict()
@@ -172,7 +175,7 @@
- ^(c?[1-9]\d*)$
+ ^(c?[1-9]\d*)$
@@ -180,6 +183,12 @@
+
+
+
+
+
+
@@ -211,6 +220,7 @@
- by regex expression matching *include/exclude* lines the match the regex expression
- select columns choose to include only selected columns in the order specified
- regex replace value in column replace a field in a column using a regex substitution (good for date reformatting)
+ - regex replace value in column add a new column using a regex substitution of a column value
- prepend a line number column each line has the ordinal value of the line read by this filter as the first column
- append a line number column each line has the ordinal value of the line read by this filter as the last column
- prepend a text column each line has the text string as the first column
diff -r 5a4ae7678bc5 -r 4678715f7147 query_db.py
--- a/query_db.py Thu Jan 23 07:36:57 2020 -0500
+++ b/query_db.py Sat Sep 12 01:22:24 2020 +0000
@@ -52,7 +52,7 @@
except Exception as exc:
print("Warning: %s" % exc, file=sys.stderr)
except Exception as e:
- exit('Error: %s' % (e))
+ exit('describe_tables Error: %s' % (e))
exit(0)
diff -r 5a4ae7678bc5 -r 4678715f7147 test-data/filtered_customers_results.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filtered_customers_results.tsv Sat Sep 12 01:22:24 2020 +0000
@@ -0,0 +1,4 @@
+1 John Smith John.Smith@yahoo.com yahoo.com 1968-02-04 626 222-2222 com
+2 Steven Goldfish goldfish@fishhere.net fishhere.net 1974-04-04 323 455-4545 net
+3 Paula Brown pb@herowndomain.org herowndomain.org 1978-05-24 416 323-3232 org
+4 James Smith jim@supergig.co.uk supergig.co.uk 1980-10-20 416 323-8888