diff --git a/scripts/trigger_rates.py b/scripts/trigger_rates.py
index dfe1dcd006b76db258e2e86c106c2dc6231555fb..56abdd669eb4d9ddeeb31f6b22442f0eee56a468 100755
--- a/scripts/trigger_rates.py
+++ b/scripts/trigger_rates.py
@@ -45,6 +45,7 @@ km3pipe.style.use('km3pipe')
 
 
 class TriggerRate(kp.Module):
+    """Trigger rate plotter"""
     def configure(self):
         self.plots_path = self.require('plots_path')
         self.data_path = self.get('data_path', default='data')
@@ -83,6 +84,7 @@ class TriggerRate(kp.Module):
         self.det_id = 0
 
     def initialise_data_logging(self):
+        """Set up a CSV to store the trigger rate data"""
         filename = join(self.data_path, "trigger_rates.csv")
         if not exists(filename):
             self.trigger_rates_fobj = open(filename, "w")
@@ -93,6 +95,7 @@ class TriggerRate(kp.Module):
         self.trigger_rates_fobj.flush()
 
     def process(self, blob):
+        """Analyse the trigger flags for an incoming event"""
         if not str(blob['CHPrefix'].tag) == 'IO_EVT':
             return blob
         sys.stdout.write('.')
@@ -118,11 +121,13 @@ class TriggerRate(kp.Module):
         return blob
 
     def _log_run_change(self):
+        """Keep track of a run change"""
         self.print("New run: %s" % self.current_run_id)
         now = datetime.utcnow()
         self.run_changes.append((now, self.current_run_id))
 
     def _get_run_changes_to_plot(self):
+        """Retrieve all run numbers to be plotted on the trigger rate plot"""
         self.print("Checking run changes out of range")
         overall_rates = self.trigger_rates['Overall']
         if not overall_rates:
@@ -139,6 +144,7 @@ class TriggerRate(kp.Module):
         return run_changes_to_plot
 
     def plot(self):
+        """The plot loop, calling the plotter every `self.interval` seconds."""
         while self.run:
             time.sleep(self.interval)
             timestamp, trigger_rates = self.calculate_trigger_rates()
@@ -146,6 +152,7 @@ class TriggerRate(kp.Module):
             self.create_plot()
 
     def write_trigger_rates(self, timestamp, trigger_rates):
+        """Write the trigger rate information to the CSV file"""
         entry = f"{timestamp}"
         for trigger_type in self._trigger_types:
             try:
@@ -158,6 +165,7 @@ class TriggerRate(kp.Module):
         self.trigger_rates_fobj.flush()
 
     def calculate_trigger_rates(self):
+        """Calculate the trigger rates from the event trigger parameters"""
         timestamp = datetime.utcnow()
         trigger_rates = {}
         with self.lock:
@@ -169,6 +177,7 @@ class TriggerRate(kp.Module):
         return timestamp.timestamp(), trigger_rates
 
     def create_plot(self):
+        """Create the trigger rate plot"""
         print('\n' + self.__class__.__name__ + ": updating plot.")
 
         fig, ax = plt.subplots(figsize=(16, 4))
@@ -234,6 +243,7 @@ class TriggerRate(kp.Module):
         print("Plot updated at '{}'.".format(filename))
 
     def trigger_rate_sampling_period(self):
+        """This is obsolete and will be removed"""
         try:
             return int(Config().get("Monitoring",
                                     "trigger_rate_sampling_period"))