From f8304dced7e54b2ae301f03e11e4cb509ecb208c Mon Sep 17 00:00:00 2001
From: Rebecca Ewing <rebecca.ewing@ligo.org>
Date: Thu, 1 Jun 2023 13:03:30 +0000
Subject: [PATCH] gstlal-inspiral/bin/gstlal_ll_inspiral_pastro_uploader:
 expose model update...

---
 .../bin/gstlal_ll_inspiral_pastro_uploader    |  3 ++-
 .../python/dags/layers/inspiral.py            | 26 +++++++++++--------
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/gstlal-inspiral/bin/gstlal_ll_inspiral_pastro_uploader b/gstlal-inspiral/bin/gstlal_ll_inspiral_pastro_uploader
index ef01a5ef3f..03ff1a3975 100755
--- a/gstlal-inspiral/bin/gstlal_ll_inspiral_pastro_uploader
+++ b/gstlal-inspiral/bin/gstlal_ll_inspiral_pastro_uploader
@@ -58,6 +58,7 @@ def parse_command_line():
 	parser.add_option("--pastro-filename", metavar = "string", default = "p_astro.json", help = "Name to upload the p(astro) file with. Default is p_astro.json.")
 	parser.add_option("--model-name", metavar = "string", help = "Name of pastro model used, eg FGMC.")
 	parser.add_option("--pastro-model-file", metavar = "file", help = "Filename of pastro model.")
+	parser.add_option("--update-model-cadence", metavar = "seconds", type = "float", default = float("inf"), help = "Cadence on which to update the model file with latest ranking statistic information. Default is inf so that the model will only be updated upon start up.")
 	parser.add_option("--rank-stat", metavar = "file", help = "Filename of ranking stat pdf to update the pastro model with.")
 
 	options, args = parser.parse_args()
@@ -81,7 +82,7 @@ class PAstroUploader(events.EventProcessor):
 
 		self.rank_stat = options.rank_stat
 		self.last_rankstat_update = None
-		self.update_rankstat_cadence = 4. * 3600.
+		self.update_rankstat_cadence = options.update_model_cadence
 
 		self.is_injection_job = (options.input_topic[0] == 'inj_uploads')
 		heartbeat_topic = f"gstlal.{options.tag}.pastro_uploader_heartbeat" if not self.is_injection_job else f"gstlal.{options.tag}.inj_pastro_uploader_heartbeat"
diff --git a/gstlal-inspiral/python/dags/layers/inspiral.py b/gstlal-inspiral/python/dags/layers/inspiral.py
index 9310be7ac9..535274d73e 100644
--- a/gstlal-inspiral/python/dags/layers/inspiral.py
+++ b/gstlal-inspiral/python/dags/layers/inspiral.py
@@ -1935,18 +1935,22 @@ def upload_pastro_layer(config, dag, marg_pdf_cache):
 
 	for input_topic in input_topics:
 		for model, options in config.pastro.items():
+			arguments = [
+				Option("kafka-server", config.services.kafka_server),
+				Option("gracedb-service-url", config.upload.gracedb_service_url),
+				Option("tag", config.tag),
+				Option("input-topic", input_topic),
+				Option("model-name", model),
+				Option("pastro-filename", options.upload_file),
+				Option("pastro-model-file", options.mass_model),
+				Option("rank-stat", marg_pdf_cache.files),
+				Option("verbose"),
+			]
+			if options.update_model_cadence:
+				arguments.append(Option("update-model-cadence", options.update_model_cadence))
+
 			layer += Node(
-				arguments = [
-					Option("kafka-server", config.services.kafka_server),
-					Option("gracedb-service-url", config.upload.gracedb_service_url),
-					Option("tag", config.tag),
-					Option("input-topic", input_topic),
-					Option("model-name", model),
-					Option("pastro-filename", options.upload_file),
-					Option("pastro-model-file", options.mass_model),
-					Option("rank-stat", marg_pdf_cache.files),
-					Option("verbose"),
-				],
+				arguments = arguments
 			)
 
 	dag.attach(layer)
-- 
GitLab