def test_parsers(self):
     # populate a property tree from an input file
     ptree = PropertyTree()
     # INFO parser
     info_file = 'input.info'
     today = 'april 8th, 2016'
     with open(info_file, 'w') as fout:
         fout.write('date "' + today + '"')
     ptree.parse_info(info_file)
     self.assertEqual(ptree.get_string('date'), today)
     remove(info_file)
     # XML parser
     xml_file = 'input.xml'
     pi = 3.14
     with open(xml_file, 'w') as fout:
         fout.write('<pi>' + str(pi) + '</pi>')
     ptree.parse_xml(xml_file)
     self.assertEqual(ptree.get_double('pi'), pi)
     remove(xml_file)
     # JSON parser
     json_file = 'input.json'
     with open(json_file, 'w') as fout:
         fout.write('{')
         fout.write('  "foo":')
         fout.write('  {')
         fout.write('    "bar": false')
         fout.write('  }')
         fout.write('}')
     ptree.parse_json(json_file)
     self.assertFalse(ptree.get_bool('foo.bar'))
     remove(json_file)
 def test_property_tree(self):
     # ptree as container to store int, double, string, and bool
     ptree = PropertyTree()
     ptree.put_int('dim', 3)
     self.assertEqual(ptree.get_int('dim'), 3)
     ptree.put_double('path.to.pi', 3.14)
     self.assertEqual(ptree.get_double('path.to.pi'), 3.14)
     ptree.put_string('good.news', 'it works')
     self.assertEqual(ptree.get_string('good.news'), 'it works')
     ptree.put_bool('is.that.a.good.idea', False)
     self.assertEqual(ptree.get_bool('is.that.a.good.idea'), False)
 def test_get_children(self):
     ptree = PropertyTree()
     # put child
     child = PropertyTree()
     child.put_double('prune', 6.10)
     ptree.put_child('a.g', child)
     self.assertEqual(ptree.get_double('a.g.prune'), 6.10)
     # get child
     ptree.put_string('child.name', 'clement')
     ptree.put_int('child.age', -2)
     child = ptree.get_child('child')
     self.assertEqual(child.get_string('name'), 'clement')
     self.assertEqual(child.get_int('age'), -2)
parser=OptionParser(usage)
# register options
for p in range(params):
    parser.add_option('--param_'+str(p),type=float)
# parse the command line arguments
(options,args)=parser.parse_args()

# make device database
device_database=PropertyTree()
device_database.parse_xml('super_capacitor.xml')
# adjust the parameters in the database
options_dict=vars(options)
for var in options_dict:
    path=uq_database.get_string('uq.'+var+'.name')
    # next line is there to ensure that path already exists
    old_value=device_database.get_double(path)
    new_value=options_dict[var]
    print var,path,new_value
    device_database.put_double(path,new_value)
# build the energy storage device
device=EnergyStorageDevice(device_database.get_child('device'))

# parse the electrochmical impedance spectroscopy database
eis_database=PropertyTree()
eis_database.parse_xml('eis.xml')
# measure the impedance
impedance_spectrum_data=measure_impedance_spectrum(device,eis_database.get_child('eis'))
# extract the results
frequency=impedance_spectrum_data['frequency']
complex_impedance=impedance_spectrum_data['impedance']
resistance=real(complex_impedance)
parser = OptionParser(usage)
# register options
for p in range(params):
    parser.add_option('--param_' + str(p), type=float)
# parse the command line arguments
(options, args) = parser.parse_args()

# make device database
device_database = PropertyTree()
device_database.parse_xml('super_capacitor.xml')
# adjust the parameters in the database
options_dict = vars(options)
for var in options_dict:
    path = uq_database.get_string('uq.' + var + '.name')
    # next line is there to ensure that path already exists
    old_value = device_database.get_double(path)
    new_value = options_dict[var]
    print var, path, new_value
    device_database.put_double(path, new_value)
# build the energy storage device
device = EnergyStorageDevice(device_database.get_child('device'))

# parse the electrochmical impedance spectroscopy database
eis_database = PropertyTree()
eis_database.parse_xml('eis.xml')
# measure the impedance
impedance_spectrum_data = measure_impedance_spectrum(
    device, eis_database.get_child('eis'))
# extract the results
frequency = impedance_spectrum_data['frequency']
complex_impedance = impedance_spectrum_data['impedance']