From cf1a2e3f25e297998e221e9ae5866640add3108c Mon Sep 17 00:00:00 2001
From: Gregory Ashton <gregory.ashton@ligo.org>
Date: Thu, 1 Oct 2020 23:44:04 -0500
Subject: [PATCH] Add a loaded_modules dictionary to the meta_data

All results will be stored with a dictionary of the modules and versions
if available loaded at runtime.
---
 bilby/core/sampler/__init__.py |  3 ++-
 bilby/core/utils.py            | 10 ++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/bilby/core/sampler/__init__.py b/bilby/core/sampler/__init__.py
index 7ec87be23..2e5fa1404 100644
--- a/bilby/core/sampler/__init__.py
+++ b/bilby/core/sampler/__init__.py
@@ -4,7 +4,7 @@ import datetime
 from collections import OrderedDict
 
 import bilby
-from ..utils import command_line_args, logger
+from ..utils import command_line_args, logger, loaded_modules_dict
 from ..prior import PriorDict, DeltaFunction
 
 from .base_sampler import Sampler, SamplingMarginalisedParameterError
@@ -141,6 +141,7 @@ def run_sampler(likelihood, priors=None, label='label', outdir='outdir',
     if meta_data is None:
         meta_data = dict()
     meta_data['likelihood'] = likelihood.meta_data
+    meta_data["loaded_modules"] = loaded_modules_dict()
 
     if command_line_args.bilby_zero_likelihood_mode:
         from bilby.core.likelihood import ZeroLikelihood
diff --git a/bilby/core/utils.py b/bilby/core/utils.py
index 0fb1aa4af..03380552d 100644
--- a/bilby/core/utils.py
+++ b/bilby/core/utils.py
@@ -4,6 +4,7 @@ from distutils.spawn import find_executable
 import logging
 import os
 import shutil
+import sys
 from math import fmod
 import argparse
 import inspect
@@ -1269,6 +1270,15 @@ def get_function_path(func):
         return func
 
 
+def loaded_modules_dict():
+    module_names = sys.modules.keys()
+    vdict = {}
+    for key in module_names:
+        if "." not in key:
+            vdict[key] = str(getattr(sys.modules[key], "__version__", "N/A"))
+    return vdict
+
+
 class IllegalDurationAndSamplingFrequencyException(Exception):
     pass
 
-- 
GitLab