python-odml
python-odml copied to clipboard
Convenience functions for filtering
Currently it is possible to filter for specific odML objects using the iter-functions with a lambda function, e.g.:
odmldoc.itersections(filter_func=lambda x: x.name=="SpikeSorting" or x.type=="spikesorting")
odmldoc.iterproperties(filter_func=lambda x:x.name=="IsSpikeSorted")
odmldoc.itervalues(filter_func=lambda x: x.dtype==odml.DType.boolean and x.parent.name=="IsSpikeSorted")
To optimize the visibility of this functionality it would be nice to have (in addition) convenience functions for filtering (cookie-cutter-filter-functions), e.g. by objects:
odmldoc.filter_sections(name="SpikeSorting", type="spikesorting", operation="or")
odmldoc.filter_properties(name="IsSpikeSorted")
odmldoc.filter_values(dtype=odml.DType.boolean, parent_name="IsSpikeSorted", operation="and")
Or by attributes, e.g.:
odmldoc.filter_by_name("SpikeSorting", exact=True)
Or we even discuss the design of a "generic" filter function, e.g.:
odmldoc.filter(objecttype=["sections", "properties"], **kwords)
The question here is how to handle operations (and vs or) within and between search attributes.
And in addition we could think about a "template"-search.