diff --git a/gstlal-inspiral/bin/gstlal_inspiral_lvalert_uberplotter b/gstlal-inspiral/bin/gstlal_inspiral_lvalert_uberplotter
index 2972da2e49b591488bd67ccef95762de59168100..457bf0fd549fe2115e713cdcea0c8b642bb93e00 100755
--- a/gstlal-inspiral/bin/gstlal_inspiral_lvalert_uberplotter
+++ b/gstlal-inspiral/bin/gstlal_inspiral_lvalert_uberplotter
@@ -58,6 +58,7 @@ from lal import series
 from gstlal import far
 from gstlal import lvalert_helper
 from gstlal import plotfar
+from gstlal import plotpsd
 
 import matplotlib
 matplotlib.rcParams.update({
@@ -164,7 +165,7 @@ def plot_snrchisq(instrument, rankingstat, plot_type, max_snr, snrchisq = None):
 #
 # =============================================================================
 #
-	
+
 
 def main(client=None):
 	#
@@ -191,15 +192,15 @@ def main(client=None):
 		lvnodes = ['test_gstlal_allsky']
 	else:
 		lvnodes = ['cbc_gstlal_allsky']
-	
+
 	#
 	# start LVAlert listener loop:
 	#
 	try:
 		logging.info("connecting to %s" % options.lvalert_server_url)
-		if client.connect(): 
+		if client.connect():
 			logging.info("connected to %s" % options.lvalert_server_url)
-		else: 
+		else:
 			logging.info("could not connect to %s, exiting" % options.lvalert_server_url)
 			exit()
 
@@ -219,7 +220,7 @@ def main(client=None):
 
 	except (KeyboardInterrupt, SystemExit):
 		logging.info("exit signal received, disconnecting from lvalert")
-		client.abort() 
+		client.abort()
 
 #
 # the uber plotter class that responds to alerts:
@@ -240,7 +241,7 @@ class uber_plotter(object):
 		logging.info("Alert Contents: %s" % lvalert_data)
 
 		gid = None
-		
+
 		# check for the right filenames:
         	if "filename" in lvalert_data["data"]:
                 	filename = os.path.split(urlparse.urlparse(lvalert_data["data"]["filename"]).path)[-1]
@@ -250,14 +251,14 @@ class uber_plotter(object):
         			logging.info("generating ranking plots for %s" % gid)
 				try:
         				self.generate_ranking_plots(gid)
-				except Exception, err: 
+				except Exception, err:
 					logging.info(traceback.print_exc())
                 	elif filename in (u"psd.xml.gz",):
                         	logging.info("psd.xml.gz available for %s" % gid)
         			logging.info("generating psd plots for %s" % gid)
 				try:
         				self.generate_psd_plots(gid)
-				except Exception, err: 
+				except Exception, err:
 					logging.info(traceback.print_exc())
         		else:
                         	logging.info("filename is not 'ranking_data.xml.gz' or 'psd.xml.gz'.  skipping")
@@ -265,118 +266,118 @@ class uber_plotter(object):
                 	logging.info("json key filename not in lvalert data, skipping")
 
 
-#						#
-#---- Generate plots from ranking stat file ----#
-#						#
-
-        def generate_ranking_plots(self, gid=None):
-        	#
-        	# download candidate's data
-        	#
-        	coinc_xmldoc, rankingstat, rankingstatpdf, fapfar = get_files(gracedb_client=self.gracedb, graceid=gid)
-        	coinc_event_table = lsctables.CoincTable.get_table(coinc_xmldoc)
-        	coinc_inspiral_table = lsctables.CoincInspiralTable.get_table(coinc_xmldoc)
-        	try:
-        		coinc_event, = coinc_event_table
-        		coinc_inspiral, = coinc_inspiral_table
-        	except ValueError:
-        		raise ValueError("document does not contain exactly one candidate")
-        	if [(row.search, row.search_coinc_type) for row in lsctables.CoincDefTable.get_table(coinc_xmldoc) if row.coinc_def_id == coinc_event.coinc_def_id] != [(InspiralCoincDef.search, InspiralCoincDef.search_coinc_type)]:
-        		raise ValueError("candidate is not an inspiral<-->inspiral coincidence")
-        	offsetvector = lsctables.TimeSlideTable.get_table(coinc_xmldoc).as_dict()[coinc_event.time_slide_id]
-        	sngl_inspirals = dict((row.ifo, row) for row in lsctables.SnglInspiralTable.get_table(coinc_xmldoc))
-
-
-
-        	for plot_type in ["background_pdf", "injection_pdf", "zero_lag_pdf", "LR"]:
-        		for instrument in rankingstat.instruments:
-        			if instrument in sngl_inspirals:
-        				# place marker on plot
-        				fig = plot_snrchisq(instrument, rankingstat, plot_type, self.opts.max_snr, (sngl_inspirals[instrument].snr, sngl_inspirals[instrument].chisq))
-        			else:
-        				# no sngl for this instrument
-        				fig = plot_snrchisq(instrument, rankingstat, plot_type, self.opts.max_snr)
-        			filename = "%s_%s_%s_snrchi.png" % (gid, instrument, plot_type)
-        			if not self.opts.no_upload:
-        				lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "%s SNR, chisq PDF" % instrument, tagname = "background")
-        			if self.opts.output_path is not None:
-        				filename = os.path.join(self.opts.output_path, filename)
-        				logging.info("writing %s ..." % filename)
-        				fig.savefig(filename)
-
-
-        	fig = plotfar.plot_likelihood_ratio_ccdf(fapfar, (0., max(40., coinc_event.likelihood - coinc_event.likelihood % 5. + 5.)), ln_likelihood_ratio_markers = (coinc_event.likelihood,))
-        	filename = "%s_likehoodratio_ccdf.png" % gid
-        	if not self.opts.no_upload:
-        		lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "Likelihood Ratio CCDF", tagname = "background")
-        	if self.opts.output_path is not None:
-        		filename = os.path.join(self.opts.output_path, filename)
-        		logging.info("writing %s ..." % filename)
-        		fig.savefig(filename)
-
-
-        	fig = plotfar.plot_horizon_distance_vs_time(rankingstat, (coinc_inspiral.end - 14400., coinc_inspiral.end), tref = coinc_inspiral.end)
-        	filename = "%s_horizon_distances.png" % gid
-        	if not self.opts.no_upload:
-        		lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "Horizon Distances", tagname = "psd")
-        	if self.opts.output_path is not None:
-        		filename = os.path.join(self.opts.output_path, filename)
-        		logging.info("writing %s ..." % filename)
-        		fig.savefig(filename)
-
-
-        	fig = plotfar.plot_rates(rankingstat)
-        	filename = "%s_rates.png" % gid
-        	if not self.opts.no_upload:
-        		lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "Instrument combo rates", tagname = "background")
-        	if self.opts.output_path is not None:
-        		filename = os.path.join(self.opts.output_path, filename)
-        		logging.info("writing %s ..." % filename)
-        		fig.savefig(filename)
-
-
-#						#
-#--------  Generate plots from psd file --------#
-#						#
+	#						#
+	#---- Generate plots from ranking stat file ----#
+	#						#
+
+	def generate_ranking_plots(self, gid=None):
+		#
+		# download candidate's data
+		#
+		coinc_xmldoc, rankingstat, rankingstatpdf, fapfar = get_files(gracedb_client=self.gracedb, graceid=gid)
+		coinc_event_table = lsctables.CoincTable.get_table(coinc_xmldoc)
+		coinc_inspiral_table = lsctables.CoincInspiralTable.get_table(coinc_xmldoc)
+		try:
+			coinc_event, = coinc_event_table
+			coinc_inspiral, = coinc_inspiral_table
+		except ValueError:
+			raise ValueError("document does not contain exactly one candidate")
+		if [(row.search, row.search_coinc_type) for row in lsctables.CoincDefTable.get_table(coinc_xmldoc) if row.coinc_def_id == coinc_event.coinc_def_id] != [(InspiralCoincDef.search, InspiralCoincDef.search_coinc_type)]:
+			raise ValueError("candidate is not an inspiral<-->inspiral coincidence")
+		offsetvector = lsctables.TimeSlideTable.get_table(coinc_xmldoc).as_dict()[coinc_event.time_slide_id]
+		sngl_inspirals = dict((row.ifo, row) for row in lsctables.SnglInspiralTable.get_table(coinc_xmldoc))
+
+
+
+		for plot_type in ["background_pdf", "injection_pdf", "zero_lag_pdf", "LR"]:
+			for instrument in rankingstat.instruments:
+				if instrument in sngl_inspirals:
+					# place marker on plot
+					fig = plot_snrchisq(instrument, rankingstat, plot_type, self.opts.max_snr, (sngl_inspirals[instrument].snr, sngl_inspirals[instrument].chisq))
+				else:
+					# no sngl for this instrument
+					fig = plot_snrchisq(instrument, rankingstat, plot_type, self.opts.max_snr)
+				filename = "%s_%s_%s_snrchi.png" % (gid, instrument, plot_type)
+				if not self.opts.no_upload:
+					lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "%s SNR, chisq PDF" % instrument, tagname = "background")
+				if self.opts.output_path is not None:
+					filename = os.path.join(self.opts.output_path, filename)
+					logging.info("writing %s ..." % filename)
+					fig.savefig(filename)
+
+
+		fig = plotfar.plot_likelihood_ratio_ccdf(fapfar, (0., max(40., coinc_event.likelihood - coinc_event.likelihood % 5. + 5.)), ln_likelihood_ratio_markers = (coinc_event.likelihood,))
+		filename = "%s_likehoodratio_ccdf.png" % gid
+		if not self.opts.no_upload:
+			lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "Likelihood Ratio CCDF", tagname = "background")
+		if self.opts.output_path is not None:
+			filename = os.path.join(self.opts.output_path, filename)
+			logging.info("writing %s ..." % filename)
+			fig.savefig(filename)
+
+
+		fig = plotfar.plot_horizon_distance_vs_time(rankingstat, (coinc_inspiral.end - 14400., coinc_inspiral.end), tref = coinc_inspiral.end)
+		filename = "%s_horizon_distances.png" % gid
+		if not self.opts.no_upload:
+			lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "Horizon Distances", tagname = "psd")
+		if self.opts.output_path is not None:
+			filename = os.path.join(self.opts.output_path, filename)
+			logging.info("writing %s ..." % filename)
+			fig.savefig(filename)
+
+
+		fig = plotfar.plot_rates(rankingstat)
+		filename = "%s_rates.png" % gid
+		if not self.opts.no_upload:
+			lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "Instrument combo rates", tagname = "background")
+		if self.opts.output_path is not None:
+			filename = os.path.join(self.opts.output_path, filename)
+			logging.info("writing %s ..." % filename)
+			fig.savefig(filename)
+
+
+	#						#
+	#--------  Generate plots from psd file --------#
+	#						#
 
 	def generate_psd_plots(self, gid=None):
-        	psds = get_psds(gracedb_client=self.gracedb, 
+		psds = get_psds(gracedb_client=self.gracedb,
 				graceid=gid, ignore_404 = self.opts.skip_404)
-        	if psds is None: 
+		if psds is None:
 			logging.info("Could not get_psds, exiting loop")
 			return
 
-        	coinc_xmldoc = lvalert_helper.get_coinc_xmldoc(self.gracedb, gid)
+		coinc_xmldoc = lvalert_helper.get_coinc_xmldoc(self.gracedb, gid)
 
-        	#
-        	# PSD plot
-        	#
+		#
+		# PSD plot
+		#
 
-        	fig = plotpsd.plot_psds(psds, coinc_xmldoc, plot_width = 800)
-        	fig.tight_layout()
+		fig = plotpsd.plot_psds(psds, coinc_xmldoc, plot_width = 800)
+		fig.tight_layout()
 
-        	filename = "%s_psd.%s" % (gid, self.opts.format)
-       		if options.no_upload:
-                	logging.info("writing %s ..." % filename)
-                	fig.savefig(filename)
-        	else:
-                	lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "strain spectral density plot", tagname = "psd")
+		filename = "%s_psd.%s" % (gid, self.opts.format)
+		if self.opts.no_upload:
+			logging.info("writing %s ..." % filename)
+			fig.savefig(filename)
+		else:
+			lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "strain spectral density plot", tagname = "psd")
 
-        	#
-        	# Cumulative SNRs plot
-        	#
+		#
+		# Cumulative SNRs plot
+		#
 
-        	fig = plotpsd.plot_cumulative_snrs(psds, coinc_xmldoc, plot_width = 800)
-        	fig.tight_layout()
+		fig = plotpsd.plot_cumulative_snrs(psds, coinc_xmldoc, plot_width = 800)
+		fig.tight_layout()
 
-        	filename = "%s_cumulative_snrs.%s" % (gid, self.opts.format)
-        	if self.opts.no_upload:
-                	logging.info("writing %s ..." % filename)
-                	fig.savefig(filename)
-        	else:
-                	lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "cumulative SNRs plot", tagname = "psd")
+		filename = "%s_cumulative_snrs.%s" % (gid, self.opts.format)
+		if self.opts.no_upload:
+			logging.info("writing %s ..." % filename)
+			fig.savefig(filename)
+		else:
+			lvalert_helper.upload_fig(fig, self.gracedb, gid, filename = filename, log_message = "cumulative SNRs plot", tagname = "psd")
 
-        	logging.info("finished processing psd plot for %s" % gid)
+		logging.info("finished processing psd plot for %s" % gid)