Editing an MDC XML file
As well as producing new MDC specifications, Minke is capable of
editing pre-existing SimBurstTable XML files in a Pythonic way.
In this tutorial we will load a pre-existing XML file, and change the
value of every row’s “hrss” value, but the same approach can be used
to edit any of the values within the SimBurstTable.
- First we load the required parts of minke::
>>> from minke import mdctools
In order to load an XML file we need to specify an MDCSet; what we
specify in this step isn’t terribly important if we’re just editing
XML files, but is essential if we need to produce a frame file at some
point. So if we assume we’ll be working with the two LIGO 4km detectors:
>>> mdcset = mdctools.MDCSet(['L1', 'H1'])
We’ll now load our XML file into the mdcset object. We’ll assume
they’re in a file, in the present working directory, called
“injections.xml.gz”:
>>> mdcset.load("injections.xml.gz")
This loads each of the waveforms in the table into an array called
mdcset.waveforms, which can be indexed and iterated over just like
any Python list, and we can access individual rows a bit like this.:
which gives us access to the underlying Swig SimBurst object from
LALSuite. We can then edit the values of this by calling them as
attributes, so, for example, to set the hrss,:
>>> mdcset.waveforms[1].hrss = 1e-23
- In order to perform a batch edit on all of the rows we just need a loop. For example, if we wanted to set every hrss to 1e-23,::
>>> for i in xrange(len(mdcset.waveforms)):
>>> mdcset.waveforms[i].hrss = 1e-23
- We then need to save this edit as an xml file,::
>>> mdcset.save_xml('edited_injections.xml.gz')
and we’re then free to use this xml file in other pipelines·