From b185805ce043f8fd0b21aad147fac189be55b8fd Mon Sep 17 00:00:00 2001 From: Kipp Cannon <kipp.cannon@ligo.org> Date: Thu, 10 May 2018 02:15:12 -0700 Subject: [PATCH] gstlal_inspiral: expose template bank - add template_bank.xml.gz and template_ids.txt web services - allows other processes to find gstlal_inspiral corresponding to a given template, or physical parameters. --- gstlal-inspiral/bin/gstlal_inspiral | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/gstlal-inspiral/bin/gstlal_inspiral b/gstlal-inspiral/bin/gstlal_inspiral index 0aaead42be..6884bbec91 100755 --- a/gstlal-inspiral/bin/gstlal_inspiral +++ b/gstlal-inspiral/bin/gstlal_inspiral @@ -664,8 +664,27 @@ for output_file_number, (svd_bank_url_dict, output_url, ranking_stat_output_url, banks = inspiral.parse_bank_files(svd_bank_url_dict, verbose = options.verbose) + # assume all instruments have the same templates, just extract them + # from one of the instruments at random + sngl_inspiral_table = banks.values()[0][0].sngl_inspiral_table.copy() + for bank in banks.values()[0]: + sngl_inspiral_table.extend(bank.sngl_inspiral_table) + @bottle.route("/template_bank.xml.gz") + def get_template_bank_xml(sngl_inspiral_table = sngl_inspiral_table): + xmldoc = ligolw.Document() + xmldoc.appendChild(ligolw.LIGO_LW()) + map(xmldoc.childNodes[-1].appendChild(sngl_inspiral_table.copy()).append, sngl_inspiral_table) + output = StringIO.StringIO() + ligolw_utils.write_fileobj(xmldoc, output, gz = True) + outstr = output.getvalue() + output.close() + return outstr # FIXME: don't use Gamma0, switch to a proper column - template_ids = reduce(lambda a, b: a | b, (frozenset(bank.sngl_inspiral_table.getColumnByName("Gamma0")) for banklist in banks.values() for bank in banklist)) + template_ids = frozenset(sngl_inspiral_table.getColumnByName("Gamma0")) + @bottle.route("/template_ids.txt") + def get_template_ids(template_ids = sorted(template_ids)): + return "\n".join("%d" % template_id for template_id in template_ids) + # Choose to optionally reconstruct segments around injections (not # blind injections!) -- GitLab