Source code for gazelib.visualization.utils
# -*- coding: utf-8 -*-
[docs]def isNotNone(x):
return x is not None
[docs]def isNotNone2d(x, y):
return x is not None and y is not None
[docs]def get_valid_sublists(l, validator=isNotNone):
'''
Return list of lists, where each sublist contains only valid values.
In other words, the given list is splitted by its invalid values.
Parameters:
l:
A list
validator:
A boolean function that returns true if element is valid.
Defaults to testing if value is not None.
Example::
>>> get_valid_sublists([1, 2, None, 3])
[[1, 2], [3]]
'''
sublists = []
cur_sublist = []
for x in l:
if validator(x):
cur_sublist.append(x)
else:
if len(cur_sublist) > 0:
# End current sublist and start a new one.
sublists.append(cur_sublist)
cur_sublist = []
# If last value was valid, one sublist remains to be added.
if len(cur_sublist) > 0:
sublists.append(cur_sublist)
return sublists
[docs]def get_valid_sublists_2d(xs, ys, validator=isNotNone2d):
'''
Return list of lists
Example result::
[
([1,2,3,...], [0,3,5,...]),
([4,6,2,...], [3,0,3,...]),
...
]
'''
sublists = []
cur_sublist_x = []
cur_sublist_y = []
for x, y in zip(xs, ys):
if validator(x, y):
cur_sublist_x.append(x)
cur_sublist_y.append(y)
else:
if len(cur_sublist_x) > 0:
# End current sublist and start a new one
sublists.append((cur_sublist_x, cur_sublist_y))
cur_sublist_x = []
cur_sublist_y = []
# If last value was valid, one sublist remains to be added.
if len(cur_sublist_x) > 0:
sublists.append((cur_sublist_x, cur_sublist_y))
return sublists