Skip to content
Snippets Groups Projects
Commit a2fdf2de authored by Ger van Diepen's avatar Ger van Diepen
Browse files

bug 1687:

Fixed makeSubset
parent 35ed5db6
No related branches found
No related tags found
No related merge requests found
...@@ -51,7 +51,7 @@ class parameterset(PyParameterSet): ...@@ -51,7 +51,7 @@ class parameterset(PyParameterSet):
The Python interface to ParameterSet The Python interface to ParameterSet
""" """
def __init__(self, filename=None, caseInsensitive=False): def __init__(self, filename=None, caseInsensitive=False, _copyObj=False):
"""Create a parameterset object. """Create a parameterset object.
filename filename
...@@ -61,10 +61,14 @@ class parameterset(PyParameterSet): ...@@ -61,10 +61,14 @@ class parameterset(PyParameterSet):
True = parameter names are case insensitive True = parameter names are case insensitive
""" """
if filename==None: if _copyObj == True:
PyParameterSet.__init__ (self, caseInsensitive); # Copy constructor
PyParameterSet.__init__ (self, filename)
elif filename==None:
PyParameterSet.__init__ (self, caseInsensitive, 0, 0);
elif isinstance(filename, bool): elif isinstance(filename, bool):
PyParameterSet.__init__ (self, filename); # Here filename argument means caseInsensitive
PyParameterSet.__init__ (self, filename, 0, 0);
else: else:
PyParameterSet.__init__ (self, filename, caseInsensitive); PyParameterSet.__init__ (self, filename, caseInsensitive);
...@@ -76,6 +80,11 @@ class parameterset(PyParameterSet): ...@@ -76,6 +80,11 @@ class parameterset(PyParameterSet):
"""Get the parametervalue object of a parameter.""" """Get the parametervalue object of a parameter."""
return self._get (key) return self._get (key)
def makeSubset (self, prefix):
"""Get a subset of all keys starting with the given prefix"""
ps = self._makeSubset (prefix)
return parameterset (ps, _copyObj=True)
def keys(self): def keys(self):
"""Get a sorted list of all parameter names.""" """Get a sorted list of all parameter names."""
return self.keywords() return self.keywords()
......
...@@ -39,7 +39,7 @@ namespace LOFAR { ...@@ -39,7 +39,7 @@ namespace LOFAR {
PyParameterSet() PyParameterSet()
: ParameterSet() : ParameterSet()
{} {}
PyParameterSet (bool caseInsensitive) PyParameterSet (bool caseInsensitive, int, int)
: ParameterSet (caseInsensitive) : ParameterSet (caseInsensitive)
{} {}
PyParameterSet (const string& fileName, bool caseInsensitive) PyParameterSet (const string& fileName, bool caseInsensitive)
...@@ -164,7 +164,8 @@ namespace LOFAR { ...@@ -164,7 +164,8 @@ namespace LOFAR {
void pyparameterset() void pyparameterset()
{ {
class_<PyParameterSet> ("PyParameterSet") class_<PyParameterSet> ("PyParameterSet")
.def (init<bool>()) .def (init<PyParameterSet>())
.def (init<bool, int, int>())
.def (init<std::string, bool>()) .def (init<std::string, bool>())
.def ("version", &PyParameterSet::version, .def ("version", &PyParameterSet::version,
(boost::python::arg("type")="other"), (boost::python::arg("type")="other"),
...@@ -174,7 +175,7 @@ namespace LOFAR { ...@@ -174,7 +175,7 @@ namespace LOFAR {
.def ("__len__", &ParameterSet::size, .def ("__len__", &ParameterSet::size,
"Get the number of parameters.") "Get the number of parameters.")
.def ("keywords", &PyParameterSet::keywords) .def ("keywords", &PyParameterSet::keywords)
.def ("makeSubset", &PyParameterSet::makeSubset, .def ("_makeSubset", &PyParameterSet::makeSubset,
(boost::python::arg("baseKey"), (boost::python::arg("baseKey"),
boost::python::arg("prefix")=""), boost::python::arg("prefix")=""),
"Return a subset as a new parameterset object.\n" "Return a subset as a new parameterset object.\n"
......
...@@ -79,3 +79,12 @@ ps.add ("vecexp", "[1..3,5..10]") ...@@ -79,3 +79,12 @@ ps.add ("vecexp", "[1..3,5..10]")
ps.add ("vecnest", "[[1..3,5*10],[5..10]]") ps.add ("vecnest", "[[1..3,5*10],[5..10]]")
print ps.keys() print ps.keys()
checkps (ps) checkps (ps)
# Check if a subset can be made and its name can be read.
pss = ps.makeSubset('a.')
print pss.keys()
print 'b.c =', pss.getString ('b.c')
print pss.makeSubset('b.').keys()
print pss.makeSubset('b.').size()
print pss.makeSubset('cc').keys() # should be empty
print len(pss.makeSubset('cc'))
...@@ -78,3 +78,9 @@ True ...@@ -78,3 +78,9 @@ True
[1..3,5*10] [1..3,5*10]
[1, 2, 3, 10, 10, 10, 10, 10] [1, 2, 3, 10, 10, 10, 10, 10]
[5, 6, 7, 8, 9, 10] [5, 6, 7, 8, 9, 10]
['b', 'b.bool', 'b.c', 'b.double', 'b.lange_naam']
b.c = 5
['bool', 'c', 'double', 'lange_naam']
4
[]
0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment