def _build_series(series, dim_names, comment, delta_name, delta_unit): elem = ligolw.LIGO_LW( Attributes({u"Name": unicode(series.__class__.__name__)})) if comment is not None: elem.appendChild(ligolw.Comment()).pcdata = comment # FIXME: make Time class smart so we don't have to build it by # hand elem.appendChild( ligolw.Time(Attributes({ u"Name": u"epoch", u"Type": u"GPS" }))).pcdata = unicode(series.epoch) elem.appendChild(ligolw_param.from_pyvalue(u"f0", series.f0, unit=u"s^-1")) delta = getattr(series, delta_name) if np.iscomplexobj(series.data.data): data = np.row_stack((np.arange(len(series.data.data)) * delta, series.data.data.real, series.data.data.imag)) else: data = np.row_stack( (np.arange(len(series.data.data)) * delta, series.data.data)) a = ligolw_array.from_array(series.name, data, dim_names=dim_names) a.Unit = lal.UnitToString(series.sampleUnits) dim0 = a.getElementsByTagName(ligolw.Dim.tagName)[0] dim0.Unit = delta_unit dim0.Start = series.f0 dim0.Scale = delta elem.appendChild(a) return elem
def binned_array_to_xml(binnedarray, name): """ Retrun an XML document tree describing a rate.BinnedArray object. """ xml = ligolw.LIGO_LW({u"Name": u"%s:pylal_rate_binnedarray" % name}) xml.appendChild(bins_to_xml(binnedarray.bins)) xml.appendChild(ligolw_array.from_array(u"array", binnedarray.array)) return xml
def build_COMPLEX16FrequencySeries(series, comment = None): elem = ligolw.LIGO_LW(Attributes({u"Name": u"COMPLEX16FrequencySeries"})) if comment is not None: elem.appendChild(ligolw.Comment()).pcdata = comment elem.appendChild(ligolw.Time.from_gps(series.epoch, Name = u"epoch")) elem.appendChild(ligolw_param.from_pyvalue(u"f0", series.f0, unit = LALUnit("s^-1"))) data = series.data data = numpy.row_stack((numpy.arange(0, len(data)) * series.deltaF, numpy.real(data), numpy.imag(data))) a = ligolw_array.from_array(series.name, data, dim_names = (u"Frequency", u"Frequency,Real,Imaginary")) a.Unit = series.sampleUnits dim0 = a.getElementsByTagName(ligolw.Dim.tagName)[0] dim0.Unit = LALUnit("s^-1") dim0.Start = series.f0 dim0.Scale = series.deltaF elem.appendChild(a) return elem
def _build_series(series, dim_names, comment, delta_name, delta_unit): elem = ligolw.LIGO_LW(Attributes({u"Name": unicode(series.__class__.__name__)})) if comment is not None: elem.appendChild(ligolw.Comment()).pcdata = comment # FIXME: make Time class smart so we don't have to build it by # hand elem.appendChild(ligolw.Time(Attributes({u"Name": u"epoch", u"Type": u"GPS"}))).pcdata = unicode(series.epoch) elem.appendChild(ligolw_param.from_pyvalue(u"f0", series.f0, unit=u"s^-1")) delta = getattr(series, delta_name) if np.iscomplexobj(series.data.data): data = np.row_stack((np.arange(len(series.data.data)) * delta, series.data.data.real, series.data.data.imag)) else: data = np.row_stack((np.arange(len(series.data.data)) * delta, series.data.data)) a = ligolw_array.from_array(series.name, data, dim_names=dim_names) a.Unit = lal.UnitToString(series.sampleUnits) dim0 = a.getElementsByTagName(ligolw.Dim.tagName)[0] dim0.Unit = delta_unit dim0.Start = series.f0 dim0.Scale = delta elem.appendChild(a) return elem
def build_REAL8FrequencySeries(series, comment = None): elem = ligolw.LIGO_LW(Attributes({u"Name": u"REAL8FrequencySeries"})) if comment is not None: elem.appendChild(ligolw.Comment()).pcdata = comment elem.appendChild(ligolw.Time.from_gps(series.epoch, Name = u"epoch")) elem.appendChild(ligolw_param.from_pyvalue(u"f0", series.f0, unit = LALUnit("s^-1"))) data = series.data try: # Support both the pylal-wrapped class, and the direct lal class datalength = data.length data = data.data except: datalength = len(data) data = numpy.row_stack((numpy.arange(0, datalength) * series.deltaF, data)) a = ligolw_array.from_array(series.name, data, dim_names = (u"Frequency", u"Frequency,Real")) a.Unit = series.sampleUnits dim0 = a.getElementsByTagName(ligolw.Dim.tagName)[0] dim0.Unit = LALUnit("s^-1") dim0.Start = series.f0 dim0.Scale = series.deltaF elem.appendChild(a) return elem
def _build_series(series, dim_names, comment, delta_name, delta_unit): from glue.ligolw import array as ligolw_array Attributes = ligolw.sax.xmlreader.AttributesImpl elem = ligolw.LIGO_LW( Attributes({u"Name": unicode(series.__class__.__name__)})) if comment is not None: elem.appendChild(ligolw.Comment()).pcdata = comment elem.appendChild(ligolw.Time.from_gps(series.epoch, u"epoch")) elem.appendChild(ligolw_param.from_pyvalue(u"f0", series.f0, unit=u"s^-1")) delta = getattr(series, delta_name) if numpy.iscomplexobj(series.data.data): data = numpy.row_stack((numpy.arange(len(series.data.data)) * delta, series.data.data.real, series.data.data.imag)) else: data = numpy.row_stack( (numpy.arange(len(series.data.data)) * delta, series.data.data)) a = ligolw_array.from_array(series.name, data, dim_names=dim_names) a.Unit = str(series.sampleUnits) dim0 = a.getElementsByTagName(ligolw.Dim.tagName)[0] dim0.Unit = delta_unit dim0.Start = series.f0 dim0.Scale = delta elem.appendChild(a) return elem
from glue.ligolw import ligolw from glue.ligolw import array as ligolw_array from glue.ligolw import param as ligolw_param from glue.ligolw import utils as ligolw_utils class ContentHandler(ligolw.LIGOLWContentHandler): pass ligolw_array.use_in(ContentHandler) ligolw_param.use_in(ContentHandler) xmldoc = ligolw_utils.load_filename("ligo_lw_test_01.xml", contenthandler = ContentHandler, verbose = True) ligolw_utils.write_filename(xmldoc, "/dev/null") for n, a in enumerate(xmldoc.getElementsByTagName(ligolw.Array.tagName)): print >>sys.stderr, "found %s array '%s'" % ("x".join(map(str, a.array.shape)), a.Name) fig = figure.Figure() FigureCanvas(fig) axes = fig.gca() axes.loglog() axes.grid(True) for i in range(1, a.array.shape[0]): axes.plot(numpy.fabs(a.array[0]), numpy.fabs(a.array[i])) axes.set_title(a.Name) print >>sys.stderr, "saving as 'ligo_lw_test_01_%d.png' ..." % n fig.savefig("ligo_lw_test_01_%d.png" % n) print >>sys.stderr, "done." # try turning it back into XML ligolw_array.from_array(a.Name, a.array)
from glue.ligolw import param as ligolw_param from glue.ligolw import utils as ligolw_utils class ContentHandler(ligolw.LIGOLWContentHandler): pass ligolw_array.use_in(ContentHandler) ligolw_param.use_in(ContentHandler) xmldoc = ligolw_utils.load_filename("ligo_lw_test_01.xml", contenthandler = ContentHandler, verbose = True) ligolw_utils.write_filename(xmldoc, "/dev/null") t, = xmldoc.getElementsByTagName(ligolw.Time.tagName) print >>sys.stderr, "%s: %s" % (t.Name, t.pcdata) for n, a in enumerate(xmldoc.getElementsByTagName(ligolw.Array.tagName)): print >>sys.stderr, "found %s array '%s'" % ("x".join(map(str, a.array.shape)), a.Name) fig = figure.Figure() FigureCanvas(fig) axes = fig.gca() axes.loglog() axes.grid(True) for i in range(1, a.array.shape[0]): axes.plot(numpy.fabs(a.array[0]), numpy.fabs(a.array[i])) axes.set_title(a.Name) print >>sys.stderr, "saving as 'ligo_lw_test_01_%d.png' ..." % n fig.savefig("ligo_lw_test_01_%d.png" % n) print >>sys.stderr, "done." # try turning it back into XML ligolw_array.from_array(a.Name, a.array)