From 38bb2dc8a7c767a4068e4fa533169fa2442abd28 Mon Sep 17 00:00:00 2001
From: Jakub Dylag <jjd1c23@soton.ac.uk>
Date: Fri, 16 May 2025 02:36:54 +0100
Subject: [PATCH] (docs) update api docs

---
 docs/api/acmc/main.html  | 1058 +++++++-------
 docs/api/acmc/parse.html |    2 +-
 docs/api/acmc/phen.html  | 2864 +++++++++++++++++++-------------------
 docs/api/search.js       |    2 +-
 4 files changed, 2001 insertions(+), 1925 deletions(-)

diff --git a/docs/api/acmc/main.html b/docs/api/acmc/main.html
index b85de95..8b11f1d 100644
--- a/docs/api/acmc/main.html
+++ b/docs/api/acmc/main.html
@@ -121,310 +121,322 @@
 </span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a>
 </span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_map</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
 </span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen map` command.&quot;&quot;&quot;</span>
-</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">target_coding</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">not_translate</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">no_metadata</span><span class="p">)</span>
-</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a>
-</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a>
-</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_export</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
-</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen copy` command.&quot;&quot;&quot;</span>
-</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
-</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a>
+</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">map</span><span class="p">(</span>
+</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span>
+</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">target_coding</span><span class="p">,</span>
+</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">not_translate</span><span class="p">,</span>
+</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">no_metadata</span><span class="p">,</span>
+</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">do_reverse_translate</span><span class="p">,</span>
+</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a>    <span class="p">)</span>
 </span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a>
-</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_publish</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
-</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen publish` command.&quot;&quot;&quot;</span>
-</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">remote_url</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">increment</span><span class="p">)</span>
-</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a>
+</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a>
+</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_export</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
+</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen copy` command.&quot;&quot;&quot;</span>
+</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
 </span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a>
-</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_copy</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
-</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen copy` command.&quot;&quot;&quot;</span>
-</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">target_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
-</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a>
+</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a>
+</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_publish</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
+</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen publish` command.&quot;&quot;&quot;</span>
+</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">remote_url</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">increment</span><span class="p">)</span>
 </span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a>
-</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_diff</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
-</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen diff` command.&quot;&quot;&quot;</span>
-</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span>
-</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span>
-</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">version</span><span class="p">,</span>
-</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">old_phen_dir</span><span class="p">,</span>
-</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">old_version</span><span class="p">,</span>
-</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">not_check_config</span><span class="p">,</span>
-</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a>    <span class="p">)</span>
-</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a>
-</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a>
-</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a><span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span>
-</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a>    <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s2">&quot;ACMC command-line tool&quot;</span><span class="p">)</span>
-</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a>    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--debug&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Enable debug mode&quot;</span><span class="p">)</span>
-</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a>    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;version&quot;</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;acmc </span><span class="si">{</span><span class="n">acmc</span><span class="o">.</span><span class="n">__version__</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a>    <span class="p">)</span>
-</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a>
-</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a>    <span class="c1"># Top-level commands</span>
-</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a>    <span class="n">subparsers</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
-</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;command&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Available commands&quot;</span>
-</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a>    <span class="p">)</span>
-</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a>
-</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a>    <span class="c1">### TRUD Command ###</span>
-</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a>    <span class="n">trud_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;trud&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TRUD commands&quot;</span><span class="p">)</span>
-</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a>    <span class="n">trud_subparsers</span> <span class="o">=</span> <span class="n">trud_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
-</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TRUD subcommands&quot;</span>
+</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a>
+</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_copy</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
+</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen copy` command.&quot;&quot;&quot;</span>
+</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">target_dir</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
+</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a>
+</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a>
+</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_phen_diff</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">argparse</span><span class="o">.</span><span class="n">Namespace</span><span class="p">):</span>
+</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Handle the `phen diff` command.&quot;&quot;&quot;</span>
+</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a>    <span class="n">phen</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span>
+</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">phen_dir</span><span class="p">,</span>
+</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">version</span><span class="p">,</span>
+</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">old_phen_dir</span><span class="p">,</span>
+</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">old_version</span><span class="p">,</span>
+</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a>        <span class="n">args</span><span class="o">.</span><span class="n">not_check_config</span><span class="p">,</span>
+</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a>    <span class="p">)</span>
+</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a>
+</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a>
+</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a><span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span>
+</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a>    <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s2">&quot;ACMC command-line tool&quot;</span><span class="p">)</span>
+</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a>    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--debug&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Enable debug mode&quot;</span><span class="p">)</span>
+</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a>    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;version&quot;</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;acmc </span><span class="si">{</span><span class="n">acmc</span><span class="o">.</span><span class="n">__version__</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a>    <span class="p">)</span>
+</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a>
+</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a>    <span class="c1"># Top-level commands</span>
+</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a>    <span class="n">subparsers</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
+</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;command&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Available commands&quot;</span>
 </span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a>    <span class="p">)</span>
 </span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a>
-</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a>    <span class="c1"># trud install</span>
-</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a>    <span class="n">trud_install_parser</span> <span class="o">=</span> <span class="n">trud_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a>        <span class="s2">&quot;install&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Install TRUD components&quot;</span>
-</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a>    <span class="p">)</span>
-</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a>    <span class="n">trud_install_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_trud_install</span><span class="p">)</span>
+</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a>    <span class="c1">### TRUD Command ###</span>
+</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a>    <span class="n">trud_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;trud&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TRUD commands&quot;</span><span class="p">)</span>
+</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a>    <span class="n">trud_subparsers</span> <span class="o">=</span> <span class="n">trud_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
+</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TRUD subcommands&quot;</span>
+</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a>    <span class="p">)</span>
 </span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a>
-</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a>    <span class="c1">### OMOP Command ###</span>
-</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a>    <span class="n">omop_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;omop&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP commands&quot;</span><span class="p">)</span>
-</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a>    <span class="n">omop_subparsers</span> <span class="o">=</span> <span class="n">omop_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
-</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP subcommands&quot;</span>
-</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a>    <span class="p">)</span>
+</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a>    <span class="c1"># trud install</span>
+</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a>    <span class="n">trud_install_parser</span> <span class="o">=</span> <span class="n">trud_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a>        <span class="s2">&quot;install&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Install TRUD components&quot;</span>
+</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a>    <span class="p">)</span>
+</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a>    <span class="n">trud_install_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_trud_install</span><span class="p">)</span>
 </span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a>
-</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a>    <span class="c1"># omop install</span>
-</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a>    <span class="n">omop_install_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a>        <span class="s2">&quot;install&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Install OMOP codes within database&quot;</span>
-</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a>    <span class="p">)</span>
-</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a>        <span class="s2">&quot;-f&quot;</span><span class="p">,</span> <span class="s2">&quot;--omop-zip-file&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Path to downloaded OMOP zip file&quot;</span>
-</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a>    <span class="p">)</span>
-</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span> <span class="s2">&quot;--version&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP vocabularies release version&quot;</span>
+</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a>    <span class="c1">### OMOP Command ###</span>
+</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a>    <span class="n">omop_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;omop&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP commands&quot;</span><span class="p">)</span>
+</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a>    <span class="n">omop_subparsers</span> <span class="o">=</span> <span class="n">omop_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
+</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP subcommands&quot;</span>
+</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a>    <span class="p">)</span>
+</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a>
+</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a>    <span class="c1"># omop install</span>
+</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a>    <span class="n">omop_install_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a>        <span class="s2">&quot;install&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Install OMOP codes within database&quot;</span>
 </span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a>    <span class="p">)</span>
-</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_install</span><span class="p">)</span>
-</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a>
-</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a>    <span class="c1"># omop clear</span>
-</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a>    <span class="n">omop_clear_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a>        <span class="s2">&quot;clear&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Clear OMOP data from database&quot;</span>
+</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a>        <span class="s2">&quot;-f&quot;</span><span class="p">,</span> <span class="s2">&quot;--omop-zip-file&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Path to downloaded OMOP zip file&quot;</span>
+</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a>    <span class="p">)</span>
+</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span> <span class="s2">&quot;--version&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP vocabularies release version&quot;</span>
 </span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a>    <span class="p">)</span>
-</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a>    <span class="n">omop_clear_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_clear</span><span class="p">)</span>
+</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_install</span><span class="p">)</span>
 </span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a>
-</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a>    <span class="c1"># omop delete</span>
-</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a>    <span class="n">omop_delete_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a>        <span class="s2">&quot;delete&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Delete OMOP database&quot;</span>
+</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a>    <span class="c1"># omop clear</span>
+</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a>    <span class="n">omop_clear_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a>        <span class="s2">&quot;clear&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Clear OMOP data from database&quot;</span>
 </span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a>    <span class="p">)</span>
-</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a>    <span class="n">omop_delete_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_delete</span><span class="p">)</span>
+</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a>    <span class="n">omop_clear_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_clear</span><span class="p">)</span>
 </span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a>
-</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a>    <span class="c1">### PHEN Command ###</span>
-</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a>    <span class="n">phen_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;phen&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phen commands&quot;</span><span class="p">)</span>
-</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a>    <span class="n">phen_subparsers</span> <span class="o">=</span> <span class="n">phen_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
-</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phen subcommands&quot;</span>
-</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a>    <span class="p">)</span>
+</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a>    <span class="c1"># omop delete</span>
+</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a>    <span class="n">omop_delete_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a>        <span class="s2">&quot;delete&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Delete OMOP database&quot;</span>
+</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a>    <span class="p">)</span>
+</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a>    <span class="n">omop_delete_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_delete</span><span class="p">)</span>
 </span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a>
-</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a>    <span class="c1"># phen init</span>
-</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a>    <span class="n">phen_init_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a>        <span class="s2">&quot;init&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Initiatise phenotype directory&quot;</span>
-</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a>    <span class="p">)</span>
-</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a>    <span class="p">)</span>
-</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span>
-</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a>        <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span>
-</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) URL to repository where the phenotype will be published.&quot;</span><span class="p">,</span>
-</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a>    <span class="p">)</span>
-</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_init</span><span class="p">)</span>
-</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a>
-</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a>    <span class="c1"># phen fork</span>
-</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a>    <span class="n">phen_fork_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a>        <span class="s2">&quot;fork&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Fork an existing phenotype&quot;</span>
+</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a>    <span class="c1">### PHEN Command ###</span>
+</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a>    <span class="n">phen_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;phen&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phen commands&quot;</span><span class="p">)</span>
+</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a>    <span class="n">phen_subparsers</span> <span class="o">=</span> <span class="n">phen_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
+</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phen subcommands&quot;</span>
+</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a>    <span class="p">)</span>
+</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a>
+</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a>    <span class="c1"># phen init</span>
+</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a>    <span class="n">phen_init_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a>        <span class="s2">&quot;init&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Initiatise phenotype directory&quot;</span>
+</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a>    <span class="p">)</span>
+</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a>    <span class="p">)</span>
+</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span>
+</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a>        <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span>
+</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) URL to repository where the phenotype will be published.&quot;</span><span class="p">,</span>
 </span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a>    <span class="p">)</span>
-</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a>    <span class="p">)</span>
-</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span>
-</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a>        <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span>
-</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) URL to repository where the forked phenotype will be published.&quot;</span><span class="p">,</span>
-</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a>    <span class="p">)</span>
-</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a>        <span class="s2">&quot;-u&quot;</span><span class="p">,</span>
-</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a>        <span class="s2">&quot;--upstream-url&quot;</span><span class="p">,</span>
-</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
-</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Required) URL to the phenotype repository to fork.&quot;</span><span class="p">,</span>
+</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_init</span><span class="p">)</span>
+</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a>
+</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a>    <span class="c1"># phen fork</span>
+</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a>    <span class="n">phen_fork_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a>        <span class="s2">&quot;fork&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Fork an existing phenotype&quot;</span>
+</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a>    <span class="p">)</span>
+</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a>    <span class="p">)</span>
+</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span>
+</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a>        <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span>
+</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) URL to repository where the forked phenotype will be published.&quot;</span><span class="p">,</span>
 </span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a>    <span class="p">)</span>
 </span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
-</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a>        <span class="s2">&quot;--upstream-version&quot;</span><span class="p">,</span>
+</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a>        <span class="s2">&quot;-u&quot;</span><span class="p">,</span>
+</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a>        <span class="s2">&quot;--upstream-url&quot;</span><span class="p">,</span>
 </span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
-</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Required) Phenotype version to fork.&quot;</span><span class="p">,</span>
+</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Required) URL to the phenotype repository to fork.&quot;</span><span class="p">,</span>
 </span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a>    <span class="p">)</span>
-</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_fork</span><span class="p">)</span>
-</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a>
-</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a>    <span class="c1"># phen validate</span>
-</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a>    <span class="n">phen_validate_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a>        <span class="s2">&quot;validate&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Validate phenotype configuration&quot;</span>
+</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
+</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a>        <span class="s2">&quot;--upstream-version&quot;</span><span class="p">,</span>
+</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Required) Phenotype version to fork.&quot;</span><span class="p">,</span>
 </span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a>    <span class="p">)</span>
-</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a>    <span class="n">phen_validate_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a>    <span class="p">)</span>
-</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a>    <span class="n">phen_validate_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_validate</span><span class="p">)</span>
-</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a>
-</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a>    <span class="c1"># phen map</span>
-</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a>    <span class="n">phen_map_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;map&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Process phen mapping&quot;</span><span class="p">)</span>
-</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a>    <span class="p">)</span>
-</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a>        <span class="s2">&quot;-t&quot;</span><span class="p">,</span>
-</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a>        <span class="s2">&quot;--target-coding&quot;</span><span class="p">,</span>
-</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a>        <span class="n">choices</span><span class="o">=</span><span class="n">parse</span><span class="o">.</span><span class="n">SUPPORTED_CODE_TYPES</span><span class="p">,</span>
-</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a>        <span class="n">help</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Specify the target coding </span><span class="si">{</span><span class="n">parse</span><span class="o">.</span><span class="n">SUPPORTED_CODE_TYPES</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
+</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_fork</span><span class="p">)</span>
+</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a>
+</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a>    <span class="c1"># phen validate</span>
+</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a>    <span class="n">phen_validate_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a>        <span class="s2">&quot;validate&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Validate phenotype configuration&quot;</span>
+</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a>    <span class="p">)</span>
+</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a>    <span class="n">phen_validate_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a>    <span class="p">)</span>
+</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a>    <span class="n">phen_validate_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_validate</span><span class="p">)</span>
+</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a>
+</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a>    <span class="c1"># phen map</span>
+</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a>    <span class="n">phen_map_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;map&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Process phen mapping&quot;</span><span class="p">)</span>
+</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
 </span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a>    <span class="p">)</span>
 </span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a>        <span class="s2">&quot;--not-translate&quot;</span><span class="p">,</span>
-</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
-</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent any phenotype translation using NHS TRUD vocabularies.&quot;</span><span class="p">,</span>
+</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a>        <span class="s2">&quot;-t&quot;</span><span class="p">,</span>
+</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a>        <span class="s2">&quot;--target-coding&quot;</span><span class="p">,</span>
+</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a>        <span class="n">choices</span><span class="o">=</span><span class="n">parse</span><span class="o">.</span><span class="n">SUPPORTED_CODE_TYPES</span><span class="p">,</span>
+</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a>        <span class="n">help</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Specify the target coding </span><span class="si">{</span><span class="n">parse</span><span class="o">.</span><span class="n">SUPPORTED_CODE_TYPES</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
 </span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a>    <span class="p">)</span>
 </span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a>        <span class="s2">&quot;--no-metadata&quot;</span><span class="p">,</span>
+</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a>        <span class="s2">&quot;--not-translate&quot;</span><span class="p">,</span>
 </span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
 </span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent copying of metadata columns to output.&quot;</span><span class="p">,</span>
+</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent any phenotype translation using NHS TRUD vocabularies.&quot;</span><span class="p">,</span>
 </span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a>    <span class="p">)</span>
-</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_map</span><span class="p">)</span>
-</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a>
-</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a>    <span class="c1"># phen export</span>
-</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a>    <span class="n">phen_export_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a>        <span class="s2">&quot;export&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Export phen to OMOP database&quot;</span>
+</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a>        <span class="s2">&quot;--no-metadata&quot;</span><span class="p">,</span>
+</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent copying of metadata columns to output.&quot;</span><span class="p">,</span>
 </span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a>    <span class="p">)</span>
-</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a>    <span class="p">)</span>
-</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
-</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
-</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
-</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to export, defaults to the latest version&quot;</span><span class="p">,</span>
-</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a>    <span class="p">)</span>
-</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_export</span><span class="p">)</span>
-</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a>
-</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a>    <span class="c1"># phen publish</span>
-</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a>    <span class="n">phen_publish_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a>        <span class="s2">&quot;publish&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
-</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a>    <span class="p">)</span>
-</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a>    <span class="p">)</span>
-</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a>        <span class="s2">&quot;-i&quot;</span><span class="p">,</span>
-</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a>        <span class="s2">&quot;--increment&quot;</span><span class="p">,</span>
-</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a>        <span class="n">default</span><span class="o">=</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_VERSION_INC</span><span class="p">,</span>
-</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a>        <span class="n">choices</span><span class="o">=</span><span class="n">phen</span><span class="o">.</span><span class="n">SEMANTIC_VERSION_TYPES</span><span class="p">,</span>
-</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a>        <span class="n">help</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Version increment: </span><span class="si">{</span><span class="n">phen</span><span class="o">.</span><span class="n">SEMANTIC_VERSION_TYPES</span><span class="si">}</span><span class="s2">, default is </span><span class="si">{</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_VERSION_INC</span><span class="si">}</span><span class="s2"> increment&quot;</span><span class="p">,</span>
-</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a>    <span class="p">)</span>
-</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a>        <span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--msg&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Message to include with the published version&quot;</span>
-</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a>    <span class="p">)</span>
-</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span> <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;URL to remote git repository&quot;</span>
-</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a>    <span class="p">)</span>
-</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_publish</span><span class="p">)</span>
-</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a>
-</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a>    <span class="c1"># phen copy</span>
-</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a>    <span class="n">phen_copy_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a>        <span class="s2">&quot;copy&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
+</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a>        <span class="s2">&quot;--do-reverse-translate&quot;</span><span class="p">,</span>
+</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Enable reversing one directional mappings. WARNING goes against NHS TRUD guidelines.&quot;</span><span class="p">,</span>
+</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a>    <span class="p">)</span>
+</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_map</span><span class="p">)</span>
+</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a>
+</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a>    <span class="c1"># phen export</span>
+</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a>    <span class="n">phen_export_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a>        <span class="s2">&quot;export&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Export phen to OMOP database&quot;</span>
+</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a>    <span class="p">)</span>
+</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a>    <span class="p">)</span>
+</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
+</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
+</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
+</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to export, defaults to the latest version&quot;</span><span class="p">,</span>
+</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a>    <span class="p">)</span>
+</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_export</span><span class="p">)</span>
+</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a>
+</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a>    <span class="c1"># phen publish</span>
+</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a>    <span class="n">phen_publish_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a>        <span class="s2">&quot;publish&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
+</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a>    <span class="p">)</span>
+</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a>    <span class="p">)</span>
+</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a>        <span class="s2">&quot;-i&quot;</span><span class="p">,</span>
+</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a>        <span class="s2">&quot;--increment&quot;</span><span class="p">,</span>
+</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a>        <span class="n">default</span><span class="o">=</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_VERSION_INC</span><span class="p">,</span>
+</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a>        <span class="n">choices</span><span class="o">=</span><span class="n">phen</span><span class="o">.</span><span class="n">SEMANTIC_VERSION_TYPES</span><span class="p">,</span>
+</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a>        <span class="n">help</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Version increment: </span><span class="si">{</span><span class="n">phen</span><span class="o">.</span><span class="n">SEMANTIC_VERSION_TYPES</span><span class="si">}</span><span class="s2">, default is </span><span class="si">{</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_VERSION_INC</span><span class="si">}</span><span class="s2"> increment&quot;</span><span class="p">,</span>
 </span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a>    <span class="p">)</span>
-</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a>    <span class="p">)</span>
-</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a>        <span class="s2">&quot;-td&quot;</span><span class="p">,</span>
-</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a>        <span class="s2">&quot;--target-dir&quot;</span><span class="p">,</span>
-</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">DEFAULT_WORKSPACE_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Target directory for the copy&quot;</span><span class="p">,</span>
-</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a>    <span class="p">)</span>
-</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
-</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
-</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
-</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to copy, defaults to the latest version&quot;</span><span class="p">,</span>
-</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a>    <span class="p">)</span>
-</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_copy</span><span class="p">)</span>
-</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a>
-</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a>    <span class="c1"># phen diff</span>
-</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a>    <span class="n">phen_diff_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a>        <span class="s2">&quot;diff&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
-</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a>    <span class="p">)</span>
-</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a>    <span class="p">)</span>
-</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
-</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
-</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
-</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to compare with an old version, defaults to the HEAD of the workspace directory&quot;</span><span class="p">,</span>
-</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a>    <span class="p">)</span>
-</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a>        <span class="s2">&quot;-od&quot;</span><span class="p">,</span>
-</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a>        <span class="s2">&quot;--old-phen-dir&quot;</span><span class="p">,</span>
-</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Directory for the old phenotype version, defaults to workspace directory&quot;</span><span class="p">,</span>
-</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a>    <span class="p">)</span>
-</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a>        <span class="s2">&quot;-ov&quot;</span><span class="p">,</span>
-</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a>        <span class="s2">&quot;--old-version&quot;</span><span class="p">,</span>
-</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
-</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Old phenotype version to compare with the changed version&quot;</span><span class="p">,</span>
-</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a>    <span class="p">)</span>
-</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a>        <span class="s2">&quot;--not-check-config&quot;</span><span class="p">,</span>
-</span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
-</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent loading and comparing config file, in the case where one does not exist&quot;</span><span class="p">,</span>
+</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a>        <span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--msg&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Message to include with the published version&quot;</span>
+</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a>    <span class="p">)</span>
+</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span> <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;URL to remote git repository&quot;</span>
+</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a>    <span class="p">)</span>
+</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_publish</span><span class="p">)</span>
+</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a>
+</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a>    <span class="c1"># phen copy</span>
+</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a>    <span class="n">phen_copy_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a>        <span class="s2">&quot;copy&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
+</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a>    <span class="p">)</span>
+</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a>    <span class="p">)</span>
+</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a>        <span class="s2">&quot;-td&quot;</span><span class="p">,</span>
+</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a>        <span class="s2">&quot;--target-dir&quot;</span><span class="p">,</span>
+</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">DEFAULT_WORKSPACE_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Target directory for the copy&quot;</span><span class="p">,</span>
+</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a>    <span class="p">)</span>
+</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
+</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
+</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
+</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to copy, defaults to the latest version&quot;</span><span class="p">,</span>
+</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a>    <span class="p">)</span>
+</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_copy</span><span class="p">)</span>
+</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a>
+</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a>    <span class="c1"># phen diff</span>
+</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a>    <span class="n">phen_diff_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a>        <span class="s2">&quot;diff&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
+</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a>    <span class="p">)</span>
+</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a>    <span class="p">)</span>
+</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
+</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
+</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
+</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to compare with an old version, defaults to the HEAD of the workspace directory&quot;</span><span class="p">,</span>
+</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a>    <span class="p">)</span>
+</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a>        <span class="s2">&quot;-od&quot;</span><span class="p">,</span>
+</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a>        <span class="s2">&quot;--old-phen-dir&quot;</span><span class="p">,</span>
+</span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Directory for the old phenotype version, defaults to workspace directory&quot;</span><span class="p">,</span>
 </span><span id="L-349"><a href="#L-349"><span class="linenos">349</span></a>    <span class="p">)</span>
-</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_diff</span><span class="p">)</span>
-</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a>
-</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a>    <span class="c1"># Parse arguments</span>
-</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a>    <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
-</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a>
-</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a>    <span class="c1"># setup logging</span>
-</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a>    <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span>
-</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a>        <span class="n">lc</span><span class="o">.</span><span class="n">set_log_level</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
-</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a>
-</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a>    <span class="c1"># Call the function associated with the command</span>
-</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a>    <span class="n">args</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
-</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a>
-</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a>
-</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
-</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a>    <span class="n">main</span><span class="p">()</span>
+</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a>        <span class="s2">&quot;-ov&quot;</span><span class="p">,</span>
+</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a>        <span class="s2">&quot;--old-version&quot;</span><span class="p">,</span>
+</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Old phenotype version to compare with the changed version&quot;</span><span class="p">,</span>
+</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a>    <span class="p">)</span>
+</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a>        <span class="s2">&quot;--not-check-config&quot;</span><span class="p">,</span>
+</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent loading and comparing config file, in the case where one does not exist&quot;</span><span class="p">,</span>
+</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a>    <span class="p">)</span>
+</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_diff</span><span class="p">)</span>
+</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a>
+</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a>    <span class="c1"># Parse arguments</span>
+</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a>    <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a>
+</span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a>    <span class="c1"># setup logging</span>
+</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a>    <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span>
+</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a>        <span class="n">lc</span><span class="o">.</span><span class="n">set_log_level</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
+</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a>
+</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a>    <span class="c1"># Call the function associated with the command</span>
+</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a>    <span class="n">args</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
+</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a>
+</span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a>
+</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
+</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a>    <span class="n">main</span><span class="p">()</span>
 </span></pre></div>
 
 
@@ -454,277 +466,283 @@
 
     </div>
     <a class="headerlink" href="#main"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="main-91"><a href="#main-91"><span class="linenos"> 91</span></a><span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span>
-</span><span id="main-92"><a href="#main-92"><span class="linenos"> 92</span></a>    <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s2">&quot;ACMC command-line tool&quot;</span><span class="p">)</span>
-</span><span id="main-93"><a href="#main-93"><span class="linenos"> 93</span></a>    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--debug&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Enable debug mode&quot;</span><span class="p">)</span>
-</span><span id="main-94"><a href="#main-94"><span class="linenos"> 94</span></a>    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-95"><a href="#main-95"><span class="linenos"> 95</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;version&quot;</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;acmc </span><span class="si">{</span><span class="n">acmc</span><span class="o">.</span><span class="n">__version__</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="main-96"><a href="#main-96"><span class="linenos"> 96</span></a>    <span class="p">)</span>
-</span><span id="main-97"><a href="#main-97"><span class="linenos"> 97</span></a>
-</span><span id="main-98"><a href="#main-98"><span class="linenos"> 98</span></a>    <span class="c1"># Top-level commands</span>
-</span><span id="main-99"><a href="#main-99"><span class="linenos"> 99</span></a>    <span class="n">subparsers</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
-</span><span id="main-100"><a href="#main-100"><span class="linenos">100</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;command&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Available commands&quot;</span>
-</span><span id="main-101"><a href="#main-101"><span class="linenos">101</span></a>    <span class="p">)</span>
-</span><span id="main-102"><a href="#main-102"><span class="linenos">102</span></a>
-</span><span id="main-103"><a href="#main-103"><span class="linenos">103</span></a>    <span class="c1">### TRUD Command ###</span>
-</span><span id="main-104"><a href="#main-104"><span class="linenos">104</span></a>    <span class="n">trud_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;trud&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TRUD commands&quot;</span><span class="p">)</span>
-</span><span id="main-105"><a href="#main-105"><span class="linenos">105</span></a>    <span class="n">trud_subparsers</span> <span class="o">=</span> <span class="n">trud_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
-</span><span id="main-106"><a href="#main-106"><span class="linenos">106</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TRUD subcommands&quot;</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="main-97"><a href="#main-97"><span class="linenos"> 97</span></a><span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span>
+</span><span id="main-98"><a href="#main-98"><span class="linenos"> 98</span></a>    <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s2">&quot;ACMC command-line tool&quot;</span><span class="p">)</span>
+</span><span id="main-99"><a href="#main-99"><span class="linenos"> 99</span></a>    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--debug&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Enable debug mode&quot;</span><span class="p">)</span>
+</span><span id="main-100"><a href="#main-100"><span class="linenos">100</span></a>    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-101"><a href="#main-101"><span class="linenos">101</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;version&quot;</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;acmc </span><span class="si">{</span><span class="n">acmc</span><span class="o">.</span><span class="n">__version__</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="main-102"><a href="#main-102"><span class="linenos">102</span></a>    <span class="p">)</span>
+</span><span id="main-103"><a href="#main-103"><span class="linenos">103</span></a>
+</span><span id="main-104"><a href="#main-104"><span class="linenos">104</span></a>    <span class="c1"># Top-level commands</span>
+</span><span id="main-105"><a href="#main-105"><span class="linenos">105</span></a>    <span class="n">subparsers</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
+</span><span id="main-106"><a href="#main-106"><span class="linenos">106</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;command&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Available commands&quot;</span>
 </span><span id="main-107"><a href="#main-107"><span class="linenos">107</span></a>    <span class="p">)</span>
 </span><span id="main-108"><a href="#main-108"><span class="linenos">108</span></a>
-</span><span id="main-109"><a href="#main-109"><span class="linenos">109</span></a>    <span class="c1"># trud install</span>
-</span><span id="main-110"><a href="#main-110"><span class="linenos">110</span></a>    <span class="n">trud_install_parser</span> <span class="o">=</span> <span class="n">trud_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-111"><a href="#main-111"><span class="linenos">111</span></a>        <span class="s2">&quot;install&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Install TRUD components&quot;</span>
-</span><span id="main-112"><a href="#main-112"><span class="linenos">112</span></a>    <span class="p">)</span>
-</span><span id="main-113"><a href="#main-113"><span class="linenos">113</span></a>    <span class="n">trud_install_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_trud_install</span><span class="p">)</span>
+</span><span id="main-109"><a href="#main-109"><span class="linenos">109</span></a>    <span class="c1">### TRUD Command ###</span>
+</span><span id="main-110"><a href="#main-110"><span class="linenos">110</span></a>    <span class="n">trud_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;trud&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TRUD commands&quot;</span><span class="p">)</span>
+</span><span id="main-111"><a href="#main-111"><span class="linenos">111</span></a>    <span class="n">trud_subparsers</span> <span class="o">=</span> <span class="n">trud_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
+</span><span id="main-112"><a href="#main-112"><span class="linenos">112</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TRUD subcommands&quot;</span>
+</span><span id="main-113"><a href="#main-113"><span class="linenos">113</span></a>    <span class="p">)</span>
 </span><span id="main-114"><a href="#main-114"><span class="linenos">114</span></a>
-</span><span id="main-115"><a href="#main-115"><span class="linenos">115</span></a>    <span class="c1">### OMOP Command ###</span>
-</span><span id="main-116"><a href="#main-116"><span class="linenos">116</span></a>    <span class="n">omop_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;omop&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP commands&quot;</span><span class="p">)</span>
-</span><span id="main-117"><a href="#main-117"><span class="linenos">117</span></a>    <span class="n">omop_subparsers</span> <span class="o">=</span> <span class="n">omop_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
-</span><span id="main-118"><a href="#main-118"><span class="linenos">118</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP subcommands&quot;</span>
-</span><span id="main-119"><a href="#main-119"><span class="linenos">119</span></a>    <span class="p">)</span>
+</span><span id="main-115"><a href="#main-115"><span class="linenos">115</span></a>    <span class="c1"># trud install</span>
+</span><span id="main-116"><a href="#main-116"><span class="linenos">116</span></a>    <span class="n">trud_install_parser</span> <span class="o">=</span> <span class="n">trud_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-117"><a href="#main-117"><span class="linenos">117</span></a>        <span class="s2">&quot;install&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Install TRUD components&quot;</span>
+</span><span id="main-118"><a href="#main-118"><span class="linenos">118</span></a>    <span class="p">)</span>
+</span><span id="main-119"><a href="#main-119"><span class="linenos">119</span></a>    <span class="n">trud_install_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_trud_install</span><span class="p">)</span>
 </span><span id="main-120"><a href="#main-120"><span class="linenos">120</span></a>
-</span><span id="main-121"><a href="#main-121"><span class="linenos">121</span></a>    <span class="c1"># omop install</span>
-</span><span id="main-122"><a href="#main-122"><span class="linenos">122</span></a>    <span class="n">omop_install_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-123"><a href="#main-123"><span class="linenos">123</span></a>        <span class="s2">&quot;install&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Install OMOP codes within database&quot;</span>
-</span><span id="main-124"><a href="#main-124"><span class="linenos">124</span></a>    <span class="p">)</span>
-</span><span id="main-125"><a href="#main-125"><span class="linenos">125</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-126"><a href="#main-126"><span class="linenos">126</span></a>        <span class="s2">&quot;-f&quot;</span><span class="p">,</span> <span class="s2">&quot;--omop-zip-file&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Path to downloaded OMOP zip file&quot;</span>
-</span><span id="main-127"><a href="#main-127"><span class="linenos">127</span></a>    <span class="p">)</span>
-</span><span id="main-128"><a href="#main-128"><span class="linenos">128</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-129"><a href="#main-129"><span class="linenos">129</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span> <span class="s2">&quot;--version&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP vocabularies release version&quot;</span>
+</span><span id="main-121"><a href="#main-121"><span class="linenos">121</span></a>    <span class="c1">### OMOP Command ###</span>
+</span><span id="main-122"><a href="#main-122"><span class="linenos">122</span></a>    <span class="n">omop_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;omop&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP commands&quot;</span><span class="p">)</span>
+</span><span id="main-123"><a href="#main-123"><span class="linenos">123</span></a>    <span class="n">omop_subparsers</span> <span class="o">=</span> <span class="n">omop_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
+</span><span id="main-124"><a href="#main-124"><span class="linenos">124</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP subcommands&quot;</span>
+</span><span id="main-125"><a href="#main-125"><span class="linenos">125</span></a>    <span class="p">)</span>
+</span><span id="main-126"><a href="#main-126"><span class="linenos">126</span></a>
+</span><span id="main-127"><a href="#main-127"><span class="linenos">127</span></a>    <span class="c1"># omop install</span>
+</span><span id="main-128"><a href="#main-128"><span class="linenos">128</span></a>    <span class="n">omop_install_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-129"><a href="#main-129"><span class="linenos">129</span></a>        <span class="s2">&quot;install&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Install OMOP codes within database&quot;</span>
 </span><span id="main-130"><a href="#main-130"><span class="linenos">130</span></a>    <span class="p">)</span>
-</span><span id="main-131"><a href="#main-131"><span class="linenos">131</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_install</span><span class="p">)</span>
-</span><span id="main-132"><a href="#main-132"><span class="linenos">132</span></a>
-</span><span id="main-133"><a href="#main-133"><span class="linenos">133</span></a>    <span class="c1"># omop clear</span>
-</span><span id="main-134"><a href="#main-134"><span class="linenos">134</span></a>    <span class="n">omop_clear_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-135"><a href="#main-135"><span class="linenos">135</span></a>        <span class="s2">&quot;clear&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Clear OMOP data from database&quot;</span>
+</span><span id="main-131"><a href="#main-131"><span class="linenos">131</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-132"><a href="#main-132"><span class="linenos">132</span></a>        <span class="s2">&quot;-f&quot;</span><span class="p">,</span> <span class="s2">&quot;--omop-zip-file&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Path to downloaded OMOP zip file&quot;</span>
+</span><span id="main-133"><a href="#main-133"><span class="linenos">133</span></a>    <span class="p">)</span>
+</span><span id="main-134"><a href="#main-134"><span class="linenos">134</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-135"><a href="#main-135"><span class="linenos">135</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span> <span class="s2">&quot;--version&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;OMOP vocabularies release version&quot;</span>
 </span><span id="main-136"><a href="#main-136"><span class="linenos">136</span></a>    <span class="p">)</span>
-</span><span id="main-137"><a href="#main-137"><span class="linenos">137</span></a>    <span class="n">omop_clear_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_clear</span><span class="p">)</span>
+</span><span id="main-137"><a href="#main-137"><span class="linenos">137</span></a>    <span class="n">omop_install_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_install</span><span class="p">)</span>
 </span><span id="main-138"><a href="#main-138"><span class="linenos">138</span></a>
-</span><span id="main-139"><a href="#main-139"><span class="linenos">139</span></a>    <span class="c1"># omop delete</span>
-</span><span id="main-140"><a href="#main-140"><span class="linenos">140</span></a>    <span class="n">omop_delete_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-141"><a href="#main-141"><span class="linenos">141</span></a>        <span class="s2">&quot;delete&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Delete OMOP database&quot;</span>
+</span><span id="main-139"><a href="#main-139"><span class="linenos">139</span></a>    <span class="c1"># omop clear</span>
+</span><span id="main-140"><a href="#main-140"><span class="linenos">140</span></a>    <span class="n">omop_clear_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-141"><a href="#main-141"><span class="linenos">141</span></a>        <span class="s2">&quot;clear&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Clear OMOP data from database&quot;</span>
 </span><span id="main-142"><a href="#main-142"><span class="linenos">142</span></a>    <span class="p">)</span>
-</span><span id="main-143"><a href="#main-143"><span class="linenos">143</span></a>    <span class="n">omop_delete_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_delete</span><span class="p">)</span>
+</span><span id="main-143"><a href="#main-143"><span class="linenos">143</span></a>    <span class="n">omop_clear_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_clear</span><span class="p">)</span>
 </span><span id="main-144"><a href="#main-144"><span class="linenos">144</span></a>
-</span><span id="main-145"><a href="#main-145"><span class="linenos">145</span></a>    <span class="c1">### PHEN Command ###</span>
-</span><span id="main-146"><a href="#main-146"><span class="linenos">146</span></a>    <span class="n">phen_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;phen&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phen commands&quot;</span><span class="p">)</span>
-</span><span id="main-147"><a href="#main-147"><span class="linenos">147</span></a>    <span class="n">phen_subparsers</span> <span class="o">=</span> <span class="n">phen_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
-</span><span id="main-148"><a href="#main-148"><span class="linenos">148</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phen subcommands&quot;</span>
-</span><span id="main-149"><a href="#main-149"><span class="linenos">149</span></a>    <span class="p">)</span>
+</span><span id="main-145"><a href="#main-145"><span class="linenos">145</span></a>    <span class="c1"># omop delete</span>
+</span><span id="main-146"><a href="#main-146"><span class="linenos">146</span></a>    <span class="n">omop_delete_parser</span> <span class="o">=</span> <span class="n">omop_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-147"><a href="#main-147"><span class="linenos">147</span></a>        <span class="s2">&quot;delete&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Delete OMOP database&quot;</span>
+</span><span id="main-148"><a href="#main-148"><span class="linenos">148</span></a>    <span class="p">)</span>
+</span><span id="main-149"><a href="#main-149"><span class="linenos">149</span></a>    <span class="n">omop_delete_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_omop_delete</span><span class="p">)</span>
 </span><span id="main-150"><a href="#main-150"><span class="linenos">150</span></a>
-</span><span id="main-151"><a href="#main-151"><span class="linenos">151</span></a>    <span class="c1"># phen init</span>
-</span><span id="main-152"><a href="#main-152"><span class="linenos">152</span></a>    <span class="n">phen_init_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-153"><a href="#main-153"><span class="linenos">153</span></a>        <span class="s2">&quot;init&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Initiatise phenotype directory&quot;</span>
-</span><span id="main-154"><a href="#main-154"><span class="linenos">154</span></a>    <span class="p">)</span>
-</span><span id="main-155"><a href="#main-155"><span class="linenos">155</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-156"><a href="#main-156"><span class="linenos">156</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="main-157"><a href="#main-157"><span class="linenos">157</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-158"><a href="#main-158"><span class="linenos">158</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-159"><a href="#main-159"><span class="linenos">159</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-160"><a href="#main-160"><span class="linenos">160</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="main-161"><a href="#main-161"><span class="linenos">161</span></a>    <span class="p">)</span>
-</span><span id="main-162"><a href="#main-162"><span class="linenos">162</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-163"><a href="#main-163"><span class="linenos">163</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span>
-</span><span id="main-164"><a href="#main-164"><span class="linenos">164</span></a>        <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span>
-</span><span id="main-165"><a href="#main-165"><span class="linenos">165</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) URL to repository where the phenotype will be published.&quot;</span><span class="p">,</span>
-</span><span id="main-166"><a href="#main-166"><span class="linenos">166</span></a>    <span class="p">)</span>
-</span><span id="main-167"><a href="#main-167"><span class="linenos">167</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_init</span><span class="p">)</span>
-</span><span id="main-168"><a href="#main-168"><span class="linenos">168</span></a>
-</span><span id="main-169"><a href="#main-169"><span class="linenos">169</span></a>    <span class="c1"># phen fork</span>
-</span><span id="main-170"><a href="#main-170"><span class="linenos">170</span></a>    <span class="n">phen_fork_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-171"><a href="#main-171"><span class="linenos">171</span></a>        <span class="s2">&quot;fork&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Fork an existing phenotype&quot;</span>
+</span><span id="main-151"><a href="#main-151"><span class="linenos">151</span></a>    <span class="c1">### PHEN Command ###</span>
+</span><span id="main-152"><a href="#main-152"><span class="linenos">152</span></a>    <span class="n">phen_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;phen&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phen commands&quot;</span><span class="p">)</span>
+</span><span id="main-153"><a href="#main-153"><span class="linenos">153</span></a>    <span class="n">phen_subparsers</span> <span class="o">=</span> <span class="n">phen_parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span>
+</span><span id="main-154"><a href="#main-154"><span class="linenos">154</span></a>        <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;subcommand&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phen subcommands&quot;</span>
+</span><span id="main-155"><a href="#main-155"><span class="linenos">155</span></a>    <span class="p">)</span>
+</span><span id="main-156"><a href="#main-156"><span class="linenos">156</span></a>
+</span><span id="main-157"><a href="#main-157"><span class="linenos">157</span></a>    <span class="c1"># phen init</span>
+</span><span id="main-158"><a href="#main-158"><span class="linenos">158</span></a>    <span class="n">phen_init_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-159"><a href="#main-159"><span class="linenos">159</span></a>        <span class="s2">&quot;init&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Initiatise phenotype directory&quot;</span>
+</span><span id="main-160"><a href="#main-160"><span class="linenos">160</span></a>    <span class="p">)</span>
+</span><span id="main-161"><a href="#main-161"><span class="linenos">161</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-162"><a href="#main-162"><span class="linenos">162</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="main-163"><a href="#main-163"><span class="linenos">163</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-164"><a href="#main-164"><span class="linenos">164</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-165"><a href="#main-165"><span class="linenos">165</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-166"><a href="#main-166"><span class="linenos">166</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="main-167"><a href="#main-167"><span class="linenos">167</span></a>    <span class="p">)</span>
+</span><span id="main-168"><a href="#main-168"><span class="linenos">168</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-169"><a href="#main-169"><span class="linenos">169</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span>
+</span><span id="main-170"><a href="#main-170"><span class="linenos">170</span></a>        <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span>
+</span><span id="main-171"><a href="#main-171"><span class="linenos">171</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) URL to repository where the phenotype will be published.&quot;</span><span class="p">,</span>
 </span><span id="main-172"><a href="#main-172"><span class="linenos">172</span></a>    <span class="p">)</span>
-</span><span id="main-173"><a href="#main-173"><span class="linenos">173</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-174"><a href="#main-174"><span class="linenos">174</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="main-175"><a href="#main-175"><span class="linenos">175</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-176"><a href="#main-176"><span class="linenos">176</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-177"><a href="#main-177"><span class="linenos">177</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-178"><a href="#main-178"><span class="linenos">178</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="main-179"><a href="#main-179"><span class="linenos">179</span></a>    <span class="p">)</span>
-</span><span id="main-180"><a href="#main-180"><span class="linenos">180</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-181"><a href="#main-181"><span class="linenos">181</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span>
-</span><span id="main-182"><a href="#main-182"><span class="linenos">182</span></a>        <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span>
-</span><span id="main-183"><a href="#main-183"><span class="linenos">183</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) URL to repository where the forked phenotype will be published.&quot;</span><span class="p">,</span>
-</span><span id="main-184"><a href="#main-184"><span class="linenos">184</span></a>    <span class="p">)</span>
-</span><span id="main-185"><a href="#main-185"><span class="linenos">185</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-186"><a href="#main-186"><span class="linenos">186</span></a>        <span class="s2">&quot;-u&quot;</span><span class="p">,</span>
-</span><span id="main-187"><a href="#main-187"><span class="linenos">187</span></a>        <span class="s2">&quot;--upstream-url&quot;</span><span class="p">,</span>
-</span><span id="main-188"><a href="#main-188"><span class="linenos">188</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
-</span><span id="main-189"><a href="#main-189"><span class="linenos">189</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Required) URL to the phenotype repository to fork.&quot;</span><span class="p">,</span>
+</span><span id="main-173"><a href="#main-173"><span class="linenos">173</span></a>    <span class="n">phen_init_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_init</span><span class="p">)</span>
+</span><span id="main-174"><a href="#main-174"><span class="linenos">174</span></a>
+</span><span id="main-175"><a href="#main-175"><span class="linenos">175</span></a>    <span class="c1"># phen fork</span>
+</span><span id="main-176"><a href="#main-176"><span class="linenos">176</span></a>    <span class="n">phen_fork_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-177"><a href="#main-177"><span class="linenos">177</span></a>        <span class="s2">&quot;fork&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Fork an existing phenotype&quot;</span>
+</span><span id="main-178"><a href="#main-178"><span class="linenos">178</span></a>    <span class="p">)</span>
+</span><span id="main-179"><a href="#main-179"><span class="linenos">179</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-180"><a href="#main-180"><span class="linenos">180</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="main-181"><a href="#main-181"><span class="linenos">181</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-182"><a href="#main-182"><span class="linenos">182</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-183"><a href="#main-183"><span class="linenos">183</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-184"><a href="#main-184"><span class="linenos">184</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="main-185"><a href="#main-185"><span class="linenos">185</span></a>    <span class="p">)</span>
+</span><span id="main-186"><a href="#main-186"><span class="linenos">186</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-187"><a href="#main-187"><span class="linenos">187</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span>
+</span><span id="main-188"><a href="#main-188"><span class="linenos">188</span></a>        <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span>
+</span><span id="main-189"><a href="#main-189"><span class="linenos">189</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) URL to repository where the forked phenotype will be published.&quot;</span><span class="p">,</span>
 </span><span id="main-190"><a href="#main-190"><span class="linenos">190</span></a>    <span class="p">)</span>
 </span><span id="main-191"><a href="#main-191"><span class="linenos">191</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-192"><a href="#main-192"><span class="linenos">192</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
-</span><span id="main-193"><a href="#main-193"><span class="linenos">193</span></a>        <span class="s2">&quot;--upstream-version&quot;</span><span class="p">,</span>
+</span><span id="main-192"><a href="#main-192"><span class="linenos">192</span></a>        <span class="s2">&quot;-u&quot;</span><span class="p">,</span>
+</span><span id="main-193"><a href="#main-193"><span class="linenos">193</span></a>        <span class="s2">&quot;--upstream-url&quot;</span><span class="p">,</span>
 </span><span id="main-194"><a href="#main-194"><span class="linenos">194</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
-</span><span id="main-195"><a href="#main-195"><span class="linenos">195</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Required) Phenotype version to fork.&quot;</span><span class="p">,</span>
+</span><span id="main-195"><a href="#main-195"><span class="linenos">195</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Required) URL to the phenotype repository to fork.&quot;</span><span class="p">,</span>
 </span><span id="main-196"><a href="#main-196"><span class="linenos">196</span></a>    <span class="p">)</span>
-</span><span id="main-197"><a href="#main-197"><span class="linenos">197</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_fork</span><span class="p">)</span>
-</span><span id="main-198"><a href="#main-198"><span class="linenos">198</span></a>
-</span><span id="main-199"><a href="#main-199"><span class="linenos">199</span></a>    <span class="c1"># phen validate</span>
-</span><span id="main-200"><a href="#main-200"><span class="linenos">200</span></a>    <span class="n">phen_validate_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-201"><a href="#main-201"><span class="linenos">201</span></a>        <span class="s2">&quot;validate&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Validate phenotype configuration&quot;</span>
+</span><span id="main-197"><a href="#main-197"><span class="linenos">197</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-198"><a href="#main-198"><span class="linenos">198</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
+</span><span id="main-199"><a href="#main-199"><span class="linenos">199</span></a>        <span class="s2">&quot;--upstream-version&quot;</span><span class="p">,</span>
+</span><span id="main-200"><a href="#main-200"><span class="linenos">200</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+</span><span id="main-201"><a href="#main-201"><span class="linenos">201</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Required) Phenotype version to fork.&quot;</span><span class="p">,</span>
 </span><span id="main-202"><a href="#main-202"><span class="linenos">202</span></a>    <span class="p">)</span>
-</span><span id="main-203"><a href="#main-203"><span class="linenos">203</span></a>    <span class="n">phen_validate_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-204"><a href="#main-204"><span class="linenos">204</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="main-205"><a href="#main-205"><span class="linenos">205</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-206"><a href="#main-206"><span class="linenos">206</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-207"><a href="#main-207"><span class="linenos">207</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-208"><a href="#main-208"><span class="linenos">208</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="main-209"><a href="#main-209"><span class="linenos">209</span></a>    <span class="p">)</span>
-</span><span id="main-210"><a href="#main-210"><span class="linenos">210</span></a>    <span class="n">phen_validate_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_validate</span><span class="p">)</span>
-</span><span id="main-211"><a href="#main-211"><span class="linenos">211</span></a>
-</span><span id="main-212"><a href="#main-212"><span class="linenos">212</span></a>    <span class="c1"># phen map</span>
-</span><span id="main-213"><a href="#main-213"><span class="linenos">213</span></a>    <span class="n">phen_map_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;map&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Process phen mapping&quot;</span><span class="p">)</span>
-</span><span id="main-214"><a href="#main-214"><span class="linenos">214</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-215"><a href="#main-215"><span class="linenos">215</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="main-216"><a href="#main-216"><span class="linenos">216</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-217"><a href="#main-217"><span class="linenos">217</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-218"><a href="#main-218"><span class="linenos">218</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-219"><a href="#main-219"><span class="linenos">219</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="main-220"><a href="#main-220"><span class="linenos">220</span></a>    <span class="p">)</span>
-</span><span id="main-221"><a href="#main-221"><span class="linenos">221</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-222"><a href="#main-222"><span class="linenos">222</span></a>        <span class="s2">&quot;-t&quot;</span><span class="p">,</span>
-</span><span id="main-223"><a href="#main-223"><span class="linenos">223</span></a>        <span class="s2">&quot;--target-coding&quot;</span><span class="p">,</span>
-</span><span id="main-224"><a href="#main-224"><span class="linenos">224</span></a>        <span class="n">choices</span><span class="o">=</span><span class="n">parse</span><span class="o">.</span><span class="n">SUPPORTED_CODE_TYPES</span><span class="p">,</span>
-</span><span id="main-225"><a href="#main-225"><span class="linenos">225</span></a>        <span class="n">help</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Specify the target coding </span><span class="si">{</span><span class="n">parse</span><span class="o">.</span><span class="n">SUPPORTED_CODE_TYPES</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
+</span><span id="main-203"><a href="#main-203"><span class="linenos">203</span></a>    <span class="n">phen_fork_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_fork</span><span class="p">)</span>
+</span><span id="main-204"><a href="#main-204"><span class="linenos">204</span></a>
+</span><span id="main-205"><a href="#main-205"><span class="linenos">205</span></a>    <span class="c1"># phen validate</span>
+</span><span id="main-206"><a href="#main-206"><span class="linenos">206</span></a>    <span class="n">phen_validate_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-207"><a href="#main-207"><span class="linenos">207</span></a>        <span class="s2">&quot;validate&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Validate phenotype configuration&quot;</span>
+</span><span id="main-208"><a href="#main-208"><span class="linenos">208</span></a>    <span class="p">)</span>
+</span><span id="main-209"><a href="#main-209"><span class="linenos">209</span></a>    <span class="n">phen_validate_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-210"><a href="#main-210"><span class="linenos">210</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="main-211"><a href="#main-211"><span class="linenos">211</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-212"><a href="#main-212"><span class="linenos">212</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-213"><a href="#main-213"><span class="linenos">213</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-214"><a href="#main-214"><span class="linenos">214</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="main-215"><a href="#main-215"><span class="linenos">215</span></a>    <span class="p">)</span>
+</span><span id="main-216"><a href="#main-216"><span class="linenos">216</span></a>    <span class="n">phen_validate_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_validate</span><span class="p">)</span>
+</span><span id="main-217"><a href="#main-217"><span class="linenos">217</span></a>
+</span><span id="main-218"><a href="#main-218"><span class="linenos">218</span></a>    <span class="c1"># phen map</span>
+</span><span id="main-219"><a href="#main-219"><span class="linenos">219</span></a>    <span class="n">phen_map_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s2">&quot;map&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Process phen mapping&quot;</span><span class="p">)</span>
+</span><span id="main-220"><a href="#main-220"><span class="linenos">220</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-221"><a href="#main-221"><span class="linenos">221</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="main-222"><a href="#main-222"><span class="linenos">222</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-223"><a href="#main-223"><span class="linenos">223</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-224"><a href="#main-224"><span class="linenos">224</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-225"><a href="#main-225"><span class="linenos">225</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
 </span><span id="main-226"><a href="#main-226"><span class="linenos">226</span></a>    <span class="p">)</span>
 </span><span id="main-227"><a href="#main-227"><span class="linenos">227</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-228"><a href="#main-228"><span class="linenos">228</span></a>        <span class="s2">&quot;--not-translate&quot;</span><span class="p">,</span>
-</span><span id="main-229"><a href="#main-229"><span class="linenos">229</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
-</span><span id="main-230"><a href="#main-230"><span class="linenos">230</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="main-231"><a href="#main-231"><span class="linenos">231</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent any phenotype translation using NHS TRUD vocabularies.&quot;</span><span class="p">,</span>
+</span><span id="main-228"><a href="#main-228"><span class="linenos">228</span></a>        <span class="s2">&quot;-t&quot;</span><span class="p">,</span>
+</span><span id="main-229"><a href="#main-229"><span class="linenos">229</span></a>        <span class="s2">&quot;--target-coding&quot;</span><span class="p">,</span>
+</span><span id="main-230"><a href="#main-230"><span class="linenos">230</span></a>        <span class="n">choices</span><span class="o">=</span><span class="n">parse</span><span class="o">.</span><span class="n">SUPPORTED_CODE_TYPES</span><span class="p">,</span>
+</span><span id="main-231"><a href="#main-231"><span class="linenos">231</span></a>        <span class="n">help</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Specify the target coding </span><span class="si">{</span><span class="n">parse</span><span class="o">.</span><span class="n">SUPPORTED_CODE_TYPES</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
 </span><span id="main-232"><a href="#main-232"><span class="linenos">232</span></a>    <span class="p">)</span>
 </span><span id="main-233"><a href="#main-233"><span class="linenos">233</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-234"><a href="#main-234"><span class="linenos">234</span></a>        <span class="s2">&quot;--no-metadata&quot;</span><span class="p">,</span>
+</span><span id="main-234"><a href="#main-234"><span class="linenos">234</span></a>        <span class="s2">&quot;--not-translate&quot;</span><span class="p">,</span>
 </span><span id="main-235"><a href="#main-235"><span class="linenos">235</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
 </span><span id="main-236"><a href="#main-236"><span class="linenos">236</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="main-237"><a href="#main-237"><span class="linenos">237</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent copying of metadata columns to output.&quot;</span><span class="p">,</span>
+</span><span id="main-237"><a href="#main-237"><span class="linenos">237</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent any phenotype translation using NHS TRUD vocabularies.&quot;</span><span class="p">,</span>
 </span><span id="main-238"><a href="#main-238"><span class="linenos">238</span></a>    <span class="p">)</span>
-</span><span id="main-239"><a href="#main-239"><span class="linenos">239</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_map</span><span class="p">)</span>
-</span><span id="main-240"><a href="#main-240"><span class="linenos">240</span></a>
-</span><span id="main-241"><a href="#main-241"><span class="linenos">241</span></a>    <span class="c1"># phen export</span>
-</span><span id="main-242"><a href="#main-242"><span class="linenos">242</span></a>    <span class="n">phen_export_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-243"><a href="#main-243"><span class="linenos">243</span></a>        <span class="s2">&quot;export&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Export phen to OMOP database&quot;</span>
+</span><span id="main-239"><a href="#main-239"><span class="linenos">239</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-240"><a href="#main-240"><span class="linenos">240</span></a>        <span class="s2">&quot;--no-metadata&quot;</span><span class="p">,</span>
+</span><span id="main-241"><a href="#main-241"><span class="linenos">241</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+</span><span id="main-242"><a href="#main-242"><span class="linenos">242</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="main-243"><a href="#main-243"><span class="linenos">243</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent copying of metadata columns to output.&quot;</span><span class="p">,</span>
 </span><span id="main-244"><a href="#main-244"><span class="linenos">244</span></a>    <span class="p">)</span>
-</span><span id="main-245"><a href="#main-245"><span class="linenos">245</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-246"><a href="#main-246"><span class="linenos">246</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="main-247"><a href="#main-247"><span class="linenos">247</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-248"><a href="#main-248"><span class="linenos">248</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-249"><a href="#main-249"><span class="linenos">249</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-250"><a href="#main-250"><span class="linenos">250</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="main-251"><a href="#main-251"><span class="linenos">251</span></a>    <span class="p">)</span>
-</span><span id="main-252"><a href="#main-252"><span class="linenos">252</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-253"><a href="#main-253"><span class="linenos">253</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
-</span><span id="main-254"><a href="#main-254"><span class="linenos">254</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
-</span><span id="main-255"><a href="#main-255"><span class="linenos">255</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-256"><a href="#main-256"><span class="linenos">256</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
-</span><span id="main-257"><a href="#main-257"><span class="linenos">257</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to export, defaults to the latest version&quot;</span><span class="p">,</span>
-</span><span id="main-258"><a href="#main-258"><span class="linenos">258</span></a>    <span class="p">)</span>
-</span><span id="main-259"><a href="#main-259"><span class="linenos">259</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_export</span><span class="p">)</span>
-</span><span id="main-260"><a href="#main-260"><span class="linenos">260</span></a>
-</span><span id="main-261"><a href="#main-261"><span class="linenos">261</span></a>    <span class="c1"># phen publish</span>
-</span><span id="main-262"><a href="#main-262"><span class="linenos">262</span></a>    <span class="n">phen_publish_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-263"><a href="#main-263"><span class="linenos">263</span></a>        <span class="s2">&quot;publish&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
-</span><span id="main-264"><a href="#main-264"><span class="linenos">264</span></a>    <span class="p">)</span>
-</span><span id="main-265"><a href="#main-265"><span class="linenos">265</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-266"><a href="#main-266"><span class="linenos">266</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="main-267"><a href="#main-267"><span class="linenos">267</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-268"><a href="#main-268"><span class="linenos">268</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-269"><a href="#main-269"><span class="linenos">269</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-270"><a href="#main-270"><span class="linenos">270</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="main-271"><a href="#main-271"><span class="linenos">271</span></a>    <span class="p">)</span>
-</span><span id="main-272"><a href="#main-272"><span class="linenos">272</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-273"><a href="#main-273"><span class="linenos">273</span></a>        <span class="s2">&quot;-i&quot;</span><span class="p">,</span>
-</span><span id="main-274"><a href="#main-274"><span class="linenos">274</span></a>        <span class="s2">&quot;--increment&quot;</span><span class="p">,</span>
-</span><span id="main-275"><a href="#main-275"><span class="linenos">275</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-276"><a href="#main-276"><span class="linenos">276</span></a>        <span class="n">default</span><span class="o">=</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_VERSION_INC</span><span class="p">,</span>
-</span><span id="main-277"><a href="#main-277"><span class="linenos">277</span></a>        <span class="n">choices</span><span class="o">=</span><span class="n">phen</span><span class="o">.</span><span class="n">SEMANTIC_VERSION_TYPES</span><span class="p">,</span>
-</span><span id="main-278"><a href="#main-278"><span class="linenos">278</span></a>        <span class="n">help</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Version increment: </span><span class="si">{</span><span class="n">phen</span><span class="o">.</span><span class="n">SEMANTIC_VERSION_TYPES</span><span class="si">}</span><span class="s2">, default is </span><span class="si">{</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_VERSION_INC</span><span class="si">}</span><span class="s2"> increment&quot;</span><span class="p">,</span>
-</span><span id="main-279"><a href="#main-279"><span class="linenos">279</span></a>    <span class="p">)</span>
-</span><span id="main-280"><a href="#main-280"><span class="linenos">280</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-281"><a href="#main-281"><span class="linenos">281</span></a>        <span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--msg&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Message to include with the published version&quot;</span>
-</span><span id="main-282"><a href="#main-282"><span class="linenos">282</span></a>    <span class="p">)</span>
-</span><span id="main-283"><a href="#main-283"><span class="linenos">283</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-284"><a href="#main-284"><span class="linenos">284</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span> <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;URL to remote git repository&quot;</span>
-</span><span id="main-285"><a href="#main-285"><span class="linenos">285</span></a>    <span class="p">)</span>
-</span><span id="main-286"><a href="#main-286"><span class="linenos">286</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_publish</span><span class="p">)</span>
-</span><span id="main-287"><a href="#main-287"><span class="linenos">287</span></a>
-</span><span id="main-288"><a href="#main-288"><span class="linenos">288</span></a>    <span class="c1"># phen copy</span>
-</span><span id="main-289"><a href="#main-289"><span class="linenos">289</span></a>    <span class="n">phen_copy_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-290"><a href="#main-290"><span class="linenos">290</span></a>        <span class="s2">&quot;copy&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
+</span><span id="main-245"><a href="#main-245"><span class="linenos">245</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-246"><a href="#main-246"><span class="linenos">246</span></a>        <span class="s2">&quot;--do-reverse-translate&quot;</span><span class="p">,</span>
+</span><span id="main-247"><a href="#main-247"><span class="linenos">247</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+</span><span id="main-248"><a href="#main-248"><span class="linenos">248</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="main-249"><a href="#main-249"><span class="linenos">249</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Enable reversing one directional mappings. WARNING goes against NHS TRUD guidelines.&quot;</span><span class="p">,</span>
+</span><span id="main-250"><a href="#main-250"><span class="linenos">250</span></a>    <span class="p">)</span>
+</span><span id="main-251"><a href="#main-251"><span class="linenos">251</span></a>    <span class="n">phen_map_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_map</span><span class="p">)</span>
+</span><span id="main-252"><a href="#main-252"><span class="linenos">252</span></a>
+</span><span id="main-253"><a href="#main-253"><span class="linenos">253</span></a>    <span class="c1"># phen export</span>
+</span><span id="main-254"><a href="#main-254"><span class="linenos">254</span></a>    <span class="n">phen_export_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-255"><a href="#main-255"><span class="linenos">255</span></a>        <span class="s2">&quot;export&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Export phen to OMOP database&quot;</span>
+</span><span id="main-256"><a href="#main-256"><span class="linenos">256</span></a>    <span class="p">)</span>
+</span><span id="main-257"><a href="#main-257"><span class="linenos">257</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-258"><a href="#main-258"><span class="linenos">258</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="main-259"><a href="#main-259"><span class="linenos">259</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-260"><a href="#main-260"><span class="linenos">260</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-261"><a href="#main-261"><span class="linenos">261</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-262"><a href="#main-262"><span class="linenos">262</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="main-263"><a href="#main-263"><span class="linenos">263</span></a>    <span class="p">)</span>
+</span><span id="main-264"><a href="#main-264"><span class="linenos">264</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-265"><a href="#main-265"><span class="linenos">265</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
+</span><span id="main-266"><a href="#main-266"><span class="linenos">266</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
+</span><span id="main-267"><a href="#main-267"><span class="linenos">267</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-268"><a href="#main-268"><span class="linenos">268</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
+</span><span id="main-269"><a href="#main-269"><span class="linenos">269</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to export, defaults to the latest version&quot;</span><span class="p">,</span>
+</span><span id="main-270"><a href="#main-270"><span class="linenos">270</span></a>    <span class="p">)</span>
+</span><span id="main-271"><a href="#main-271"><span class="linenos">271</span></a>    <span class="n">phen_export_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_export</span><span class="p">)</span>
+</span><span id="main-272"><a href="#main-272"><span class="linenos">272</span></a>
+</span><span id="main-273"><a href="#main-273"><span class="linenos">273</span></a>    <span class="c1"># phen publish</span>
+</span><span id="main-274"><a href="#main-274"><span class="linenos">274</span></a>    <span class="n">phen_publish_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-275"><a href="#main-275"><span class="linenos">275</span></a>        <span class="s2">&quot;publish&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
+</span><span id="main-276"><a href="#main-276"><span class="linenos">276</span></a>    <span class="p">)</span>
+</span><span id="main-277"><a href="#main-277"><span class="linenos">277</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-278"><a href="#main-278"><span class="linenos">278</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="main-279"><a href="#main-279"><span class="linenos">279</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-280"><a href="#main-280"><span class="linenos">280</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-281"><a href="#main-281"><span class="linenos">281</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-282"><a href="#main-282"><span class="linenos">282</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="main-283"><a href="#main-283"><span class="linenos">283</span></a>    <span class="p">)</span>
+</span><span id="main-284"><a href="#main-284"><span class="linenos">284</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-285"><a href="#main-285"><span class="linenos">285</span></a>        <span class="s2">&quot;-i&quot;</span><span class="p">,</span>
+</span><span id="main-286"><a href="#main-286"><span class="linenos">286</span></a>        <span class="s2">&quot;--increment&quot;</span><span class="p">,</span>
+</span><span id="main-287"><a href="#main-287"><span class="linenos">287</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-288"><a href="#main-288"><span class="linenos">288</span></a>        <span class="n">default</span><span class="o">=</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_VERSION_INC</span><span class="p">,</span>
+</span><span id="main-289"><a href="#main-289"><span class="linenos">289</span></a>        <span class="n">choices</span><span class="o">=</span><span class="n">phen</span><span class="o">.</span><span class="n">SEMANTIC_VERSION_TYPES</span><span class="p">,</span>
+</span><span id="main-290"><a href="#main-290"><span class="linenos">290</span></a>        <span class="n">help</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Version increment: </span><span class="si">{</span><span class="n">phen</span><span class="o">.</span><span class="n">SEMANTIC_VERSION_TYPES</span><span class="si">}</span><span class="s2">, default is </span><span class="si">{</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_VERSION_INC</span><span class="si">}</span><span class="s2"> increment&quot;</span><span class="p">,</span>
 </span><span id="main-291"><a href="#main-291"><span class="linenos">291</span></a>    <span class="p">)</span>
-</span><span id="main-292"><a href="#main-292"><span class="linenos">292</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-293"><a href="#main-293"><span class="linenos">293</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="main-294"><a href="#main-294"><span class="linenos">294</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-295"><a href="#main-295"><span class="linenos">295</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-296"><a href="#main-296"><span class="linenos">296</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-297"><a href="#main-297"><span class="linenos">297</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="main-298"><a href="#main-298"><span class="linenos">298</span></a>    <span class="p">)</span>
-</span><span id="main-299"><a href="#main-299"><span class="linenos">299</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-300"><a href="#main-300"><span class="linenos">300</span></a>        <span class="s2">&quot;-td&quot;</span><span class="p">,</span>
-</span><span id="main-301"><a href="#main-301"><span class="linenos">301</span></a>        <span class="s2">&quot;--target-dir&quot;</span><span class="p">,</span>
-</span><span id="main-302"><a href="#main-302"><span class="linenos">302</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-303"><a href="#main-303"><span class="linenos">303</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">DEFAULT_WORKSPACE_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-304"><a href="#main-304"><span class="linenos">304</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Target directory for the copy&quot;</span><span class="p">,</span>
-</span><span id="main-305"><a href="#main-305"><span class="linenos">305</span></a>    <span class="p">)</span>
-</span><span id="main-306"><a href="#main-306"><span class="linenos">306</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-307"><a href="#main-307"><span class="linenos">307</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
-</span><span id="main-308"><a href="#main-308"><span class="linenos">308</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
-</span><span id="main-309"><a href="#main-309"><span class="linenos">309</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-310"><a href="#main-310"><span class="linenos">310</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
-</span><span id="main-311"><a href="#main-311"><span class="linenos">311</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to copy, defaults to the latest version&quot;</span><span class="p">,</span>
-</span><span id="main-312"><a href="#main-312"><span class="linenos">312</span></a>    <span class="p">)</span>
-</span><span id="main-313"><a href="#main-313"><span class="linenos">313</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_copy</span><span class="p">)</span>
-</span><span id="main-314"><a href="#main-314"><span class="linenos">314</span></a>
-</span><span id="main-315"><a href="#main-315"><span class="linenos">315</span></a>    <span class="c1"># phen diff</span>
-</span><span id="main-316"><a href="#main-316"><span class="linenos">316</span></a>    <span class="n">phen_diff_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
-</span><span id="main-317"><a href="#main-317"><span class="linenos">317</span></a>        <span class="s2">&quot;diff&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
-</span><span id="main-318"><a href="#main-318"><span class="linenos">318</span></a>    <span class="p">)</span>
-</span><span id="main-319"><a href="#main-319"><span class="linenos">319</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-320"><a href="#main-320"><span class="linenos">320</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
-</span><span id="main-321"><a href="#main-321"><span class="linenos">321</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-322"><a href="#main-322"><span class="linenos">322</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-323"><a href="#main-323"><span class="linenos">323</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-324"><a href="#main-324"><span class="linenos">324</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
-</span><span id="main-325"><a href="#main-325"><span class="linenos">325</span></a>    <span class="p">)</span>
-</span><span id="main-326"><a href="#main-326"><span class="linenos">326</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-327"><a href="#main-327"><span class="linenos">327</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
-</span><span id="main-328"><a href="#main-328"><span class="linenos">328</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
-</span><span id="main-329"><a href="#main-329"><span class="linenos">329</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
-</span><span id="main-330"><a href="#main-330"><span class="linenos">330</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to compare with an old version, defaults to the HEAD of the workspace directory&quot;</span><span class="p">,</span>
-</span><span id="main-331"><a href="#main-331"><span class="linenos">331</span></a>    <span class="p">)</span>
-</span><span id="main-332"><a href="#main-332"><span class="linenos">332</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-333"><a href="#main-333"><span class="linenos">333</span></a>        <span class="s2">&quot;-od&quot;</span><span class="p">,</span>
-</span><span id="main-334"><a href="#main-334"><span class="linenos">334</span></a>        <span class="s2">&quot;--old-phen-dir&quot;</span><span class="p">,</span>
-</span><span id="main-335"><a href="#main-335"><span class="linenos">335</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
-</span><span id="main-336"><a href="#main-336"><span class="linenos">336</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
-</span><span id="main-337"><a href="#main-337"><span class="linenos">337</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Directory for the old phenotype version, defaults to workspace directory&quot;</span><span class="p">,</span>
-</span><span id="main-338"><a href="#main-338"><span class="linenos">338</span></a>    <span class="p">)</span>
-</span><span id="main-339"><a href="#main-339"><span class="linenos">339</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-340"><a href="#main-340"><span class="linenos">340</span></a>        <span class="s2">&quot;-ov&quot;</span><span class="p">,</span>
-</span><span id="main-341"><a href="#main-341"><span class="linenos">341</span></a>        <span class="s2">&quot;--old-version&quot;</span><span class="p">,</span>
-</span><span id="main-342"><a href="#main-342"><span class="linenos">342</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
-</span><span id="main-343"><a href="#main-343"><span class="linenos">343</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Old phenotype version to compare with the changed version&quot;</span><span class="p">,</span>
-</span><span id="main-344"><a href="#main-344"><span class="linenos">344</span></a>    <span class="p">)</span>
-</span><span id="main-345"><a href="#main-345"><span class="linenos">345</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
-</span><span id="main-346"><a href="#main-346"><span class="linenos">346</span></a>        <span class="s2">&quot;--not-check-config&quot;</span><span class="p">,</span>
-</span><span id="main-347"><a href="#main-347"><span class="linenos">347</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
-</span><span id="main-348"><a href="#main-348"><span class="linenos">348</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="main-349"><a href="#main-349"><span class="linenos">349</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent loading and comparing config file, in the case where one does not exist&quot;</span><span class="p">,</span>
+</span><span id="main-292"><a href="#main-292"><span class="linenos">292</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-293"><a href="#main-293"><span class="linenos">293</span></a>        <span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--msg&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Message to include with the published version&quot;</span>
+</span><span id="main-294"><a href="#main-294"><span class="linenos">294</span></a>    <span class="p">)</span>
+</span><span id="main-295"><a href="#main-295"><span class="linenos">295</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-296"><a href="#main-296"><span class="linenos">296</span></a>        <span class="s2">&quot;-r&quot;</span><span class="p">,</span> <span class="s2">&quot;--remote_url&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;URL to remote git repository&quot;</span>
+</span><span id="main-297"><a href="#main-297"><span class="linenos">297</span></a>    <span class="p">)</span>
+</span><span id="main-298"><a href="#main-298"><span class="linenos">298</span></a>    <span class="n">phen_publish_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_publish</span><span class="p">)</span>
+</span><span id="main-299"><a href="#main-299"><span class="linenos">299</span></a>
+</span><span id="main-300"><a href="#main-300"><span class="linenos">300</span></a>    <span class="c1"># phen copy</span>
+</span><span id="main-301"><a href="#main-301"><span class="linenos">301</span></a>    <span class="n">phen_copy_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-302"><a href="#main-302"><span class="linenos">302</span></a>        <span class="s2">&quot;copy&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
+</span><span id="main-303"><a href="#main-303"><span class="linenos">303</span></a>    <span class="p">)</span>
+</span><span id="main-304"><a href="#main-304"><span class="linenos">304</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-305"><a href="#main-305"><span class="linenos">305</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="main-306"><a href="#main-306"><span class="linenos">306</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-307"><a href="#main-307"><span class="linenos">307</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-308"><a href="#main-308"><span class="linenos">308</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-309"><a href="#main-309"><span class="linenos">309</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="main-310"><a href="#main-310"><span class="linenos">310</span></a>    <span class="p">)</span>
+</span><span id="main-311"><a href="#main-311"><span class="linenos">311</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-312"><a href="#main-312"><span class="linenos">312</span></a>        <span class="s2">&quot;-td&quot;</span><span class="p">,</span>
+</span><span id="main-313"><a href="#main-313"><span class="linenos">313</span></a>        <span class="s2">&quot;--target-dir&quot;</span><span class="p">,</span>
+</span><span id="main-314"><a href="#main-314"><span class="linenos">314</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-315"><a href="#main-315"><span class="linenos">315</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">DEFAULT_WORKSPACE_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-316"><a href="#main-316"><span class="linenos">316</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Target directory for the copy&quot;</span><span class="p">,</span>
+</span><span id="main-317"><a href="#main-317"><span class="linenos">317</span></a>    <span class="p">)</span>
+</span><span id="main-318"><a href="#main-318"><span class="linenos">318</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-319"><a href="#main-319"><span class="linenos">319</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
+</span><span id="main-320"><a href="#main-320"><span class="linenos">320</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
+</span><span id="main-321"><a href="#main-321"><span class="linenos">321</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-322"><a href="#main-322"><span class="linenos">322</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
+</span><span id="main-323"><a href="#main-323"><span class="linenos">323</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to copy, defaults to the latest version&quot;</span><span class="p">,</span>
+</span><span id="main-324"><a href="#main-324"><span class="linenos">324</span></a>    <span class="p">)</span>
+</span><span id="main-325"><a href="#main-325"><span class="linenos">325</span></a>    <span class="n">phen_copy_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_copy</span><span class="p">)</span>
+</span><span id="main-326"><a href="#main-326"><span class="linenos">326</span></a>
+</span><span id="main-327"><a href="#main-327"><span class="linenos">327</span></a>    <span class="c1"># phen diff</span>
+</span><span id="main-328"><a href="#main-328"><span class="linenos">328</span></a>    <span class="n">phen_diff_parser</span> <span class="o">=</span> <span class="n">phen_subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
+</span><span id="main-329"><a href="#main-329"><span class="linenos">329</span></a>        <span class="s2">&quot;diff&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Publish phenotype configuration&quot;</span>
+</span><span id="main-330"><a href="#main-330"><span class="linenos">330</span></a>    <span class="p">)</span>
+</span><span id="main-331"><a href="#main-331"><span class="linenos">331</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-332"><a href="#main-332"><span class="linenos">332</span></a>        <span class="s2">&quot;-d&quot;</span><span class="p">,</span>
+</span><span id="main-333"><a href="#main-333"><span class="linenos">333</span></a>        <span class="s2">&quot;--phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-334"><a href="#main-334"><span class="linenos">334</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-335"><a href="#main-335"><span class="linenos">335</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-336"><a href="#main-336"><span class="linenos">336</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Local phenotype workspace directory (default is ./workspace/phen).&quot;</span><span class="p">,</span>
+</span><span id="main-337"><a href="#main-337"><span class="linenos">337</span></a>    <span class="p">)</span>
+</span><span id="main-338"><a href="#main-338"><span class="linenos">338</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-339"><a href="#main-339"><span class="linenos">339</span></a>        <span class="s2">&quot;-v&quot;</span><span class="p">,</span>
+</span><span id="main-340"><a href="#main-340"><span class="linenos">340</span></a>        <span class="s2">&quot;--version&quot;</span><span class="p">,</span>
+</span><span id="main-341"><a href="#main-341"><span class="linenos">341</span></a>        <span class="n">default</span><span class="o">=</span><span class="s2">&quot;latest&quot;</span><span class="p">,</span>
+</span><span id="main-342"><a href="#main-342"><span class="linenos">342</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Phenotype version to compare with an old version, defaults to the HEAD of the workspace directory&quot;</span><span class="p">,</span>
+</span><span id="main-343"><a href="#main-343"><span class="linenos">343</span></a>    <span class="p">)</span>
+</span><span id="main-344"><a href="#main-344"><span class="linenos">344</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-345"><a href="#main-345"><span class="linenos">345</span></a>        <span class="s2">&quot;-od&quot;</span><span class="p">,</span>
+</span><span id="main-346"><a href="#main-346"><span class="linenos">346</span></a>        <span class="s2">&quot;--old-phen-dir&quot;</span><span class="p">,</span>
+</span><span id="main-347"><a href="#main-347"><span class="linenos">347</span></a>        <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span>
+</span><span id="main-348"><a href="#main-348"><span class="linenos">348</span></a>        <span class="n">default</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">phen</span><span class="o">.</span><span class="n">DEFAULT_PHEN_PATH</span><span class="o">.</span><span class="n">resolve</span><span class="p">()),</span>
+</span><span id="main-349"><a href="#main-349"><span class="linenos">349</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Directory for the old phenotype version, defaults to workspace directory&quot;</span><span class="p">,</span>
 </span><span id="main-350"><a href="#main-350"><span class="linenos">350</span></a>    <span class="p">)</span>
-</span><span id="main-351"><a href="#main-351"><span class="linenos">351</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_diff</span><span class="p">)</span>
-</span><span id="main-352"><a href="#main-352"><span class="linenos">352</span></a>
-</span><span id="main-353"><a href="#main-353"><span class="linenos">353</span></a>    <span class="c1"># Parse arguments</span>
-</span><span id="main-354"><a href="#main-354"><span class="linenos">354</span></a>    <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
-</span><span id="main-355"><a href="#main-355"><span class="linenos">355</span></a>
-</span><span id="main-356"><a href="#main-356"><span class="linenos">356</span></a>    <span class="c1"># setup logging</span>
-</span><span id="main-357"><a href="#main-357"><span class="linenos">357</span></a>    <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span>
-</span><span id="main-358"><a href="#main-358"><span class="linenos">358</span></a>        <span class="n">lc</span><span class="o">.</span><span class="n">set_log_level</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
-</span><span id="main-359"><a href="#main-359"><span class="linenos">359</span></a>
-</span><span id="main-360"><a href="#main-360"><span class="linenos">360</span></a>    <span class="c1"># Call the function associated with the command</span>
-</span><span id="main-361"><a href="#main-361"><span class="linenos">361</span></a>    <span class="n">args</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
+</span><span id="main-351"><a href="#main-351"><span class="linenos">351</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-352"><a href="#main-352"><span class="linenos">352</span></a>        <span class="s2">&quot;-ov&quot;</span><span class="p">,</span>
+</span><span id="main-353"><a href="#main-353"><span class="linenos">353</span></a>        <span class="s2">&quot;--old-version&quot;</span><span class="p">,</span>
+</span><span id="main-354"><a href="#main-354"><span class="linenos">354</span></a>        <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+</span><span id="main-355"><a href="#main-355"><span class="linenos">355</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Old phenotype version to compare with the changed version&quot;</span><span class="p">,</span>
+</span><span id="main-356"><a href="#main-356"><span class="linenos">356</span></a>    <span class="p">)</span>
+</span><span id="main-357"><a href="#main-357"><span class="linenos">357</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+</span><span id="main-358"><a href="#main-358"><span class="linenos">358</span></a>        <span class="s2">&quot;--not-check-config&quot;</span><span class="p">,</span>
+</span><span id="main-359"><a href="#main-359"><span class="linenos">359</span></a>        <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+</span><span id="main-360"><a href="#main-360"><span class="linenos">360</span></a>        <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="main-361"><a href="#main-361"><span class="linenos">361</span></a>        <span class="n">help</span><span class="o">=</span><span class="s2">&quot;(Optional) Prevent loading and comparing config file, in the case where one does not exist&quot;</span><span class="p">,</span>
+</span><span id="main-362"><a href="#main-362"><span class="linenos">362</span></a>    <span class="p">)</span>
+</span><span id="main-363"><a href="#main-363"><span class="linenos">363</span></a>    <span class="n">phen_diff_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">_phen_diff</span><span class="p">)</span>
+</span><span id="main-364"><a href="#main-364"><span class="linenos">364</span></a>
+</span><span id="main-365"><a href="#main-365"><span class="linenos">365</span></a>    <span class="c1"># Parse arguments</span>
+</span><span id="main-366"><a href="#main-366"><span class="linenos">366</span></a>    <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+</span><span id="main-367"><a href="#main-367"><span class="linenos">367</span></a>
+</span><span id="main-368"><a href="#main-368"><span class="linenos">368</span></a>    <span class="c1"># setup logging</span>
+</span><span id="main-369"><a href="#main-369"><span class="linenos">369</span></a>    <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span>
+</span><span id="main-370"><a href="#main-370"><span class="linenos">370</span></a>        <span class="n">lc</span><span class="o">.</span><span class="n">set_log_level</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
+</span><span id="main-371"><a href="#main-371"><span class="linenos">371</span></a>
+</span><span id="main-372"><a href="#main-372"><span class="linenos">372</span></a>    <span class="c1"># Call the function associated with the command</span>
+</span><span id="main-373"><a href="#main-373"><span class="linenos">373</span></a>    <span class="n">args</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
 </span></pre></div>
 
 
diff --git a/docs/api/acmc/parse.html b/docs/api/acmc/parse.html
index 03c0be3..5dac0ba 100644
--- a/docs/api/acmc/parse.html
+++ b/docs/api/acmc/parse.html
@@ -760,7 +760,7 @@
                 <section id="SUPPORTED_CODE_TYPES">
                     <div class="attr variable">
             <span class="name">SUPPORTED_CODE_TYPES</span>        =
-<span class="default_value">{&#39;read3&#39;, &#39;read2&#39;, &#39;snomed&#39;, &#39;opcs4&#39;, &#39;icd10&#39;, &#39;atc&#39;}</span>
+<span class="default_value">{&#39;opcs4&#39;, &#39;atc&#39;, &#39;snomed&#39;, &#39;icd10&#39;, &#39;read2&#39;, &#39;read3&#39;}</span>
 
         
     </div>
diff --git a/docs/api/acmc/phen.html b/docs/api/acmc/phen.html
index 5a906e4..7e6ffc0 100644
--- a/docs/api/acmc/phen.html
+++ b/docs/api/acmc/phen.html
@@ -837,859 +837,901 @@
 </span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a>    <span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
 </span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a>    <span class="n">concept_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
 </span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a>    <span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
-</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Translates each source code type the source coding list into a target type and returns all conversions as a concept set&quot;&quot;&quot;</span>
-</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a>
-</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a>    <span class="c1"># codes = pd.DataFrame([], dtype=str)</span>
-</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
-</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a>        <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;string&quot;</span>
-</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a>    <span class="p">)</span>
-</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a>    <span class="c1"># Convert codes to target type</span>
-</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Converting to target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a>
-</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a>    <span class="k">for</span> <span class="n">source_code_type</span> <span class="ow">in</span> <span class="n">source_df</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
-</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a>        <span class="c1"># if target code type is the same as thet source code type, no translation, just appending source as target</span>
-</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a>        <span class="k">if</span> <span class="n">source_code_type</span> <span class="o">==</span> <span class="n">target_code_type</span><span class="p">:</span>
-</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a>            <span class="n">copy_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
-</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a>                <span class="p">{</span>
-</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a>                    <span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">:</span> <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span>
-</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a>                    <span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">:</span> <span class="n">source_code_type</span><span class="p">,</span>
-</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a>                    <span class="s2">&quot;CONCEPT&quot;</span><span class="p">:</span> <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span>
-</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a>                <span class="p">}</span>
-</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a>            <span class="p">)</span>
-</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a>            <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">codes</span><span class="p">,</span> <span class="n">copy_df</span><span class="p">])</span>
-</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a>                <span class="sa">f</span><span class="s2">&quot;Target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2"> is the same as source code type </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">source_df</span><span class="p">)</span><span class="si">}</span><span class="s2">, copying codes rather than translating&quot;</span>
-</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a>            <span class="p">)</span>
-</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a>        <span class="k">elif</span> <span class="ow">not</span> <span class="n">not_translate</span><span class="p">:</span>
-</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a>            <span class="c1"># get the translation filename using source to target code types</span>
-</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a>            <span class="n">filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2">_to_</span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">.parquet&quot;</span>
-</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a>            <span class="n">map_path</span> <span class="o">=</span> <span class="n">trud</span><span class="o">.</span><span class="n">PROCESSED_PATH</span> <span class="o">/</span> <span class="n">filename</span>
-</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a>
-</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a>            <span class="c1"># do the mapping if it exists</span>
-</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a>            <span class="k">if</span> <span class="n">map_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a>                <span class="c1"># get mapping</span>
-</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a>                <span class="n">df_map</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span><span class="n">map_path</span><span class="p">)</span>
-</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a>
-</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a>                <span class="c1"># do mapping</span>
-</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a>                <span class="n">translated_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span>
-</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a>                    <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span> <span class="n">df_map</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s2">&quot;left&quot;</span>
-</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a>                <span class="p">)</span>
-</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a>
-</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a>                <span class="c1"># normalise the output</span>
-</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a>                <span class="n">translated_df</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Index</span><span class="p">([</span><span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
-</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a>                <span class="n">translated_df</span><span class="p">[</span><span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">source_code_type</span>
-</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a>
-</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a>                <span class="c1"># add to list of codes</span>
-</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a>                <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">codes</span><span class="p">,</span> <span class="n">translated_df</span><span class="p">])</span>
+</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a>    <span class="n">do_reverse_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
+</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Translates each source code type the source coding list into a target type and returns all conversions as a concept set&quot;&quot;&quot;</span>
+</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a>
+</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a>    <span class="c1"># codes = pd.DataFrame([], dtype=str)</span>
+</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
+</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a>        <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;string&quot;</span>
+</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a>    <span class="p">)</span>
+</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a>    <span class="c1"># Convert codes to target type</span>
+</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Converting to target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a>
+</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a>    <span class="k">for</span> <span class="n">source_code_type</span> <span class="ow">in</span> <span class="n">source_df</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
+</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a>        <span class="c1"># if target code type is the same as thet source code type, no translation, just appending source as target</span>
+</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a>        <span class="k">if</span> <span class="n">source_code_type</span> <span class="o">==</span> <span class="n">target_code_type</span><span class="p">:</span>
+</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a>            <span class="n">copy_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
+</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a>                <span class="p">{</span>
+</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a>                    <span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">:</span> <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span>
+</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a>                    <span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">:</span> <span class="n">source_code_type</span><span class="p">,</span>
+</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a>                    <span class="s2">&quot;CONCEPT&quot;</span><span class="p">:</span> <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span>
+</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a>                <span class="p">}</span>
+</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a>            <span class="p">)</span>
+</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a>            <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">codes</span><span class="p">,</span> <span class="n">copy_df</span><span class="p">])</span>
+</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a>                <span class="sa">f</span><span class="s2">&quot;Target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2"> is the same as source code type </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">source_df</span><span class="p">)</span><span class="si">}</span><span class="s2">, copying codes rather than translating&quot;</span>
+</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a>            <span class="p">)</span>
+</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a>        <span class="k">elif</span> <span class="ow">not</span> <span class="n">not_translate</span><span class="p">:</span>
+</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a>            <span class="c1"># get the translation filename using source to target code types</span>
+</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a>            <span class="n">filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2">_to_</span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">.parquet&quot;</span>
+</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a>            <span class="n">map_path</span> <span class="o">=</span> <span class="n">trud</span><span class="o">.</span><span class="n">PROCESSED_PATH</span> <span class="o">/</span> <span class="n">filename</span>
+</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a>
+</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a>            <span class="n">filename_reversed</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">_to_</span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2">.parquet&quot;</span>
+</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a>            <span class="n">map_path_reversed</span> <span class="o">=</span> <span class="n">trud</span><span class="o">.</span><span class="n">PROCESSED_PATH</span> <span class="o">/</span> <span class="n">filename_reversed</span>
+</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a>
+</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a>            <span class="c1"># do the mapping if it exists</span>
+</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a>            <span class="k">if</span> <span class="n">map_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a>                <span class="n">codes</span> <span class="o">=</span> <span class="n">_translate_codes</span><span class="p">(</span><span class="n">map_path</span><span class="p">,</span> <span class="n">source_df</span><span class="p">,</span> <span class="n">source_code_type</span><span class="p">,</span> <span class="n">codes</span><span class="p">)</span>
+</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a>            <span class="c1"># otherwise do reverse mapping if enabled and it exists</span>
+</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a>            <span class="k">elif</span> <span class="n">do_reverse_translate</span> <span class="ow">and</span> <span class="n">map_path_reversed</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a>                <span class="n">codes</span> <span class="o">=</span> <span class="n">_translate_codes</span><span class="p">(</span>
+</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a>                    <span class="n">map_path_reversed</span><span class="p">,</span> <span class="n">source_df</span><span class="p">,</span> <span class="n">source_code_type</span><span class="p">,</span> <span class="n">codes</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">True</span>
+</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a>                <span class="p">)</span>
+</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a>            <span class="k">else</span><span class="p">:</span>
+</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a>                <span class="n">_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
+</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a>                    <span class="sa">f</span><span class="s2">&quot;No mapping from </span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">, file </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">map_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2"> does not exist&quot;</span>
+</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a>                <span class="p">)</span>
 </span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a>
-</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a>            <span class="k">else</span><span class="p">:</span>
-</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a>                <span class="n">_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
-</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a>                    <span class="sa">f</span><span class="s2">&quot;No mapping from </span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">, file </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">map_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2"> does not exist&quot;</span>
-</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a>                <span class="p">)</span>
-</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a>
-</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">codes</span><span class="o">.</span><span class="n">dropna</span><span class="p">()</span>  <span class="c1"># delete NaNs</span>
-</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a>
-</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a>    <span class="c1"># added concept set type to output if any translations</span>
-</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">codes</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a>        <span class="n">codes</span><span class="p">[</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">concept_name</span>
-</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No codes converted with target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">codes</span><span class="o">.</span><span class="n">dropna</span><span class="p">()</span>  <span class="c1"># delete NaNs</span>
+</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a>
+</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a>    <span class="c1"># print(codes)</span>
+</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a>
+</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a>    <span class="c1"># added concept set type to output if any translations</span>
+</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">codes</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a>        <span class="n">codes</span><span class="p">[</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">concept_name</span>
+</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a>        <span class="c1"># print(&quot;NO CODES CONVERTED&quot;)</span>
+</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No codes converted with target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a>
+</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a>    <span class="k">return</span> <span class="n">codes</span>
 </span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a>
-</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a>    <span class="k">return</span> <span class="n">codes</span>
-</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a>
-</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a>
-</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_write_code_errors</span><span class="p">(</span><span class="n">code_errors</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span> <span class="n">code_errors_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">):</span>
-</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a>    <span class="n">err_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
-</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a>        <span class="p">[</span>
-</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a>            <span class="p">{</span>
-</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a>                <span class="s2">&quot;CONCEPT&quot;</span><span class="p">:</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">err</span><span class="o">.</span><span class="n">codes</span><span class="p">[</span><span class="o">~</span><span class="n">err</span><span class="o">.</span><span class="n">mask</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">()),</span>
-</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a>                <span class="s2">&quot;VOCABULARY&quot;</span><span class="p">:</span> <span class="n">err</span><span class="o">.</span><span class="n">code_type</span><span class="p">,</span>
-</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a>                <span class="s2">&quot;SOURCE&quot;</span><span class="p">:</span> <span class="n">err</span><span class="o">.</span><span class="n">codes_file</span><span class="p">,</span>
-</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a>                <span class="s2">&quot;CAUSE&quot;</span><span class="p">:</span> <span class="n">err</span><span class="o">.</span><span class="n">message</span><span class="p">,</span>
-</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a>            <span class="p">}</span>
-</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a>            <span class="k">for</span> <span class="n">err</span> <span class="ow">in</span> <span class="n">code_errors</span>
-</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a>            <span class="k">if</span> <span class="n">err</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
-</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a>        <span class="p">]</span>
-</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a>    <span class="p">)</span>
-</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a>
-</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a>    <span class="n">err_df</span> <span class="o">=</span> <span class="n">err_df</span><span class="o">.</span><span class="n">drop_duplicates</span><span class="p">()</span>  <span class="c1"># Remove Duplicates from Error file</span>
-</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a>    <span class="n">err_df</span> <span class="o">=</span> <span class="n">err_df</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;SOURCE&quot;</span><span class="p">,</span> <span class="s2">&quot;VOCABULARY&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
-</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a>    <span class="n">err_df</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">code_errors_path</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">&quot;w&quot;</span><span class="p">)</span>
+</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a>
+</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_translate_codes</span><span class="p">(</span><span class="n">map_path</span><span class="p">,</span> <span class="n">source_df</span><span class="p">,</span> <span class="n">source_code_type</span><span class="p">,</span> <span class="n">codes</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
+</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a>    <span class="c1"># get mapping</span>
+</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a>    <span class="n">df_map</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span><span class="n">map_path</span><span class="p">)</span>
+</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a>
+</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a>    <span class="c1"># do mapping</span>
+</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a>    <span class="k">if</span> <span class="ow">not</span><span class="p">(</span><span class="n">reverse</span><span class="p">):</span>
+</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a>        <span class="n">translated_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span> <span class="n">df_map</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s2">&quot;left&quot;</span><span class="p">)</span>
+</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a>        <span class="c1"># print(&quot;NORMAL&quot;)#, source_df, df_map)</span>
+</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a>        <span class="n">translated_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span> <span class="n">df_map</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s2">&quot;left&quot;</span><span class="p">)</span> <span class="c1">#output codes from target as reversed</span>
+</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a>        <span class="c1"># print(&quot;REVERSED&quot;)#, source_df, df_map)</span>
+</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a>
+</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a>    <span class="c1"># normalise the output</span>
+</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a>    <span class="n">translated_df</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Index</span><span class="p">([</span><span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
+</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a>    <span class="n">translated_df</span><span class="p">[</span><span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">source_code_type</span>
+</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a>    <span class="c1"># print(translated_df, codes)</span>
+</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a>
+</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a>    <span class="c1"># add to list of codes</span>
+</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">codes</span><span class="p">,</span> <span class="n">translated_df</span><span class="p">])</span>
 </span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a>
-</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a>
-</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a><span class="k">def</span><span class="w"> </span><span class="nf">write_vocab_version</span><span class="p">(</span><span class="n">phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">):</span>
-</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a>    <span class="c1"># write the vocab version files</span>
-</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a>
-</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span>
-</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a>            <span class="sa">f</span><span class="s2">&quot;TRUD version path </span><span class="si">{</span><span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="si">}</span><span class="s2"> does not exist, please check TRUD is installed&quot;</span>
-</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a>        <span class="p">)</span>
-</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a>
-</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span>
-</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a>            <span class="sa">f</span><span class="s2">&quot;OMOP version path </span><span class="si">{</span><span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="si">}</span><span class="s2"> does not exist, please check OMOP is installed&quot;</span>
-</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a>        <span class="p">)</span>
-</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a>
-</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a>    <span class="k">with</span> <span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a>        <span class="n">trud_version</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a>    <span class="k">return</span> <span class="n">codes</span>
+</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a>
+</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a>
+</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_write_code_errors</span><span class="p">(</span><span class="n">code_errors</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span> <span class="n">code_errors_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">):</span>
+</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a>    <span class="n">err_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
+</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a>        <span class="p">[</span>
+</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a>            <span class="p">{</span>
+</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a>                <span class="s2">&quot;CONCEPT&quot;</span><span class="p">:</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">err</span><span class="o">.</span><span class="n">codes</span><span class="p">[</span><span class="o">~</span><span class="n">err</span><span class="o">.</span><span class="n">mask</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">()),</span>
+</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a>                <span class="s2">&quot;VOCABULARY&quot;</span><span class="p">:</span> <span class="n">err</span><span class="o">.</span><span class="n">code_type</span><span class="p">,</span>
+</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a>                <span class="s2">&quot;SOURCE&quot;</span><span class="p">:</span> <span class="n">err</span><span class="o">.</span><span class="n">codes_file</span><span class="p">,</span>
+</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a>                <span class="s2">&quot;CAUSE&quot;</span><span class="p">:</span> <span class="n">err</span><span class="o">.</span><span class="n">message</span><span class="p">,</span>
+</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a>            <span class="p">}</span>
+</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a>            <span class="k">for</span> <span class="n">err</span> <span class="ow">in</span> <span class="n">code_errors</span>
+</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a>            <span class="k">if</span> <span class="n">err</span><span class="o">.</span><span class="n">mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
+</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a>        <span class="p">]</span>
+</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a>    <span class="p">)</span>
 </span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a>
-</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a>    <span class="k">with</span> <span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a>        <span class="n">omop_version</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a>
-</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a>    <span class="c1"># Create the combined YAML structure</span>
-</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a>    <span class="n">version_data</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a>        <span class="s2">&quot;versions&quot;</span><span class="p">:</span> <span class="p">{</span>
-</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a>            <span class="s2">&quot;acmc&quot;</span><span class="p">:</span> <span class="n">acmc</span><span class="o">.</span><span class="n">__version__</span><span class="p">,</span>
-</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a>            <span class="s2">&quot;trud&quot;</span><span class="p">:</span> <span class="n">trud_version</span><span class="p">,</span>
-</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a>            <span class="s2">&quot;omop&quot;</span><span class="p">:</span> <span class="n">omop_version</span><span class="p">,</span>
-</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a>        <span class="p">}</span>
-</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a>    <span class="p">}</span>
-</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a>
-</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a>    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">phen_path</span> <span class="o">/</span> <span class="n">VOCAB_VERSION_FILE</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a>        <span class="n">yaml</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
-</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a>            <span class="n">version_data</span><span class="p">,</span>
-</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a>            <span class="n">file</span><span class="p">,</span>
-</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a>            <span class="n">Dumper</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">QuotedDumper</span><span class="p">,</span>
-</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a>            <span class="n">default_flow_style</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a>            <span class="n">sort_keys</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a>            <span class="n">default_style</span><span class="o">=</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span>
-</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a>        <span class="p">)</span>
-</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a>
-</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a>
-</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a><span class="k">def</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">):</span>
-</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Processing phenotype: </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a>
-</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a>    <span class="c1"># Validate configuration</span>
-</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a>
-</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a>    <span class="c1"># initialise paths</span>
-</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a>    <span class="n">err_df</span> <span class="o">=</span> <span class="n">err_df</span><span class="o">.</span><span class="n">drop_duplicates</span><span class="p">()</span>  <span class="c1"># Remove Duplicates from Error file</span>
+</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a>    <span class="n">err_df</span> <span class="o">=</span> <span class="n">err_df</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;SOURCE&quot;</span><span class="p">,</span> <span class="s2">&quot;VOCABULARY&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
+</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a>    <span class="n">err_df</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">code_errors_path</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">&quot;w&quot;</span><span class="p">)</span>
+</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a>
+</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a>
+</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a><span class="k">def</span><span class="w"> </span><span class="nf">write_vocab_version</span><span class="p">(</span><span class="n">phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">):</span>
+</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a>    <span class="c1"># write the vocab version files</span>
+</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a>
+</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span>
+</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a>            <span class="sa">f</span><span class="s2">&quot;TRUD version path </span><span class="si">{</span><span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="si">}</span><span class="s2"> does not exist, please check TRUD is installed&quot;</span>
+</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a>        <span class="p">)</span>
+</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a>
+</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span>
+</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a>            <span class="sa">f</span><span class="s2">&quot;OMOP version path </span><span class="si">{</span><span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="si">}</span><span class="s2"> does not exist, please check OMOP is installed&quot;</span>
+</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a>        <span class="p">)</span>
+</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a>
+</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a>    <span class="k">with</span> <span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a>        <span class="n">trud_version</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a>
+</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a>    <span class="k">with</span> <span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a>        <span class="n">omop_version</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a>
+</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a>    <span class="c1"># Create the combined YAML structure</span>
+</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a>    <span class="n">version_data</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a>        <span class="s2">&quot;versions&quot;</span><span class="p">:</span> <span class="p">{</span>
+</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a>            <span class="s2">&quot;acmc&quot;</span><span class="p">:</span> <span class="n">acmc</span><span class="o">.</span><span class="n">__version__</span><span class="p">,</span>
+</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a>            <span class="s2">&quot;trud&quot;</span><span class="p">:</span> <span class="n">trud_version</span><span class="p">,</span>
+</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a>            <span class="s2">&quot;omop&quot;</span><span class="p">:</span> <span class="n">omop_version</span><span class="p">,</span>
+</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a>        <span class="p">}</span>
+</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a>    <span class="p">}</span>
 </span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a>
-</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a>    <span class="c1"># load configuration</span>
-</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a>    <span class="n">phenotype</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">]</span>
-</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a>
-</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No map codes defined in the phenotype configuration&quot;</span><span class="p">)</span>
-</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a>
-</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a>    <span class="k">if</span> <span class="n">target_code_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">target_code_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">]:</span>
-</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
-</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a>            <span class="sa">f</span><span class="s2">&quot;Target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2"> not in phenotype configuration map </span><span class="si">{</span><span class="n">phenotype</span><span class="p">[</span><span class="s1">&#39;map&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a>        <span class="p">)</span>
-</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a>
-</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a>    <span class="k">if</span> <span class="n">target_code_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a>        <span class="n">_map_target_code_type</span><span class="p">(</span>
-</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a>            <span class="n">phen_path</span><span class="p">,</span> <span class="n">phenotype</span><span class="p">,</span> <span class="n">target_code_type</span><span class="p">,</span> <span class="n">not_translate</span><span class="p">,</span> <span class="n">no_metadata</span>
-</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a>        <span class="p">)</span>
-</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a>        <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">]:</span>
-</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a>            <span class="n">_map_target_code_type</span><span class="p">(</span><span class="n">phen_path</span><span class="p">,</span> <span class="n">phenotype</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">not_translate</span><span class="p">,</span> <span class="n">no_metadata</span><span class="p">)</span>
-</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a>
-</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype processed successfully&quot;</span><span class="p">)</span>
+</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a>    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">phen_path</span> <span class="o">/</span> <span class="n">VOCAB_VERSION_FILE</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a>        <span class="n">yaml</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
+</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a>            <span class="n">version_data</span><span class="p">,</span>
+</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a>            <span class="n">file</span><span class="p">,</span>
+</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a>            <span class="n">Dumper</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">QuotedDumper</span><span class="p">,</span>
+</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a>            <span class="n">default_flow_style</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a>            <span class="n">sort_keys</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a>            <span class="n">default_style</span><span class="o">=</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span>
+</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a>        <span class="p">)</span>
+</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a>
+</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a>
+</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a><span class="k">def</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span>
+</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a>    <span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a>    <span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a>    <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a>    <span class="n">do_reverse_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a><span class="p">):</span>
+</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Processing phenotype: </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a>
+</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a>    <span class="c1"># Validate configuration</span>
+</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
 </span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a>
-</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a>
-</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_map_target_code_type</span><span class="p">(</span>
-</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a>    <span class="n">phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
-</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a>    <span class="n">phenotype</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
-</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a>    <span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a>    <span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a>    <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a><span class="p">):</span>
-</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Target coding format: </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a>    <span class="n">concepts_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONCEPTS_DIR</span>
-</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a>    <span class="c1"># Create output dataframe</span>
-</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a>    <span class="n">out</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">([])</span>
-</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a>    <span class="n">code_errors</span> <span class="o">=</span> <span class="p">[]</span>
-</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a>
-</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a>    <span class="c1"># Process each folder in codes section</span>
-</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a>    <span class="k">for</span> <span class="n">files</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;concept_sets&quot;</span><span class="p">]:</span>
-</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a>        <span class="n">concept_set_name</span> <span class="o">=</span> <span class="n">files</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span>
-</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a>        <span class="k">if</span> <span class="s2">&quot;metadata&quot;</span> <span class="ow">in</span> <span class="n">files</span><span class="p">:</span>
-</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a>            <span class="n">concept_set_metadata</span> <span class="o">=</span> <span class="n">files</span><span class="p">[</span><span class="s2">&quot;metadata&quot;</span><span class="p">]</span>
-</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a>            <span class="n">concept_set_metadata</span> <span class="o">=</span> <span class="p">{}</span>
-</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a>        <span class="k">for</span> <span class="n">concept_set</span> <span class="ow">in</span> <span class="n">files</span><span class="p">[</span><span class="s2">&quot;files&quot;</span><span class="p">]:</span>
-</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;--- </span><span class="si">{</span><span class="n">concept_set</span><span class="si">}</span><span class="s2"> ---&quot;</span><span class="p">)</span>
-</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a>
-</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a>            <span class="c1"># Load code file</span>
-</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a>            <span class="n">codes_file_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">concepts_path</span> <span class="o">/</span> <span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;path&quot;</span><span class="p">])</span>
-</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a>            <span class="n">df</span> <span class="o">=</span> <span class="n">_read_table_file</span><span class="p">(</span><span class="n">codes_file_path</span><span class="p">)</span>
-</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a>
-</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a>            <span class="c1"># process structural actions</span>
-</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a>            <span class="n">df</span> <span class="o">=</span> <span class="n">_process_actions</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">concept_set</span><span class="p">)</span>
-</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a>
-</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a>            <span class="c1"># preprocessing and validate of source concepts</span>
-</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Processing and validating source concept codes&quot;</span><span class="p">)</span>
-</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a>            <span class="n">df</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">_preprocess_source_concepts</span><span class="p">(</span>
-</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a>                <span class="n">df</span><span class="p">,</span>
-</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a>                <span class="n">concept_set</span><span class="p">,</span>
-</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a>                <span class="n">codes_file_path</span><span class="p">,</span>
-</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a>            <span class="p">)</span>
+</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a>    <span class="c1"># initialise paths</span>
+</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a>
+</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a>    <span class="c1"># load configuration</span>
+</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a>    <span class="n">phenotype</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">]</span>
+</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a>
+</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No map codes defined in the phenotype configuration&quot;</span><span class="p">)</span>
+</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a>
+</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a>    <span class="k">if</span> <span class="n">target_code_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">target_code_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">]:</span>
+</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a>            <span class="sa">f</span><span class="s2">&quot;Target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2"> not in phenotype configuration map </span><span class="si">{</span><span class="n">phenotype</span><span class="p">[</span><span class="s1">&#39;map&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a>        <span class="p">)</span>
+</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a>
+</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a>    <span class="k">if</span> <span class="n">target_code_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a>        <span class="n">_map_target_code_type</span><span class="p">(</span>
+</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a>            <span class="n">phen_path</span><span class="p">,</span>
+</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a>            <span class="n">phenotype</span><span class="p">,</span>
+</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a>            <span class="n">target_code_type</span><span class="p">,</span>
+</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a>            <span class="n">not_translate</span><span class="p">,</span>
+</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a>            <span class="n">no_metadata</span><span class="p">,</span>
+</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a>            <span class="n">do_reverse_translate</span><span class="p">,</span>
+</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a>        <span class="p">)</span>
+</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a>        <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">]:</span>
+</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a>            <span class="n">_map_target_code_type</span><span class="p">(</span>
+</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a>                <span class="n">phen_path</span><span class="p">,</span>
+</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a>                <span class="n">phenotype</span><span class="p">,</span>
+</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a>                <span class="n">t</span><span class="p">,</span>
+</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a>                <span class="n">not_translate</span><span class="p">,</span>
+</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a>                <span class="n">no_metadata</span><span class="p">,</span>
+</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a>                <span class="n">do_reverse_translate</span><span class="p">,</span>
+</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a>            <span class="p">)</span>
+</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a>
+</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype processed successfully&quot;</span><span class="p">)</span>
 </span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a>
-</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a>            <span class="c1"># create df with just the source code columns</span>
-</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a>            <span class="n">source_column_names</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;columns&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
-</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a>            <span class="n">source_df</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="n">source_column_names</span><span class="p">]</span>
-</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a>
-</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">source_df</span><span class="o">.</span><span class="n">columns</span><span class="p">)</span>
-</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">source_df</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
-</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a>
-</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a>                <span class="sa">f</span><span class="s2">&quot;Length of errors from _preprocess_source_concepts </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a>            <span class="p">)</span>
-</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a>            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a>                <span class="n">code_errors</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
-</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Length of code_errors </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">code_errors</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a>
-</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a>            <span class="c1"># Map source concepts codes to target codes</span>
-</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a>            <span class="c1"># if processing a source coding list with categorical data</span>
-</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a>            <span class="k">if</span> <span class="p">(</span>
-</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a>                <span class="s2">&quot;actions&quot;</span> <span class="ow">in</span> <span class="n">concept_set</span>
-</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a>                <span class="ow">and</span> <span class="s2">&quot;divide_col&quot;</span> <span class="ow">in</span> <span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;actions&quot;</span><span class="p">]</span>
-</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a>                <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">df</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span>
-</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a>            <span class="p">):</span>
-</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a>                <span class="n">divide_col</span> <span class="o">=</span> <span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;actions&quot;</span><span class="p">][</span><span class="s2">&quot;divide_col&quot;</span><span class="p">]</span>
-</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a>                <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Action: Dividing Table by </span><span class="si">{</span><span class="n">divide_col</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a>                <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;column into: </span><span class="si">{</span><span class="n">df</span><span class="p">[</span><span class="n">divide_col</span><span class="p">]</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a>                <span class="n">df_grp</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="n">divide_col</span><span class="p">)</span>
-</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a>                <span class="k">for</span> <span class="n">cat</span><span class="p">,</span> <span class="n">grp</span> <span class="ow">in</span> <span class="n">df_grp</span><span class="p">:</span>
-</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a>                    <span class="k">if</span> <span class="n">cat</span> <span class="o">==</span> <span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;category&quot;</span><span class="p">]:</span>
-</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a>                        <span class="n">grp</span> <span class="o">=</span> <span class="n">grp</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span>
-</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a>                            <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">divide_col</span><span class="p">]</span>
-</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a>                        <span class="p">)</span>  <span class="c1"># delete categorical column</span>
-</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a>                        <span class="n">source_df</span> <span class="o">=</span> <span class="n">grp</span><span class="p">[</span><span class="n">source_column_names</span><span class="p">]</span>
-</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a>                        <span class="n">trans_out</span> <span class="o">=</span> <span class="n">translate_codes</span><span class="p">(</span>
-</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a>                            <span class="n">source_df</span><span class="p">,</span>
-</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a>                            <span class="n">target_code_type</span><span class="o">=</span><span class="n">target_code_type</span><span class="p">,</span>
-</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a>                            <span class="n">concept_name</span><span class="o">=</span><span class="n">concept_set_name</span><span class="p">,</span>
-</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a>                            <span class="n">not_translate</span><span class="o">=</span><span class="n">not_translate</span><span class="p">,</span>
-</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a>                        <span class="p">)</span>
-</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a>                        <span class="n">trans_out</span> <span class="o">=</span> <span class="n">add_metadata</span><span class="p">(</span>
-</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a>                            <span class="n">codes</span><span class="o">=</span><span class="n">trans_out</span><span class="p">,</span>
-</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a>                            <span class="n">metadata</span><span class="o">=</span><span class="n">concept_set_metadata</span><span class="p">,</span>
-</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a>                            <span class="n">no_metadata</span><span class="o">=</span><span class="n">no_metadata</span><span class="p">,</span>
-</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a>                        <span class="p">)</span>
-</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a>                        <span class="n">out</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">out</span><span class="p">,</span> <span class="n">trans_out</span><span class="p">])</span>
-</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a>            <span class="k">else</span><span class="p">:</span>
-</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a>                <span class="n">source_df</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="n">source_column_names</span><span class="p">]</span>
-</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a>                <span class="n">trans_out</span> <span class="o">=</span> <span class="n">translate_codes</span><span class="p">(</span>
-</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a>                    <span class="n">source_df</span><span class="p">,</span>
-</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a>                    <span class="n">target_code_type</span><span class="o">=</span><span class="n">target_code_type</span><span class="p">,</span>
-</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a>                    <span class="n">concept_name</span><span class="o">=</span><span class="n">concept_set_name</span><span class="p">,</span>
-</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a>                    <span class="n">not_translate</span><span class="o">=</span><span class="n">not_translate</span><span class="p">,</span>
-</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a>                <span class="p">)</span>
-</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a>                <span class="n">trans_out</span> <span class="o">=</span> <span class="n">add_metadata</span><span class="p">(</span>
-</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a>                    <span class="n">codes</span><span class="o">=</span><span class="n">trans_out</span><span class="p">,</span>
-</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a>                    <span class="n">metadata</span><span class="o">=</span><span class="n">concept_set_metadata</span><span class="p">,</span>
-</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a>                    <span class="n">no_metadata</span><span class="o">=</span><span class="n">no_metadata</span><span class="p">,</span>
-</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a>                <span class="p">)</span>
-</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a>                <span class="n">out</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">out</span><span class="p">,</span> <span class="n">trans_out</span><span class="p">])</span>
-</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a>
-</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">code_errors</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The map processing has </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">code_errors</span><span class="p">)</span><span class="si">}</span><span class="s2"> errors&quot;</span><span class="p">)</span>
-</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a>        <span class="n">error_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span> <span class="o">/</span> <span class="s2">&quot;errors&quot;</span>
-</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a>        <span class="n">error_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a>        <span class="n">error_filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">-code-errors.csv&quot;</span>
-</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a>        <span class="n">_write_code_errors</span><span class="p">(</span><span class="n">code_errors</span><span class="p">,</span> <span class="n">error_path</span> <span class="o">/</span> <span class="n">error_filename</span><span class="p">)</span>
-</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a>
-</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a>    <span class="c1"># Check there is output from processing</span>
-</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">out</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No output after map processing&quot;</span><span class="p">)</span>
-</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a>        <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span>
-</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a>            <span class="sa">f</span><span class="s2">&quot;No output after map processing, check config </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a>        <span class="p">)</span>
-</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a>
-</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a>    <span class="c1"># final processing</span>
-</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a>    <span class="n">out</span> <span class="o">=</span> <span class="n">out</span><span class="o">.</span><span class="n">reset_index</span><span class="p">(</span><span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a>    <span class="n">out</span> <span class="o">=</span> <span class="n">out</span><span class="o">.</span><span class="n">drop_duplicates</span><span class="p">(</span><span class="n">subset</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
-</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a>    <span class="n">out</span> <span class="o">=</span> <span class="n">out</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
-</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a>
-</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a>    <span class="c1"># out_count = len(out.index)</span>
-</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a>    <span class="c1"># added metadata</span>
-</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a>    <span class="c1"># Loop over each source_concept_type and perform the left join on all columns apart from source code columns</span>
-</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a>    <span class="c1"># result_list = []</span>
-</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a>    <span class="c1"># for files in phenotype[&quot;concept_sets&quot;]:</span>
-</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a>    <span class="c1">#     concept_set_name = files[&quot;name&quot;]</span>
-</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a>    <span class="c1">#     for concept_set in files[&quot;files&quot;]:</span>
-</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a>    <span class="c1">#         source_column_names = list(concept_set[&quot;columns&quot;].keys())</span>
-</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a>    <span class="c1">#         for source_concept_type in source_column_names:</span>
-</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a>    <span class="c1">#             # Filter output based on the current source_concept_type</span>
-</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a>    <span class="c1">#             out_filtered_df = out[out[&quot;SOURCE_CONCEPT_TYPE&quot;] == source_concept_type]</span>
-</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a>    <span class="c1">#             filtered_count = len(out_filtered_df.index)</span>
-</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a>
-</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a>    <span class="c1">#             # Remove the source type columns except the current type will leave the metadata and the join</span>
-</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a>    <span class="c1">#             remove_types = [</span>
-</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a>    <span class="c1">#                 type for type in source_column_names if type != source_concept_type</span>
-</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a>    <span class="c1">#             ]</span>
-</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a>    <span class="c1">#             metadata_df = df.drop(columns=remove_types)</span>
-</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a>    <span class="c1">#             metadata_df = metadata_df.rename(</span>
-</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a>    <span class="c1">#                 columns={source_concept_type: &quot;SOURCE_CONCEPT&quot;}</span>
-</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a>    <span class="c1">#             )</span>
-</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a>    <span class="c1">#             metadata_df_count = len(metadata_df.index)</span>
+</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a>
+</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_map_target_code_type</span><span class="p">(</span>
+</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a>    <span class="n">phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
+</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a>    <span class="n">phenotype</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
+</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a>    <span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a>    <span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a>    <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a>    <span class="n">do_reverse_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a><span class="p">):</span>
+</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Target coding format: </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a>    <span class="n">concepts_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONCEPTS_DIR</span>
+</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a>    <span class="c1"># Create output dataframe</span>
+</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a>    <span class="n">out</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">([])</span>
+</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a>    <span class="n">code_errors</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a>
+</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a>    <span class="c1"># Process each folder in codes section</span>
+</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a>    <span class="k">for</span> <span class="n">files</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;concept_sets&quot;</span><span class="p">]:</span>
+</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a>        <span class="n">concept_set_name</span> <span class="o">=</span> <span class="n">files</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span>
+</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a>        <span class="k">if</span> <span class="s2">&quot;metadata&quot;</span> <span class="ow">in</span> <span class="n">files</span><span class="p">:</span>
+</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a>            <span class="n">concept_set_metadata</span> <span class="o">=</span> <span class="n">files</span><span class="p">[</span><span class="s2">&quot;metadata&quot;</span><span class="p">]</span>
+</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a>            <span class="n">concept_set_metadata</span> <span class="o">=</span> <span class="p">{}</span>
+</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a>        <span class="k">for</span> <span class="n">concept_set</span> <span class="ow">in</span> <span class="n">files</span><span class="p">[</span><span class="s2">&quot;files&quot;</span><span class="p">]:</span>
+</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;--- </span><span class="si">{</span><span class="n">concept_set</span><span class="si">}</span><span class="s2"> ---&quot;</span><span class="p">)</span>
+</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a>
+</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a>            <span class="c1"># Load code file</span>
+</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a>            <span class="n">codes_file_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">concepts_path</span> <span class="o">/</span> <span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;path&quot;</span><span class="p">])</span>
+</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a>            <span class="n">df</span> <span class="o">=</span> <span class="n">_read_table_file</span><span class="p">(</span><span class="n">codes_file_path</span><span class="p">)</span>
+</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a>
+</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a>            <span class="c1"># process structural actions</span>
+</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a>            <span class="n">df</span> <span class="o">=</span> <span class="n">_process_actions</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">concept_set</span><span class="p">)</span>
+</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a>
+</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a>            <span class="c1"># preprocessing and validate of source concepts</span>
+</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Processing and validating source concept codes&quot;</span><span class="p">)</span>
+</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a>            <span class="n">df</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">_preprocess_source_concepts</span><span class="p">(</span>
+</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a>                <span class="n">df</span><span class="p">,</span>
+</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a>                <span class="n">concept_set</span><span class="p">,</span>
+</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a>                <span class="n">codes_file_path</span><span class="p">,</span>
+</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a>            <span class="p">)</span>
+</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a>
+</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a>            <span class="c1"># create df with just the source code columns</span>
+</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a>            <span class="n">source_column_names</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;columns&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
+</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a>            <span class="n">source_df</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="n">source_column_names</span><span class="p">]</span>
+</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a>
+</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">source_df</span><span class="o">.</span><span class="n">columns</span><span class="p">)</span>
+</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">source_df</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
+</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a>
+</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a>                <span class="sa">f</span><span class="s2">&quot;Length of errors from _preprocess_source_concepts </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a>            <span class="p">)</span>
+</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a>            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a>                <span class="n">code_errors</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
+</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Length of code_errors </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">code_errors</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a>
+</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a>            <span class="c1"># Map source concepts codes to target codes</span>
+</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a>            <span class="c1"># if processing a source coding list with categorical data</span>
+</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a>            <span class="k">if</span> <span class="p">(</span>
+</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a>                <span class="s2">&quot;actions&quot;</span> <span class="ow">in</span> <span class="n">concept_set</span>
+</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a>                <span class="ow">and</span> <span class="s2">&quot;divide_col&quot;</span> <span class="ow">in</span> <span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;actions&quot;</span><span class="p">]</span>
+</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a>                <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">df</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span>
+</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a>            <span class="p">):</span>
+</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a>                <span class="n">divide_col</span> <span class="o">=</span> <span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;actions&quot;</span><span class="p">][</span><span class="s2">&quot;divide_col&quot;</span><span class="p">]</span>
+</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a>                <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Action: Dividing Table by </span><span class="si">{</span><span class="n">divide_col</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a>                <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;column into: </span><span class="si">{</span><span class="n">df</span><span class="p">[</span><span class="n">divide_col</span><span class="p">]</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a>                <span class="n">df_grp</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="n">divide_col</span><span class="p">)</span>
+</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a>                <span class="k">for</span> <span class="n">cat</span><span class="p">,</span> <span class="n">grp</span> <span class="ow">in</span> <span class="n">df_grp</span><span class="p">:</span>
+</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a>                    <span class="k">if</span> <span class="n">cat</span> <span class="o">==</span> <span class="n">concept_set</span><span class="p">[</span><span class="s2">&quot;category&quot;</span><span class="p">]:</span>
+</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a>                        <span class="n">grp</span> <span class="o">=</span> <span class="n">grp</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span>
+</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a>                            <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">divide_col</span><span class="p">]</span>
+</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a>                        <span class="p">)</span>  <span class="c1"># delete categorical column</span>
+</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a>                        <span class="n">source_df</span> <span class="o">=</span> <span class="n">grp</span><span class="p">[</span><span class="n">source_column_names</span><span class="p">]</span>
+</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a>                        <span class="n">trans_out</span> <span class="o">=</span> <span class="n">translate_codes</span><span class="p">(</span>
+</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a>                            <span class="n">source_df</span><span class="p">,</span>
+</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a>                            <span class="n">target_code_type</span><span class="o">=</span><span class="n">target_code_type</span><span class="p">,</span>
+</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a>                            <span class="n">concept_name</span><span class="o">=</span><span class="n">concept_set_name</span><span class="p">,</span>
+</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a>                            <span class="n">not_translate</span><span class="o">=</span><span class="n">not_translate</span><span class="p">,</span>
+</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a>                            <span class="n">do_reverse_translate</span><span class="o">=</span><span class="n">do_reverse_translate</span><span class="p">,</span>
+</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a>                        <span class="p">)</span>
+</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a>                        <span class="n">trans_out</span> <span class="o">=</span> <span class="n">add_metadata</span><span class="p">(</span>
+</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a>                            <span class="n">codes</span><span class="o">=</span><span class="n">trans_out</span><span class="p">,</span>
+</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a>                            <span class="n">metadata</span><span class="o">=</span><span class="n">concept_set_metadata</span><span class="p">,</span>
+</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a>                            <span class="n">no_metadata</span><span class="o">=</span><span class="n">no_metadata</span><span class="p">,</span>
+</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a>                        <span class="p">)</span>
+</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a>                        <span class="n">out</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">out</span><span class="p">,</span> <span class="n">trans_out</span><span class="p">])</span>
+</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a>            <span class="k">else</span><span class="p">:</span>
+</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a>                <span class="n">source_df</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="n">source_column_names</span><span class="p">]</span>
+</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a>                <span class="n">trans_out</span> <span class="o">=</span> <span class="n">translate_codes</span><span class="p">(</span>
+</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a>                    <span class="n">source_df</span><span class="p">,</span>
+</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a>                    <span class="n">target_code_type</span><span class="o">=</span><span class="n">target_code_type</span><span class="p">,</span>
+</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a>                    <span class="n">concept_name</span><span class="o">=</span><span class="n">concept_set_name</span><span class="p">,</span>
+</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a>                    <span class="n">not_translate</span><span class="o">=</span><span class="n">not_translate</span><span class="p">,</span>
+</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a>                    <span class="n">do_reverse_translate</span><span class="o">=</span><span class="n">do_reverse_translate</span><span class="p">,</span>
+</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a>                <span class="p">)</span>
+</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a>                <span class="n">trans_out</span> <span class="o">=</span> <span class="n">add_metadata</span><span class="p">(</span>
+</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a>                    <span class="n">codes</span><span class="o">=</span><span class="n">trans_out</span><span class="p">,</span>
+</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a>                    <span class="n">metadata</span><span class="o">=</span><span class="n">concept_set_metadata</span><span class="p">,</span>
+</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a>                    <span class="n">no_metadata</span><span class="o">=</span><span class="n">no_metadata</span><span class="p">,</span>
+</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a>                <span class="p">)</span>
+</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a>                <span class="n">out</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">out</span><span class="p">,</span> <span class="n">trans_out</span><span class="p">])</span>
 </span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a>
-</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a>    <span class="c1"># Perform the left join with df2 on SOURCE_CONCEPT to add the metadata</span>
-</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a>    <span class="c1"># result = pd.merge(out_filtered_df, metadata_df, how=&quot;left&quot;, on=&quot;SOURCE_CONCEPT&quot;)</span>
-</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a>    <span class="c1"># result_count = len(result.index)</span>
-</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a>
-</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a>    <span class="c1">#             _logger.debug(</span>
-</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a>    <span class="c1">#                 f&quot;Adding metadata for {source_concept_type}: out_count {out_count}, filtered_count {filtered_count}, metadata_df_count {metadata_df_count}, result_count {result_count}&quot;</span>
-</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a>    <span class="c1">#             )</span>
-</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a>
-</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a>    <span class="c1">#             # Append the result to the result_list</span>
-</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a>    <span class="c1">#             result_list.append(result)</span>
-</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a>
-</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a>    <span class="c1"># Concatenate all the results into a single DataFrame</span>
-</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a>    <span class="c1"># final_out = pd.concat(result_list, ignore_index=True)</span>
-</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a>    <span class="c1"># final_out = final_out.drop_duplicates(subset=[&quot;CONCEPT_SET&quot;, &quot;CONCEPT&quot;])</span>
-</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a>    <span class="c1"># _logger.debug(</span>
-</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a>    <span class="c1">#     f&quot;Check metadata processing counts: before {len(out.index)} : after {len(final_out.index)}&quot;</span>
-</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a>    <span class="c1"># )</span>
-</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a>
-</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a>    <span class="c1"># Save output to map directory</span>
-</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a>    <span class="n">output_filename</span> <span class="o">=</span> <span class="n">target_code_type</span> <span class="o">+</span> <span class="s2">&quot;.csv&quot;</span>
-</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a>    <span class="n">map_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span> <span class="o">/</span> <span class="n">output_filename</span>
-</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a>    <span class="n">out</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">map_path</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
-</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Saved mapped concepts to </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">map_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a>
-</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a>    <span class="c1"># save concept sets as separate files</span>
-</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a>    <span class="n">concept_set_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CSV_PATH</span> <span class="o">/</span> <span class="n">target_code_type</span>
-</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a>
-</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a>    <span class="c1"># empty the concept-set directory except for hiddle files, e.g. .git</span>
-</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a>    <span class="k">if</span> <span class="n">concept_set_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a>        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">concept_set_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">():</span>
-</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a>            <span class="k">if</span> <span class="ow">not</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">):</span>
-</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a>                <span class="n">item</span><span class="o">.</span><span class="n">unlink</span><span class="p">()</span>
-</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a>        <span class="n">concept_set_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a>
-</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a>    <span class="c1"># write each concept as a separate file</span>
-</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a>    <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">concept</span> <span class="ow">in</span> <span class="n">out</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">):</span>
-</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a>        <span class="n">concept</span> <span class="o">=</span> <span class="n">concept</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">)</span>  <span class="c1"># sort rows</span>
-</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a>        <span class="n">concept</span> <span class="o">=</span> <span class="n">concept</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">how</span><span class="o">=</span><span class="s2">&quot;all&quot;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>  <span class="c1"># remove empty cols</span>
-</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a>        <span class="n">concept</span> <span class="o">=</span> <span class="n">concept</span><span class="o">.</span><span class="n">reindex</span><span class="p">(</span>
-</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a>            <span class="nb">sorted</span><span class="p">(</span><span class="n">concept</span><span class="o">.</span><span class="n">columns</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span>
-</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a>        <span class="p">)</span>  <span class="c1"># sort cols alphabetically</span>
-</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a>        <span class="n">filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">.csv&quot;</span>
-</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a>        <span class="n">concept_path</span> <span class="o">=</span> <span class="n">concept_set_path</span> <span class="o">/</span> <span class="n">filename</span>
-</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a>        <span class="n">concept</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">concept_path</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">code_errors</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The map processing has </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">code_errors</span><span class="p">)</span><span class="si">}</span><span class="s2"> errors&quot;</span><span class="p">)</span>
+</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a>        <span class="n">error_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span> <span class="o">/</span> <span class="s2">&quot;errors&quot;</span>
+</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a>        <span class="n">error_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a>        <span class="n">error_filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">-code-errors.csv&quot;</span>
+</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a>        <span class="n">_write_code_errors</span><span class="p">(</span><span class="n">code_errors</span><span class="p">,</span> <span class="n">error_path</span> <span class="o">/</span> <span class="n">error_filename</span><span class="p">)</span>
+</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a>
+</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a>    <span class="c1"># Check there is output from processing</span>
+</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">out</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No output after map processing&quot;</span><span class="p">)</span>
+</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a>        <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span>
+</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a>            <span class="sa">f</span><span class="s2">&quot;No output after map processing, check config </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a>        <span class="p">)</span>
+</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a>
+</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a>    <span class="c1"># final processing</span>
+</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a>    <span class="n">out</span> <span class="o">=</span> <span class="n">out</span><span class="o">.</span><span class="n">reset_index</span><span class="p">(</span><span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a>    <span class="n">out</span> <span class="o">=</span> <span class="n">out</span><span class="o">.</span><span class="n">drop_duplicates</span><span class="p">(</span><span class="n">subset</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
+</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a>    <span class="n">out</span> <span class="o">=</span> <span class="n">out</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
+</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a>
+</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a>    <span class="c1"># out_count = len(out.index)</span>
+</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a>    <span class="c1"># added metadata</span>
+</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a>    <span class="c1"># Loop over each source_concept_type and perform the left join on all columns apart from source code columns</span>
+</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a>    <span class="c1"># result_list = []</span>
+</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a>    <span class="c1"># for files in phenotype[&quot;concept_sets&quot;]:</span>
+</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a>    <span class="c1">#     concept_set_name = files[&quot;name&quot;]</span>
+</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a>    <span class="c1">#     for concept_set in files[&quot;files&quot;]:</span>
+</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a>    <span class="c1">#         source_column_names = list(concept_set[&quot;columns&quot;].keys())</span>
+</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a>    <span class="c1">#         for source_concept_type in source_column_names:</span>
+</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a>    <span class="c1">#             # Filter output based on the current source_concept_type</span>
+</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a>    <span class="c1">#             out_filtered_df = out[out[&quot;SOURCE_CONCEPT_TYPE&quot;] == source_concept_type]</span>
+</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a>    <span class="c1">#             filtered_count = len(out_filtered_df.index)</span>
+</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a>
+</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a>    <span class="c1">#             # Remove the source type columns except the current type will leave the metadata and the join</span>
+</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a>    <span class="c1">#             remove_types = [</span>
+</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a>    <span class="c1">#                 type for type in source_column_names if type != source_concept_type</span>
+</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a>    <span class="c1">#             ]</span>
+</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a>    <span class="c1">#             metadata_df = df.drop(columns=remove_types)</span>
+</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a>    <span class="c1">#             metadata_df = metadata_df.rename(</span>
+</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a>    <span class="c1">#                 columns={source_concept_type: &quot;SOURCE_CONCEPT&quot;}</span>
+</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a>    <span class="c1">#             )</span>
+</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a>    <span class="c1">#             metadata_df_count = len(metadata_df.index)</span>
+</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a>
+</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a>    <span class="c1"># Perform the left join with df2 on SOURCE_CONCEPT to add the metadata</span>
+</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a>    <span class="c1"># result = pd.merge(out_filtered_df, metadata_df, how=&quot;left&quot;, on=&quot;SOURCE_CONCEPT&quot;)</span>
+</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a>    <span class="c1"># result_count = len(result.index)</span>
 </span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a>
-</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a>    <span class="n">write_vocab_version</span><span class="p">(</span><span class="n">phen_path</span><span class="p">)</span>
-</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a>
-</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype processed target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a>    <span class="c1">#             _logger.debug(</span>
+</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a>    <span class="c1">#                 f&quot;Adding metadata for {source_concept_type}: out_count {out_count}, filtered_count {filtered_count}, metadata_df_count {metadata_df_count}, result_count {result_count}&quot;</span>
+</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a>    <span class="c1">#             )</span>
 </span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a>
-</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a>
-</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a><span class="c1"># Add metadata dict to each row of Df codes</span>
-</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a><span class="k">def</span><span class="w"> </span><span class="nf">add_metadata</span><span class="p">(</span>
-</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a>    <span class="n">codes</span><span class="p">:</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">,</span>
-</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a>    <span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
-</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a>    <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
-</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Add concept set metadata, stored as a dictionary, to each concept row&quot;&quot;&quot;</span>
-</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a>
-</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">no_metadata</span><span class="p">:</span>
-</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a>        <span class="k">for</span> <span class="n">meta_name</span><span class="p">,</span> <span class="n">meta_value</span> <span class="ow">in</span> <span class="n">metadata</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
-</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a>            <span class="n">codes</span><span class="p">[</span><span class="n">meta_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">meta_value</span>
-</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a>                <span class="sa">f</span><span class="s2">&quot;Adding metadata for concept set: metadata name </span><span class="si">{</span><span class="n">meta_name</span><span class="si">}</span><span class="s2">, metadata value </span><span class="si">{</span><span class="n">meta_value</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a>            <span class="p">)</span>
+</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a>    <span class="c1">#             # Append the result to the result_list</span>
+</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a>    <span class="c1">#             result_list.append(result)</span>
+</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a>
+</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a>    <span class="c1"># Concatenate all the results into a single DataFrame</span>
+</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a>    <span class="c1"># final_out = pd.concat(result_list, ignore_index=True)</span>
+</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a>    <span class="c1"># final_out = final_out.drop_duplicates(subset=[&quot;CONCEPT_SET&quot;, &quot;CONCEPT&quot;])</span>
+</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a>    <span class="c1"># _logger.debug(</span>
+</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a>    <span class="c1">#     f&quot;Check metadata processing counts: before {len(out.index)} : after {len(final_out.index)}&quot;</span>
+</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a>    <span class="c1"># )</span>
+</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a>
+</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a>    <span class="c1"># Save output to map directory</span>
+</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a>    <span class="n">output_filename</span> <span class="o">=</span> <span class="n">target_code_type</span> <span class="o">+</span> <span class="s2">&quot;.csv&quot;</span>
+</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a>    <span class="n">map_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span> <span class="o">/</span> <span class="n">output_filename</span>
+</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a>    <span class="n">out</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">map_path</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Saved mapped concepts to </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">map_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
 </span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a>
-</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a>    <span class="k">return</span> <span class="n">codes</span>
-</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a>
+</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a>    <span class="c1"># save concept sets as separate files</span>
+</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a>    <span class="n">concept_set_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CSV_PATH</span> <span class="o">/</span> <span class="n">target_code_type</span>
 </span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a>
-</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_generate_version_tag</span><span class="p">(</span>
-</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a>    <span class="n">repo</span><span class="p">:</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="p">,</span> <span class="n">increment</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">DEFAULT_VERSION_INC</span><span class="p">,</span> <span class="n">use_v_prefix</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a>    <span class="c1"># Get all valid semantic version tags</span>
-</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a>    <span class="n">versions</span> <span class="o">=</span> <span class="p">[]</span>
-</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a>    <span class="k">for</span> <span class="n">tag</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">tags</span><span class="p">:</span>
-</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a>        <span class="k">if</span> <span class="n">tag</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;v&quot;</span><span class="p">):</span>
-</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a>            <span class="n">tag_name</span> <span class="o">=</span> <span class="n">tag</span><span class="o">.</span><span class="n">name</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>  <span class="c1"># Remove the first character</span>
-</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a>            <span class="n">tag_name</span> <span class="o">=</span> <span class="n">tag</span><span class="o">.</span><span class="n">name</span>
-</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a>        <span class="k">if</span> <span class="n">semver</span><span class="o">.</span><span class="n">Version</span><span class="o">.</span><span class="n">is_valid</span><span class="p">(</span><span class="n">tag_name</span><span class="p">):</span>
-</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a>            <span class="n">versions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">semver</span><span class="o">.</span><span class="n">Version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">tag_name</span><span class="p">))</span>
-</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a>
-</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Versions: </span><span class="si">{</span><span class="n">versions</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a>    <span class="c1"># Determine the next version</span>
-</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">versions</span><span class="p">:</span>
-</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a>        <span class="n">new_version</span> <span class="o">=</span> <span class="n">semver</span><span class="o">.</span><span class="n">Version</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
-</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a>        <span class="n">latest_version</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">versions</span><span class="p">)</span>
-</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a>        <span class="k">if</span> <span class="n">increment</span> <span class="o">==</span> <span class="s2">&quot;major&quot;</span><span class="p">:</span>
-</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a>            <span class="n">new_version</span> <span class="o">=</span> <span class="n">latest_version</span><span class="o">.</span><span class="n">bump_major</span><span class="p">()</span>
-</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a>        <span class="k">elif</span> <span class="n">increment</span> <span class="o">==</span> <span class="s2">&quot;minor&quot;</span><span class="p">:</span>
-</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a>            <span class="n">new_version</span> <span class="o">=</span> <span class="n">latest_version</span><span class="o">.</span><span class="n">bump_minor</span><span class="p">()</span>
-</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a>            <span class="n">new_version</span> <span class="o">=</span> <span class="n">latest_version</span><span class="o">.</span><span class="n">bump_patch</span><span class="p">()</span>
-</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a>
-</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a>    <span class="c1"># Create the new tag</span>
-</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a>    <span class="n">new_version_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;v</span><span class="si">{</span><span class="n">new_version</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">use_v_prefix</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">new_version</span><span class="p">)</span>
-</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a>
-</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a>    <span class="k">return</span> <span class="n">new_version_str</span>
-</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a>
+</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a>    <span class="c1"># empty the concept-set directory except for hiddle files, e.g. .git</span>
+</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a>    <span class="k">if</span> <span class="n">concept_set_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a>        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">concept_set_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">():</span>
+</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a>            <span class="k">if</span> <span class="ow">not</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">):</span>
+</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a>                <span class="n">item</span><span class="o">.</span><span class="n">unlink</span><span class="p">()</span>
+</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a>        <span class="n">concept_set_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a>
+</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a>    <span class="c1"># write each concept as a separate file</span>
+</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a>    <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">concept</span> <span class="ow">in</span> <span class="n">out</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">):</span>
+</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a>        <span class="n">concept</span> <span class="o">=</span> <span class="n">concept</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">)</span>  <span class="c1"># sort rows</span>
+</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a>        <span class="n">concept</span> <span class="o">=</span> <span class="n">concept</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">how</span><span class="o">=</span><span class="s2">&quot;all&quot;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>  <span class="c1"># remove empty cols</span>
+</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a>        <span class="n">concept</span> <span class="o">=</span> <span class="n">concept</span><span class="o">.</span><span class="n">reindex</span><span class="p">(</span>
+</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a>            <span class="nb">sorted</span><span class="p">(</span><span class="n">concept</span><span class="o">.</span><span class="n">columns</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span>
+</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a>        <span class="p">)</span>  <span class="c1"># sort cols alphabetically</span>
+</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a>        <span class="n">filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">.csv&quot;</span>
+</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a>        <span class="n">concept_path</span> <span class="o">=</span> <span class="n">concept_set_path</span> <span class="o">/</span> <span class="n">filename</span>
+</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a>        <span class="n">concept</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">concept_path</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a>
+</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a>    <span class="n">write_vocab_version</span><span class="p">(</span><span class="n">phen_path</span><span class="p">)</span>
+</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a>
+</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype processed target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a>
+</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a>
+</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a><span class="c1"># Add metadata dict to each row of Df codes</span>
+</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a><span class="k">def</span><span class="w"> </span><span class="nf">add_metadata</span><span class="p">(</span>
+</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a>    <span class="n">codes</span><span class="p">:</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">,</span>
+</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a>    <span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
+</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a>    <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
+</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Add concept set metadata, stored as a dictionary, to each concept row&quot;&quot;&quot;</span>
 </span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a>
-</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a><span class="k">def</span><span class="w"> </span><span class="nf">publish</span><span class="p">(</span>
-</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">remote_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">increment</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">DEFAULT_VERSION_INC</span>
-</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a><span class="p">):</span>
-</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Publishes updates to the phenotype by commiting all changes to the repo directory&quot;&quot;&quot;</span>
-</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a>
-</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a>    <span class="c1"># Validate config</span>
-</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">no_metadata</span><span class="p">:</span>
+</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a>        <span class="k">for</span> <span class="n">meta_name</span><span class="p">,</span> <span class="n">meta_value</span> <span class="ow">in</span> <span class="n">metadata</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a>            <span class="n">codes</span><span class="p">[</span><span class="n">meta_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">meta_value</span>
+</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a>                <span class="sa">f</span><span class="s2">&quot;Adding metadata for concept set: metadata name </span><span class="si">{</span><span class="n">meta_name</span><span class="si">}</span><span class="s2">, metadata value </span><span class="si">{</span><span class="n">meta_value</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a>            <span class="p">)</span>
+</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a>
+</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a>    <span class="k">return</span> <span class="n">codes</span>
 </span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a>
-</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a>    <span class="c1"># load git repo and set the branch</span>
-</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a>    <span class="n">repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="p">(</span><span class="n">phen_path</span><span class="p">)</span>
-</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a>    <span class="k">if</span> <span class="n">DEFAULT_GIT_BRANCH</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">branches</span><span class="p">:</span>
-</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a>        <span class="n">main_branch</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">heads</span><span class="p">[</span><span class="n">DEFAULT_GIT_BRANCH</span><span class="p">]</span>
-</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a>        <span class="n">main_branch</span><span class="o">.</span><span class="n">checkout</span><span class="p">()</span>
-</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a>        <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
-</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a>            <span class="sa">f</span><span class="s2">&quot;Phen repo does not contain the default branch </span><span class="si">{</span><span class="n">DEFAULT_GIT_BRANCH</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a>        <span class="p">)</span>
-</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a>
-</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a>    <span class="c1"># check if any changes to publish</span>
-</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">repo</span><span class="o">.</span><span class="n">is_dirty</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">repo</span><span class="o">.</span><span class="n">untracked_files</span><span class="p">:</span>
-</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a>        <span class="k">if</span> <span class="n">remote_url</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
-</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;First publish to remote url </span><span class="si">{</span><span class="n">remote_url</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Nothing to publish, no changes to the repo&quot;</span><span class="p">)</span>
-</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a>            <span class="k">return</span>
-</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a>
-</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a>    <span class="c1"># get next version</span>
-</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a>    <span class="n">new_version_str</span> <span class="o">=</span> <span class="n">_generate_version_tag</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">increment</span><span class="p">)</span>
-</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New version: </span><span class="si">{</span><span class="n">new_version_str</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a>
-</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a>    <span class="c1"># Write version in configuration file</span>
-</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a>
+</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_generate_version_tag</span><span class="p">(</span>
+</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a>    <span class="n">repo</span><span class="p">:</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="p">,</span> <span class="n">increment</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">DEFAULT_VERSION_INC</span><span class="p">,</span> <span class="n">use_v_prefix</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a>    <span class="c1"># Get all valid semantic version tags</span>
+</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a>    <span class="n">versions</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a>    <span class="k">for</span> <span class="n">tag</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">tags</span><span class="p">:</span>
+</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a>        <span class="k">if</span> <span class="n">tag</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;v&quot;</span><span class="p">):</span>
+</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a>            <span class="n">tag_name</span> <span class="o">=</span> <span class="n">tag</span><span class="o">.</span><span class="n">name</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>  <span class="c1"># Remove the first character</span>
+</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a>            <span class="n">tag_name</span> <span class="o">=</span> <span class="n">tag</span><span class="o">.</span><span class="n">name</span>
+</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a>        <span class="k">if</span> <span class="n">semver</span><span class="o">.</span><span class="n">Version</span><span class="o">.</span><span class="n">is_valid</span><span class="p">(</span><span class="n">tag_name</span><span class="p">):</span>
+</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a>            <span class="n">versions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">semver</span><span class="o">.</span><span class="n">Version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">tag_name</span><span class="p">))</span>
+</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a>
+</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Versions: </span><span class="si">{</span><span class="n">versions</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a>    <span class="c1"># Determine the next version</span>
+</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">versions</span><span class="p">:</span>
+</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a>        <span class="n">new_version</span> <span class="o">=</span> <span class="n">semver</span><span class="o">.</span><span class="n">Version</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a>        <span class="n">latest_version</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">versions</span><span class="p">)</span>
+</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a>        <span class="k">if</span> <span class="n">increment</span> <span class="o">==</span> <span class="s2">&quot;major&quot;</span><span class="p">:</span>
+</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a>            <span class="n">new_version</span> <span class="o">=</span> <span class="n">latest_version</span><span class="o">.</span><span class="n">bump_major</span><span class="p">()</span>
+</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a>        <span class="k">elif</span> <span class="n">increment</span> <span class="o">==</span> <span class="s2">&quot;minor&quot;</span><span class="p">:</span>
+</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a>            <span class="n">new_version</span> <span class="o">=</span> <span class="n">latest_version</span><span class="o">.</span><span class="n">bump_minor</span><span class="p">()</span>
+</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a>            <span class="n">new_version</span> <span class="o">=</span> <span class="n">latest_version</span><span class="o">.</span><span class="n">bump_patch</span><span class="p">()</span>
 </span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a>
-</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a>    <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;version&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_version_str</span>
-</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a>    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a>        <span class="n">yaml</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
-</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a>            <span class="n">config</span><span class="p">,</span>
-</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a>            <span class="n">file</span><span class="p">,</span>
-</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a>            <span class="n">Dumper</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">QuotedDumper</span><span class="p">,</span>
-</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a>            <span class="n">default_flow_style</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a>            <span class="n">sort_keys</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a>            <span class="n">default_style</span><span class="o">=</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span>
-</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a>        <span class="p">)</span>
+</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a>    <span class="c1"># Create the new tag</span>
+</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a>    <span class="n">new_version_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;v</span><span class="si">{</span><span class="n">new_version</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">use_v_prefix</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">new_version</span><span class="p">)</span>
+</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a>
+</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a>    <span class="k">return</span> <span class="n">new_version_str</span>
+</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a>
+</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a>
+</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a><span class="k">def</span><span class="w"> </span><span class="nf">publish</span><span class="p">(</span>
+</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">remote_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">increment</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">DEFAULT_VERSION_INC</span>
+</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a><span class="p">):</span>
+</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Publishes updates to the phenotype by commiting all changes to the repo directory&quot;&quot;&quot;</span>
 </span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a>
-</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a>    <span class="c1"># Add and commit changes to repo including version updates</span>
-</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a>    <span class="n">commit_message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Committing updates to phenotype </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;--all&quot;</span><span class="p">)</span>
-</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">commit</span><span class="p">(</span><span class="n">commit_message</span><span class="p">)</span>
-</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a>
-</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a>    <span class="c1"># Add tag to the repo</span>
-</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">create_tag</span><span class="p">(</span><span class="n">new_version_str</span><span class="p">)</span>
-</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a>
-</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a>    <span class="c1"># push to origin if a remote repo</span>
-</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a>    <span class="k">if</span> <span class="n">remote_url</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
-</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a>        <span class="n">git_url</span> <span class="o">=</span> <span class="n">_construct_git_url</span><span class="p">(</span><span class="n">remote_url</span><span class="p">)</span>
-</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">create_remote</span><span class="p">(</span><span class="s2">&quot;origin&quot;</span><span class="p">,</span> <span class="n">git_url</span><span class="p">)</span>
-</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a>
-</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a>    <span class="k">try</span><span class="p">:</span>
-</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a>        <span class="k">if</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
-</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Remote &#39;origin&#39; is set </span><span class="si">{</span><span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="o">.</span><span class="n">origin</span><span class="o">.</span><span class="n">url</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a>            <span class="n">origin</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="o">.</span><span class="n">origin</span>
-</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pushing main branch to remote repo&quot;</span><span class="p">)</span>
-</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a>            <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="s2">&quot;--set-upstream&quot;</span><span class="p">,</span> <span class="s2">&quot;origin&quot;</span><span class="p">,</span> <span class="s2">&quot;main&quot;</span><span class="p">)</span>
-</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pushing version tags to remote git repo&quot;</span><span class="p">)</span>
-</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a>            <span class="n">origin</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="n">tags</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Changes pushed to &#39;origin&#39;&quot;</span><span class="p">)</span>
-</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Remote &#39;origin&#39; is not set&quot;</span><span class="p">)</span>
-</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a>    <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
-</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a>        <span class="n">tag_ref</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">tags</span><span class="p">[</span><span class="n">new_version_str</span><span class="p">]</span>
-</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">delete_tag</span><span class="p">(</span><span class="n">tag_ref</span><span class="p">)</span>
-</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">reset</span><span class="p">(</span><span class="s2">&quot;--soft&quot;</span><span class="p">,</span> <span class="s2">&quot;HEAD~1&quot;</span><span class="p">)</span>
-</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a>        <span class="k">raise</span> <span class="n">e</span>
-</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a>
-</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype published successfully&quot;</span><span class="p">)</span>
-</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a>
-</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a>
-</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a><span class="k">def</span><span class="w"> </span><span class="nf">export</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
-</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Exports a phen repo at a specific tagged version into a target directory&quot;&quot;&quot;</span>
-</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Exporting phenotype </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a>
-</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a>    <span class="c1"># validate configuration</span>
-</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a>
-</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a>    <span class="c1"># load configuration</span>
-</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a>
-</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a>    <span class="n">map_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
-</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">map_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Map path does not exist &#39;</span><span class="si">{</span><span class="n">map_path</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
+</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a>    <span class="c1"># Validate config</span>
+</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a>
+</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a>    <span class="c1"># load git repo and set the branch</span>
+</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a>    <span class="n">repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="p">(</span><span class="n">phen_path</span><span class="p">)</span>
+</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a>    <span class="k">if</span> <span class="n">DEFAULT_GIT_BRANCH</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">branches</span><span class="p">:</span>
+</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a>        <span class="n">main_branch</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">heads</span><span class="p">[</span><span class="n">DEFAULT_GIT_BRANCH</span><span class="p">]</span>
+</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a>        <span class="n">main_branch</span><span class="o">.</span><span class="n">checkout</span><span class="p">()</span>
+</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a>        <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
+</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a>            <span class="sa">f</span><span class="s2">&quot;Phen repo does not contain the default branch </span><span class="si">{</span><span class="n">DEFAULT_GIT_BRANCH</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a>        <span class="p">)</span>
+</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a>
+</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a>    <span class="c1"># check if any changes to publish</span>
+</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">repo</span><span class="o">.</span><span class="n">is_dirty</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">repo</span><span class="o">.</span><span class="n">untracked_files</span><span class="p">:</span>
+</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a>        <span class="k">if</span> <span class="n">remote_url</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
+</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;First publish to remote url </span><span class="si">{</span><span class="n">remote_url</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Nothing to publish, no changes to the repo&quot;</span><span class="p">)</span>
+</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a>            <span class="k">return</span>
+</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a>
+</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a>    <span class="c1"># get next version</span>
+</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a>    <span class="n">new_version_str</span> <span class="o">=</span> <span class="n">_generate_version_tag</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">increment</span><span class="p">)</span>
+</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New version: </span><span class="si">{</span><span class="n">new_version_str</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a>
+</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a>    <span class="c1"># Write version in configuration file</span>
+</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a>
+</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a>    <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;version&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_version_str</span>
+</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a>    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a>        <span class="n">yaml</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
+</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a>            <span class="n">config</span><span class="p">,</span>
+</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a>            <span class="n">file</span><span class="p">,</span>
+</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a>            <span class="n">Dumper</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">QuotedDumper</span><span class="p">,</span>
+</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a>            <span class="n">default_flow_style</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a>            <span class="n">sort_keys</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a>            <span class="n">default_style</span><span class="o">=</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span>
+</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a>        <span class="p">)</span>
+</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a>
+</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a>    <span class="c1"># Add and commit changes to repo including version updates</span>
+</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a>    <span class="n">commit_message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Committing updates to phenotype </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;--all&quot;</span><span class="p">)</span>
+</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">commit</span><span class="p">(</span><span class="n">commit_message</span><span class="p">)</span>
+</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a>
+</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a>    <span class="c1"># Add tag to the repo</span>
+</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">create_tag</span><span class="p">(</span><span class="n">new_version_str</span><span class="p">)</span>
 </span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a>
-</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a>    <span class="n">export_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">OMOP_PATH</span>
-</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a>    <span class="c1"># check export directory exists and if not create it</span>
-</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">export_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a>        <span class="n">export_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;OMOP export directory &#39;</span><span class="si">{</span><span class="n">export_path</span><span class="si">}</span><span class="s2">&#39; created.&quot;</span><span class="p">)</span>
-</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a>
-</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a>    <span class="c1"># omop export db</span>
-</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a>    <span class="n">export_db_path</span> <span class="o">=</span> <span class="n">omop</span><span class="o">.</span><span class="n">export</span><span class="p">(</span>
-</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a>        <span class="n">map_path</span><span class="p">,</span>
-</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a>        <span class="n">export_path</span><span class="p">,</span>
-</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a>        <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;version&quot;</span><span class="p">],</span>
-</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a>        <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;omop&quot;</span><span class="p">],</span>
-</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a>    <span class="p">)</span>
-</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a>
-</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a>    <span class="c1"># write to tables</span>
-</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a>    <span class="c1"># export as csv</span>
-</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype exported successfully&quot;</span><span class="p">)</span>
-</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a>
-</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a>
-</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a><span class="k">def</span><span class="w"> </span><span class="nf">copy</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">target_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
-</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Copys a phen repo at a specific tagged version into a target directory&quot;&quot;&quot;</span>
+</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a>    <span class="c1"># push to origin if a remote repo</span>
+</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a>    <span class="k">if</span> <span class="n">remote_url</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
+</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a>        <span class="n">git_url</span> <span class="o">=</span> <span class="n">_construct_git_url</span><span class="p">(</span><span class="n">remote_url</span><span class="p">)</span>
+</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">create_remote</span><span class="p">(</span><span class="s2">&quot;origin&quot;</span><span class="p">,</span> <span class="n">git_url</span><span class="p">)</span>
+</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a>
+</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a>    <span class="k">try</span><span class="p">:</span>
+</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a>        <span class="k">if</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
+</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Remote &#39;origin&#39; is set </span><span class="si">{</span><span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="o">.</span><span class="n">origin</span><span class="o">.</span><span class="n">url</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a>            <span class="n">origin</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="o">.</span><span class="n">origin</span>
+</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pushing main branch to remote repo&quot;</span><span class="p">)</span>
+</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a>            <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="s2">&quot;--set-upstream&quot;</span><span class="p">,</span> <span class="s2">&quot;origin&quot;</span><span class="p">,</span> <span class="s2">&quot;main&quot;</span><span class="p">)</span>
+</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pushing version tags to remote git repo&quot;</span><span class="p">)</span>
+</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a>            <span class="n">origin</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="n">tags</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Changes pushed to &#39;origin&#39;&quot;</span><span class="p">)</span>
+</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Remote &#39;origin&#39; is not set&quot;</span><span class="p">)</span>
+</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a>    <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
+</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a>        <span class="n">tag_ref</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">tags</span><span class="p">[</span><span class="n">new_version_str</span><span class="p">]</span>
+</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">delete_tag</span><span class="p">(</span><span class="n">tag_ref</span><span class="p">)</span>
+</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">reset</span><span class="p">(</span><span class="s2">&quot;--soft&quot;</span><span class="p">,</span> <span class="s2">&quot;HEAD~1&quot;</span><span class="p">)</span>
+</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a>        <span class="k">raise</span> <span class="n">e</span>
 </span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a>
-</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a>    <span class="c1"># Validate</span>
-</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a>
-</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a>    <span class="c1"># Check target directory exists</span>
-</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a>    <span class="n">target_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">target_dir</span><span class="p">)</span>
-</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">target_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The target directory </span><span class="si">{</span><span class="n">target_path</span><span class="si">}</span><span class="s2"> does not exist&quot;</span><span class="p">)</span>
-</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a>
-</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a>    <span class="c1"># Set copy directory</span>
-</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a>    <span class="n">copy_path</span> <span class="o">=</span> <span class="n">target_path</span> <span class="o">/</span> <span class="n">version</span>
-</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copying repo </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a>
-</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a>    <span class="k">if</span> <span class="p">(</span>
-</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a>        <span class="n">copy_path</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="ow">and</span> <span class="n">copy_path</span><span class="o">.</span><span class="n">is_dir</span><span class="p">()</span>
-</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a>    <span class="p">):</span>  <span class="c1"># Check if it exists and is a directory</span>
-</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a>        <span class="n">copy</span> <span class="o">=</span> <span class="n">_check_delete_dir</span><span class="p">(</span>
-</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a>            <span class="n">copy_path</span><span class="p">,</span>
-</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a>            <span class="sa">f</span><span class="s2">&quot;The directory </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">copy_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2"> already exists. Do you want to overwrite? (yes/no): &quot;</span><span class="p">,</span>
-</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a>        <span class="p">)</span>
-</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a>        <span class="n">copy</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a>
-</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span><span class="p">:</span>
-</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Not copying the version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a>        <span class="k">return</span>
-</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a>
-</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Cloning repo from </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
-</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a>    <span class="n">repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">phen_path</span><span class="p">,</span> <span class="n">copy_path</span><span class="p">)</span>
-</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a>
-</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a>    <span class="c1"># Check out the latest commit or specified version</span>
-</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a>    <span class="k">if</span> <span class="n">version</span><span class="p">:</span>
-</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a>        <span class="c1"># Checkout a specific version (e.g., branch, tag, or commit hash)</span>
-</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Checking out version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
-</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
-</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a>        <span class="c1"># Checkout the latest commit (HEAD)</span>
-</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Checking out the latest commit...&quot;</span><span class="p">)</span>
-</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="s2">&quot;HEAD&quot;</span><span class="p">)</span>
-</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a>
-</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copied </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">repo</span><span class="o">.</span><span class="n">head</span><span class="o">.</span><span class="n">commit</span><span class="o">.</span><span class="n">hexsha</span><span class="p">[:</span><span class="mi">7</span><span class="p">]</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype published successfully&quot;</span><span class="p">)</span>
+</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a>
+</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a>
+</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a><span class="k">def</span><span class="w"> </span><span class="nf">export</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Exports a phen repo at a specific tagged version into a target directory&quot;&quot;&quot;</span>
+</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Exporting phenotype </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a>
+</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a>    <span class="c1"># validate configuration</span>
+</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a>
+</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a>    <span class="c1"># load configuration</span>
+</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a>
+</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a>    <span class="n">map_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
+</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">map_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Map path does not exist &#39;</span><span class="si">{</span><span class="n">map_path</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
+</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a>
+</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a>    <span class="n">export_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">OMOP_PATH</span>
+</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a>    <span class="c1"># check export directory exists and if not create it</span>
+</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">export_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a>        <span class="n">export_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;OMOP export directory &#39;</span><span class="si">{</span><span class="n">export_path</span><span class="si">}</span><span class="s2">&#39; created.&quot;</span><span class="p">)</span>
+</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a>
+</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a>    <span class="c1"># omop export db</span>
+</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a>    <span class="n">export_db_path</span> <span class="o">=</span> <span class="n">omop</span><span class="o">.</span><span class="n">export</span><span class="p">(</span>
+</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a>        <span class="n">map_path</span><span class="p">,</span>
+</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a>        <span class="n">export_path</span><span class="p">,</span>
+</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a>        <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;version&quot;</span><span class="p">],</span>
+</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a>        <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;omop&quot;</span><span class="p">],</span>
+</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a>    <span class="p">)</span>
+</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a>
+</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a>    <span class="c1"># write to tables</span>
+</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a>    <span class="c1"># export as csv</span>
+</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype exported successfully&quot;</span><span class="p">)</span>
+</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a>
+</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a>
+</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a><span class="k">def</span><span class="w"> </span><span class="nf">copy</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">target_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Copys a phen repo at a specific tagged version into a target directory&quot;&quot;&quot;</span>
 </span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a>
-</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype copied successfully&quot;</span><span class="p">)</span>
-</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a>
-</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a>
-</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a><span class="c1"># Convert concept_sets list into dictionaries</span>
-</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a><span class="k">def</span><span class="w"> </span><span class="nf">extract_concepts</span><span class="p">(</span><span class="n">config_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
-</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Extracts concepts as {name: file_path} dictionary and a name set.&quot;&quot;&quot;</span>
-</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a>    <span class="n">concepts_dict</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a>        <span class="n">item</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]:</span> <span class="p">[</span><span class="n">file</span><span class="p">[</span><span class="s2">&quot;path&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="s2">&quot;files&quot;</span><span class="p">]]</span>
-</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a>        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">config_data</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;concept_sets&quot;</span><span class="p">]</span>
-</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a>    <span class="p">}</span>
-</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a>    <span class="n">name_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">concepts_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
-</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a>    <span class="k">return</span> <span class="n">concepts_dict</span><span class="p">,</span> <span class="n">name_set</span>
+</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a>    <span class="c1"># Validate</span>
+</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a>
+</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a>    <span class="c1"># Check target directory exists</span>
+</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a>    <span class="n">target_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">target_dir</span><span class="p">)</span>
+</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">target_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The target directory </span><span class="si">{</span><span class="n">target_path</span><span class="si">}</span><span class="s2"> does not exist&quot;</span><span class="p">)</span>
+</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a>
+</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a>    <span class="c1"># Set copy directory</span>
+</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a>    <span class="n">copy_path</span> <span class="o">=</span> <span class="n">target_path</span> <span class="o">/</span> <span class="n">version</span>
+</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copying repo </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
 </span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a>
-</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a>
-</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_extract_clean_deepdiff_keys</span><span class="p">(</span><span class="n">diff</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">key_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Set</span><span class="p">[</span><span class="n">Any</span><span class="p">]:</span>
-</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a><span class="sd">    Extracts clean keys from a DeepDiff dictionary.</span>
-</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a>
-</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a><span class="sd">    :param diff: DeepDiff result dictionary</span>
-</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a><span class="sd">    :param key_type: The type of change to extract (e.g., &quot;dictionary_item_added&quot;, &quot;dictionary_item_removed&quot;)</span>
-</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a><span class="sd">    :return: A set of clean key names</span>
-</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a><span class="sd">    &quot;&quot;&quot;</span>
-</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a>    <span class="k">return</span> <span class="p">{</span><span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;root[&#39;&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;&#39;]&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">diff</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key_type</span><span class="p">,</span> <span class="p">[])}</span>
-</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a>
-</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a>
-</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_config</span><span class="p">(</span><span class="n">old_config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">new_config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"># Changes to phenotype configuration</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares changes in the phenotype configuration including added, removed and renamed concept sets and changes to concept set source concept code file paths</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a>
-</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a>    <span class="n">old_concepts</span><span class="p">,</span> <span class="n">old_names</span> <span class="o">=</span> <span class="n">extract_concepts</span><span class="p">(</span><span class="n">old_config</span><span class="p">)</span>
-</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a>    <span class="n">new_concepts</span><span class="p">,</span> <span class="n">new_names</span> <span class="o">=</span> <span class="n">extract_concepts</span><span class="p">(</span><span class="n">new_config</span><span class="p">)</span>
-</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a>
-</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a>    <span class="c1"># Check added and removed concept set names</span>
-</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a>    <span class="n">added_names</span> <span class="o">=</span> <span class="n">new_names</span> <span class="o">-</span> <span class="n">old_names</span>  <span class="c1"># Names that appear in new but not in old</span>
-</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a>    <span class="n">removed_names</span> <span class="o">=</span> <span class="n">old_names</span> <span class="o">-</span> <span class="n">new_names</span>  <span class="c1"># Names that were in old but not in new</span>
-</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a>
-</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a>    <span class="c1"># find file path changes for unchanged names</span>
-</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a>    <span class="n">unchanged_names</span> <span class="o">=</span> <span class="n">old_names</span> <span class="o">&amp;</span> <span class="n">new_names</span>  <span class="c1"># Names that exist in both</span>
-</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a>    <span class="n">file_diff</span> <span class="o">=</span> <span class="n">DeepDiff</span><span class="p">(</span>
-</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a>        <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">old_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">unchanged_names</span><span class="p">},</span>
-</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a>        <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">new_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">unchanged_names</span><span class="p">},</span>
-</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a>    <span class="p">)</span>
-</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a>
-</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a>    <span class="c1"># Find renamed concepts (same file, different name)</span>
-</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a>    <span class="n">renamed_concepts</span> <span class="o">=</span> <span class="p">[]</span>
-</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a>    <span class="k">for</span> <span class="n">removed</span> <span class="ow">in</span> <span class="n">removed_names</span><span class="p">:</span>
-</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a>        <span class="n">old_path</span> <span class="o">=</span> <span class="n">old_concepts</span><span class="p">[</span><span class="n">removed</span><span class="p">]</span>
-</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a>        <span class="k">for</span> <span class="n">added</span> <span class="ow">in</span> <span class="n">added_names</span><span class="p">:</span>
-</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a>            <span class="n">new_path</span> <span class="o">=</span> <span class="n">new_concepts</span><span class="p">[</span><span class="n">added</span><span class="p">]</span>
-</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a>            <span class="k">if</span> <span class="n">old_path</span> <span class="o">==</span> <span class="n">new_path</span><span class="p">:</span>
-</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a>                <span class="n">renamed_concepts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">removed</span><span class="p">,</span> <span class="n">added</span><span class="p">))</span>
-</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a>
-</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a>    <span class="c1"># Remove renamed concepts from added and removed sets</span>
-</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a>    <span class="k">for</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="n">renamed_concepts</span><span class="p">:</span>
-</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a>        <span class="n">added_names</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span>
-</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a>        <span class="n">removed_names</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">old_name</span><span class="p">)</span>
-</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a>
-</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a>    <span class="c1"># generate config report</span>
-</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a>    <span class="k">if</span> <span class="n">added_names</span><span class="p">:</span>
-</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Added Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a>        <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">added_names</span><span class="p">:</span>
-</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">new_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a>
-</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a>    <span class="k">if</span> <span class="n">removed_names</span><span class="p">:</span>
-</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Removed Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a>        <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">removed_names</span><span class="p">:</span>
-</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">old_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a>
-</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a>    <span class="k">if</span> <span class="n">renamed_concepts</span><span class="p">:</span>
-</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Renamed Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a>        <span class="k">for</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="n">renamed_concepts</span><span class="p">:</span>
-</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="p">(</span>
-</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a>                <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">old_name</span><span class="si">}</span><span class="s2">` ➝ `</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">old_concepts</span><span class="p">[</span><span class="n">old_name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a>            <span class="p">)</span>
-</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a>    <span class="k">if</span> <span class="p">(</span>
+</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a>        <span class="n">copy_path</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="ow">and</span> <span class="n">copy_path</span><span class="o">.</span><span class="n">is_dir</span><span class="p">()</span>
+</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a>    <span class="p">):</span>  <span class="c1"># Check if it exists and is a directory</span>
+</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a>        <span class="n">copy</span> <span class="o">=</span> <span class="n">_check_delete_dir</span><span class="p">(</span>
+</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a>            <span class="n">copy_path</span><span class="p">,</span>
+</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a>            <span class="sa">f</span><span class="s2">&quot;The directory </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">copy_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2"> already exists. Do you want to overwrite? (yes/no): &quot;</span><span class="p">,</span>
+</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a>        <span class="p">)</span>
+</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a>        <span class="n">copy</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a>
+</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span><span class="p">:</span>
+</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Not copying the version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a>        <span class="k">return</span>
+</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a>
+</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Cloning repo from </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
+</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a>    <span class="n">repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">phen_path</span><span class="p">,</span> <span class="n">copy_path</span><span class="p">)</span>
+</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a>
+</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a>    <span class="c1"># Check out the latest commit or specified version</span>
+</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a>    <span class="k">if</span> <span class="n">version</span><span class="p">:</span>
+</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a>        <span class="c1"># Checkout a specific version (e.g., branch, tag, or commit hash)</span>
+</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Checking out version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
+</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
+</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a>        <span class="c1"># Checkout the latest commit (HEAD)</span>
+</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Checking out the latest commit...&quot;</span><span class="p">)</span>
+</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="s2">&quot;HEAD&quot;</span><span class="p">)</span>
+</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a>
+</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copied </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">repo</span><span class="o">.</span><span class="n">head</span><span class="o">.</span><span class="n">commit</span><span class="o">.</span><span class="n">hexsha</span><span class="p">[:</span><span class="mi">7</span><span class="p">]</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a>
+</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype copied successfully&quot;</span><span class="p">)</span>
+</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a>
+</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a>
+</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a><span class="c1"># Convert concept_sets list into dictionaries</span>
+</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a><span class="k">def</span><span class="w"> </span><span class="nf">extract_concepts</span><span class="p">(</span><span class="n">config_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
+</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Extracts concepts as {name: file_path} dictionary and a name set.&quot;&quot;&quot;</span>
+</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a>    <span class="n">concepts_dict</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a>        <span class="n">item</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]:</span> <span class="p">[</span><span class="n">file</span><span class="p">[</span><span class="s2">&quot;path&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="s2">&quot;files&quot;</span><span class="p">]]</span>
+</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a>        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">config_data</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;concept_sets&quot;</span><span class="p">]</span>
+</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a>    <span class="p">}</span>
+</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a>    <span class="n">name_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">concepts_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
+</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a>    <span class="k">return</span> <span class="n">concepts_dict</span><span class="p">,</span> <span class="n">name_set</span>
+</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a>
+</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a>
+</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_extract_clean_deepdiff_keys</span><span class="p">(</span><span class="n">diff</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">key_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Set</span><span class="p">[</span><span class="n">Any</span><span class="p">]:</span>
+</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a><span class="sd">    Extracts clean keys from a DeepDiff dictionary.</span>
+</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a>
+</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a><span class="sd">    :param diff: DeepDiff result dictionary</span>
+</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a><span class="sd">    :param key_type: The type of change to extract (e.g., &quot;dictionary_item_added&quot;, &quot;dictionary_item_removed&quot;)</span>
+</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a><span class="sd">    :return: A set of clean key names</span>
+</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a><span class="sd">    &quot;&quot;&quot;</span>
+</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a>    <span class="k">return</span> <span class="p">{</span><span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;root[&#39;&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;&#39;]&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">diff</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key_type</span><span class="p">,</span> <span class="p">[])}</span>
+</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a>
+</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a>
+</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_config</span><span class="p">(</span><span class="n">old_config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">new_config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"># Changes to phenotype configuration</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares changes in the phenotype configuration including added, removed and renamed concept sets and changes to concept set source concept code file paths</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a>
+</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a>    <span class="n">old_concepts</span><span class="p">,</span> <span class="n">old_names</span> <span class="o">=</span> <span class="n">extract_concepts</span><span class="p">(</span><span class="n">old_config</span><span class="p">)</span>
+</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a>    <span class="n">new_concepts</span><span class="p">,</span> <span class="n">new_names</span> <span class="o">=</span> <span class="n">extract_concepts</span><span class="p">(</span><span class="n">new_config</span><span class="p">)</span>
+</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a>
+</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a>    <span class="c1"># Check added and removed concept set names</span>
+</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a>    <span class="n">added_names</span> <span class="o">=</span> <span class="n">new_names</span> <span class="o">-</span> <span class="n">old_names</span>  <span class="c1"># Names that appear in new but not in old</span>
+</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a>    <span class="n">removed_names</span> <span class="o">=</span> <span class="n">old_names</span> <span class="o">-</span> <span class="n">new_names</span>  <span class="c1"># Names that were in old but not in new</span>
 </span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a>
-</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a>    <span class="k">if</span> <span class="s2">&quot;values_changed&quot;</span> <span class="ow">in</span> <span class="n">file_diff</span><span class="p">:</span>
-</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Updated File Paths</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a>        <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">change</span> <span class="ow">in</span> <span class="n">file_diff</span><span class="p">[</span><span class="s2">&quot;values_changed&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
-</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a>            <span class="n">old_file</span> <span class="o">=</span> <span class="n">change</span><span class="p">[</span><span class="s2">&quot;old_value&quot;</span><span class="p">]</span>
-</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a>            <span class="n">new_file</span> <span class="o">=</span> <span class="n">change</span><span class="p">[</span><span class="s2">&quot;new_value&quot;</span><span class="p">]</span>
-</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a>            <span class="n">clean_name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;root[&#39;&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;&#39;]&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="p">(</span>
-</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a>                <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">clean_name</span><span class="si">}</span><span class="s2">` changed file from `</span><span class="si">{</span><span class="n">old_file</span><span class="si">}</span><span class="s2">` ➝ `</span><span class="si">{</span><span class="n">new_file</span><span class="si">}</span><span class="s2">`</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a>            <span class="p">)</span>
-</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a>
-</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span>
-</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a>        <span class="n">added_names</span>
-</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a>        <span class="ow">or</span> <span class="n">removed_names</span>
-</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a>        <span class="ow">or</span> <span class="n">renamed_concepts</span>
-</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a>        <span class="ow">or</span> <span class="n">file_diff</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;values_changed&quot;</span><span class="p">)</span>
-</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a>    <span class="p">):</span>
-</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;No changes in concept sets.</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a>
-</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a>    <span class="k">return</span> <span class="n">report</span>
+</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a>    <span class="c1"># find file path changes for unchanged names</span>
+</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a>    <span class="n">unchanged_names</span> <span class="o">=</span> <span class="n">old_names</span> <span class="o">&amp;</span> <span class="n">new_names</span>  <span class="c1"># Names that exist in both</span>
+</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a>    <span class="n">file_diff</span> <span class="o">=</span> <span class="n">DeepDiff</span><span class="p">(</span>
+</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a>        <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">old_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">unchanged_names</span><span class="p">},</span>
+</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a>        <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">new_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">unchanged_names</span><span class="p">},</span>
+</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a>    <span class="p">)</span>
+</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a>
+</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a>    <span class="c1"># Find renamed concepts (same file, different name)</span>
+</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a>    <span class="n">renamed_concepts</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a>    <span class="k">for</span> <span class="n">removed</span> <span class="ow">in</span> <span class="n">removed_names</span><span class="p">:</span>
+</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a>        <span class="n">old_path</span> <span class="o">=</span> <span class="n">old_concepts</span><span class="p">[</span><span class="n">removed</span><span class="p">]</span>
+</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a>        <span class="k">for</span> <span class="n">added</span> <span class="ow">in</span> <span class="n">added_names</span><span class="p">:</span>
+</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a>            <span class="n">new_path</span> <span class="o">=</span> <span class="n">new_concepts</span><span class="p">[</span><span class="n">added</span><span class="p">]</span>
+</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a>            <span class="k">if</span> <span class="n">old_path</span> <span class="o">==</span> <span class="n">new_path</span><span class="p">:</span>
+</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a>                <span class="n">renamed_concepts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">removed</span><span class="p">,</span> <span class="n">added</span><span class="p">))</span>
+</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a>
+</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a>    <span class="c1"># Remove renamed concepts from added and removed sets</span>
+</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a>    <span class="k">for</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="n">renamed_concepts</span><span class="p">:</span>
+</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a>        <span class="n">added_names</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span>
+</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a>        <span class="n">removed_names</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">old_name</span><span class="p">)</span>
 </span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a>
-</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a>
-</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_map_files</span><span class="p">(</span><span class="n">old_map_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">new_map_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a>    <span class="n">old_output_files</span> <span class="o">=</span> <span class="p">[</span>
-</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a>        <span class="n">file</span><span class="o">.</span><span class="n">name</span>
-</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a>        <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">old_map_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">()</span>
-</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a>        <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">is_file</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">file</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
-</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a>    <span class="p">]</span>
-</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a>    <span class="n">new_output_files</span> <span class="o">=</span> <span class="p">[</span>
-</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a>        <span class="n">file</span><span class="o">.</span><span class="n">name</span>
-</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a>        <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">new_map_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">()</span>
-</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a>        <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">is_file</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">file</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
-</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a>    <span class="p">]</span>
+</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a>    <span class="c1"># generate config report</span>
+</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a>    <span class="k">if</span> <span class="n">added_names</span><span class="p">:</span>
+</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Added Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a>        <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">added_names</span><span class="p">:</span>
+</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">new_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a>
+</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a>    <span class="k">if</span> <span class="n">removed_names</span><span class="p">:</span>
+</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Removed Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a>        <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">removed_names</span><span class="p">:</span>
+</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">old_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
 </span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a>
-</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a>    <span class="c1"># Convert the lists to sets for easy comparison</span>
-</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a>    <span class="n">old_output_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">old_output_files</span><span class="p">)</span>
-</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a>    <span class="n">new_output_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">new_output_files</span><span class="p">)</span>
-</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a>
-</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a>    <span class="c1"># Outputs that are in old_output_set but not in new_output_set (removed files)</span>
-</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a>    <span class="n">removed_outputs</span> <span class="o">=</span> <span class="n">old_output_set</span> <span class="o">-</span> <span class="n">new_output_set</span>
-</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a>    <span class="c1"># Outputs that are in new_output_set but not in old_output_set (added files)</span>
-</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a>    <span class="n">added_outputs</span> <span class="o">=</span> <span class="n">new_output_set</span> <span class="o">-</span> <span class="n">old_output_set</span>
-</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a>    <span class="c1"># Outputs that are the intersection of old_output_set and new_output_set</span>
-</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a>    <span class="n">common_outputs</span> <span class="o">=</span> <span class="n">old_output_set</span> <span class="o">&amp;</span> <span class="n">new_output_set</span>
-</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a>
-</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"># Changes to available translations</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares the coding translations files available.</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Removed outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">removed_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Added outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">added_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Common outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">common_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a>
-</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a>    <span class="c1"># Step N: Compare common outputs between versions</span>
-</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;# Changes to concepts in translation files</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares the added and removed concepts in each of the coding translation files. Note that this might be different to the config.yaml if the translations have not been run for the current config.</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a>    <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">common_outputs</span><span class="p">:</span>
-</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a>        <span class="n">old_output</span> <span class="o">=</span> <span class="n">old_map_path</span> <span class="o">/</span> <span class="n">file</span>
-</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a>        <span class="n">new_output</span> <span class="o">=</span> <span class="n">new_map_path</span> <span class="o">/</span> <span class="n">file</span>
-</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a>
-</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Old ouptput: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_output</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New ouptput: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_output</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a>    <span class="k">if</span> <span class="n">renamed_concepts</span><span class="p">:</span>
+</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Renamed Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a>        <span class="k">for</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="n">renamed_concepts</span><span class="p">:</span>
+</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="p">(</span>
+</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a>                <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">old_name</span><span class="si">}</span><span class="s2">` ➝ `</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">old_concepts</span><span class="p">[</span><span class="n">old_name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a>            <span class="p">)</span>
+</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a>
+</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a>    <span class="k">if</span> <span class="s2">&quot;values_changed&quot;</span> <span class="ow">in</span> <span class="n">file_diff</span><span class="p">:</span>
+</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Updated File Paths</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a>        <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">change</span> <span class="ow">in</span> <span class="n">file_diff</span><span class="p">[</span><span class="s2">&quot;values_changed&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a>            <span class="n">old_file</span> <span class="o">=</span> <span class="n">change</span><span class="p">[</span><span class="s2">&quot;old_value&quot;</span><span class="p">]</span>
+</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a>            <span class="n">new_file</span> <span class="o">=</span> <span class="n">change</span><span class="p">[</span><span class="s2">&quot;new_value&quot;</span><span class="p">]</span>
+</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a>            <span class="n">clean_name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;root[&#39;&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;&#39;]&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="p">(</span>
+</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a>                <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">clean_name</span><span class="si">}</span><span class="s2">` changed file from `</span><span class="si">{</span><span class="n">old_file</span><span class="si">}</span><span class="s2">` ➝ `</span><span class="si">{</span><span class="n">new_file</span><span class="si">}</span><span class="s2">`</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a>            <span class="p">)</span>
+</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a>
+</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span>
+</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a>        <span class="n">added_names</span>
+</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a>        <span class="ow">or</span> <span class="n">removed_names</span>
+</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a>        <span class="ow">or</span> <span class="n">renamed_concepts</span>
+</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a>        <span class="ow">or</span> <span class="n">file_diff</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;values_changed&quot;</span><span class="p">)</span>
+</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a>    <span class="p">):</span>
+</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;No changes in concept sets.</span><span class="se">\n</span><span class="s2">&quot;</span>
 </span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a>
-</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a>        <span class="n">df1</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">old_output</span><span class="p">)</span>
-</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a>        <span class="n">df1</span> <span class="o">=</span> <span class="n">df1</span><span class="p">[[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
-</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a>        <span class="n">df2</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">new_output</span><span class="p">)</span>
-</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a>        <span class="n">df2</span> <span class="o">=</span> <span class="n">df2</span><span class="p">[[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
-</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a>
-</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a>        <span class="c1"># Check for added and removed concepts</span>
-</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- File </span><span class="si">{</span><span class="n">file</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a>        <span class="n">sorted_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">df2</span><span class="o">.</span><span class="n">index</span><span class="p">)))</span>
-</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Removed concepts </span><span class="si">{</span><span class="n">sorted_list</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a>        <span class="n">sorted_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df2</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">)))</span>
-</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Added concepts </span><span class="si">{</span><span class="n">sorted_list</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a>
-</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a>        <span class="c1"># Check for changed concepts</span>
-</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a>        <span class="n">diff</span> <span class="o">=</span> <span class="n">df2</span> <span class="o">-</span> <span class="n">df1</span>  <span class="c1"># diff in counts</span>
-</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a>        <span class="n">diff</span> <span class="o">=</span> <span class="n">diff</span><span class="p">[</span>
-</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a>            <span class="p">(</span><span class="o">~</span><span class="p">(</span><span class="n">diff</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span> <span class="o">&amp;</span> <span class="n">diff</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">notna</span><span class="p">()</span>
-</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a>        <span class="p">]</span>  <span class="c1"># get non-zero counts</span>
-</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a>        <span class="n">s</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a>        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">diff</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a>            <span class="k">for</span> <span class="n">concept</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">diff</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
-</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a>                <span class="n">s</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\t</span><span class="s2"> - </span><span class="si">{}</span><span class="s2"> </span><span class="si">{}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">concept</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
-</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Changed concepts </span><span class="si">{</span><span class="n">s</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Changed concepts []</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a>
-</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a>    <span class="k">return</span> <span class="n">report</span>
-</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a>
-</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a>
-</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_phen</span><span class="p">(</span>
-</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a>    <span class="n">new_phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
-</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a>    <span class="n">new_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a>    <span class="n">old_phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
-</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a>    <span class="n">old_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a>    <span class="n">report_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
-</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a>    <span class="n">not_check_config</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a><span class="p">):</span>
-</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Compare the differences between two versions of a phenotype&quot;&quot;&quot;</span>
-</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a>
-</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a>    <span class="c1"># write report heading</span>
-</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;# Phenotype Comparison Report</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a>
-</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a>    <span class="c1"># Step 1: check differences configuration files</span>
-</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">not_check_config</span><span class="p">:</span>
-</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a>        <span class="c1"># validate phenotypes</span>
-</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Validating for diff old path: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a>        <span class="n">validate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">()))</span>
-</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Validating for diff new path: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a>        <span class="n">validate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">()))</span>
-</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a>
-</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a>        <span class="c1"># get old and new config</span>
-</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a>        <span class="n">old_config_path</span> <span class="o">=</span> <span class="n">old_phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a>        <span class="k">with</span> <span class="n">old_config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a>            <span class="n">old_config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a>        <span class="n">new_config_path</span> <span class="o">=</span> <span class="n">new_phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a>        <span class="k">with</span> <span class="n">new_config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a>            <span class="n">new_config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a>
-</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a>        <span class="c1"># write report</span>
-</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Original phenotype</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">old_config</span><span class="p">[</span><span class="s1">&#39;phenotype&#39;</span><span class="p">][</span><span class="s1">&#39;omop&#39;</span><span class="p">][</span><span class="s1">&#39;vocabulary_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Changed phenotype:</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">new_config</span><span class="p">[</span><span class="s1">&#39;phenotype&#39;</span><span class="p">][</span><span class="s1">&#39;omop&#39;</span><span class="p">][</span><span class="s1">&#39;vocabulary_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">new_version</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a>    <span class="k">return</span> <span class="n">report</span>
+</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a>
+</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a>
+</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_map_files</span><span class="p">(</span><span class="n">old_map_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">new_map_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a>    <span class="n">old_output_files</span> <span class="o">=</span> <span class="p">[</span>
+</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a>        <span class="n">file</span><span class="o">.</span><span class="n">name</span>
+</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a>        <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">old_map_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">()</span>
+</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a>        <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">is_file</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">file</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
+</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a>    <span class="p">]</span>
+</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a>    <span class="n">new_output_files</span> <span class="o">=</span> <span class="p">[</span>
+</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a>        <span class="n">file</span><span class="o">.</span><span class="n">name</span>
+</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a>        <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">new_map_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">()</span>
+</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a>        <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">is_file</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">file</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
+</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a>    <span class="p">]</span>
+</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a>
+</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a>    <span class="c1"># Convert the lists to sets for easy comparison</span>
+</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a>    <span class="n">old_output_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">old_output_files</span><span class="p">)</span>
+</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a>    <span class="n">new_output_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">new_output_files</span><span class="p">)</span>
+</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a>
+</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a>    <span class="c1"># Outputs that are in old_output_set but not in new_output_set (removed files)</span>
+</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a>    <span class="n">removed_outputs</span> <span class="o">=</span> <span class="n">old_output_set</span> <span class="o">-</span> <span class="n">new_output_set</span>
+</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a>    <span class="c1"># Outputs that are in new_output_set but not in old_output_set (added files)</span>
+</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a>    <span class="n">added_outputs</span> <span class="o">=</span> <span class="n">new_output_set</span> <span class="o">-</span> <span class="n">old_output_set</span>
+</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a>    <span class="c1"># Outputs that are the intersection of old_output_set and new_output_set</span>
+</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a>    <span class="n">common_outputs</span> <span class="o">=</span> <span class="n">old_output_set</span> <span class="o">&amp;</span> <span class="n">new_output_set</span>
+</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a>
+</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"># Changes to available translations</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares the coding translations files available.</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Removed outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">removed_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Added outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">added_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Common outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">common_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a>
+</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a>    <span class="c1"># Step N: Compare common outputs between versions</span>
+</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;# Changes to concepts in translation files</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares the added and removed concepts in each of the coding translation files. Note that this might be different to the config.yaml if the translations have not been run for the current config.</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a>    <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">common_outputs</span><span class="p">:</span>
+</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a>        <span class="n">old_output</span> <span class="o">=</span> <span class="n">old_map_path</span> <span class="o">/</span> <span class="n">file</span>
+</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a>        <span class="n">new_output</span> <span class="o">=</span> <span class="n">new_map_path</span> <span class="o">/</span> <span class="n">file</span>
+</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a>
+</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Old ouptput: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_output</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New ouptput: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_output</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a>
+</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a>        <span class="n">df1</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">old_output</span><span class="p">)</span>
+</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a>        <span class="n">df1</span> <span class="o">=</span> <span class="n">df1</span><span class="p">[[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a>        <span class="n">df2</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">new_output</span><span class="p">)</span>
+</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a>        <span class="n">df2</span> <span class="o">=</span> <span class="n">df2</span><span class="p">[[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a>
+</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a>        <span class="c1"># Check for added and removed concepts</span>
+</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- File </span><span class="si">{</span><span class="n">file</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a>        <span class="n">sorted_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">df2</span><span class="o">.</span><span class="n">index</span><span class="p">)))</span>
+</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Removed concepts </span><span class="si">{</span><span class="n">sorted_list</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a>        <span class="n">sorted_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df2</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">)))</span>
+</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Added concepts </span><span class="si">{</span><span class="n">sorted_list</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a>
+</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a>        <span class="c1"># Check for changed concepts</span>
+</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a>        <span class="n">diff</span> <span class="o">=</span> <span class="n">df2</span> <span class="o">-</span> <span class="n">df1</span>  <span class="c1"># diff in counts</span>
+</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a>        <span class="n">diff</span> <span class="o">=</span> <span class="n">diff</span><span class="p">[</span>
+</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a>            <span class="p">(</span><span class="o">~</span><span class="p">(</span><span class="n">diff</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span> <span class="o">&amp;</span> <span class="n">diff</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">notna</span><span class="p">()</span>
+</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a>        <span class="p">]</span>  <span class="c1"># get non-zero counts</span>
+</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a>        <span class="n">s</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a>        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">diff</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a>            <span class="k">for</span> <span class="n">concept</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">diff</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
+</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a>                <span class="n">s</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\t</span><span class="s2"> - </span><span class="si">{}</span><span class="s2"> </span><span class="si">{}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">concept</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
+</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Changed concepts </span><span class="si">{</span><span class="n">s</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Changed concepts []</span><span class="se">\n\n</span><span class="s2">&quot;</span>
 </span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a>
-</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a>        <span class="c1"># Convert list of dicts into a dict: {name: file}</span>
-</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="n">diff_config</span><span class="p">(</span><span class="n">old_config</span><span class="p">,</span> <span class="n">new_config</span><span class="p">)</span>
+</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a>    <span class="k">return</span> <span class="n">report</span>
+</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a>
 </span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a>
-</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a>    <span class="c1"># Step 2: check differences between map files</span>
-</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a>    <span class="c1"># List files from output directories</span>
-</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a>    <span class="n">old_map_path</span> <span class="o">=</span> <span class="n">old_phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
-</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a>    <span class="n">new_map_path</span> <span class="o">=</span> <span class="n">new_phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
-</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="n">diff_map_files</span><span class="p">(</span><span class="n">old_map_path</span><span class="p">,</span> <span class="n">new_map_path</span><span class="p">)</span>
-</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a>
-</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a>    <span class="c1"># initialise report file</span>
-</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Writing to report file </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">report_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a>    <span class="n">report_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">report_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span>
-</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a>    <span class="n">report_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">report</span><span class="p">)</span>
-</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a>    <span class="n">report_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a>
-</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotypes diff&#39;d successfully&quot;</span><span class="p">)</span>
-</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a>
-</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a>
-</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff</span><span class="p">(</span>
-</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a>    <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a>    <span class="n">old_phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a>    <span class="n">old_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a>    <span class="n">not_check_config</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a><span class="p">):</span>
-</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a>    <span class="c1"># make tmp directory .acmc</span>
-</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a>    <span class="n">timestamp</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y%m</span><span class="si">%d</span><span class="s2">_%H%M%S&quot;</span><span class="p">)</span>
-</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a>    <span class="n">temp_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;.acmc/diff_</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a>
-</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a>    <span class="n">changed_phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">changed_phen_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
-</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a>            <span class="sa">f</span><span class="s2">&quot;Changed phenotype directory does not exist: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a>        <span class="p">)</span>
-</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a>
-</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a>    <span class="n">old_phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">old_phen_dir</span><span class="p">)</span>
-</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">old_phen_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
-</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a>            <span class="sa">f</span><span class="s2">&quot;Old phenotype directory does not exist: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a>        <span class="p">)</span>
-</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a>
-</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a>    <span class="c1">#    t_path = old_phen_path / &quot;config.yml&quot;</span>
-</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a>    <span class="c1">#    with t_path.open(&quot;r&quot;) as file:</span>
-</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a>    <span class="c1">#        c = yaml.safe_load(file)</span>
+</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_phen</span><span class="p">(</span>
+</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a>    <span class="n">new_phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
+</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a>    <span class="n">new_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a>    <span class="n">old_phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
+</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a>    <span class="n">old_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a>    <span class="n">report_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
+</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a>    <span class="n">not_check_config</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a><span class="p">):</span>
+</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Compare the differences between two versions of a phenotype&quot;&quot;&quot;</span>
+</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a>
+</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a>    <span class="c1"># write report heading</span>
+</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;# Phenotype Comparison Report</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a>
+</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a>    <span class="c1"># Step 1: check differences configuration files</span>
+</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">not_check_config</span><span class="p">:</span>
+</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a>        <span class="c1"># validate phenotypes</span>
+</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Validating for diff old path: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a>        <span class="n">validate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">()))</span>
+</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Validating for diff new path: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a>        <span class="n">validate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">()))</span>
+</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a>
+</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a>        <span class="c1"># get old and new config</span>
+</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a>        <span class="n">old_config_path</span> <span class="o">=</span> <span class="n">old_phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a>        <span class="k">with</span> <span class="n">old_config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a>            <span class="n">old_config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a>        <span class="n">new_config_path</span> <span class="o">=</span> <span class="n">new_phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a>        <span class="k">with</span> <span class="n">new_config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a>            <span class="n">new_config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a>
+</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a>        <span class="c1"># write report</span>
+</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Original phenotype</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">old_config</span><span class="p">[</span><span class="s1">&#39;phenotype&#39;</span><span class="p">][</span><span class="s1">&#39;omop&#39;</span><span class="p">][</span><span class="s1">&#39;vocabulary_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Changed phenotype:</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">new_config</span><span class="p">[</span><span class="s1">&#39;phenotype&#39;</span><span class="p">][</span><span class="s1">&#39;omop&#39;</span><span class="p">][</span><span class="s1">&#39;vocabulary_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">new_version</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a>
+</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a>        <span class="c1"># Convert list of dicts into a dict: {name: file}</span>
+</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="n">diff_config</span><span class="p">(</span><span class="n">old_config</span><span class="p">,</span> <span class="n">new_config</span><span class="p">)</span>
 </span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a>
-</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a>    <span class="k">try</span><span class="p">:</span>
-</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a>        <span class="c1"># Create the directory</span>
-</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a>        <span class="n">temp_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Temporary directory created: </span><span class="si">{</span><span class="n">temp_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a>
-</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a>        <span class="c1"># Create temporary directories</span>
-</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a>        <span class="n">changed_path</span> <span class="o">=</span> <span class="n">temp_dir</span> <span class="o">/</span> <span class="s2">&quot;changed&quot;</span>
-</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a>        <span class="n">changed_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a>        <span class="n">old_path</span> <span class="o">=</span> <span class="n">temp_dir</span> <span class="o">/</span> <span class="s2">&quot;old&quot;</span>
-</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a>        <span class="n">old_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a>
-</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a>        <span class="c1"># checkout changed</span>
-</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a>        <span class="k">if</span> <span class="n">version</span> <span class="o">==</span> <span class="s2">&quot;latest&quot;</span><span class="p">:</span>
-</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a>                <span class="sa">f</span><span class="s2">&quot;Copying changed repo from </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">changed_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span>
-</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a>            <span class="p">)</span>
-</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="p">,</span> <span class="n">changed_path</span><span class="p">,</span> <span class="n">dirs_exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a>                <span class="sa">f</span><span class="s2">&quot;Cloning changed repo from </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">changed_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span>
-</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a>            <span class="p">)</span>
-</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a>            <span class="n">changed_repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="p">,</span> <span class="n">changed_path</span><span class="p">)</span>
-</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a>            <span class="n">changed_repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
-</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a>
-</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a>        <span class="c1"># checkout old</span>
-</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a>        <span class="k">if</span> <span class="n">old_version</span> <span class="o">==</span> <span class="s2">&quot;latest&quot;</span><span class="p">:</span>
-</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a>                <span class="sa">f</span><span class="s2">&quot;Copying old repo from </span><span class="si">{</span><span class="n">old_phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">old_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">...&quot;</span>
-</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a>            <span class="p">)</span>
-</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">old_phen_path</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">dirs_exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a>                <span class="sa">f</span><span class="s2">&quot;Cloning old repo from </span><span class="si">{</span><span class="n">old_phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">old_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">...&quot;</span>
-</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a>            <span class="p">)</span>
-</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a>            <span class="n">old_repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">old_phen_dir</span><span class="p">,</span> <span class="n">old_path</span><span class="p">)</span>
-</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a>            <span class="n">old_repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">old_version</span><span class="p">)</span>
-</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a>
-</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a>        <span class="n">report_filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">_diff.md&quot;</span>
-</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a>        <span class="n">report_path</span> <span class="o">=</span> <span class="n">changed_phen_path</span> <span class="o">/</span> <span class="n">report_filename</span>
-</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a>        <span class="c1"># diff old with new</span>
-</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a>        <span class="n">diff_phen</span><span class="p">(</span>
-</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a>            <span class="n">changed_path</span><span class="p">,</span> <span class="n">version</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">old_version</span><span class="p">,</span> <span class="n">report_path</span><span class="p">,</span> <span class="n">not_check_config</span>
-</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a>        <span class="p">)</span>
-</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a>
-</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a>    <span class="k">finally</span><span class="p">:</span>
-</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a>        <span class="c1"># clean up tmp directory</span>
-</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a>        <span class="k">if</span> <span class="n">temp_dir</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">temp_dir</span><span class="p">)</span>
+</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a>    <span class="c1"># Step 2: check differences between map files</span>
+</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a>    <span class="c1"># List files from output directories</span>
+</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a>    <span class="n">old_map_path</span> <span class="o">=</span> <span class="n">old_phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
+</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a>    <span class="n">new_map_path</span> <span class="o">=</span> <span class="n">new_phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
+</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="n">diff_map_files</span><span class="p">(</span><span class="n">old_map_path</span><span class="p">,</span> <span class="n">new_map_path</span><span class="p">)</span>
+</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a>
+</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a>    <span class="c1"># initialise report file</span>
+</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Writing to report file </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">report_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a>    <span class="n">report_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">report_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span>
+</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a>    <span class="n">report_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">report</span><span class="p">)</span>
+</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a>    <span class="n">report_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a>
+</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotypes diff&#39;d successfully&quot;</span><span class="p">)</span>
+</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a>
+</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a>
+</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff</span><span class="p">(</span>
+</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a>    <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a>    <span class="n">old_phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a>    <span class="n">old_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a>    <span class="n">not_check_config</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a><span class="p">):</span>
+</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a>    <span class="c1"># make tmp directory .acmc</span>
+</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a>    <span class="n">timestamp</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y%m</span><span class="si">%d</span><span class="s2">_%H%M%S&quot;</span><span class="p">)</span>
+</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a>    <span class="n">temp_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;.acmc/diff_</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a>
+</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a>    <span class="n">changed_phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">changed_phen_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a>            <span class="sa">f</span><span class="s2">&quot;Changed phenotype directory does not exist: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a>        <span class="p">)</span>
+</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a>
+</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a>    <span class="n">old_phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">old_phen_dir</span><span class="p">)</span>
+</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">old_phen_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a>            <span class="sa">f</span><span class="s2">&quot;Old phenotype directory does not exist: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a>        <span class="p">)</span>
+</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a>
+</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a>    <span class="c1">#    t_path = old_phen_path / &quot;config.yml&quot;</span>
+</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a>    <span class="c1">#    with t_path.open(&quot;r&quot;) as file:</span>
+</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a>    <span class="c1">#        c = yaml.safe_load(file)</span>
+</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a>
+</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a>    <span class="k">try</span><span class="p">:</span>
+</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a>        <span class="c1"># Create the directory</span>
+</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a>        <span class="n">temp_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Temporary directory created: </span><span class="si">{</span><span class="n">temp_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a>
+</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a>        <span class="c1"># Create temporary directories</span>
+</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a>        <span class="n">changed_path</span> <span class="o">=</span> <span class="n">temp_dir</span> <span class="o">/</span> <span class="s2">&quot;changed&quot;</span>
+</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a>        <span class="n">changed_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a>        <span class="n">old_path</span> <span class="o">=</span> <span class="n">temp_dir</span> <span class="o">/</span> <span class="s2">&quot;old&quot;</span>
+</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a>        <span class="n">old_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a>
+</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a>        <span class="c1"># checkout changed</span>
+</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a>        <span class="k">if</span> <span class="n">version</span> <span class="o">==</span> <span class="s2">&quot;latest&quot;</span><span class="p">:</span>
+</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a>                <span class="sa">f</span><span class="s2">&quot;Copying changed repo from </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">changed_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span>
+</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a>            <span class="p">)</span>
+</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="p">,</span> <span class="n">changed_path</span><span class="p">,</span> <span class="n">dirs_exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a>                <span class="sa">f</span><span class="s2">&quot;Cloning changed repo from </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">changed_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span>
+</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a>            <span class="p">)</span>
+</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a>            <span class="n">changed_repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="p">,</span> <span class="n">changed_path</span><span class="p">)</span>
+</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a>            <span class="n">changed_repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
+</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a>
+</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a>        <span class="c1"># checkout old</span>
+</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a>        <span class="k">if</span> <span class="n">old_version</span> <span class="o">==</span> <span class="s2">&quot;latest&quot;</span><span class="p">:</span>
+</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a>                <span class="sa">f</span><span class="s2">&quot;Copying old repo from </span><span class="si">{</span><span class="n">old_phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">old_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">...&quot;</span>
+</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a>            <span class="p">)</span>
+</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">old_phen_path</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">dirs_exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a>                <span class="sa">f</span><span class="s2">&quot;Cloning old repo from </span><span class="si">{</span><span class="n">old_phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">old_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">...&quot;</span>
+</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a>            <span class="p">)</span>
+</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a>            <span class="n">old_repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">old_phen_dir</span><span class="p">,</span> <span class="n">old_path</span><span class="p">)</span>
+</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a>            <span class="n">old_repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">old_version</span><span class="p">)</span>
+</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a>
+</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a>        <span class="n">report_filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">_diff.md&quot;</span>
+</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a>        <span class="n">report_path</span> <span class="o">=</span> <span class="n">changed_phen_path</span> <span class="o">/</span> <span class="n">report_filename</span>
+</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a>        <span class="c1"># diff old with new</span>
+</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a>        <span class="n">diff_phen</span><span class="p">(</span>
+</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a>            <span class="n">changed_path</span><span class="p">,</span> <span class="n">version</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">old_version</span><span class="p">,</span> <span class="n">report_path</span><span class="p">,</span> <span class="n">not_check_config</span>
+</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a>        <span class="p">)</span>
+</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a>
+</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a>    <span class="k">finally</span><span class="p">:</span>
+</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a>        <span class="c1"># clean up tmp directory</span>
+</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a>        <span class="k">if</span> <span class="n">temp_dir</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">temp_dir</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -1950,7 +1992,7 @@
                     <div class="attr variable">
             <span class="name">CONFIG_SCHEMA</span>        =
 <input id="CONFIG_SCHEMA-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
-            <label class="view-value-button pdoc-button" for="CONFIG_SCHEMA-view-value"></label><span class="default_value">{&#39;phenotype&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;required&#39;: True, &#39;schema&#39;: {&#39;version&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True, &#39;regex&#39;: &#39;^\\d+\\.\\d+\\.\\d+$&#39;}, &#39;omop&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;required&#39;: True, &#39;schema&#39;: {&#39;vocabulary_id&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True}, &#39;vocabulary_name&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True}, &#39;vocabulary_reference&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True, &#39;regex&#39;: &#39;^https?://.*&#39;}}}, &#39;map&#39;: {&#39;type&#39;: &#39;list&#39;, &#39;schema&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;allowed&#39;: [&#39;read3&#39;, &#39;read2&#39;, &#39;snomed&#39;, &#39;opcs4&#39;, &#39;icd10&#39;, &#39;atc&#39;]}}, &#39;concept_sets&#39;: {&#39;type&#39;: &#39;list&#39;, &#39;required&#39;: True, &#39;schema&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;schema&#39;: {&#39;name&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True}, &#39;files&#39;: {&#39;type&#39;: &#39;list&#39;, &#39;required&#39;: True, &#39;schema&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;schema&#39;: {&#39;path&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True}, &#39;columns&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;required&#39;: True}, &#39;category&#39;: {&#39;type&#39;: &#39;string&#39;}, &#39;actions&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;schema&#39;: {&#39;divide_col&#39;: {&#39;type&#39;: &#39;string&#39;}, &#39;split_col&#39;: {&#39;type&#39;: &#39;string&#39;}, &#39;codes_col&#39;: {&#39;type&#39;: &#39;string&#39;}}}}}}, &#39;metadata&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;required&#39;: False}}}}}}}</span>
+            <label class="view-value-button pdoc-button" for="CONFIG_SCHEMA-view-value"></label><span class="default_value">{&#39;phenotype&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;required&#39;: True, &#39;schema&#39;: {&#39;version&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True, &#39;regex&#39;: &#39;^\\d+\\.\\d+\\.\\d+$&#39;}, &#39;omop&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;required&#39;: True, &#39;schema&#39;: {&#39;vocabulary_id&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True}, &#39;vocabulary_name&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True}, &#39;vocabulary_reference&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True, &#39;regex&#39;: &#39;^https?://.*&#39;}}}, &#39;map&#39;: {&#39;type&#39;: &#39;list&#39;, &#39;schema&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;allowed&#39;: [&#39;opcs4&#39;, &#39;atc&#39;, &#39;snomed&#39;, &#39;icd10&#39;, &#39;read2&#39;, &#39;read3&#39;]}}, &#39;concept_sets&#39;: {&#39;type&#39;: &#39;list&#39;, &#39;required&#39;: True, &#39;schema&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;schema&#39;: {&#39;name&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True}, &#39;files&#39;: {&#39;type&#39;: &#39;list&#39;, &#39;required&#39;: True, &#39;schema&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;schema&#39;: {&#39;path&#39;: {&#39;type&#39;: &#39;string&#39;, &#39;required&#39;: True}, &#39;columns&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;required&#39;: True}, &#39;category&#39;: {&#39;type&#39;: &#39;string&#39;}, &#39;actions&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;schema&#39;: {&#39;divide_col&#39;: {&#39;type&#39;: &#39;string&#39;}, &#39;split_col&#39;: {&#39;type&#39;: &#39;string&#39;}, &#39;codes_col&#39;: {&#39;type&#39;: &#39;string&#39;}}}}}}, &#39;metadata&#39;: {&#39;type&#39;: &#39;dict&#39;, &#39;required&#39;: False}}}}}}}</span>
 
         
     </div>
@@ -2426,7 +2468,7 @@
 <div class="attr function">
             
         <span class="def">def</span>
-        <span class="name">translate_codes</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="n">source_df</span><span class="p">:</span> <span class="n">pandas</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">DataFrame</span>,</span><span class="param">	<span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">concept_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span></span><span class="return-annotation">) -> <span class="n">pandas</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">DataFrame</span>:</span></span>
+        <span class="name">translate_codes</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="n">source_df</span><span class="p">:</span> <span class="n">pandas</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">DataFrame</span>,</span><span class="param">	<span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">concept_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span>,</span><span class="param">	<span class="n">do_reverse_translate</span><span class="p">:</span> <span class="nb">bool</span></span><span class="return-annotation">) -> <span class="n">pandas</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">DataFrame</span>:</span></span>
 
                 <label class="view-source-button" for="translate_codes-view-source"><span>View Source</span></label>
 
@@ -2437,66 +2479,64 @@
 </span><span id="translate_codes-667"><a href="#translate_codes-667"><span class="linenos">667</span></a>    <span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
 </span><span id="translate_codes-668"><a href="#translate_codes-668"><span class="linenos">668</span></a>    <span class="n">concept_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
 </span><span id="translate_codes-669"><a href="#translate_codes-669"><span class="linenos">669</span></a>    <span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="translate_codes-670"><a href="#translate_codes-670"><span class="linenos">670</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
-</span><span id="translate_codes-671"><a href="#translate_codes-671"><span class="linenos">671</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Translates each source code type the source coding list into a target type and returns all conversions as a concept set&quot;&quot;&quot;</span>
-</span><span id="translate_codes-672"><a href="#translate_codes-672"><span class="linenos">672</span></a>
-</span><span id="translate_codes-673"><a href="#translate_codes-673"><span class="linenos">673</span></a>    <span class="c1"># codes = pd.DataFrame([], dtype=str)</span>
-</span><span id="translate_codes-674"><a href="#translate_codes-674"><span class="linenos">674</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
-</span><span id="translate_codes-675"><a href="#translate_codes-675"><span class="linenos">675</span></a>        <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;string&quot;</span>
-</span><span id="translate_codes-676"><a href="#translate_codes-676"><span class="linenos">676</span></a>    <span class="p">)</span>
-</span><span id="translate_codes-677"><a href="#translate_codes-677"><span class="linenos">677</span></a>    <span class="c1"># Convert codes to target type</span>
-</span><span id="translate_codes-678"><a href="#translate_codes-678"><span class="linenos">678</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Converting to target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="translate_codes-679"><a href="#translate_codes-679"><span class="linenos">679</span></a>
-</span><span id="translate_codes-680"><a href="#translate_codes-680"><span class="linenos">680</span></a>    <span class="k">for</span> <span class="n">source_code_type</span> <span class="ow">in</span> <span class="n">source_df</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
-</span><span id="translate_codes-681"><a href="#translate_codes-681"><span class="linenos">681</span></a>        <span class="c1"># if target code type is the same as thet source code type, no translation, just appending source as target</span>
-</span><span id="translate_codes-682"><a href="#translate_codes-682"><span class="linenos">682</span></a>        <span class="k">if</span> <span class="n">source_code_type</span> <span class="o">==</span> <span class="n">target_code_type</span><span class="p">:</span>
-</span><span id="translate_codes-683"><a href="#translate_codes-683"><span class="linenos">683</span></a>            <span class="n">copy_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
-</span><span id="translate_codes-684"><a href="#translate_codes-684"><span class="linenos">684</span></a>                <span class="p">{</span>
-</span><span id="translate_codes-685"><a href="#translate_codes-685"><span class="linenos">685</span></a>                    <span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">:</span> <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span>
-</span><span id="translate_codes-686"><a href="#translate_codes-686"><span class="linenos">686</span></a>                    <span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">:</span> <span class="n">source_code_type</span><span class="p">,</span>
-</span><span id="translate_codes-687"><a href="#translate_codes-687"><span class="linenos">687</span></a>                    <span class="s2">&quot;CONCEPT&quot;</span><span class="p">:</span> <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span>
-</span><span id="translate_codes-688"><a href="#translate_codes-688"><span class="linenos">688</span></a>                <span class="p">}</span>
-</span><span id="translate_codes-689"><a href="#translate_codes-689"><span class="linenos">689</span></a>            <span class="p">)</span>
-</span><span id="translate_codes-690"><a href="#translate_codes-690"><span class="linenos">690</span></a>            <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">codes</span><span class="p">,</span> <span class="n">copy_df</span><span class="p">])</span>
-</span><span id="translate_codes-691"><a href="#translate_codes-691"><span class="linenos">691</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="translate_codes-692"><a href="#translate_codes-692"><span class="linenos">692</span></a>                <span class="sa">f</span><span class="s2">&quot;Target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2"> is the same as source code type </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">source_df</span><span class="p">)</span><span class="si">}</span><span class="s2">, copying codes rather than translating&quot;</span>
-</span><span id="translate_codes-693"><a href="#translate_codes-693"><span class="linenos">693</span></a>            <span class="p">)</span>
-</span><span id="translate_codes-694"><a href="#translate_codes-694"><span class="linenos">694</span></a>        <span class="k">elif</span> <span class="ow">not</span> <span class="n">not_translate</span><span class="p">:</span>
-</span><span id="translate_codes-695"><a href="#translate_codes-695"><span class="linenos">695</span></a>            <span class="c1"># get the translation filename using source to target code types</span>
-</span><span id="translate_codes-696"><a href="#translate_codes-696"><span class="linenos">696</span></a>            <span class="n">filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2">_to_</span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">.parquet&quot;</span>
-</span><span id="translate_codes-697"><a href="#translate_codes-697"><span class="linenos">697</span></a>            <span class="n">map_path</span> <span class="o">=</span> <span class="n">trud</span><span class="o">.</span><span class="n">PROCESSED_PATH</span> <span class="o">/</span> <span class="n">filename</span>
-</span><span id="translate_codes-698"><a href="#translate_codes-698"><span class="linenos">698</span></a>
-</span><span id="translate_codes-699"><a href="#translate_codes-699"><span class="linenos">699</span></a>            <span class="c1"># do the mapping if it exists</span>
-</span><span id="translate_codes-700"><a href="#translate_codes-700"><span class="linenos">700</span></a>            <span class="k">if</span> <span class="n">map_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="translate_codes-701"><a href="#translate_codes-701"><span class="linenos">701</span></a>                <span class="c1"># get mapping</span>
-</span><span id="translate_codes-702"><a href="#translate_codes-702"><span class="linenos">702</span></a>                <span class="n">df_map</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_parquet</span><span class="p">(</span><span class="n">map_path</span><span class="p">)</span>
-</span><span id="translate_codes-703"><a href="#translate_codes-703"><span class="linenos">703</span></a>
-</span><span id="translate_codes-704"><a href="#translate_codes-704"><span class="linenos">704</span></a>                <span class="c1"># do mapping</span>
-</span><span id="translate_codes-705"><a href="#translate_codes-705"><span class="linenos">705</span></a>                <span class="n">translated_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span>
-</span><span id="translate_codes-706"><a href="#translate_codes-706"><span class="linenos">706</span></a>                    <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span> <span class="n">df_map</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s2">&quot;left&quot;</span>
-</span><span id="translate_codes-707"><a href="#translate_codes-707"><span class="linenos">707</span></a>                <span class="p">)</span>
-</span><span id="translate_codes-708"><a href="#translate_codes-708"><span class="linenos">708</span></a>
-</span><span id="translate_codes-709"><a href="#translate_codes-709"><span class="linenos">709</span></a>                <span class="c1"># normalise the output</span>
-</span><span id="translate_codes-710"><a href="#translate_codes-710"><span class="linenos">710</span></a>                <span class="n">translated_df</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Index</span><span class="p">([</span><span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
-</span><span id="translate_codes-711"><a href="#translate_codes-711"><span class="linenos">711</span></a>                <span class="n">translated_df</span><span class="p">[</span><span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">source_code_type</span>
-</span><span id="translate_codes-712"><a href="#translate_codes-712"><span class="linenos">712</span></a>
-</span><span id="translate_codes-713"><a href="#translate_codes-713"><span class="linenos">713</span></a>                <span class="c1"># add to list of codes</span>
-</span><span id="translate_codes-714"><a href="#translate_codes-714"><span class="linenos">714</span></a>                <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">codes</span><span class="p">,</span> <span class="n">translated_df</span><span class="p">])</span>
+</span><span id="translate_codes-670"><a href="#translate_codes-670"><span class="linenos">670</span></a>    <span class="n">do_reverse_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="translate_codes-671"><a href="#translate_codes-671"><span class="linenos">671</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
+</span><span id="translate_codes-672"><a href="#translate_codes-672"><span class="linenos">672</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Translates each source code type the source coding list into a target type and returns all conversions as a concept set&quot;&quot;&quot;</span>
+</span><span id="translate_codes-673"><a href="#translate_codes-673"><span class="linenos">673</span></a>
+</span><span id="translate_codes-674"><a href="#translate_codes-674"><span class="linenos">674</span></a>    <span class="c1"># codes = pd.DataFrame([], dtype=str)</span>
+</span><span id="translate_codes-675"><a href="#translate_codes-675"><span class="linenos">675</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
+</span><span id="translate_codes-676"><a href="#translate_codes-676"><span class="linenos">676</span></a>        <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT&quot;</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;string&quot;</span>
+</span><span id="translate_codes-677"><a href="#translate_codes-677"><span class="linenos">677</span></a>    <span class="p">)</span>
+</span><span id="translate_codes-678"><a href="#translate_codes-678"><span class="linenos">678</span></a>    <span class="c1"># Convert codes to target type</span>
+</span><span id="translate_codes-679"><a href="#translate_codes-679"><span class="linenos">679</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Converting to target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="translate_codes-680"><a href="#translate_codes-680"><span class="linenos">680</span></a>
+</span><span id="translate_codes-681"><a href="#translate_codes-681"><span class="linenos">681</span></a>    <span class="k">for</span> <span class="n">source_code_type</span> <span class="ow">in</span> <span class="n">source_df</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
+</span><span id="translate_codes-682"><a href="#translate_codes-682"><span class="linenos">682</span></a>        <span class="c1"># if target code type is the same as thet source code type, no translation, just appending source as target</span>
+</span><span id="translate_codes-683"><a href="#translate_codes-683"><span class="linenos">683</span></a>        <span class="k">if</span> <span class="n">source_code_type</span> <span class="o">==</span> <span class="n">target_code_type</span><span class="p">:</span>
+</span><span id="translate_codes-684"><a href="#translate_codes-684"><span class="linenos">684</span></a>            <span class="n">copy_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
+</span><span id="translate_codes-685"><a href="#translate_codes-685"><span class="linenos">685</span></a>                <span class="p">{</span>
+</span><span id="translate_codes-686"><a href="#translate_codes-686"><span class="linenos">686</span></a>                    <span class="s2">&quot;SOURCE_CONCEPT&quot;</span><span class="p">:</span> <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span>
+</span><span id="translate_codes-687"><a href="#translate_codes-687"><span class="linenos">687</span></a>                    <span class="s2">&quot;SOURCE_CONCEPT_TYPE&quot;</span><span class="p">:</span> <span class="n">source_code_type</span><span class="p">,</span>
+</span><span id="translate_codes-688"><a href="#translate_codes-688"><span class="linenos">688</span></a>                    <span class="s2">&quot;CONCEPT&quot;</span><span class="p">:</span> <span class="n">source_df</span><span class="p">[</span><span class="n">source_code_type</span><span class="p">],</span>
+</span><span id="translate_codes-689"><a href="#translate_codes-689"><span class="linenos">689</span></a>                <span class="p">}</span>
+</span><span id="translate_codes-690"><a href="#translate_codes-690"><span class="linenos">690</span></a>            <span class="p">)</span>
+</span><span id="translate_codes-691"><a href="#translate_codes-691"><span class="linenos">691</span></a>            <span class="n">codes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">codes</span><span class="p">,</span> <span class="n">copy_df</span><span class="p">])</span>
+</span><span id="translate_codes-692"><a href="#translate_codes-692"><span class="linenos">692</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="translate_codes-693"><a href="#translate_codes-693"><span class="linenos">693</span></a>                <span class="sa">f</span><span class="s2">&quot;Target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2"> is the same as source code type </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">source_df</span><span class="p">)</span><span class="si">}</span><span class="s2">, copying codes rather than translating&quot;</span>
+</span><span id="translate_codes-694"><a href="#translate_codes-694"><span class="linenos">694</span></a>            <span class="p">)</span>
+</span><span id="translate_codes-695"><a href="#translate_codes-695"><span class="linenos">695</span></a>        <span class="k">elif</span> <span class="ow">not</span> <span class="n">not_translate</span><span class="p">:</span>
+</span><span id="translate_codes-696"><a href="#translate_codes-696"><span class="linenos">696</span></a>            <span class="c1"># get the translation filename using source to target code types</span>
+</span><span id="translate_codes-697"><a href="#translate_codes-697"><span class="linenos">697</span></a>            <span class="n">filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2">_to_</span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">.parquet&quot;</span>
+</span><span id="translate_codes-698"><a href="#translate_codes-698"><span class="linenos">698</span></a>            <span class="n">map_path</span> <span class="o">=</span> <span class="n">trud</span><span class="o">.</span><span class="n">PROCESSED_PATH</span> <span class="o">/</span> <span class="n">filename</span>
+</span><span id="translate_codes-699"><a href="#translate_codes-699"><span class="linenos">699</span></a>
+</span><span id="translate_codes-700"><a href="#translate_codes-700"><span class="linenos">700</span></a>            <span class="n">filename_reversed</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">_to_</span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2">.parquet&quot;</span>
+</span><span id="translate_codes-701"><a href="#translate_codes-701"><span class="linenos">701</span></a>            <span class="n">map_path_reversed</span> <span class="o">=</span> <span class="n">trud</span><span class="o">.</span><span class="n">PROCESSED_PATH</span> <span class="o">/</span> <span class="n">filename_reversed</span>
+</span><span id="translate_codes-702"><a href="#translate_codes-702"><span class="linenos">702</span></a>
+</span><span id="translate_codes-703"><a href="#translate_codes-703"><span class="linenos">703</span></a>            <span class="c1"># do the mapping if it exists</span>
+</span><span id="translate_codes-704"><a href="#translate_codes-704"><span class="linenos">704</span></a>            <span class="k">if</span> <span class="n">map_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="translate_codes-705"><a href="#translate_codes-705"><span class="linenos">705</span></a>                <span class="n">codes</span> <span class="o">=</span> <span class="n">_translate_codes</span><span class="p">(</span><span class="n">map_path</span><span class="p">,</span> <span class="n">source_df</span><span class="p">,</span> <span class="n">source_code_type</span><span class="p">,</span> <span class="n">codes</span><span class="p">)</span>
+</span><span id="translate_codes-706"><a href="#translate_codes-706"><span class="linenos">706</span></a>            <span class="c1"># otherwise do reverse mapping if enabled and it exists</span>
+</span><span id="translate_codes-707"><a href="#translate_codes-707"><span class="linenos">707</span></a>            <span class="k">elif</span> <span class="n">do_reverse_translate</span> <span class="ow">and</span> <span class="n">map_path_reversed</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="translate_codes-708"><a href="#translate_codes-708"><span class="linenos">708</span></a>                <span class="n">codes</span> <span class="o">=</span> <span class="n">_translate_codes</span><span class="p">(</span>
+</span><span id="translate_codes-709"><a href="#translate_codes-709"><span class="linenos">709</span></a>                    <span class="n">map_path_reversed</span><span class="p">,</span> <span class="n">source_df</span><span class="p">,</span> <span class="n">source_code_type</span><span class="p">,</span> <span class="n">codes</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">True</span>
+</span><span id="translate_codes-710"><a href="#translate_codes-710"><span class="linenos">710</span></a>                <span class="p">)</span>
+</span><span id="translate_codes-711"><a href="#translate_codes-711"><span class="linenos">711</span></a>            <span class="k">else</span><span class="p">:</span>
+</span><span id="translate_codes-712"><a href="#translate_codes-712"><span class="linenos">712</span></a>                <span class="n">_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
+</span><span id="translate_codes-713"><a href="#translate_codes-713"><span class="linenos">713</span></a>                    <span class="sa">f</span><span class="s2">&quot;No mapping from </span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">, file </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">map_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2"> does not exist&quot;</span>
+</span><span id="translate_codes-714"><a href="#translate_codes-714"><span class="linenos">714</span></a>                <span class="p">)</span>
 </span><span id="translate_codes-715"><a href="#translate_codes-715"><span class="linenos">715</span></a>
-</span><span id="translate_codes-716"><a href="#translate_codes-716"><span class="linenos">716</span></a>            <span class="k">else</span><span class="p">:</span>
-</span><span id="translate_codes-717"><a href="#translate_codes-717"><span class="linenos">717</span></a>                <span class="n">_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
-</span><span id="translate_codes-718"><a href="#translate_codes-718"><span class="linenos">718</span></a>                    <span class="sa">f</span><span class="s2">&quot;No mapping from </span><span class="si">{</span><span class="n">source_code_type</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">, file </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">map_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2"> does not exist&quot;</span>
-</span><span id="translate_codes-719"><a href="#translate_codes-719"><span class="linenos">719</span></a>                <span class="p">)</span>
-</span><span id="translate_codes-720"><a href="#translate_codes-720"><span class="linenos">720</span></a>
-</span><span id="translate_codes-721"><a href="#translate_codes-721"><span class="linenos">721</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">codes</span><span class="o">.</span><span class="n">dropna</span><span class="p">()</span>  <span class="c1"># delete NaNs</span>
-</span><span id="translate_codes-722"><a href="#translate_codes-722"><span class="linenos">722</span></a>
-</span><span id="translate_codes-723"><a href="#translate_codes-723"><span class="linenos">723</span></a>    <span class="c1"># added concept set type to output if any translations</span>
-</span><span id="translate_codes-724"><a href="#translate_codes-724"><span class="linenos">724</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">codes</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="translate_codes-725"><a href="#translate_codes-725"><span class="linenos">725</span></a>        <span class="n">codes</span><span class="p">[</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">concept_name</span>
-</span><span id="translate_codes-726"><a href="#translate_codes-726"><span class="linenos">726</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="translate_codes-727"><a href="#translate_codes-727"><span class="linenos">727</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No codes converted with target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="translate_codes-728"><a href="#translate_codes-728"><span class="linenos">728</span></a>
-</span><span id="translate_codes-729"><a href="#translate_codes-729"><span class="linenos">729</span></a>    <span class="k">return</span> <span class="n">codes</span>
+</span><span id="translate_codes-716"><a href="#translate_codes-716"><span class="linenos">716</span></a>    <span class="n">codes</span> <span class="o">=</span> <span class="n">codes</span><span class="o">.</span><span class="n">dropna</span><span class="p">()</span>  <span class="c1"># delete NaNs</span>
+</span><span id="translate_codes-717"><a href="#translate_codes-717"><span class="linenos">717</span></a>
+</span><span id="translate_codes-718"><a href="#translate_codes-718"><span class="linenos">718</span></a>    <span class="c1"># print(codes)</span>
+</span><span id="translate_codes-719"><a href="#translate_codes-719"><span class="linenos">719</span></a>
+</span><span id="translate_codes-720"><a href="#translate_codes-720"><span class="linenos">720</span></a>    <span class="c1"># added concept set type to output if any translations</span>
+</span><span id="translate_codes-721"><a href="#translate_codes-721"><span class="linenos">721</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">codes</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="translate_codes-722"><a href="#translate_codes-722"><span class="linenos">722</span></a>        <span class="n">codes</span><span class="p">[</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">concept_name</span>
+</span><span id="translate_codes-723"><a href="#translate_codes-723"><span class="linenos">723</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="translate_codes-724"><a href="#translate_codes-724"><span class="linenos">724</span></a>        <span class="c1"># print(&quot;NO CODES CONVERTED&quot;)</span>
+</span><span id="translate_codes-725"><a href="#translate_codes-725"><span class="linenos">725</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No codes converted with target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="translate_codes-726"><a href="#translate_codes-726"><span class="linenos">726</span></a>
+</span><span id="translate_codes-727"><a href="#translate_codes-727"><span class="linenos">727</span></a>    <span class="k">return</span> <span class="n">codes</span>
 </span></pre></div>
 
 
@@ -2516,43 +2556,43 @@
 
     </div>
     <a class="headerlink" href="#write_vocab_version"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="write_vocab_version-751"><a href="#write_vocab_version-751"><span class="linenos">751</span></a><span class="k">def</span><span class="w"> </span><span class="nf">write_vocab_version</span><span class="p">(</span><span class="n">phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">):</span>
-</span><span id="write_vocab_version-752"><a href="#write_vocab_version-752"><span class="linenos">752</span></a>    <span class="c1"># write the vocab version files</span>
-</span><span id="write_vocab_version-753"><a href="#write_vocab_version-753"><span class="linenos">753</span></a>
-</span><span id="write_vocab_version-754"><a href="#write_vocab_version-754"><span class="linenos">754</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="write_vocab_version-755"><a href="#write_vocab_version-755"><span class="linenos">755</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span>
-</span><span id="write_vocab_version-756"><a href="#write_vocab_version-756"><span class="linenos">756</span></a>            <span class="sa">f</span><span class="s2">&quot;TRUD version path </span><span class="si">{</span><span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="si">}</span><span class="s2"> does not exist, please check TRUD is installed&quot;</span>
-</span><span id="write_vocab_version-757"><a href="#write_vocab_version-757"><span class="linenos">757</span></a>        <span class="p">)</span>
-</span><span id="write_vocab_version-758"><a href="#write_vocab_version-758"><span class="linenos">758</span></a>
-</span><span id="write_vocab_version-759"><a href="#write_vocab_version-759"><span class="linenos">759</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="write_vocab_version-760"><a href="#write_vocab_version-760"><span class="linenos">760</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span>
-</span><span id="write_vocab_version-761"><a href="#write_vocab_version-761"><span class="linenos">761</span></a>            <span class="sa">f</span><span class="s2">&quot;OMOP version path </span><span class="si">{</span><span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="si">}</span><span class="s2"> does not exist, please check OMOP is installed&quot;</span>
-</span><span id="write_vocab_version-762"><a href="#write_vocab_version-762"><span class="linenos">762</span></a>        <span class="p">)</span>
-</span><span id="write_vocab_version-763"><a href="#write_vocab_version-763"><span class="linenos">763</span></a>
-</span><span id="write_vocab_version-764"><a href="#write_vocab_version-764"><span class="linenos">764</span></a>    <span class="k">with</span> <span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="write_vocab_version-765"><a href="#write_vocab_version-765"><span class="linenos">765</span></a>        <span class="n">trud_version</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="write_vocab_version-766"><a href="#write_vocab_version-766"><span class="linenos">766</span></a>
-</span><span id="write_vocab_version-767"><a href="#write_vocab_version-767"><span class="linenos">767</span></a>    <span class="k">with</span> <span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="write_vocab_version-768"><a href="#write_vocab_version-768"><span class="linenos">768</span></a>        <span class="n">omop_version</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="write_vocab_version-769"><a href="#write_vocab_version-769"><span class="linenos">769</span></a>
-</span><span id="write_vocab_version-770"><a href="#write_vocab_version-770"><span class="linenos">770</span></a>    <span class="c1"># Create the combined YAML structure</span>
-</span><span id="write_vocab_version-771"><a href="#write_vocab_version-771"><span class="linenos">771</span></a>    <span class="n">version_data</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="write_vocab_version-772"><a href="#write_vocab_version-772"><span class="linenos">772</span></a>        <span class="s2">&quot;versions&quot;</span><span class="p">:</span> <span class="p">{</span>
-</span><span id="write_vocab_version-773"><a href="#write_vocab_version-773"><span class="linenos">773</span></a>            <span class="s2">&quot;acmc&quot;</span><span class="p">:</span> <span class="n">acmc</span><span class="o">.</span><span class="n">__version__</span><span class="p">,</span>
-</span><span id="write_vocab_version-774"><a href="#write_vocab_version-774"><span class="linenos">774</span></a>            <span class="s2">&quot;trud&quot;</span><span class="p">:</span> <span class="n">trud_version</span><span class="p">,</span>
-</span><span id="write_vocab_version-775"><a href="#write_vocab_version-775"><span class="linenos">775</span></a>            <span class="s2">&quot;omop&quot;</span><span class="p">:</span> <span class="n">omop_version</span><span class="p">,</span>
-</span><span id="write_vocab_version-776"><a href="#write_vocab_version-776"><span class="linenos">776</span></a>        <span class="p">}</span>
-</span><span id="write_vocab_version-777"><a href="#write_vocab_version-777"><span class="linenos">777</span></a>    <span class="p">}</span>
-</span><span id="write_vocab_version-778"><a href="#write_vocab_version-778"><span class="linenos">778</span></a>
-</span><span id="write_vocab_version-779"><a href="#write_vocab_version-779"><span class="linenos">779</span></a>    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">phen_path</span> <span class="o">/</span> <span class="n">VOCAB_VERSION_FILE</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="write_vocab_version-780"><a href="#write_vocab_version-780"><span class="linenos">780</span></a>        <span class="n">yaml</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
-</span><span id="write_vocab_version-781"><a href="#write_vocab_version-781"><span class="linenos">781</span></a>            <span class="n">version_data</span><span class="p">,</span>
-</span><span id="write_vocab_version-782"><a href="#write_vocab_version-782"><span class="linenos">782</span></a>            <span class="n">file</span><span class="p">,</span>
-</span><span id="write_vocab_version-783"><a href="#write_vocab_version-783"><span class="linenos">783</span></a>            <span class="n">Dumper</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">QuotedDumper</span><span class="p">,</span>
-</span><span id="write_vocab_version-784"><a href="#write_vocab_version-784"><span class="linenos">784</span></a>            <span class="n">default_flow_style</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="write_vocab_version-785"><a href="#write_vocab_version-785"><span class="linenos">785</span></a>            <span class="n">sort_keys</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="write_vocab_version-786"><a href="#write_vocab_version-786"><span class="linenos">786</span></a>            <span class="n">default_style</span><span class="o">=</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span>
-</span><span id="write_vocab_version-787"><a href="#write_vocab_version-787"><span class="linenos">787</span></a>        <span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="write_vocab_version-772"><a href="#write_vocab_version-772"><span class="linenos">772</span></a><span class="k">def</span><span class="w"> </span><span class="nf">write_vocab_version</span><span class="p">(</span><span class="n">phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">):</span>
+</span><span id="write_vocab_version-773"><a href="#write_vocab_version-773"><span class="linenos">773</span></a>    <span class="c1"># write the vocab version files</span>
+</span><span id="write_vocab_version-774"><a href="#write_vocab_version-774"><span class="linenos">774</span></a>
+</span><span id="write_vocab_version-775"><a href="#write_vocab_version-775"><span class="linenos">775</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="write_vocab_version-776"><a href="#write_vocab_version-776"><span class="linenos">776</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span>
+</span><span id="write_vocab_version-777"><a href="#write_vocab_version-777"><span class="linenos">777</span></a>            <span class="sa">f</span><span class="s2">&quot;TRUD version path </span><span class="si">{</span><span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="si">}</span><span class="s2"> does not exist, please check TRUD is installed&quot;</span>
+</span><span id="write_vocab_version-778"><a href="#write_vocab_version-778"><span class="linenos">778</span></a>        <span class="p">)</span>
+</span><span id="write_vocab_version-779"><a href="#write_vocab_version-779"><span class="linenos">779</span></a>
+</span><span id="write_vocab_version-780"><a href="#write_vocab_version-780"><span class="linenos">780</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="write_vocab_version-781"><a href="#write_vocab_version-781"><span class="linenos">781</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span>
+</span><span id="write_vocab_version-782"><a href="#write_vocab_version-782"><span class="linenos">782</span></a>            <span class="sa">f</span><span class="s2">&quot;OMOP version path </span><span class="si">{</span><span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="si">}</span><span class="s2"> does not exist, please check OMOP is installed&quot;</span>
+</span><span id="write_vocab_version-783"><a href="#write_vocab_version-783"><span class="linenos">783</span></a>        <span class="p">)</span>
+</span><span id="write_vocab_version-784"><a href="#write_vocab_version-784"><span class="linenos">784</span></a>
+</span><span id="write_vocab_version-785"><a href="#write_vocab_version-785"><span class="linenos">785</span></a>    <span class="k">with</span> <span class="n">trud</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="write_vocab_version-786"><a href="#write_vocab_version-786"><span class="linenos">786</span></a>        <span class="n">trud_version</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="write_vocab_version-787"><a href="#write_vocab_version-787"><span class="linenos">787</span></a>
+</span><span id="write_vocab_version-788"><a href="#write_vocab_version-788"><span class="linenos">788</span></a>    <span class="k">with</span> <span class="n">omop</span><span class="o">.</span><span class="n">VERSION_PATH</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="write_vocab_version-789"><a href="#write_vocab_version-789"><span class="linenos">789</span></a>        <span class="n">omop_version</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="write_vocab_version-790"><a href="#write_vocab_version-790"><span class="linenos">790</span></a>
+</span><span id="write_vocab_version-791"><a href="#write_vocab_version-791"><span class="linenos">791</span></a>    <span class="c1"># Create the combined YAML structure</span>
+</span><span id="write_vocab_version-792"><a href="#write_vocab_version-792"><span class="linenos">792</span></a>    <span class="n">version_data</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="write_vocab_version-793"><a href="#write_vocab_version-793"><span class="linenos">793</span></a>        <span class="s2">&quot;versions&quot;</span><span class="p">:</span> <span class="p">{</span>
+</span><span id="write_vocab_version-794"><a href="#write_vocab_version-794"><span class="linenos">794</span></a>            <span class="s2">&quot;acmc&quot;</span><span class="p">:</span> <span class="n">acmc</span><span class="o">.</span><span class="n">__version__</span><span class="p">,</span>
+</span><span id="write_vocab_version-795"><a href="#write_vocab_version-795"><span class="linenos">795</span></a>            <span class="s2">&quot;trud&quot;</span><span class="p">:</span> <span class="n">trud_version</span><span class="p">,</span>
+</span><span id="write_vocab_version-796"><a href="#write_vocab_version-796"><span class="linenos">796</span></a>            <span class="s2">&quot;omop&quot;</span><span class="p">:</span> <span class="n">omop_version</span><span class="p">,</span>
+</span><span id="write_vocab_version-797"><a href="#write_vocab_version-797"><span class="linenos">797</span></a>        <span class="p">}</span>
+</span><span id="write_vocab_version-798"><a href="#write_vocab_version-798"><span class="linenos">798</span></a>    <span class="p">}</span>
+</span><span id="write_vocab_version-799"><a href="#write_vocab_version-799"><span class="linenos">799</span></a>
+</span><span id="write_vocab_version-800"><a href="#write_vocab_version-800"><span class="linenos">800</span></a>    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">phen_path</span> <span class="o">/</span> <span class="n">VOCAB_VERSION_FILE</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="write_vocab_version-801"><a href="#write_vocab_version-801"><span class="linenos">801</span></a>        <span class="n">yaml</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
+</span><span id="write_vocab_version-802"><a href="#write_vocab_version-802"><span class="linenos">802</span></a>            <span class="n">version_data</span><span class="p">,</span>
+</span><span id="write_vocab_version-803"><a href="#write_vocab_version-803"><span class="linenos">803</span></a>            <span class="n">file</span><span class="p">,</span>
+</span><span id="write_vocab_version-804"><a href="#write_vocab_version-804"><span class="linenos">804</span></a>            <span class="n">Dumper</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">QuotedDumper</span><span class="p">,</span>
+</span><span id="write_vocab_version-805"><a href="#write_vocab_version-805"><span class="linenos">805</span></a>            <span class="n">default_flow_style</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="write_vocab_version-806"><a href="#write_vocab_version-806"><span class="linenos">806</span></a>            <span class="n">sort_keys</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="write_vocab_version-807"><a href="#write_vocab_version-807"><span class="linenos">807</span></a>            <span class="n">default_style</span><span class="o">=</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span>
+</span><span id="write_vocab_version-808"><a href="#write_vocab_version-808"><span class="linenos">808</span></a>        <span class="p">)</span>
 </span></pre></div>
 
 
@@ -2564,44 +2604,62 @@
 <div class="attr function">
             
         <span class="def">def</span>
-        <span class="name">map</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span>,</span><span class="param">	<span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span></span><span class="return-annotation">):</span></span>
+        <span class="name">map</span><span class="signature pdoc-code multiline">(<span class="param">	<span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param">	<span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span>,</span><span class="param">	<span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span>,</span><span class="param">	<span class="n">do_reverse_translate</span><span class="p">:</span> <span class="nb">bool</span></span><span class="return-annotation">):</span></span>
 
                 <label class="view-source-button" for="map-view-source"><span>View Source</span></label>
 
     </div>
     <a class="headerlink" href="#map"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="map-790"><a href="#map-790"><span class="linenos">790</span></a><span class="k">def</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">):</span>
-</span><span id="map-791"><a href="#map-791"><span class="linenos">791</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Processing phenotype: </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="map-792"><a href="#map-792"><span class="linenos">792</span></a>
-</span><span id="map-793"><a href="#map-793"><span class="linenos">793</span></a>    <span class="c1"># Validate configuration</span>
-</span><span id="map-794"><a href="#map-794"><span class="linenos">794</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="map-795"><a href="#map-795"><span class="linenos">795</span></a>
-</span><span id="map-796"><a href="#map-796"><span class="linenos">796</span></a>    <span class="c1"># initialise paths</span>
-</span><span id="map-797"><a href="#map-797"><span class="linenos">797</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="map-798"><a href="#map-798"><span class="linenos">798</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="map-799"><a href="#map-799"><span class="linenos">799</span></a>
-</span><span id="map-800"><a href="#map-800"><span class="linenos">800</span></a>    <span class="c1"># load configuration</span>
-</span><span id="map-801"><a href="#map-801"><span class="linenos">801</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="map-802"><a href="#map-802"><span class="linenos">802</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="map-803"><a href="#map-803"><span class="linenos">803</span></a>    <span class="n">phenotype</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">]</span>
-</span><span id="map-804"><a href="#map-804"><span class="linenos">804</span></a>
-</span><span id="map-805"><a href="#map-805"><span class="linenos">805</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="map-806"><a href="#map-806"><span class="linenos">806</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No map codes defined in the phenotype configuration&quot;</span><span class="p">)</span>
-</span><span id="map-807"><a href="#map-807"><span class="linenos">807</span></a>
-</span><span id="map-808"><a href="#map-808"><span class="linenos">808</span></a>    <span class="k">if</span> <span class="n">target_code_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">target_code_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">]:</span>
-</span><span id="map-809"><a href="#map-809"><span class="linenos">809</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
-</span><span id="map-810"><a href="#map-810"><span class="linenos">810</span></a>            <span class="sa">f</span><span class="s2">&quot;Target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2"> not in phenotype configuration map </span><span class="si">{</span><span class="n">phenotype</span><span class="p">[</span><span class="s1">&#39;map&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="map-811"><a href="#map-811"><span class="linenos">811</span></a>        <span class="p">)</span>
-</span><span id="map-812"><a href="#map-812"><span class="linenos">812</span></a>
-</span><span id="map-813"><a href="#map-813"><span class="linenos">813</span></a>    <span class="k">if</span> <span class="n">target_code_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="map-814"><a href="#map-814"><span class="linenos">814</span></a>        <span class="n">_map_target_code_type</span><span class="p">(</span>
-</span><span id="map-815"><a href="#map-815"><span class="linenos">815</span></a>            <span class="n">phen_path</span><span class="p">,</span> <span class="n">phenotype</span><span class="p">,</span> <span class="n">target_code_type</span><span class="p">,</span> <span class="n">not_translate</span><span class="p">,</span> <span class="n">no_metadata</span>
-</span><span id="map-816"><a href="#map-816"><span class="linenos">816</span></a>        <span class="p">)</span>
-</span><span id="map-817"><a href="#map-817"><span class="linenos">817</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="map-818"><a href="#map-818"><span class="linenos">818</span></a>        <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">]:</span>
-</span><span id="map-819"><a href="#map-819"><span class="linenos">819</span></a>            <span class="n">_map_target_code_type</span><span class="p">(</span><span class="n">phen_path</span><span class="p">,</span> <span class="n">phenotype</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">not_translate</span><span class="p">,</span> <span class="n">no_metadata</span><span class="p">)</span>
-</span><span id="map-820"><a href="#map-820"><span class="linenos">820</span></a>
-</span><span id="map-821"><a href="#map-821"><span class="linenos">821</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype processed successfully&quot;</span><span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="map-811"><a href="#map-811"><span class="linenos">811</span></a><span class="k">def</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span>
+</span><span id="map-812"><a href="#map-812"><span class="linenos">812</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="map-813"><a href="#map-813"><span class="linenos">813</span></a>    <span class="n">target_code_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="map-814"><a href="#map-814"><span class="linenos">814</span></a>    <span class="n">not_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="map-815"><a href="#map-815"><span class="linenos">815</span></a>    <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="map-816"><a href="#map-816"><span class="linenos">816</span></a>    <span class="n">do_reverse_translate</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="map-817"><a href="#map-817"><span class="linenos">817</span></a><span class="p">):</span>
+</span><span id="map-818"><a href="#map-818"><span class="linenos">818</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Processing phenotype: </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="map-819"><a href="#map-819"><span class="linenos">819</span></a>
+</span><span id="map-820"><a href="#map-820"><span class="linenos">820</span></a>    <span class="c1"># Validate configuration</span>
+</span><span id="map-821"><a href="#map-821"><span class="linenos">821</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="map-822"><a href="#map-822"><span class="linenos">822</span></a>
+</span><span id="map-823"><a href="#map-823"><span class="linenos">823</span></a>    <span class="c1"># initialise paths</span>
+</span><span id="map-824"><a href="#map-824"><span class="linenos">824</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="map-825"><a href="#map-825"><span class="linenos">825</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="map-826"><a href="#map-826"><span class="linenos">826</span></a>
+</span><span id="map-827"><a href="#map-827"><span class="linenos">827</span></a>    <span class="c1"># load configuration</span>
+</span><span id="map-828"><a href="#map-828"><span class="linenos">828</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="map-829"><a href="#map-829"><span class="linenos">829</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="map-830"><a href="#map-830"><span class="linenos">830</span></a>    <span class="n">phenotype</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">]</span>
+</span><span id="map-831"><a href="#map-831"><span class="linenos">831</span></a>
+</span><span id="map-832"><a href="#map-832"><span class="linenos">832</span></a>    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="map-833"><a href="#map-833"><span class="linenos">833</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No map codes defined in the phenotype configuration&quot;</span><span class="p">)</span>
+</span><span id="map-834"><a href="#map-834"><span class="linenos">834</span></a>
+</span><span id="map-835"><a href="#map-835"><span class="linenos">835</span></a>    <span class="k">if</span> <span class="n">target_code_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">target_code_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">]:</span>
+</span><span id="map-836"><a href="#map-836"><span class="linenos">836</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+</span><span id="map-837"><a href="#map-837"><span class="linenos">837</span></a>            <span class="sa">f</span><span class="s2">&quot;Target code type </span><span class="si">{</span><span class="n">target_code_type</span><span class="si">}</span><span class="s2"> not in phenotype configuration map </span><span class="si">{</span><span class="n">phenotype</span><span class="p">[</span><span class="s1">&#39;map&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="map-838"><a href="#map-838"><span class="linenos">838</span></a>        <span class="p">)</span>
+</span><span id="map-839"><a href="#map-839"><span class="linenos">839</span></a>
+</span><span id="map-840"><a href="#map-840"><span class="linenos">840</span></a>    <span class="k">if</span> <span class="n">target_code_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="map-841"><a href="#map-841"><span class="linenos">841</span></a>        <span class="n">_map_target_code_type</span><span class="p">(</span>
+</span><span id="map-842"><a href="#map-842"><span class="linenos">842</span></a>            <span class="n">phen_path</span><span class="p">,</span>
+</span><span id="map-843"><a href="#map-843"><span class="linenos">843</span></a>            <span class="n">phenotype</span><span class="p">,</span>
+</span><span id="map-844"><a href="#map-844"><span class="linenos">844</span></a>            <span class="n">target_code_type</span><span class="p">,</span>
+</span><span id="map-845"><a href="#map-845"><span class="linenos">845</span></a>            <span class="n">not_translate</span><span class="p">,</span>
+</span><span id="map-846"><a href="#map-846"><span class="linenos">846</span></a>            <span class="n">no_metadata</span><span class="p">,</span>
+</span><span id="map-847"><a href="#map-847"><span class="linenos">847</span></a>            <span class="n">do_reverse_translate</span><span class="p">,</span>
+</span><span id="map-848"><a href="#map-848"><span class="linenos">848</span></a>        <span class="p">)</span>
+</span><span id="map-849"><a href="#map-849"><span class="linenos">849</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="map-850"><a href="#map-850"><span class="linenos">850</span></a>        <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">phenotype</span><span class="p">[</span><span class="s2">&quot;map&quot;</span><span class="p">]:</span>
+</span><span id="map-851"><a href="#map-851"><span class="linenos">851</span></a>            <span class="n">_map_target_code_type</span><span class="p">(</span>
+</span><span id="map-852"><a href="#map-852"><span class="linenos">852</span></a>                <span class="n">phen_path</span><span class="p">,</span>
+</span><span id="map-853"><a href="#map-853"><span class="linenos">853</span></a>                <span class="n">phenotype</span><span class="p">,</span>
+</span><span id="map-854"><a href="#map-854"><span class="linenos">854</span></a>                <span class="n">t</span><span class="p">,</span>
+</span><span id="map-855"><a href="#map-855"><span class="linenos">855</span></a>                <span class="n">not_translate</span><span class="p">,</span>
+</span><span id="map-856"><a href="#map-856"><span class="linenos">856</span></a>                <span class="n">no_metadata</span><span class="p">,</span>
+</span><span id="map-857"><a href="#map-857"><span class="linenos">857</span></a>                <span class="n">do_reverse_translate</span><span class="p">,</span>
+</span><span id="map-858"><a href="#map-858"><span class="linenos">858</span></a>            <span class="p">)</span>
+</span><span id="map-859"><a href="#map-859"><span class="linenos">859</span></a>
+</span><span id="map-860"><a href="#map-860"><span class="linenos">860</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype processed successfully&quot;</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -2619,21 +2677,21 @@
 
     </div>
     <a class="headerlink" href="#add_metadata"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="add_metadata-1014"><a href="#add_metadata-1014"><span class="linenos">1014</span></a><span class="k">def</span><span class="w"> </span><span class="nf">add_metadata</span><span class="p">(</span>
-</span><span id="add_metadata-1015"><a href="#add_metadata-1015"><span class="linenos">1015</span></a>    <span class="n">codes</span><span class="p">:</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">,</span>
-</span><span id="add_metadata-1016"><a href="#add_metadata-1016"><span class="linenos">1016</span></a>    <span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
-</span><span id="add_metadata-1017"><a href="#add_metadata-1017"><span class="linenos">1017</span></a>    <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="add_metadata-1018"><a href="#add_metadata-1018"><span class="linenos">1018</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
-</span><span id="add_metadata-1019"><a href="#add_metadata-1019"><span class="linenos">1019</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Add concept set metadata, stored as a dictionary, to each concept row&quot;&quot;&quot;</span>
-</span><span id="add_metadata-1020"><a href="#add_metadata-1020"><span class="linenos">1020</span></a>
-</span><span id="add_metadata-1021"><a href="#add_metadata-1021"><span class="linenos">1021</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">no_metadata</span><span class="p">:</span>
-</span><span id="add_metadata-1022"><a href="#add_metadata-1022"><span class="linenos">1022</span></a>        <span class="k">for</span> <span class="n">meta_name</span><span class="p">,</span> <span class="n">meta_value</span> <span class="ow">in</span> <span class="n">metadata</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
-</span><span id="add_metadata-1023"><a href="#add_metadata-1023"><span class="linenos">1023</span></a>            <span class="n">codes</span><span class="p">[</span><span class="n">meta_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">meta_value</span>
-</span><span id="add_metadata-1024"><a href="#add_metadata-1024"><span class="linenos">1024</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="add_metadata-1025"><a href="#add_metadata-1025"><span class="linenos">1025</span></a>                <span class="sa">f</span><span class="s2">&quot;Adding metadata for concept set: metadata name </span><span class="si">{</span><span class="n">meta_name</span><span class="si">}</span><span class="s2">, metadata value </span><span class="si">{</span><span class="n">meta_value</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="add_metadata-1026"><a href="#add_metadata-1026"><span class="linenos">1026</span></a>            <span class="p">)</span>
-</span><span id="add_metadata-1027"><a href="#add_metadata-1027"><span class="linenos">1027</span></a>
-</span><span id="add_metadata-1028"><a href="#add_metadata-1028"><span class="linenos">1028</span></a>    <span class="k">return</span> <span class="n">codes</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="add_metadata-1056"><a href="#add_metadata-1056"><span class="linenos">1056</span></a><span class="k">def</span><span class="w"> </span><span class="nf">add_metadata</span><span class="p">(</span>
+</span><span id="add_metadata-1057"><a href="#add_metadata-1057"><span class="linenos">1057</span></a>    <span class="n">codes</span><span class="p">:</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">,</span>
+</span><span id="add_metadata-1058"><a href="#add_metadata-1058"><span class="linenos">1058</span></a>    <span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
+</span><span id="add_metadata-1059"><a href="#add_metadata-1059"><span class="linenos">1059</span></a>    <span class="n">no_metadata</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="add_metadata-1060"><a href="#add_metadata-1060"><span class="linenos">1060</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
+</span><span id="add_metadata-1061"><a href="#add_metadata-1061"><span class="linenos">1061</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Add concept set metadata, stored as a dictionary, to each concept row&quot;&quot;&quot;</span>
+</span><span id="add_metadata-1062"><a href="#add_metadata-1062"><span class="linenos">1062</span></a>
+</span><span id="add_metadata-1063"><a href="#add_metadata-1063"><span class="linenos">1063</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">no_metadata</span><span class="p">:</span>
+</span><span id="add_metadata-1064"><a href="#add_metadata-1064"><span class="linenos">1064</span></a>        <span class="k">for</span> <span class="n">meta_name</span><span class="p">,</span> <span class="n">meta_value</span> <span class="ow">in</span> <span class="n">metadata</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+</span><span id="add_metadata-1065"><a href="#add_metadata-1065"><span class="linenos">1065</span></a>            <span class="n">codes</span><span class="p">[</span><span class="n">meta_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">meta_value</span>
+</span><span id="add_metadata-1066"><a href="#add_metadata-1066"><span class="linenos">1066</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="add_metadata-1067"><a href="#add_metadata-1067"><span class="linenos">1067</span></a>                <span class="sa">f</span><span class="s2">&quot;Adding metadata for concept set: metadata name </span><span class="si">{</span><span class="n">meta_name</span><span class="si">}</span><span class="s2">, metadata value </span><span class="si">{</span><span class="n">meta_value</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="add_metadata-1068"><a href="#add_metadata-1068"><span class="linenos">1068</span></a>            <span class="p">)</span>
+</span><span id="add_metadata-1069"><a href="#add_metadata-1069"><span class="linenos">1069</span></a>
+</span><span id="add_metadata-1070"><a href="#add_metadata-1070"><span class="linenos">1070</span></a>    <span class="k">return</span> <span class="n">codes</span>
 </span></pre></div>
 
 
@@ -2653,84 +2711,84 @@
 
     </div>
     <a class="headerlink" href="#publish"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="publish-1063"><a href="#publish-1063"><span class="linenos">1063</span></a><span class="k">def</span><span class="w"> </span><span class="nf">publish</span><span class="p">(</span>
-</span><span id="publish-1064"><a href="#publish-1064"><span class="linenos">1064</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">remote_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">increment</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">DEFAULT_VERSION_INC</span>
-</span><span id="publish-1065"><a href="#publish-1065"><span class="linenos">1065</span></a><span class="p">):</span>
-</span><span id="publish-1066"><a href="#publish-1066"><span class="linenos">1066</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Publishes updates to the phenotype by commiting all changes to the repo directory&quot;&quot;&quot;</span>
-</span><span id="publish-1067"><a href="#publish-1067"><span class="linenos">1067</span></a>
-</span><span id="publish-1068"><a href="#publish-1068"><span class="linenos">1068</span></a>    <span class="c1"># Validate config</span>
-</span><span id="publish-1069"><a href="#publish-1069"><span class="linenos">1069</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="publish-1070"><a href="#publish-1070"><span class="linenos">1070</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="publish-1071"><a href="#publish-1071"><span class="linenos">1071</span></a>
-</span><span id="publish-1072"><a href="#publish-1072"><span class="linenos">1072</span></a>    <span class="c1"># load git repo and set the branch</span>
-</span><span id="publish-1073"><a href="#publish-1073"><span class="linenos">1073</span></a>    <span class="n">repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="p">(</span><span class="n">phen_path</span><span class="p">)</span>
-</span><span id="publish-1074"><a href="#publish-1074"><span class="linenos">1074</span></a>    <span class="k">if</span> <span class="n">DEFAULT_GIT_BRANCH</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">branches</span><span class="p">:</span>
-</span><span id="publish-1075"><a href="#publish-1075"><span class="linenos">1075</span></a>        <span class="n">main_branch</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">heads</span><span class="p">[</span><span class="n">DEFAULT_GIT_BRANCH</span><span class="p">]</span>
-</span><span id="publish-1076"><a href="#publish-1076"><span class="linenos">1076</span></a>        <span class="n">main_branch</span><span class="o">.</span><span class="n">checkout</span><span class="p">()</span>
-</span><span id="publish-1077"><a href="#publish-1077"><span class="linenos">1077</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="publish-1078"><a href="#publish-1078"><span class="linenos">1078</span></a>        <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
-</span><span id="publish-1079"><a href="#publish-1079"><span class="linenos">1079</span></a>            <span class="sa">f</span><span class="s2">&quot;Phen repo does not contain the default branch </span><span class="si">{</span><span class="n">DEFAULT_GIT_BRANCH</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="publish-1080"><a href="#publish-1080"><span class="linenos">1080</span></a>        <span class="p">)</span>
-</span><span id="publish-1081"><a href="#publish-1081"><span class="linenos">1081</span></a>
-</span><span id="publish-1082"><a href="#publish-1082"><span class="linenos">1082</span></a>    <span class="c1"># check if any changes to publish</span>
-</span><span id="publish-1083"><a href="#publish-1083"><span class="linenos">1083</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">repo</span><span class="o">.</span><span class="n">is_dirty</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">repo</span><span class="o">.</span><span class="n">untracked_files</span><span class="p">:</span>
-</span><span id="publish-1084"><a href="#publish-1084"><span class="linenos">1084</span></a>        <span class="k">if</span> <span class="n">remote_url</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
-</span><span id="publish-1085"><a href="#publish-1085"><span class="linenos">1085</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;First publish to remote url </span><span class="si">{</span><span class="n">remote_url</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="publish-1086"><a href="#publish-1086"><span class="linenos">1086</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="publish-1087"><a href="#publish-1087"><span class="linenos">1087</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Nothing to publish, no changes to the repo&quot;</span><span class="p">)</span>
-</span><span id="publish-1088"><a href="#publish-1088"><span class="linenos">1088</span></a>            <span class="k">return</span>
-</span><span id="publish-1089"><a href="#publish-1089"><span class="linenos">1089</span></a>
-</span><span id="publish-1090"><a href="#publish-1090"><span class="linenos">1090</span></a>    <span class="c1"># get next version</span>
-</span><span id="publish-1091"><a href="#publish-1091"><span class="linenos">1091</span></a>    <span class="n">new_version_str</span> <span class="o">=</span> <span class="n">_generate_version_tag</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">increment</span><span class="p">)</span>
-</span><span id="publish-1092"><a href="#publish-1092"><span class="linenos">1092</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New version: </span><span class="si">{</span><span class="n">new_version_str</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="publish-1093"><a href="#publish-1093"><span class="linenos">1093</span></a>
-</span><span id="publish-1094"><a href="#publish-1094"><span class="linenos">1094</span></a>    <span class="c1"># Write version in configuration file</span>
-</span><span id="publish-1095"><a href="#publish-1095"><span class="linenos">1095</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="publish-1096"><a href="#publish-1096"><span class="linenos">1096</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="publish-1097"><a href="#publish-1097"><span class="linenos">1097</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="publish-1098"><a href="#publish-1098"><span class="linenos">1098</span></a>
-</span><span id="publish-1099"><a href="#publish-1099"><span class="linenos">1099</span></a>    <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;version&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_version_str</span>
-</span><span id="publish-1100"><a href="#publish-1100"><span class="linenos">1100</span></a>    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="publish-1101"><a href="#publish-1101"><span class="linenos">1101</span></a>        <span class="n">yaml</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
-</span><span id="publish-1102"><a href="#publish-1102"><span class="linenos">1102</span></a>            <span class="n">config</span><span class="p">,</span>
-</span><span id="publish-1103"><a href="#publish-1103"><span class="linenos">1103</span></a>            <span class="n">file</span><span class="p">,</span>
-</span><span id="publish-1104"><a href="#publish-1104"><span class="linenos">1104</span></a>            <span class="n">Dumper</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">QuotedDumper</span><span class="p">,</span>
-</span><span id="publish-1105"><a href="#publish-1105"><span class="linenos">1105</span></a>            <span class="n">default_flow_style</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="publish-1106"><a href="#publish-1106"><span class="linenos">1106</span></a>            <span class="n">sort_keys</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
-</span><span id="publish-1107"><a href="#publish-1107"><span class="linenos">1107</span></a>            <span class="n">default_style</span><span class="o">=</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span>
-</span><span id="publish-1108"><a href="#publish-1108"><span class="linenos">1108</span></a>        <span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="publish-1105"><a href="#publish-1105"><span class="linenos">1105</span></a><span class="k">def</span><span class="w"> </span><span class="nf">publish</span><span class="p">(</span>
+</span><span id="publish-1106"><a href="#publish-1106"><span class="linenos">1106</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">remote_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">increment</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">DEFAULT_VERSION_INC</span>
+</span><span id="publish-1107"><a href="#publish-1107"><span class="linenos">1107</span></a><span class="p">):</span>
+</span><span id="publish-1108"><a href="#publish-1108"><span class="linenos">1108</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Publishes updates to the phenotype by commiting all changes to the repo directory&quot;&quot;&quot;</span>
 </span><span id="publish-1109"><a href="#publish-1109"><span class="linenos">1109</span></a>
-</span><span id="publish-1110"><a href="#publish-1110"><span class="linenos">1110</span></a>    <span class="c1"># Add and commit changes to repo including version updates</span>
-</span><span id="publish-1111"><a href="#publish-1111"><span class="linenos">1111</span></a>    <span class="n">commit_message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Committing updates to phenotype </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="publish-1112"><a href="#publish-1112"><span class="linenos">1112</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;--all&quot;</span><span class="p">)</span>
-</span><span id="publish-1113"><a href="#publish-1113"><span class="linenos">1113</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">commit</span><span class="p">(</span><span class="n">commit_message</span><span class="p">)</span>
-</span><span id="publish-1114"><a href="#publish-1114"><span class="linenos">1114</span></a>
-</span><span id="publish-1115"><a href="#publish-1115"><span class="linenos">1115</span></a>    <span class="c1"># Add tag to the repo</span>
-</span><span id="publish-1116"><a href="#publish-1116"><span class="linenos">1116</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">create_tag</span><span class="p">(</span><span class="n">new_version_str</span><span class="p">)</span>
-</span><span id="publish-1117"><a href="#publish-1117"><span class="linenos">1117</span></a>
-</span><span id="publish-1118"><a href="#publish-1118"><span class="linenos">1118</span></a>    <span class="c1"># push to origin if a remote repo</span>
-</span><span id="publish-1119"><a href="#publish-1119"><span class="linenos">1119</span></a>    <span class="k">if</span> <span class="n">remote_url</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
-</span><span id="publish-1120"><a href="#publish-1120"><span class="linenos">1120</span></a>        <span class="n">git_url</span> <span class="o">=</span> <span class="n">_construct_git_url</span><span class="p">(</span><span class="n">remote_url</span><span class="p">)</span>
-</span><span id="publish-1121"><a href="#publish-1121"><span class="linenos">1121</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">create_remote</span><span class="p">(</span><span class="s2">&quot;origin&quot;</span><span class="p">,</span> <span class="n">git_url</span><span class="p">)</span>
-</span><span id="publish-1122"><a href="#publish-1122"><span class="linenos">1122</span></a>
-</span><span id="publish-1123"><a href="#publish-1123"><span class="linenos">1123</span></a>    <span class="k">try</span><span class="p">:</span>
-</span><span id="publish-1124"><a href="#publish-1124"><span class="linenos">1124</span></a>        <span class="k">if</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
-</span><span id="publish-1125"><a href="#publish-1125"><span class="linenos">1125</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Remote &#39;origin&#39; is set </span><span class="si">{</span><span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="o">.</span><span class="n">origin</span><span class="o">.</span><span class="n">url</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="publish-1126"><a href="#publish-1126"><span class="linenos">1126</span></a>            <span class="n">origin</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="o">.</span><span class="n">origin</span>
-</span><span id="publish-1127"><a href="#publish-1127"><span class="linenos">1127</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pushing main branch to remote repo&quot;</span><span class="p">)</span>
-</span><span id="publish-1128"><a href="#publish-1128"><span class="linenos">1128</span></a>            <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="s2">&quot;--set-upstream&quot;</span><span class="p">,</span> <span class="s2">&quot;origin&quot;</span><span class="p">,</span> <span class="s2">&quot;main&quot;</span><span class="p">)</span>
-</span><span id="publish-1129"><a href="#publish-1129"><span class="linenos">1129</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pushing version tags to remote git repo&quot;</span><span class="p">)</span>
-</span><span id="publish-1130"><a href="#publish-1130"><span class="linenos">1130</span></a>            <span class="n">origin</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="n">tags</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="publish-1131"><a href="#publish-1131"><span class="linenos">1131</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Changes pushed to &#39;origin&#39;&quot;</span><span class="p">)</span>
-</span><span id="publish-1132"><a href="#publish-1132"><span class="linenos">1132</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="publish-1133"><a href="#publish-1133"><span class="linenos">1133</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Remote &#39;origin&#39; is not set&quot;</span><span class="p">)</span>
-</span><span id="publish-1134"><a href="#publish-1134"><span class="linenos">1134</span></a>    <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
-</span><span id="publish-1135"><a href="#publish-1135"><span class="linenos">1135</span></a>        <span class="n">tag_ref</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">tags</span><span class="p">[</span><span class="n">new_version_str</span><span class="p">]</span>
-</span><span id="publish-1136"><a href="#publish-1136"><span class="linenos">1136</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">delete_tag</span><span class="p">(</span><span class="n">tag_ref</span><span class="p">)</span>
-</span><span id="publish-1137"><a href="#publish-1137"><span class="linenos">1137</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">reset</span><span class="p">(</span><span class="s2">&quot;--soft&quot;</span><span class="p">,</span> <span class="s2">&quot;HEAD~1&quot;</span><span class="p">)</span>
-</span><span id="publish-1138"><a href="#publish-1138"><span class="linenos">1138</span></a>        <span class="k">raise</span> <span class="n">e</span>
-</span><span id="publish-1139"><a href="#publish-1139"><span class="linenos">1139</span></a>
-</span><span id="publish-1140"><a href="#publish-1140"><span class="linenos">1140</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype published successfully&quot;</span><span class="p">)</span>
+</span><span id="publish-1110"><a href="#publish-1110"><span class="linenos">1110</span></a>    <span class="c1"># Validate config</span>
+</span><span id="publish-1111"><a href="#publish-1111"><span class="linenos">1111</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="publish-1112"><a href="#publish-1112"><span class="linenos">1112</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="publish-1113"><a href="#publish-1113"><span class="linenos">1113</span></a>
+</span><span id="publish-1114"><a href="#publish-1114"><span class="linenos">1114</span></a>    <span class="c1"># load git repo and set the branch</span>
+</span><span id="publish-1115"><a href="#publish-1115"><span class="linenos">1115</span></a>    <span class="n">repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="p">(</span><span class="n">phen_path</span><span class="p">)</span>
+</span><span id="publish-1116"><a href="#publish-1116"><span class="linenos">1116</span></a>    <span class="k">if</span> <span class="n">DEFAULT_GIT_BRANCH</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">branches</span><span class="p">:</span>
+</span><span id="publish-1117"><a href="#publish-1117"><span class="linenos">1117</span></a>        <span class="n">main_branch</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">heads</span><span class="p">[</span><span class="n">DEFAULT_GIT_BRANCH</span><span class="p">]</span>
+</span><span id="publish-1118"><a href="#publish-1118"><span class="linenos">1118</span></a>        <span class="n">main_branch</span><span class="o">.</span><span class="n">checkout</span><span class="p">()</span>
+</span><span id="publish-1119"><a href="#publish-1119"><span class="linenos">1119</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="publish-1120"><a href="#publish-1120"><span class="linenos">1120</span></a>        <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
+</span><span id="publish-1121"><a href="#publish-1121"><span class="linenos">1121</span></a>            <span class="sa">f</span><span class="s2">&quot;Phen repo does not contain the default branch </span><span class="si">{</span><span class="n">DEFAULT_GIT_BRANCH</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="publish-1122"><a href="#publish-1122"><span class="linenos">1122</span></a>        <span class="p">)</span>
+</span><span id="publish-1123"><a href="#publish-1123"><span class="linenos">1123</span></a>
+</span><span id="publish-1124"><a href="#publish-1124"><span class="linenos">1124</span></a>    <span class="c1"># check if any changes to publish</span>
+</span><span id="publish-1125"><a href="#publish-1125"><span class="linenos">1125</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">repo</span><span class="o">.</span><span class="n">is_dirty</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">repo</span><span class="o">.</span><span class="n">untracked_files</span><span class="p">:</span>
+</span><span id="publish-1126"><a href="#publish-1126"><span class="linenos">1126</span></a>        <span class="k">if</span> <span class="n">remote_url</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
+</span><span id="publish-1127"><a href="#publish-1127"><span class="linenos">1127</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;First publish to remote url </span><span class="si">{</span><span class="n">remote_url</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="publish-1128"><a href="#publish-1128"><span class="linenos">1128</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="publish-1129"><a href="#publish-1129"><span class="linenos">1129</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Nothing to publish, no changes to the repo&quot;</span><span class="p">)</span>
+</span><span id="publish-1130"><a href="#publish-1130"><span class="linenos">1130</span></a>            <span class="k">return</span>
+</span><span id="publish-1131"><a href="#publish-1131"><span class="linenos">1131</span></a>
+</span><span id="publish-1132"><a href="#publish-1132"><span class="linenos">1132</span></a>    <span class="c1"># get next version</span>
+</span><span id="publish-1133"><a href="#publish-1133"><span class="linenos">1133</span></a>    <span class="n">new_version_str</span> <span class="o">=</span> <span class="n">_generate_version_tag</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">increment</span><span class="p">)</span>
+</span><span id="publish-1134"><a href="#publish-1134"><span class="linenos">1134</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New version: </span><span class="si">{</span><span class="n">new_version_str</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="publish-1135"><a href="#publish-1135"><span class="linenos">1135</span></a>
+</span><span id="publish-1136"><a href="#publish-1136"><span class="linenos">1136</span></a>    <span class="c1"># Write version in configuration file</span>
+</span><span id="publish-1137"><a href="#publish-1137"><span class="linenos">1137</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="publish-1138"><a href="#publish-1138"><span class="linenos">1138</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="publish-1139"><a href="#publish-1139"><span class="linenos">1139</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="publish-1140"><a href="#publish-1140"><span class="linenos">1140</span></a>
+</span><span id="publish-1141"><a href="#publish-1141"><span class="linenos">1141</span></a>    <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;version&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_version_str</span>
+</span><span id="publish-1142"><a href="#publish-1142"><span class="linenos">1142</span></a>    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="publish-1143"><a href="#publish-1143"><span class="linenos">1143</span></a>        <span class="n">yaml</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
+</span><span id="publish-1144"><a href="#publish-1144"><span class="linenos">1144</span></a>            <span class="n">config</span><span class="p">,</span>
+</span><span id="publish-1145"><a href="#publish-1145"><span class="linenos">1145</span></a>            <span class="n">file</span><span class="p">,</span>
+</span><span id="publish-1146"><a href="#publish-1146"><span class="linenos">1146</span></a>            <span class="n">Dumper</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">QuotedDumper</span><span class="p">,</span>
+</span><span id="publish-1147"><a href="#publish-1147"><span class="linenos">1147</span></a>            <span class="n">default_flow_style</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="publish-1148"><a href="#publish-1148"><span class="linenos">1148</span></a>            <span class="n">sort_keys</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="publish-1149"><a href="#publish-1149"><span class="linenos">1149</span></a>            <span class="n">default_style</span><span class="o">=</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span>
+</span><span id="publish-1150"><a href="#publish-1150"><span class="linenos">1150</span></a>        <span class="p">)</span>
+</span><span id="publish-1151"><a href="#publish-1151"><span class="linenos">1151</span></a>
+</span><span id="publish-1152"><a href="#publish-1152"><span class="linenos">1152</span></a>    <span class="c1"># Add and commit changes to repo including version updates</span>
+</span><span id="publish-1153"><a href="#publish-1153"><span class="linenos">1153</span></a>    <span class="n">commit_message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Committing updates to phenotype </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="publish-1154"><a href="#publish-1154"><span class="linenos">1154</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;--all&quot;</span><span class="p">)</span>
+</span><span id="publish-1155"><a href="#publish-1155"><span class="linenos">1155</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">commit</span><span class="p">(</span><span class="n">commit_message</span><span class="p">)</span>
+</span><span id="publish-1156"><a href="#publish-1156"><span class="linenos">1156</span></a>
+</span><span id="publish-1157"><a href="#publish-1157"><span class="linenos">1157</span></a>    <span class="c1"># Add tag to the repo</span>
+</span><span id="publish-1158"><a href="#publish-1158"><span class="linenos">1158</span></a>    <span class="n">repo</span><span class="o">.</span><span class="n">create_tag</span><span class="p">(</span><span class="n">new_version_str</span><span class="p">)</span>
+</span><span id="publish-1159"><a href="#publish-1159"><span class="linenos">1159</span></a>
+</span><span id="publish-1160"><a href="#publish-1160"><span class="linenos">1160</span></a>    <span class="c1"># push to origin if a remote repo</span>
+</span><span id="publish-1161"><a href="#publish-1161"><span class="linenos">1161</span></a>    <span class="k">if</span> <span class="n">remote_url</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
+</span><span id="publish-1162"><a href="#publish-1162"><span class="linenos">1162</span></a>        <span class="n">git_url</span> <span class="o">=</span> <span class="n">_construct_git_url</span><span class="p">(</span><span class="n">remote_url</span><span class="p">)</span>
+</span><span id="publish-1163"><a href="#publish-1163"><span class="linenos">1163</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">create_remote</span><span class="p">(</span><span class="s2">&quot;origin&quot;</span><span class="p">,</span> <span class="n">git_url</span><span class="p">)</span>
+</span><span id="publish-1164"><a href="#publish-1164"><span class="linenos">1164</span></a>
+</span><span id="publish-1165"><a href="#publish-1165"><span class="linenos">1165</span></a>    <span class="k">try</span><span class="p">:</span>
+</span><span id="publish-1166"><a href="#publish-1166"><span class="linenos">1166</span></a>        <span class="k">if</span> <span class="s2">&quot;origin&quot;</span> <span class="ow">in</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="p">:</span>
+</span><span id="publish-1167"><a href="#publish-1167"><span class="linenos">1167</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Remote &#39;origin&#39; is set </span><span class="si">{</span><span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="o">.</span><span class="n">origin</span><span class="o">.</span><span class="n">url</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="publish-1168"><a href="#publish-1168"><span class="linenos">1168</span></a>            <span class="n">origin</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">remotes</span><span class="o">.</span><span class="n">origin</span>
+</span><span id="publish-1169"><a href="#publish-1169"><span class="linenos">1169</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pushing main branch to remote repo&quot;</span><span class="p">)</span>
+</span><span id="publish-1170"><a href="#publish-1170"><span class="linenos">1170</span></a>            <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="s2">&quot;--set-upstream&quot;</span><span class="p">,</span> <span class="s2">&quot;origin&quot;</span><span class="p">,</span> <span class="s2">&quot;main&quot;</span><span class="p">)</span>
+</span><span id="publish-1171"><a href="#publish-1171"><span class="linenos">1171</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pushing version tags to remote git repo&quot;</span><span class="p">)</span>
+</span><span id="publish-1172"><a href="#publish-1172"><span class="linenos">1172</span></a>            <span class="n">origin</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="n">tags</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="publish-1173"><a href="#publish-1173"><span class="linenos">1173</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Changes pushed to &#39;origin&#39;&quot;</span><span class="p">)</span>
+</span><span id="publish-1174"><a href="#publish-1174"><span class="linenos">1174</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="publish-1175"><a href="#publish-1175"><span class="linenos">1175</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Remote &#39;origin&#39; is not set&quot;</span><span class="p">)</span>
+</span><span id="publish-1176"><a href="#publish-1176"><span class="linenos">1176</span></a>    <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
+</span><span id="publish-1177"><a href="#publish-1177"><span class="linenos">1177</span></a>        <span class="n">tag_ref</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">tags</span><span class="p">[</span><span class="n">new_version_str</span><span class="p">]</span>
+</span><span id="publish-1178"><a href="#publish-1178"><span class="linenos">1178</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">delete_tag</span><span class="p">(</span><span class="n">tag_ref</span><span class="p">)</span>
+</span><span id="publish-1179"><a href="#publish-1179"><span class="linenos">1179</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">reset</span><span class="p">(</span><span class="s2">&quot;--soft&quot;</span><span class="p">,</span> <span class="s2">&quot;HEAD~1&quot;</span><span class="p">)</span>
+</span><span id="publish-1180"><a href="#publish-1180"><span class="linenos">1180</span></a>        <span class="k">raise</span> <span class="n">e</span>
+</span><span id="publish-1181"><a href="#publish-1181"><span class="linenos">1181</span></a>
+</span><span id="publish-1182"><a href="#publish-1182"><span class="linenos">1182</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype published successfully&quot;</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -2750,40 +2808,40 @@
 
     </div>
     <a class="headerlink" href="#export"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="export-1143"><a href="#export-1143"><span class="linenos">1143</span></a><span class="k">def</span><span class="w"> </span><span class="nf">export</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
-</span><span id="export-1144"><a href="#export-1144"><span class="linenos">1144</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Exports a phen repo at a specific tagged version into a target directory&quot;&quot;&quot;</span>
-</span><span id="export-1145"><a href="#export-1145"><span class="linenos">1145</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Exporting phenotype </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="export-1146"><a href="#export-1146"><span class="linenos">1146</span></a>
-</span><span id="export-1147"><a href="#export-1147"><span class="linenos">1147</span></a>    <span class="c1"># validate configuration</span>
-</span><span id="export-1148"><a href="#export-1148"><span class="linenos">1148</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="export-1149"><a href="#export-1149"><span class="linenos">1149</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="export-1150"><a href="#export-1150"><span class="linenos">1150</span></a>
-</span><span id="export-1151"><a href="#export-1151"><span class="linenos">1151</span></a>    <span class="c1"># load configuration</span>
-</span><span id="export-1152"><a href="#export-1152"><span class="linenos">1152</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="export-1153"><a href="#export-1153"><span class="linenos">1153</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="export-1154"><a href="#export-1154"><span class="linenos">1154</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="export-1155"><a href="#export-1155"><span class="linenos">1155</span></a>
-</span><span id="export-1156"><a href="#export-1156"><span class="linenos">1156</span></a>    <span class="n">map_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
-</span><span id="export-1157"><a href="#export-1157"><span class="linenos">1157</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">map_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="export-1158"><a href="#export-1158"><span class="linenos">1158</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Map path does not exist &#39;</span><span class="si">{</span><span class="n">map_path</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
-</span><span id="export-1159"><a href="#export-1159"><span class="linenos">1159</span></a>
-</span><span id="export-1160"><a href="#export-1160"><span class="linenos">1160</span></a>    <span class="n">export_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">OMOP_PATH</span>
-</span><span id="export-1161"><a href="#export-1161"><span class="linenos">1161</span></a>    <span class="c1"># check export directory exists and if not create it</span>
-</span><span id="export-1162"><a href="#export-1162"><span class="linenos">1162</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">export_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="export-1163"><a href="#export-1163"><span class="linenos">1163</span></a>        <span class="n">export_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="export-1164"><a href="#export-1164"><span class="linenos">1164</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;OMOP export directory &#39;</span><span class="si">{</span><span class="n">export_path</span><span class="si">}</span><span class="s2">&#39; created.&quot;</span><span class="p">)</span>
-</span><span id="export-1165"><a href="#export-1165"><span class="linenos">1165</span></a>
-</span><span id="export-1166"><a href="#export-1166"><span class="linenos">1166</span></a>    <span class="c1"># omop export db</span>
-</span><span id="export-1167"><a href="#export-1167"><span class="linenos">1167</span></a>    <span class="n">export_db_path</span> <span class="o">=</span> <span class="n">omop</span><span class="o">.</span><span class="n">export</span><span class="p">(</span>
-</span><span id="export-1168"><a href="#export-1168"><span class="linenos">1168</span></a>        <span class="n">map_path</span><span class="p">,</span>
-</span><span id="export-1169"><a href="#export-1169"><span class="linenos">1169</span></a>        <span class="n">export_path</span><span class="p">,</span>
-</span><span id="export-1170"><a href="#export-1170"><span class="linenos">1170</span></a>        <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;version&quot;</span><span class="p">],</span>
-</span><span id="export-1171"><a href="#export-1171"><span class="linenos">1171</span></a>        <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;omop&quot;</span><span class="p">],</span>
-</span><span id="export-1172"><a href="#export-1172"><span class="linenos">1172</span></a>    <span class="p">)</span>
-</span><span id="export-1173"><a href="#export-1173"><span class="linenos">1173</span></a>
-</span><span id="export-1174"><a href="#export-1174"><span class="linenos">1174</span></a>    <span class="c1"># write to tables</span>
-</span><span id="export-1175"><a href="#export-1175"><span class="linenos">1175</span></a>    <span class="c1"># export as csv</span>
-</span><span id="export-1176"><a href="#export-1176"><span class="linenos">1176</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype exported successfully&quot;</span><span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="export-1185"><a href="#export-1185"><span class="linenos">1185</span></a><span class="k">def</span><span class="w"> </span><span class="nf">export</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="export-1186"><a href="#export-1186"><span class="linenos">1186</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Exports a phen repo at a specific tagged version into a target directory&quot;&quot;&quot;</span>
+</span><span id="export-1187"><a href="#export-1187"><span class="linenos">1187</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Exporting phenotype </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="export-1188"><a href="#export-1188"><span class="linenos">1188</span></a>
+</span><span id="export-1189"><a href="#export-1189"><span class="linenos">1189</span></a>    <span class="c1"># validate configuration</span>
+</span><span id="export-1190"><a href="#export-1190"><span class="linenos">1190</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="export-1191"><a href="#export-1191"><span class="linenos">1191</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="export-1192"><a href="#export-1192"><span class="linenos">1192</span></a>
+</span><span id="export-1193"><a href="#export-1193"><span class="linenos">1193</span></a>    <span class="c1"># load configuration</span>
+</span><span id="export-1194"><a href="#export-1194"><span class="linenos">1194</span></a>    <span class="n">config_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="export-1195"><a href="#export-1195"><span class="linenos">1195</span></a>    <span class="k">with</span> <span class="n">config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="export-1196"><a href="#export-1196"><span class="linenos">1196</span></a>        <span class="n">config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="export-1197"><a href="#export-1197"><span class="linenos">1197</span></a>
+</span><span id="export-1198"><a href="#export-1198"><span class="linenos">1198</span></a>    <span class="n">map_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
+</span><span id="export-1199"><a href="#export-1199"><span class="linenos">1199</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">map_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="export-1200"><a href="#export-1200"><span class="linenos">1200</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Map path does not exist &#39;</span><span class="si">{</span><span class="n">map_path</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
+</span><span id="export-1201"><a href="#export-1201"><span class="linenos">1201</span></a>
+</span><span id="export-1202"><a href="#export-1202"><span class="linenos">1202</span></a>    <span class="n">export_path</span> <span class="o">=</span> <span class="n">phen_path</span> <span class="o">/</span> <span class="n">OMOP_PATH</span>
+</span><span id="export-1203"><a href="#export-1203"><span class="linenos">1203</span></a>    <span class="c1"># check export directory exists and if not create it</span>
+</span><span id="export-1204"><a href="#export-1204"><span class="linenos">1204</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">export_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="export-1205"><a href="#export-1205"><span class="linenos">1205</span></a>        <span class="n">export_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="export-1206"><a href="#export-1206"><span class="linenos">1206</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;OMOP export directory &#39;</span><span class="si">{</span><span class="n">export_path</span><span class="si">}</span><span class="s2">&#39; created.&quot;</span><span class="p">)</span>
+</span><span id="export-1207"><a href="#export-1207"><span class="linenos">1207</span></a>
+</span><span id="export-1208"><a href="#export-1208"><span class="linenos">1208</span></a>    <span class="c1"># omop export db</span>
+</span><span id="export-1209"><a href="#export-1209"><span class="linenos">1209</span></a>    <span class="n">export_db_path</span> <span class="o">=</span> <span class="n">omop</span><span class="o">.</span><span class="n">export</span><span class="p">(</span>
+</span><span id="export-1210"><a href="#export-1210"><span class="linenos">1210</span></a>        <span class="n">map_path</span><span class="p">,</span>
+</span><span id="export-1211"><a href="#export-1211"><span class="linenos">1211</span></a>        <span class="n">export_path</span><span class="p">,</span>
+</span><span id="export-1212"><a href="#export-1212"><span class="linenos">1212</span></a>        <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;version&quot;</span><span class="p">],</span>
+</span><span id="export-1213"><a href="#export-1213"><span class="linenos">1213</span></a>        <span class="n">config</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;omop&quot;</span><span class="p">],</span>
+</span><span id="export-1214"><a href="#export-1214"><span class="linenos">1214</span></a>    <span class="p">)</span>
+</span><span id="export-1215"><a href="#export-1215"><span class="linenos">1215</span></a>
+</span><span id="export-1216"><a href="#export-1216"><span class="linenos">1216</span></a>    <span class="c1"># write to tables</span>
+</span><span id="export-1217"><a href="#export-1217"><span class="linenos">1217</span></a>    <span class="c1"># export as csv</span>
+</span><span id="export-1218"><a href="#export-1218"><span class="linenos">1218</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype exported successfully&quot;</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -2803,52 +2861,52 @@
 
     </div>
     <a class="headerlink" href="#copy"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="copy-1179"><a href="#copy-1179"><span class="linenos">1179</span></a><span class="k">def</span><span class="w"> </span><span class="nf">copy</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">target_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
-</span><span id="copy-1180"><a href="#copy-1180"><span class="linenos">1180</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Copys a phen repo at a specific tagged version into a target directory&quot;&quot;&quot;</span>
-</span><span id="copy-1181"><a href="#copy-1181"><span class="linenos">1181</span></a>
-</span><span id="copy-1182"><a href="#copy-1182"><span class="linenos">1182</span></a>    <span class="c1"># Validate</span>
-</span><span id="copy-1183"><a href="#copy-1183"><span class="linenos">1183</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="copy-1184"><a href="#copy-1184"><span class="linenos">1184</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="copy-1185"><a href="#copy-1185"><span class="linenos">1185</span></a>
-</span><span id="copy-1186"><a href="#copy-1186"><span class="linenos">1186</span></a>    <span class="c1"># Check target directory exists</span>
-</span><span id="copy-1187"><a href="#copy-1187"><span class="linenos">1187</span></a>    <span class="n">target_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">target_dir</span><span class="p">)</span>
-</span><span id="copy-1188"><a href="#copy-1188"><span class="linenos">1188</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">target_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="copy-1189"><a href="#copy-1189"><span class="linenos">1189</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The target directory </span><span class="si">{</span><span class="n">target_path</span><span class="si">}</span><span class="s2"> does not exist&quot;</span><span class="p">)</span>
-</span><span id="copy-1190"><a href="#copy-1190"><span class="linenos">1190</span></a>
-</span><span id="copy-1191"><a href="#copy-1191"><span class="linenos">1191</span></a>    <span class="c1"># Set copy directory</span>
-</span><span id="copy-1192"><a href="#copy-1192"><span class="linenos">1192</span></a>    <span class="n">copy_path</span> <span class="o">=</span> <span class="n">target_path</span> <span class="o">/</span> <span class="n">version</span>
-</span><span id="copy-1193"><a href="#copy-1193"><span class="linenos">1193</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copying repo </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="copy-1194"><a href="#copy-1194"><span class="linenos">1194</span></a>
-</span><span id="copy-1195"><a href="#copy-1195"><span class="linenos">1195</span></a>    <span class="k">if</span> <span class="p">(</span>
-</span><span id="copy-1196"><a href="#copy-1196"><span class="linenos">1196</span></a>        <span class="n">copy_path</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="ow">and</span> <span class="n">copy_path</span><span class="o">.</span><span class="n">is_dir</span><span class="p">()</span>
-</span><span id="copy-1197"><a href="#copy-1197"><span class="linenos">1197</span></a>    <span class="p">):</span>  <span class="c1"># Check if it exists and is a directory</span>
-</span><span id="copy-1198"><a href="#copy-1198"><span class="linenos">1198</span></a>        <span class="n">copy</span> <span class="o">=</span> <span class="n">_check_delete_dir</span><span class="p">(</span>
-</span><span id="copy-1199"><a href="#copy-1199"><span class="linenos">1199</span></a>            <span class="n">copy_path</span><span class="p">,</span>
-</span><span id="copy-1200"><a href="#copy-1200"><span class="linenos">1200</span></a>            <span class="sa">f</span><span class="s2">&quot;The directory </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">copy_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2"> already exists. Do you want to overwrite? (yes/no): &quot;</span><span class="p">,</span>
-</span><span id="copy-1201"><a href="#copy-1201"><span class="linenos">1201</span></a>        <span class="p">)</span>
-</span><span id="copy-1202"><a href="#copy-1202"><span class="linenos">1202</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="copy-1203"><a href="#copy-1203"><span class="linenos">1203</span></a>        <span class="n">copy</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="copy-1204"><a href="#copy-1204"><span class="linenos">1204</span></a>
-</span><span id="copy-1205"><a href="#copy-1205"><span class="linenos">1205</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span><span class="p">:</span>
-</span><span id="copy-1206"><a href="#copy-1206"><span class="linenos">1206</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Not copying the version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="copy-1207"><a href="#copy-1207"><span class="linenos">1207</span></a>        <span class="k">return</span>
-</span><span id="copy-1208"><a href="#copy-1208"><span class="linenos">1208</span></a>
-</span><span id="copy-1209"><a href="#copy-1209"><span class="linenos">1209</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Cloning repo from </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
-</span><span id="copy-1210"><a href="#copy-1210"><span class="linenos">1210</span></a>    <span class="n">repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">phen_path</span><span class="p">,</span> <span class="n">copy_path</span><span class="p">)</span>
-</span><span id="copy-1211"><a href="#copy-1211"><span class="linenos">1211</span></a>
-</span><span id="copy-1212"><a href="#copy-1212"><span class="linenos">1212</span></a>    <span class="c1"># Check out the latest commit or specified version</span>
-</span><span id="copy-1213"><a href="#copy-1213"><span class="linenos">1213</span></a>    <span class="k">if</span> <span class="n">version</span><span class="p">:</span>
-</span><span id="copy-1214"><a href="#copy-1214"><span class="linenos">1214</span></a>        <span class="c1"># Checkout a specific version (e.g., branch, tag, or commit hash)</span>
-</span><span id="copy-1215"><a href="#copy-1215"><span class="linenos">1215</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Checking out version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
-</span><span id="copy-1216"><a href="#copy-1216"><span class="linenos">1216</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
-</span><span id="copy-1217"><a href="#copy-1217"><span class="linenos">1217</span></a>    <span class="k">else</span><span class="p">:</span>
-</span><span id="copy-1218"><a href="#copy-1218"><span class="linenos">1218</span></a>        <span class="c1"># Checkout the latest commit (HEAD)</span>
-</span><span id="copy-1219"><a href="#copy-1219"><span class="linenos">1219</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Checking out the latest commit...&quot;</span><span class="p">)</span>
-</span><span id="copy-1220"><a href="#copy-1220"><span class="linenos">1220</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="s2">&quot;HEAD&quot;</span><span class="p">)</span>
-</span><span id="copy-1221"><a href="#copy-1221"><span class="linenos">1221</span></a>
-</span><span id="copy-1222"><a href="#copy-1222"><span class="linenos">1222</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copied </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">repo</span><span class="o">.</span><span class="n">head</span><span class="o">.</span><span class="n">commit</span><span class="o">.</span><span class="n">hexsha</span><span class="p">[:</span><span class="mi">7</span><span class="p">]</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="copy-1221"><a href="#copy-1221"><span class="linenos">1221</span></a><span class="k">def</span><span class="w"> </span><span class="nf">copy</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">target_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+</span><span id="copy-1222"><a href="#copy-1222"><span class="linenos">1222</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Copys a phen repo at a specific tagged version into a target directory&quot;&quot;&quot;</span>
 </span><span id="copy-1223"><a href="#copy-1223"><span class="linenos">1223</span></a>
-</span><span id="copy-1224"><a href="#copy-1224"><span class="linenos">1224</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype copied successfully&quot;</span><span class="p">)</span>
+</span><span id="copy-1224"><a href="#copy-1224"><span class="linenos">1224</span></a>    <span class="c1"># Validate</span>
+</span><span id="copy-1225"><a href="#copy-1225"><span class="linenos">1225</span></a>    <span class="n">validate</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="copy-1226"><a href="#copy-1226"><span class="linenos">1226</span></a>    <span class="n">phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="copy-1227"><a href="#copy-1227"><span class="linenos">1227</span></a>
+</span><span id="copy-1228"><a href="#copy-1228"><span class="linenos">1228</span></a>    <span class="c1"># Check target directory exists</span>
+</span><span id="copy-1229"><a href="#copy-1229"><span class="linenos">1229</span></a>    <span class="n">target_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">target_dir</span><span class="p">)</span>
+</span><span id="copy-1230"><a href="#copy-1230"><span class="linenos">1230</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">target_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="copy-1231"><a href="#copy-1231"><span class="linenos">1231</span></a>        <span class="k">raise</span> <span class="ne">FileNotFoundError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The target directory </span><span class="si">{</span><span class="n">target_path</span><span class="si">}</span><span class="s2"> does not exist&quot;</span><span class="p">)</span>
+</span><span id="copy-1232"><a href="#copy-1232"><span class="linenos">1232</span></a>
+</span><span id="copy-1233"><a href="#copy-1233"><span class="linenos">1233</span></a>    <span class="c1"># Set copy directory</span>
+</span><span id="copy-1234"><a href="#copy-1234"><span class="linenos">1234</span></a>    <span class="n">copy_path</span> <span class="o">=</span> <span class="n">target_path</span> <span class="o">/</span> <span class="n">version</span>
+</span><span id="copy-1235"><a href="#copy-1235"><span class="linenos">1235</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copying repo </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="copy-1236"><a href="#copy-1236"><span class="linenos">1236</span></a>
+</span><span id="copy-1237"><a href="#copy-1237"><span class="linenos">1237</span></a>    <span class="k">if</span> <span class="p">(</span>
+</span><span id="copy-1238"><a href="#copy-1238"><span class="linenos">1238</span></a>        <span class="n">copy_path</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="ow">and</span> <span class="n">copy_path</span><span class="o">.</span><span class="n">is_dir</span><span class="p">()</span>
+</span><span id="copy-1239"><a href="#copy-1239"><span class="linenos">1239</span></a>    <span class="p">):</span>  <span class="c1"># Check if it exists and is a directory</span>
+</span><span id="copy-1240"><a href="#copy-1240"><span class="linenos">1240</span></a>        <span class="n">copy</span> <span class="o">=</span> <span class="n">_check_delete_dir</span><span class="p">(</span>
+</span><span id="copy-1241"><a href="#copy-1241"><span class="linenos">1241</span></a>            <span class="n">copy_path</span><span class="p">,</span>
+</span><span id="copy-1242"><a href="#copy-1242"><span class="linenos">1242</span></a>            <span class="sa">f</span><span class="s2">&quot;The directory </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">copy_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2"> already exists. Do you want to overwrite? (yes/no): &quot;</span><span class="p">,</span>
+</span><span id="copy-1243"><a href="#copy-1243"><span class="linenos">1243</span></a>        <span class="p">)</span>
+</span><span id="copy-1244"><a href="#copy-1244"><span class="linenos">1244</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="copy-1245"><a href="#copy-1245"><span class="linenos">1245</span></a>        <span class="n">copy</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="copy-1246"><a href="#copy-1246"><span class="linenos">1246</span></a>
+</span><span id="copy-1247"><a href="#copy-1247"><span class="linenos">1247</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span><span class="p">:</span>
+</span><span id="copy-1248"><a href="#copy-1248"><span class="linenos">1248</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Not copying the version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="copy-1249"><a href="#copy-1249"><span class="linenos">1249</span></a>        <span class="k">return</span>
+</span><span id="copy-1250"><a href="#copy-1250"><span class="linenos">1250</span></a>
+</span><span id="copy-1251"><a href="#copy-1251"><span class="linenos">1251</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Cloning repo from </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
+</span><span id="copy-1252"><a href="#copy-1252"><span class="linenos">1252</span></a>    <span class="n">repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">phen_path</span><span class="p">,</span> <span class="n">copy_path</span><span class="p">)</span>
+</span><span id="copy-1253"><a href="#copy-1253"><span class="linenos">1253</span></a>
+</span><span id="copy-1254"><a href="#copy-1254"><span class="linenos">1254</span></a>    <span class="c1"># Check out the latest commit or specified version</span>
+</span><span id="copy-1255"><a href="#copy-1255"><span class="linenos">1255</span></a>    <span class="k">if</span> <span class="n">version</span><span class="p">:</span>
+</span><span id="copy-1256"><a href="#copy-1256"><span class="linenos">1256</span></a>        <span class="c1"># Checkout a specific version (e.g., branch, tag, or commit hash)</span>
+</span><span id="copy-1257"><a href="#copy-1257"><span class="linenos">1257</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Checking out version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
+</span><span id="copy-1258"><a href="#copy-1258"><span class="linenos">1258</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
+</span><span id="copy-1259"><a href="#copy-1259"><span class="linenos">1259</span></a>    <span class="k">else</span><span class="p">:</span>
+</span><span id="copy-1260"><a href="#copy-1260"><span class="linenos">1260</span></a>        <span class="c1"># Checkout the latest commit (HEAD)</span>
+</span><span id="copy-1261"><a href="#copy-1261"><span class="linenos">1261</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Checking out the latest commit...&quot;</span><span class="p">)</span>
+</span><span id="copy-1262"><a href="#copy-1262"><span class="linenos">1262</span></a>        <span class="n">repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="s2">&quot;HEAD&quot;</span><span class="p">)</span>
+</span><span id="copy-1263"><a href="#copy-1263"><span class="linenos">1263</span></a>
+</span><span id="copy-1264"><a href="#copy-1264"><span class="linenos">1264</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Copied </span><span class="si">{</span><span class="n">phen_path</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">repo</span><span class="o">.</span><span class="n">head</span><span class="o">.</span><span class="n">commit</span><span class="o">.</span><span class="n">hexsha</span><span class="p">[:</span><span class="mi">7</span><span class="p">]</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">copy_path</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="copy-1265"><a href="#copy-1265"><span class="linenos">1265</span></a>
+</span><span id="copy-1266"><a href="#copy-1266"><span class="linenos">1266</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotype copied successfully&quot;</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -2868,14 +2926,14 @@
 
     </div>
     <a class="headerlink" href="#extract_concepts"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="extract_concepts-1228"><a href="#extract_concepts-1228"><span class="linenos">1228</span></a><span class="k">def</span><span class="w"> </span><span class="nf">extract_concepts</span><span class="p">(</span><span class="n">config_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
-</span><span id="extract_concepts-1229"><a href="#extract_concepts-1229"><span class="linenos">1229</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Extracts concepts as {name: file_path} dictionary and a name set.&quot;&quot;&quot;</span>
-</span><span id="extract_concepts-1230"><a href="#extract_concepts-1230"><span class="linenos">1230</span></a>    <span class="n">concepts_dict</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="extract_concepts-1231"><a href="#extract_concepts-1231"><span class="linenos">1231</span></a>        <span class="n">item</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]:</span> <span class="p">[</span><span class="n">file</span><span class="p">[</span><span class="s2">&quot;path&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="s2">&quot;files&quot;</span><span class="p">]]</span>
-</span><span id="extract_concepts-1232"><a href="#extract_concepts-1232"><span class="linenos">1232</span></a>        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">config_data</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;concept_sets&quot;</span><span class="p">]</span>
-</span><span id="extract_concepts-1233"><a href="#extract_concepts-1233"><span class="linenos">1233</span></a>    <span class="p">}</span>
-</span><span id="extract_concepts-1234"><a href="#extract_concepts-1234"><span class="linenos">1234</span></a>    <span class="n">name_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">concepts_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
-</span><span id="extract_concepts-1235"><a href="#extract_concepts-1235"><span class="linenos">1235</span></a>    <span class="k">return</span> <span class="n">concepts_dict</span><span class="p">,</span> <span class="n">name_set</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="extract_concepts-1270"><a href="#extract_concepts-1270"><span class="linenos">1270</span></a><span class="k">def</span><span class="w"> </span><span class="nf">extract_concepts</span><span class="p">(</span><span class="n">config_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
+</span><span id="extract_concepts-1271"><a href="#extract_concepts-1271"><span class="linenos">1271</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Extracts concepts as {name: file_path} dictionary and a name set.&quot;&quot;&quot;</span>
+</span><span id="extract_concepts-1272"><a href="#extract_concepts-1272"><span class="linenos">1272</span></a>    <span class="n">concepts_dict</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="extract_concepts-1273"><a href="#extract_concepts-1273"><span class="linenos">1273</span></a>        <span class="n">item</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]:</span> <span class="p">[</span><span class="n">file</span><span class="p">[</span><span class="s2">&quot;path&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="s2">&quot;files&quot;</span><span class="p">]]</span>
+</span><span id="extract_concepts-1274"><a href="#extract_concepts-1274"><span class="linenos">1274</span></a>        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">config_data</span><span class="p">[</span><span class="s2">&quot;phenotype&quot;</span><span class="p">][</span><span class="s2">&quot;concept_sets&quot;</span><span class="p">]</span>
+</span><span id="extract_concepts-1275"><a href="#extract_concepts-1275"><span class="linenos">1275</span></a>    <span class="p">}</span>
+</span><span id="extract_concepts-1276"><a href="#extract_concepts-1276"><span class="linenos">1276</span></a>    <span class="n">name_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">concepts_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
+</span><span id="extract_concepts-1277"><a href="#extract_concepts-1277"><span class="linenos">1277</span></a>    <span class="k">return</span> <span class="n">concepts_dict</span><span class="p">,</span> <span class="n">name_set</span>
 </span></pre></div>
 
 
@@ -2895,79 +2953,79 @@
 
     </div>
     <a class="headerlink" href="#diff_config"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="diff_config-1249"><a href="#diff_config-1249"><span class="linenos">1249</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_config</span><span class="p">(</span><span class="n">old_config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">new_config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="diff_config-1250"><a href="#diff_config-1250"><span class="linenos">1250</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"># Changes to phenotype configuration</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1251"><a href="#diff_config-1251"><span class="linenos">1251</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares changes in the phenotype configuration including added, removed and renamed concept sets and changes to concept set source concept code file paths</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1252"><a href="#diff_config-1252"><span class="linenos">1252</span></a>
-</span><span id="diff_config-1253"><a href="#diff_config-1253"><span class="linenos">1253</span></a>    <span class="n">old_concepts</span><span class="p">,</span> <span class="n">old_names</span> <span class="o">=</span> <span class="n">extract_concepts</span><span class="p">(</span><span class="n">old_config</span><span class="p">)</span>
-</span><span id="diff_config-1254"><a href="#diff_config-1254"><span class="linenos">1254</span></a>    <span class="n">new_concepts</span><span class="p">,</span> <span class="n">new_names</span> <span class="o">=</span> <span class="n">extract_concepts</span><span class="p">(</span><span class="n">new_config</span><span class="p">)</span>
-</span><span id="diff_config-1255"><a href="#diff_config-1255"><span class="linenos">1255</span></a>
-</span><span id="diff_config-1256"><a href="#diff_config-1256"><span class="linenos">1256</span></a>    <span class="c1"># Check added and removed concept set names</span>
-</span><span id="diff_config-1257"><a href="#diff_config-1257"><span class="linenos">1257</span></a>    <span class="n">added_names</span> <span class="o">=</span> <span class="n">new_names</span> <span class="o">-</span> <span class="n">old_names</span>  <span class="c1"># Names that appear in new but not in old</span>
-</span><span id="diff_config-1258"><a href="#diff_config-1258"><span class="linenos">1258</span></a>    <span class="n">removed_names</span> <span class="o">=</span> <span class="n">old_names</span> <span class="o">-</span> <span class="n">new_names</span>  <span class="c1"># Names that were in old but not in new</span>
-</span><span id="diff_config-1259"><a href="#diff_config-1259"><span class="linenos">1259</span></a>
-</span><span id="diff_config-1260"><a href="#diff_config-1260"><span class="linenos">1260</span></a>    <span class="c1"># find file path changes for unchanged names</span>
-</span><span id="diff_config-1261"><a href="#diff_config-1261"><span class="linenos">1261</span></a>    <span class="n">unchanged_names</span> <span class="o">=</span> <span class="n">old_names</span> <span class="o">&amp;</span> <span class="n">new_names</span>  <span class="c1"># Names that exist in both</span>
-</span><span id="diff_config-1262"><a href="#diff_config-1262"><span class="linenos">1262</span></a>    <span class="n">file_diff</span> <span class="o">=</span> <span class="n">DeepDiff</span><span class="p">(</span>
-</span><span id="diff_config-1263"><a href="#diff_config-1263"><span class="linenos">1263</span></a>        <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">old_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">unchanged_names</span><span class="p">},</span>
-</span><span id="diff_config-1264"><a href="#diff_config-1264"><span class="linenos">1264</span></a>        <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">new_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">unchanged_names</span><span class="p">},</span>
-</span><span id="diff_config-1265"><a href="#diff_config-1265"><span class="linenos">1265</span></a>    <span class="p">)</span>
-</span><span id="diff_config-1266"><a href="#diff_config-1266"><span class="linenos">1266</span></a>
-</span><span id="diff_config-1267"><a href="#diff_config-1267"><span class="linenos">1267</span></a>    <span class="c1"># Find renamed concepts (same file, different name)</span>
-</span><span id="diff_config-1268"><a href="#diff_config-1268"><span class="linenos">1268</span></a>    <span class="n">renamed_concepts</span> <span class="o">=</span> <span class="p">[]</span>
-</span><span id="diff_config-1269"><a href="#diff_config-1269"><span class="linenos">1269</span></a>    <span class="k">for</span> <span class="n">removed</span> <span class="ow">in</span> <span class="n">removed_names</span><span class="p">:</span>
-</span><span id="diff_config-1270"><a href="#diff_config-1270"><span class="linenos">1270</span></a>        <span class="n">old_path</span> <span class="o">=</span> <span class="n">old_concepts</span><span class="p">[</span><span class="n">removed</span><span class="p">]</span>
-</span><span id="diff_config-1271"><a href="#diff_config-1271"><span class="linenos">1271</span></a>        <span class="k">for</span> <span class="n">added</span> <span class="ow">in</span> <span class="n">added_names</span><span class="p">:</span>
-</span><span id="diff_config-1272"><a href="#diff_config-1272"><span class="linenos">1272</span></a>            <span class="n">new_path</span> <span class="o">=</span> <span class="n">new_concepts</span><span class="p">[</span><span class="n">added</span><span class="p">]</span>
-</span><span id="diff_config-1273"><a href="#diff_config-1273"><span class="linenos">1273</span></a>            <span class="k">if</span> <span class="n">old_path</span> <span class="o">==</span> <span class="n">new_path</span><span class="p">:</span>
-</span><span id="diff_config-1274"><a href="#diff_config-1274"><span class="linenos">1274</span></a>                <span class="n">renamed_concepts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">removed</span><span class="p">,</span> <span class="n">added</span><span class="p">))</span>
-</span><span id="diff_config-1275"><a href="#diff_config-1275"><span class="linenos">1275</span></a>
-</span><span id="diff_config-1276"><a href="#diff_config-1276"><span class="linenos">1276</span></a>    <span class="c1"># Remove renamed concepts from added and removed sets</span>
-</span><span id="diff_config-1277"><a href="#diff_config-1277"><span class="linenos">1277</span></a>    <span class="k">for</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="n">renamed_concepts</span><span class="p">:</span>
-</span><span id="diff_config-1278"><a href="#diff_config-1278"><span class="linenos">1278</span></a>        <span class="n">added_names</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span>
-</span><span id="diff_config-1279"><a href="#diff_config-1279"><span class="linenos">1279</span></a>        <span class="n">removed_names</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">old_name</span><span class="p">)</span>
-</span><span id="diff_config-1280"><a href="#diff_config-1280"><span class="linenos">1280</span></a>
-</span><span id="diff_config-1281"><a href="#diff_config-1281"><span class="linenos">1281</span></a>    <span class="c1"># generate config report</span>
-</span><span id="diff_config-1282"><a href="#diff_config-1282"><span class="linenos">1282</span></a>    <span class="k">if</span> <span class="n">added_names</span><span class="p">:</span>
-</span><span id="diff_config-1283"><a href="#diff_config-1283"><span class="linenos">1283</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Added Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1284"><a href="#diff_config-1284"><span class="linenos">1284</span></a>        <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">added_names</span><span class="p">:</span>
-</span><span id="diff_config-1285"><a href="#diff_config-1285"><span class="linenos">1285</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">new_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1286"><a href="#diff_config-1286"><span class="linenos">1286</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1287"><a href="#diff_config-1287"><span class="linenos">1287</span></a>
-</span><span id="diff_config-1288"><a href="#diff_config-1288"><span class="linenos">1288</span></a>    <span class="k">if</span> <span class="n">removed_names</span><span class="p">:</span>
-</span><span id="diff_config-1289"><a href="#diff_config-1289"><span class="linenos">1289</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Removed Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1290"><a href="#diff_config-1290"><span class="linenos">1290</span></a>        <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">removed_names</span><span class="p">:</span>
-</span><span id="diff_config-1291"><a href="#diff_config-1291"><span class="linenos">1291</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">old_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1292"><a href="#diff_config-1292"><span class="linenos">1292</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1293"><a href="#diff_config-1293"><span class="linenos">1293</span></a>
-</span><span id="diff_config-1294"><a href="#diff_config-1294"><span class="linenos">1294</span></a>    <span class="k">if</span> <span class="n">renamed_concepts</span><span class="p">:</span>
-</span><span id="diff_config-1295"><a href="#diff_config-1295"><span class="linenos">1295</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Renamed Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1296"><a href="#diff_config-1296"><span class="linenos">1296</span></a>        <span class="k">for</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="n">renamed_concepts</span><span class="p">:</span>
-</span><span id="diff_config-1297"><a href="#diff_config-1297"><span class="linenos">1297</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="p">(</span>
-</span><span id="diff_config-1298"><a href="#diff_config-1298"><span class="linenos">1298</span></a>                <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">old_name</span><span class="si">}</span><span class="s2">` ➝ `</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">old_concepts</span><span class="p">[</span><span class="n">old_name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1299"><a href="#diff_config-1299"><span class="linenos">1299</span></a>            <span class="p">)</span>
-</span><span id="diff_config-1300"><a href="#diff_config-1300"><span class="linenos">1300</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="diff_config-1291"><a href="#diff_config-1291"><span class="linenos">1291</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_config</span><span class="p">(</span><span class="n">old_config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">new_config</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="diff_config-1292"><a href="#diff_config-1292"><span class="linenos">1292</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"># Changes to phenotype configuration</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1293"><a href="#diff_config-1293"><span class="linenos">1293</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares changes in the phenotype configuration including added, removed and renamed concept sets and changes to concept set source concept code file paths</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1294"><a href="#diff_config-1294"><span class="linenos">1294</span></a>
+</span><span id="diff_config-1295"><a href="#diff_config-1295"><span class="linenos">1295</span></a>    <span class="n">old_concepts</span><span class="p">,</span> <span class="n">old_names</span> <span class="o">=</span> <span class="n">extract_concepts</span><span class="p">(</span><span class="n">old_config</span><span class="p">)</span>
+</span><span id="diff_config-1296"><a href="#diff_config-1296"><span class="linenos">1296</span></a>    <span class="n">new_concepts</span><span class="p">,</span> <span class="n">new_names</span> <span class="o">=</span> <span class="n">extract_concepts</span><span class="p">(</span><span class="n">new_config</span><span class="p">)</span>
+</span><span id="diff_config-1297"><a href="#diff_config-1297"><span class="linenos">1297</span></a>
+</span><span id="diff_config-1298"><a href="#diff_config-1298"><span class="linenos">1298</span></a>    <span class="c1"># Check added and removed concept set names</span>
+</span><span id="diff_config-1299"><a href="#diff_config-1299"><span class="linenos">1299</span></a>    <span class="n">added_names</span> <span class="o">=</span> <span class="n">new_names</span> <span class="o">-</span> <span class="n">old_names</span>  <span class="c1"># Names that appear in new but not in old</span>
+</span><span id="diff_config-1300"><a href="#diff_config-1300"><span class="linenos">1300</span></a>    <span class="n">removed_names</span> <span class="o">=</span> <span class="n">old_names</span> <span class="o">-</span> <span class="n">new_names</span>  <span class="c1"># Names that were in old but not in new</span>
 </span><span id="diff_config-1301"><a href="#diff_config-1301"><span class="linenos">1301</span></a>
-</span><span id="diff_config-1302"><a href="#diff_config-1302"><span class="linenos">1302</span></a>    <span class="k">if</span> <span class="s2">&quot;values_changed&quot;</span> <span class="ow">in</span> <span class="n">file_diff</span><span class="p">:</span>
-</span><span id="diff_config-1303"><a href="#diff_config-1303"><span class="linenos">1303</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Updated File Paths</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1304"><a href="#diff_config-1304"><span class="linenos">1304</span></a>        <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">change</span> <span class="ow">in</span> <span class="n">file_diff</span><span class="p">[</span><span class="s2">&quot;values_changed&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
-</span><span id="diff_config-1305"><a href="#diff_config-1305"><span class="linenos">1305</span></a>            <span class="n">old_file</span> <span class="o">=</span> <span class="n">change</span><span class="p">[</span><span class="s2">&quot;old_value&quot;</span><span class="p">]</span>
-</span><span id="diff_config-1306"><a href="#diff_config-1306"><span class="linenos">1306</span></a>            <span class="n">new_file</span> <span class="o">=</span> <span class="n">change</span><span class="p">[</span><span class="s2">&quot;new_value&quot;</span><span class="p">]</span>
-</span><span id="diff_config-1307"><a href="#diff_config-1307"><span class="linenos">1307</span></a>            <span class="n">clean_name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;root[&#39;&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;&#39;]&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-</span><span id="diff_config-1308"><a href="#diff_config-1308"><span class="linenos">1308</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="p">(</span>
-</span><span id="diff_config-1309"><a href="#diff_config-1309"><span class="linenos">1309</span></a>                <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">clean_name</span><span class="si">}</span><span class="s2">` changed file from `</span><span class="si">{</span><span class="n">old_file</span><span class="si">}</span><span class="s2">` ➝ `</span><span class="si">{</span><span class="n">new_file</span><span class="si">}</span><span class="s2">`</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1310"><a href="#diff_config-1310"><span class="linenos">1310</span></a>            <span class="p">)</span>
-</span><span id="diff_config-1311"><a href="#diff_config-1311"><span class="linenos">1311</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1312"><a href="#diff_config-1312"><span class="linenos">1312</span></a>
-</span><span id="diff_config-1313"><a href="#diff_config-1313"><span class="linenos">1313</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span>
-</span><span id="diff_config-1314"><a href="#diff_config-1314"><span class="linenos">1314</span></a>        <span class="n">added_names</span>
-</span><span id="diff_config-1315"><a href="#diff_config-1315"><span class="linenos">1315</span></a>        <span class="ow">or</span> <span class="n">removed_names</span>
-</span><span id="diff_config-1316"><a href="#diff_config-1316"><span class="linenos">1316</span></a>        <span class="ow">or</span> <span class="n">renamed_concepts</span>
-</span><span id="diff_config-1317"><a href="#diff_config-1317"><span class="linenos">1317</span></a>        <span class="ow">or</span> <span class="n">file_diff</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;values_changed&quot;</span><span class="p">)</span>
-</span><span id="diff_config-1318"><a href="#diff_config-1318"><span class="linenos">1318</span></a>    <span class="p">):</span>
-</span><span id="diff_config-1319"><a href="#diff_config-1319"><span class="linenos">1319</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;No changes in concept sets.</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_config-1320"><a href="#diff_config-1320"><span class="linenos">1320</span></a>
-</span><span id="diff_config-1321"><a href="#diff_config-1321"><span class="linenos">1321</span></a>    <span class="k">return</span> <span class="n">report</span>
+</span><span id="diff_config-1302"><a href="#diff_config-1302"><span class="linenos">1302</span></a>    <span class="c1"># find file path changes for unchanged names</span>
+</span><span id="diff_config-1303"><a href="#diff_config-1303"><span class="linenos">1303</span></a>    <span class="n">unchanged_names</span> <span class="o">=</span> <span class="n">old_names</span> <span class="o">&amp;</span> <span class="n">new_names</span>  <span class="c1"># Names that exist in both</span>
+</span><span id="diff_config-1304"><a href="#diff_config-1304"><span class="linenos">1304</span></a>    <span class="n">file_diff</span> <span class="o">=</span> <span class="n">DeepDiff</span><span class="p">(</span>
+</span><span id="diff_config-1305"><a href="#diff_config-1305"><span class="linenos">1305</span></a>        <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">old_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">unchanged_names</span><span class="p">},</span>
+</span><span id="diff_config-1306"><a href="#diff_config-1306"><span class="linenos">1306</span></a>        <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">new_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">unchanged_names</span><span class="p">},</span>
+</span><span id="diff_config-1307"><a href="#diff_config-1307"><span class="linenos">1307</span></a>    <span class="p">)</span>
+</span><span id="diff_config-1308"><a href="#diff_config-1308"><span class="linenos">1308</span></a>
+</span><span id="diff_config-1309"><a href="#diff_config-1309"><span class="linenos">1309</span></a>    <span class="c1"># Find renamed concepts (same file, different name)</span>
+</span><span id="diff_config-1310"><a href="#diff_config-1310"><span class="linenos">1310</span></a>    <span class="n">renamed_concepts</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="diff_config-1311"><a href="#diff_config-1311"><span class="linenos">1311</span></a>    <span class="k">for</span> <span class="n">removed</span> <span class="ow">in</span> <span class="n">removed_names</span><span class="p">:</span>
+</span><span id="diff_config-1312"><a href="#diff_config-1312"><span class="linenos">1312</span></a>        <span class="n">old_path</span> <span class="o">=</span> <span class="n">old_concepts</span><span class="p">[</span><span class="n">removed</span><span class="p">]</span>
+</span><span id="diff_config-1313"><a href="#diff_config-1313"><span class="linenos">1313</span></a>        <span class="k">for</span> <span class="n">added</span> <span class="ow">in</span> <span class="n">added_names</span><span class="p">:</span>
+</span><span id="diff_config-1314"><a href="#diff_config-1314"><span class="linenos">1314</span></a>            <span class="n">new_path</span> <span class="o">=</span> <span class="n">new_concepts</span><span class="p">[</span><span class="n">added</span><span class="p">]</span>
+</span><span id="diff_config-1315"><a href="#diff_config-1315"><span class="linenos">1315</span></a>            <span class="k">if</span> <span class="n">old_path</span> <span class="o">==</span> <span class="n">new_path</span><span class="p">:</span>
+</span><span id="diff_config-1316"><a href="#diff_config-1316"><span class="linenos">1316</span></a>                <span class="n">renamed_concepts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">removed</span><span class="p">,</span> <span class="n">added</span><span class="p">))</span>
+</span><span id="diff_config-1317"><a href="#diff_config-1317"><span class="linenos">1317</span></a>
+</span><span id="diff_config-1318"><a href="#diff_config-1318"><span class="linenos">1318</span></a>    <span class="c1"># Remove renamed concepts from added and removed sets</span>
+</span><span id="diff_config-1319"><a href="#diff_config-1319"><span class="linenos">1319</span></a>    <span class="k">for</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="n">renamed_concepts</span><span class="p">:</span>
+</span><span id="diff_config-1320"><a href="#diff_config-1320"><span class="linenos">1320</span></a>        <span class="n">added_names</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span>
+</span><span id="diff_config-1321"><a href="#diff_config-1321"><span class="linenos">1321</span></a>        <span class="n">removed_names</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">old_name</span><span class="p">)</span>
+</span><span id="diff_config-1322"><a href="#diff_config-1322"><span class="linenos">1322</span></a>
+</span><span id="diff_config-1323"><a href="#diff_config-1323"><span class="linenos">1323</span></a>    <span class="c1"># generate config report</span>
+</span><span id="diff_config-1324"><a href="#diff_config-1324"><span class="linenos">1324</span></a>    <span class="k">if</span> <span class="n">added_names</span><span class="p">:</span>
+</span><span id="diff_config-1325"><a href="#diff_config-1325"><span class="linenos">1325</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Added Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1326"><a href="#diff_config-1326"><span class="linenos">1326</span></a>        <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">added_names</span><span class="p">:</span>
+</span><span id="diff_config-1327"><a href="#diff_config-1327"><span class="linenos">1327</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">new_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1328"><a href="#diff_config-1328"><span class="linenos">1328</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1329"><a href="#diff_config-1329"><span class="linenos">1329</span></a>
+</span><span id="diff_config-1330"><a href="#diff_config-1330"><span class="linenos">1330</span></a>    <span class="k">if</span> <span class="n">removed_names</span><span class="p">:</span>
+</span><span id="diff_config-1331"><a href="#diff_config-1331"><span class="linenos">1331</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Removed Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1332"><a href="#diff_config-1332"><span class="linenos">1332</span></a>        <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">removed_names</span><span class="p">:</span>
+</span><span id="diff_config-1333"><a href="#diff_config-1333"><span class="linenos">1333</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">old_concepts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1334"><a href="#diff_config-1334"><span class="linenos">1334</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1335"><a href="#diff_config-1335"><span class="linenos">1335</span></a>
+</span><span id="diff_config-1336"><a href="#diff_config-1336"><span class="linenos">1336</span></a>    <span class="k">if</span> <span class="n">renamed_concepts</span><span class="p">:</span>
+</span><span id="diff_config-1337"><a href="#diff_config-1337"><span class="linenos">1337</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Renamed Concepts</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1338"><a href="#diff_config-1338"><span class="linenos">1338</span></a>        <span class="k">for</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="n">renamed_concepts</span><span class="p">:</span>
+</span><span id="diff_config-1339"><a href="#diff_config-1339"><span class="linenos">1339</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="p">(</span>
+</span><span id="diff_config-1340"><a href="#diff_config-1340"><span class="linenos">1340</span></a>                <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">old_name</span><span class="si">}</span><span class="s2">` ➝ `</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">` (File: `</span><span class="si">{</span><span class="n">old_concepts</span><span class="p">[</span><span class="n">old_name</span><span class="p">]</span><span class="si">}</span><span class="s2">`)</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1341"><a href="#diff_config-1341"><span class="linenos">1341</span></a>            <span class="p">)</span>
+</span><span id="diff_config-1342"><a href="#diff_config-1342"><span class="linenos">1342</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1343"><a href="#diff_config-1343"><span class="linenos">1343</span></a>
+</span><span id="diff_config-1344"><a href="#diff_config-1344"><span class="linenos">1344</span></a>    <span class="k">if</span> <span class="s2">&quot;values_changed&quot;</span> <span class="ow">in</span> <span class="n">file_diff</span><span class="p">:</span>
+</span><span id="diff_config-1345"><a href="#diff_config-1345"><span class="linenos">1345</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;## Updated File Paths</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1346"><a href="#diff_config-1346"><span class="linenos">1346</span></a>        <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">change</span> <span class="ow">in</span> <span class="n">file_diff</span><span class="p">[</span><span class="s2">&quot;values_changed&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+</span><span id="diff_config-1347"><a href="#diff_config-1347"><span class="linenos">1347</span></a>            <span class="n">old_file</span> <span class="o">=</span> <span class="n">change</span><span class="p">[</span><span class="s2">&quot;old_value&quot;</span><span class="p">]</span>
+</span><span id="diff_config-1348"><a href="#diff_config-1348"><span class="linenos">1348</span></a>            <span class="n">new_file</span> <span class="o">=</span> <span class="n">change</span><span class="p">[</span><span class="s2">&quot;new_value&quot;</span><span class="p">]</span>
+</span><span id="diff_config-1349"><a href="#diff_config-1349"><span class="linenos">1349</span></a>            <span class="n">clean_name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;root[&#39;&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;&#39;]&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+</span><span id="diff_config-1350"><a href="#diff_config-1350"><span class="linenos">1350</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="p">(</span>
+</span><span id="diff_config-1351"><a href="#diff_config-1351"><span class="linenos">1351</span></a>                <span class="sa">f</span><span class="s2">&quot;- `</span><span class="si">{</span><span class="n">clean_name</span><span class="si">}</span><span class="s2">` changed file from `</span><span class="si">{</span><span class="n">old_file</span><span class="si">}</span><span class="s2">` ➝ `</span><span class="si">{</span><span class="n">new_file</span><span class="si">}</span><span class="s2">`</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1352"><a href="#diff_config-1352"><span class="linenos">1352</span></a>            <span class="p">)</span>
+</span><span id="diff_config-1353"><a href="#diff_config-1353"><span class="linenos">1353</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1354"><a href="#diff_config-1354"><span class="linenos">1354</span></a>
+</span><span id="diff_config-1355"><a href="#diff_config-1355"><span class="linenos">1355</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span>
+</span><span id="diff_config-1356"><a href="#diff_config-1356"><span class="linenos">1356</span></a>        <span class="n">added_names</span>
+</span><span id="diff_config-1357"><a href="#diff_config-1357"><span class="linenos">1357</span></a>        <span class="ow">or</span> <span class="n">removed_names</span>
+</span><span id="diff_config-1358"><a href="#diff_config-1358"><span class="linenos">1358</span></a>        <span class="ow">or</span> <span class="n">renamed_concepts</span>
+</span><span id="diff_config-1359"><a href="#diff_config-1359"><span class="linenos">1359</span></a>        <span class="ow">or</span> <span class="n">file_diff</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;values_changed&quot;</span><span class="p">)</span>
+</span><span id="diff_config-1360"><a href="#diff_config-1360"><span class="linenos">1360</span></a>    <span class="p">):</span>
+</span><span id="diff_config-1361"><a href="#diff_config-1361"><span class="linenos">1361</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="s2">&quot;No changes in concept sets.</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_config-1362"><a href="#diff_config-1362"><span class="linenos">1362</span></a>
+</span><span id="diff_config-1363"><a href="#diff_config-1363"><span class="linenos">1363</span></a>    <span class="k">return</span> <span class="n">report</span>
 </span></pre></div>
 
 
@@ -2985,71 +3043,71 @@
 
     </div>
     <a class="headerlink" href="#diff_map_files"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="diff_map_files-1324"><a href="#diff_map_files-1324"><span class="linenos">1324</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_map_files</span><span class="p">(</span><span class="n">old_map_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">new_map_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="diff_map_files-1325"><a href="#diff_map_files-1325"><span class="linenos">1325</span></a>    <span class="n">old_output_files</span> <span class="o">=</span> <span class="p">[</span>
-</span><span id="diff_map_files-1326"><a href="#diff_map_files-1326"><span class="linenos">1326</span></a>        <span class="n">file</span><span class="o">.</span><span class="n">name</span>
-</span><span id="diff_map_files-1327"><a href="#diff_map_files-1327"><span class="linenos">1327</span></a>        <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">old_map_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">()</span>
-</span><span id="diff_map_files-1328"><a href="#diff_map_files-1328"><span class="linenos">1328</span></a>        <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">is_file</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">file</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
-</span><span id="diff_map_files-1329"><a href="#diff_map_files-1329"><span class="linenos">1329</span></a>    <span class="p">]</span>
-</span><span id="diff_map_files-1330"><a href="#diff_map_files-1330"><span class="linenos">1330</span></a>    <span class="n">new_output_files</span> <span class="o">=</span> <span class="p">[</span>
-</span><span id="diff_map_files-1331"><a href="#diff_map_files-1331"><span class="linenos">1331</span></a>        <span class="n">file</span><span class="o">.</span><span class="n">name</span>
-</span><span id="diff_map_files-1332"><a href="#diff_map_files-1332"><span class="linenos">1332</span></a>        <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">new_map_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">()</span>
-</span><span id="diff_map_files-1333"><a href="#diff_map_files-1333"><span class="linenos">1333</span></a>        <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">is_file</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">file</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
-</span><span id="diff_map_files-1334"><a href="#diff_map_files-1334"><span class="linenos">1334</span></a>    <span class="p">]</span>
-</span><span id="diff_map_files-1335"><a href="#diff_map_files-1335"><span class="linenos">1335</span></a>
-</span><span id="diff_map_files-1336"><a href="#diff_map_files-1336"><span class="linenos">1336</span></a>    <span class="c1"># Convert the lists to sets for easy comparison</span>
-</span><span id="diff_map_files-1337"><a href="#diff_map_files-1337"><span class="linenos">1337</span></a>    <span class="n">old_output_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">old_output_files</span><span class="p">)</span>
-</span><span id="diff_map_files-1338"><a href="#diff_map_files-1338"><span class="linenos">1338</span></a>    <span class="n">new_output_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">new_output_files</span><span class="p">)</span>
-</span><span id="diff_map_files-1339"><a href="#diff_map_files-1339"><span class="linenos">1339</span></a>
-</span><span id="diff_map_files-1340"><a href="#diff_map_files-1340"><span class="linenos">1340</span></a>    <span class="c1"># Outputs that are in old_output_set but not in new_output_set (removed files)</span>
-</span><span id="diff_map_files-1341"><a href="#diff_map_files-1341"><span class="linenos">1341</span></a>    <span class="n">removed_outputs</span> <span class="o">=</span> <span class="n">old_output_set</span> <span class="o">-</span> <span class="n">new_output_set</span>
-</span><span id="diff_map_files-1342"><a href="#diff_map_files-1342"><span class="linenos">1342</span></a>    <span class="c1"># Outputs that are in new_output_set but not in old_output_set (added files)</span>
-</span><span id="diff_map_files-1343"><a href="#diff_map_files-1343"><span class="linenos">1343</span></a>    <span class="n">added_outputs</span> <span class="o">=</span> <span class="n">new_output_set</span> <span class="o">-</span> <span class="n">old_output_set</span>
-</span><span id="diff_map_files-1344"><a href="#diff_map_files-1344"><span class="linenos">1344</span></a>    <span class="c1"># Outputs that are the intersection of old_output_set and new_output_set</span>
-</span><span id="diff_map_files-1345"><a href="#diff_map_files-1345"><span class="linenos">1345</span></a>    <span class="n">common_outputs</span> <span class="o">=</span> <span class="n">old_output_set</span> <span class="o">&amp;</span> <span class="n">new_output_set</span>
-</span><span id="diff_map_files-1346"><a href="#diff_map_files-1346"><span class="linenos">1346</span></a>
-</span><span id="diff_map_files-1347"><a href="#diff_map_files-1347"><span class="linenos">1347</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"># Changes to available translations</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1348"><a href="#diff_map_files-1348"><span class="linenos">1348</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares the coding translations files available.</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1349"><a href="#diff_map_files-1349"><span class="linenos">1349</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Removed outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">removed_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1350"><a href="#diff_map_files-1350"><span class="linenos">1350</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Added outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">added_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1351"><a href="#diff_map_files-1351"><span class="linenos">1351</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Common outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">common_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1352"><a href="#diff_map_files-1352"><span class="linenos">1352</span></a>
-</span><span id="diff_map_files-1353"><a href="#diff_map_files-1353"><span class="linenos">1353</span></a>    <span class="c1"># Step N: Compare common outputs between versions</span>
-</span><span id="diff_map_files-1354"><a href="#diff_map_files-1354"><span class="linenos">1354</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;# Changes to concepts in translation files</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1355"><a href="#diff_map_files-1355"><span class="linenos">1355</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares the added and removed concepts in each of the coding translation files. Note that this might be different to the config.yaml if the translations have not been run for the current config.</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1356"><a href="#diff_map_files-1356"><span class="linenos">1356</span></a>    <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">common_outputs</span><span class="p">:</span>
-</span><span id="diff_map_files-1357"><a href="#diff_map_files-1357"><span class="linenos">1357</span></a>        <span class="n">old_output</span> <span class="o">=</span> <span class="n">old_map_path</span> <span class="o">/</span> <span class="n">file</span>
-</span><span id="diff_map_files-1358"><a href="#diff_map_files-1358"><span class="linenos">1358</span></a>        <span class="n">new_output</span> <span class="o">=</span> <span class="n">new_map_path</span> <span class="o">/</span> <span class="n">file</span>
-</span><span id="diff_map_files-1359"><a href="#diff_map_files-1359"><span class="linenos">1359</span></a>
-</span><span id="diff_map_files-1360"><a href="#diff_map_files-1360"><span class="linenos">1360</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Old ouptput: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_output</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="diff_map_files-1361"><a href="#diff_map_files-1361"><span class="linenos">1361</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New ouptput: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_output</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="diff_map_files-1362"><a href="#diff_map_files-1362"><span class="linenos">1362</span></a>
-</span><span id="diff_map_files-1363"><a href="#diff_map_files-1363"><span class="linenos">1363</span></a>        <span class="n">df1</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">old_output</span><span class="p">)</span>
-</span><span id="diff_map_files-1364"><a href="#diff_map_files-1364"><span class="linenos">1364</span></a>        <span class="n">df1</span> <span class="o">=</span> <span class="n">df1</span><span class="p">[[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
-</span><span id="diff_map_files-1365"><a href="#diff_map_files-1365"><span class="linenos">1365</span></a>        <span class="n">df2</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">new_output</span><span class="p">)</span>
-</span><span id="diff_map_files-1366"><a href="#diff_map_files-1366"><span class="linenos">1366</span></a>        <span class="n">df2</span> <span class="o">=</span> <span class="n">df2</span><span class="p">[[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
-</span><span id="diff_map_files-1367"><a href="#diff_map_files-1367"><span class="linenos">1367</span></a>
-</span><span id="diff_map_files-1368"><a href="#diff_map_files-1368"><span class="linenos">1368</span></a>        <span class="c1"># Check for added and removed concepts</span>
-</span><span id="diff_map_files-1369"><a href="#diff_map_files-1369"><span class="linenos">1369</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- File </span><span class="si">{</span><span class="n">file</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1370"><a href="#diff_map_files-1370"><span class="linenos">1370</span></a>        <span class="n">sorted_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">df2</span><span class="o">.</span><span class="n">index</span><span class="p">)))</span>
-</span><span id="diff_map_files-1371"><a href="#diff_map_files-1371"><span class="linenos">1371</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Removed concepts </span><span class="si">{</span><span class="n">sorted_list</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1372"><a href="#diff_map_files-1372"><span class="linenos">1372</span></a>        <span class="n">sorted_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df2</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">)))</span>
-</span><span id="diff_map_files-1373"><a href="#diff_map_files-1373"><span class="linenos">1373</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Added concepts </span><span class="si">{</span><span class="n">sorted_list</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1374"><a href="#diff_map_files-1374"><span class="linenos">1374</span></a>
-</span><span id="diff_map_files-1375"><a href="#diff_map_files-1375"><span class="linenos">1375</span></a>        <span class="c1"># Check for changed concepts</span>
-</span><span id="diff_map_files-1376"><a href="#diff_map_files-1376"><span class="linenos">1376</span></a>        <span class="n">diff</span> <span class="o">=</span> <span class="n">df2</span> <span class="o">-</span> <span class="n">df1</span>  <span class="c1"># diff in counts</span>
-</span><span id="diff_map_files-1377"><a href="#diff_map_files-1377"><span class="linenos">1377</span></a>        <span class="n">diff</span> <span class="o">=</span> <span class="n">diff</span><span class="p">[</span>
-</span><span id="diff_map_files-1378"><a href="#diff_map_files-1378"><span class="linenos">1378</span></a>            <span class="p">(</span><span class="o">~</span><span class="p">(</span><span class="n">diff</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span> <span class="o">&amp;</span> <span class="n">diff</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">notna</span><span class="p">()</span>
-</span><span id="diff_map_files-1379"><a href="#diff_map_files-1379"><span class="linenos">1379</span></a>        <span class="p">]</span>  <span class="c1"># get non-zero counts</span>
-</span><span id="diff_map_files-1380"><a href="#diff_map_files-1380"><span class="linenos">1380</span></a>        <span class="n">s</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1381"><a href="#diff_map_files-1381"><span class="linenos">1381</span></a>        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">diff</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
-</span><span id="diff_map_files-1382"><a href="#diff_map_files-1382"><span class="linenos">1382</span></a>            <span class="k">for</span> <span class="n">concept</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">diff</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
-</span><span id="diff_map_files-1383"><a href="#diff_map_files-1383"><span class="linenos">1383</span></a>                <span class="n">s</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\t</span><span class="s2"> - </span><span class="si">{}</span><span class="s2"> </span><span class="si">{}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">concept</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
-</span><span id="diff_map_files-1384"><a href="#diff_map_files-1384"><span class="linenos">1384</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Changed concepts </span><span class="si">{</span><span class="n">s</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1385"><a href="#diff_map_files-1385"><span class="linenos">1385</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="diff_map_files-1386"><a href="#diff_map_files-1386"><span class="linenos">1386</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Changed concepts []</span><span class="se">\n\n</span><span class="s2">&quot;</span>
-</span><span id="diff_map_files-1387"><a href="#diff_map_files-1387"><span class="linenos">1387</span></a>
-</span><span id="diff_map_files-1388"><a href="#diff_map_files-1388"><span class="linenos">1388</span></a>    <span class="k">return</span> <span class="n">report</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="diff_map_files-1366"><a href="#diff_map_files-1366"><span class="linenos">1366</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_map_files</span><span class="p">(</span><span class="n">old_map_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">new_map_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="diff_map_files-1367"><a href="#diff_map_files-1367"><span class="linenos">1367</span></a>    <span class="n">old_output_files</span> <span class="o">=</span> <span class="p">[</span>
+</span><span id="diff_map_files-1368"><a href="#diff_map_files-1368"><span class="linenos">1368</span></a>        <span class="n">file</span><span class="o">.</span><span class="n">name</span>
+</span><span id="diff_map_files-1369"><a href="#diff_map_files-1369"><span class="linenos">1369</span></a>        <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">old_map_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">()</span>
+</span><span id="diff_map_files-1370"><a href="#diff_map_files-1370"><span class="linenos">1370</span></a>        <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">is_file</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">file</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
+</span><span id="diff_map_files-1371"><a href="#diff_map_files-1371"><span class="linenos">1371</span></a>    <span class="p">]</span>
+</span><span id="diff_map_files-1372"><a href="#diff_map_files-1372"><span class="linenos">1372</span></a>    <span class="n">new_output_files</span> <span class="o">=</span> <span class="p">[</span>
+</span><span id="diff_map_files-1373"><a href="#diff_map_files-1373"><span class="linenos">1373</span></a>        <span class="n">file</span><span class="o">.</span><span class="n">name</span>
+</span><span id="diff_map_files-1374"><a href="#diff_map_files-1374"><span class="linenos">1374</span></a>        <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">new_map_path</span><span class="o">.</span><span class="n">iterdir</span><span class="p">()</span>
+</span><span id="diff_map_files-1375"><a href="#diff_map_files-1375"><span class="linenos">1375</span></a>        <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">is_file</span><span class="p">()</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">file</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
+</span><span id="diff_map_files-1376"><a href="#diff_map_files-1376"><span class="linenos">1376</span></a>    <span class="p">]</span>
+</span><span id="diff_map_files-1377"><a href="#diff_map_files-1377"><span class="linenos">1377</span></a>
+</span><span id="diff_map_files-1378"><a href="#diff_map_files-1378"><span class="linenos">1378</span></a>    <span class="c1"># Convert the lists to sets for easy comparison</span>
+</span><span id="diff_map_files-1379"><a href="#diff_map_files-1379"><span class="linenos">1379</span></a>    <span class="n">old_output_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">old_output_files</span><span class="p">)</span>
+</span><span id="diff_map_files-1380"><a href="#diff_map_files-1380"><span class="linenos">1380</span></a>    <span class="n">new_output_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">new_output_files</span><span class="p">)</span>
+</span><span id="diff_map_files-1381"><a href="#diff_map_files-1381"><span class="linenos">1381</span></a>
+</span><span id="diff_map_files-1382"><a href="#diff_map_files-1382"><span class="linenos">1382</span></a>    <span class="c1"># Outputs that are in old_output_set but not in new_output_set (removed files)</span>
+</span><span id="diff_map_files-1383"><a href="#diff_map_files-1383"><span class="linenos">1383</span></a>    <span class="n">removed_outputs</span> <span class="o">=</span> <span class="n">old_output_set</span> <span class="o">-</span> <span class="n">new_output_set</span>
+</span><span id="diff_map_files-1384"><a href="#diff_map_files-1384"><span class="linenos">1384</span></a>    <span class="c1"># Outputs that are in new_output_set but not in old_output_set (added files)</span>
+</span><span id="diff_map_files-1385"><a href="#diff_map_files-1385"><span class="linenos">1385</span></a>    <span class="n">added_outputs</span> <span class="o">=</span> <span class="n">new_output_set</span> <span class="o">-</span> <span class="n">old_output_set</span>
+</span><span id="diff_map_files-1386"><a href="#diff_map_files-1386"><span class="linenos">1386</span></a>    <span class="c1"># Outputs that are the intersection of old_output_set and new_output_set</span>
+</span><span id="diff_map_files-1387"><a href="#diff_map_files-1387"><span class="linenos">1387</span></a>    <span class="n">common_outputs</span> <span class="o">=</span> <span class="n">old_output_set</span> <span class="o">&amp;</span> <span class="n">new_output_set</span>
+</span><span id="diff_map_files-1388"><a href="#diff_map_files-1388"><span class="linenos">1388</span></a>
+</span><span id="diff_map_files-1389"><a href="#diff_map_files-1389"><span class="linenos">1389</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"># Changes to available translations</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1390"><a href="#diff_map_files-1390"><span class="linenos">1390</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares the coding translations files available.</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1391"><a href="#diff_map_files-1391"><span class="linenos">1391</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Removed outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">removed_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1392"><a href="#diff_map_files-1392"><span class="linenos">1392</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Added outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">added_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1393"><a href="#diff_map_files-1393"><span class="linenos">1393</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Common outputs: </span><span class="si">{</span><span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">common_outputs</span><span class="p">))</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1394"><a href="#diff_map_files-1394"><span class="linenos">1394</span></a>
+</span><span id="diff_map_files-1395"><a href="#diff_map_files-1395"><span class="linenos">1395</span></a>    <span class="c1"># Step N: Compare common outputs between versions</span>
+</span><span id="diff_map_files-1396"><a href="#diff_map_files-1396"><span class="linenos">1396</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;# Changes to concepts in translation files</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1397"><a href="#diff_map_files-1397"><span class="linenos">1397</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;This compares the added and removed concepts in each of the coding translation files. Note that this might be different to the config.yaml if the translations have not been run for the current config.</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1398"><a href="#diff_map_files-1398"><span class="linenos">1398</span></a>    <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">common_outputs</span><span class="p">:</span>
+</span><span id="diff_map_files-1399"><a href="#diff_map_files-1399"><span class="linenos">1399</span></a>        <span class="n">old_output</span> <span class="o">=</span> <span class="n">old_map_path</span> <span class="o">/</span> <span class="n">file</span>
+</span><span id="diff_map_files-1400"><a href="#diff_map_files-1400"><span class="linenos">1400</span></a>        <span class="n">new_output</span> <span class="o">=</span> <span class="n">new_map_path</span> <span class="o">/</span> <span class="n">file</span>
+</span><span id="diff_map_files-1401"><a href="#diff_map_files-1401"><span class="linenos">1401</span></a>
+</span><span id="diff_map_files-1402"><a href="#diff_map_files-1402"><span class="linenos">1402</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Old ouptput: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_output</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="diff_map_files-1403"><a href="#diff_map_files-1403"><span class="linenos">1403</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New ouptput: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_output</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="diff_map_files-1404"><a href="#diff_map_files-1404"><span class="linenos">1404</span></a>
+</span><span id="diff_map_files-1405"><a href="#diff_map_files-1405"><span class="linenos">1405</span></a>        <span class="n">df1</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">old_output</span><span class="p">)</span>
+</span><span id="diff_map_files-1406"><a href="#diff_map_files-1406"><span class="linenos">1406</span></a>        <span class="n">df1</span> <span class="o">=</span> <span class="n">df1</span><span class="p">[[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+</span><span id="diff_map_files-1407"><a href="#diff_map_files-1407"><span class="linenos">1407</span></a>        <span class="n">df2</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">new_output</span><span class="p">)</span>
+</span><span id="diff_map_files-1408"><a href="#diff_map_files-1408"><span class="linenos">1408</span></a>        <span class="n">df2</span> <span class="o">=</span> <span class="n">df2</span><span class="p">[[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">,</span> <span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">]]</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">&quot;CONCEPT_SET&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+</span><span id="diff_map_files-1409"><a href="#diff_map_files-1409"><span class="linenos">1409</span></a>
+</span><span id="diff_map_files-1410"><a href="#diff_map_files-1410"><span class="linenos">1410</span></a>        <span class="c1"># Check for added and removed concepts</span>
+</span><span id="diff_map_files-1411"><a href="#diff_map_files-1411"><span class="linenos">1411</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- File </span><span class="si">{</span><span class="n">file</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1412"><a href="#diff_map_files-1412"><span class="linenos">1412</span></a>        <span class="n">sorted_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">df2</span><span class="o">.</span><span class="n">index</span><span class="p">)))</span>
+</span><span id="diff_map_files-1413"><a href="#diff_map_files-1413"><span class="linenos">1413</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Removed concepts </span><span class="si">{</span><span class="n">sorted_list</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1414"><a href="#diff_map_files-1414"><span class="linenos">1414</span></a>        <span class="n">sorted_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df2</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">)))</span>
+</span><span id="diff_map_files-1415"><a href="#diff_map_files-1415"><span class="linenos">1415</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Added concepts </span><span class="si">{</span><span class="n">sorted_list</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1416"><a href="#diff_map_files-1416"><span class="linenos">1416</span></a>
+</span><span id="diff_map_files-1417"><a href="#diff_map_files-1417"><span class="linenos">1417</span></a>        <span class="c1"># Check for changed concepts</span>
+</span><span id="diff_map_files-1418"><a href="#diff_map_files-1418"><span class="linenos">1418</span></a>        <span class="n">diff</span> <span class="o">=</span> <span class="n">df2</span> <span class="o">-</span> <span class="n">df1</span>  <span class="c1"># diff in counts</span>
+</span><span id="diff_map_files-1419"><a href="#diff_map_files-1419"><span class="linenos">1419</span></a>        <span class="n">diff</span> <span class="o">=</span> <span class="n">diff</span><span class="p">[</span>
+</span><span id="diff_map_files-1420"><a href="#diff_map_files-1420"><span class="linenos">1420</span></a>            <span class="p">(</span><span class="o">~</span><span class="p">(</span><span class="n">diff</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span> <span class="o">&amp;</span> <span class="n">diff</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">notna</span><span class="p">()</span>
+</span><span id="diff_map_files-1421"><a href="#diff_map_files-1421"><span class="linenos">1421</span></a>        <span class="p">]</span>  <span class="c1"># get non-zero counts</span>
+</span><span id="diff_map_files-1422"><a href="#diff_map_files-1422"><span class="linenos">1422</span></a>        <span class="n">s</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1423"><a href="#diff_map_files-1423"><span class="linenos">1423</span></a>        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">diff</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+</span><span id="diff_map_files-1424"><a href="#diff_map_files-1424"><span class="linenos">1424</span></a>            <span class="k">for</span> <span class="n">concept</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">diff</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
+</span><span id="diff_map_files-1425"><a href="#diff_map_files-1425"><span class="linenos">1425</span></a>                <span class="n">s</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\t</span><span class="s2"> - </span><span class="si">{}</span><span class="s2"> </span><span class="si">{}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">concept</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="s2">&quot;CONCEPT&quot;</span><span class="p">])</span>
+</span><span id="diff_map_files-1426"><a href="#diff_map_files-1426"><span class="linenos">1426</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Changed concepts </span><span class="si">{</span><span class="n">s</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1427"><a href="#diff_map_files-1427"><span class="linenos">1427</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="diff_map_files-1428"><a href="#diff_map_files-1428"><span class="linenos">1428</span></a>            <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;- Changed concepts []</span><span class="se">\n\n</span><span class="s2">&quot;</span>
+</span><span id="diff_map_files-1429"><a href="#diff_map_files-1429"><span class="linenos">1429</span></a>
+</span><span id="diff_map_files-1430"><a href="#diff_map_files-1430"><span class="linenos">1430</span></a>    <span class="k">return</span> <span class="n">report</span>
 </span></pre></div>
 
 
@@ -3067,61 +3125,61 @@
 
     </div>
     <a class="headerlink" href="#diff_phen"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="diff_phen-1391"><a href="#diff_phen-1391"><span class="linenos">1391</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_phen</span><span class="p">(</span>
-</span><span id="diff_phen-1392"><a href="#diff_phen-1392"><span class="linenos">1392</span></a>    <span class="n">new_phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
-</span><span id="diff_phen-1393"><a href="#diff_phen-1393"><span class="linenos">1393</span></a>    <span class="n">new_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="diff_phen-1394"><a href="#diff_phen-1394"><span class="linenos">1394</span></a>    <span class="n">old_phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
-</span><span id="diff_phen-1395"><a href="#diff_phen-1395"><span class="linenos">1395</span></a>    <span class="n">old_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="diff_phen-1396"><a href="#diff_phen-1396"><span class="linenos">1396</span></a>    <span class="n">report_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
-</span><span id="diff_phen-1397"><a href="#diff_phen-1397"><span class="linenos">1397</span></a>    <span class="n">not_check_config</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="diff_phen-1398"><a href="#diff_phen-1398"><span class="linenos">1398</span></a><span class="p">):</span>
-</span><span id="diff_phen-1399"><a href="#diff_phen-1399"><span class="linenos">1399</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Compare the differences between two versions of a phenotype&quot;&quot;&quot;</span>
-</span><span id="diff_phen-1400"><a href="#diff_phen-1400"><span class="linenos">1400</span></a>
-</span><span id="diff_phen-1401"><a href="#diff_phen-1401"><span class="linenos">1401</span></a>    <span class="c1"># write report heading</span>
-</span><span id="diff_phen-1402"><a href="#diff_phen-1402"><span class="linenos">1402</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;# Phenotype Comparison Report</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1403"><a href="#diff_phen-1403"><span class="linenos">1403</span></a>
-</span><span id="diff_phen-1404"><a href="#diff_phen-1404"><span class="linenos">1404</span></a>    <span class="c1"># Step 1: check differences configuration files</span>
-</span><span id="diff_phen-1405"><a href="#diff_phen-1405"><span class="linenos">1405</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">not_check_config</span><span class="p">:</span>
-</span><span id="diff_phen-1406"><a href="#diff_phen-1406"><span class="linenos">1406</span></a>        <span class="c1"># validate phenotypes</span>
-</span><span id="diff_phen-1407"><a href="#diff_phen-1407"><span class="linenos">1407</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Validating for diff old path: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="diff_phen-1408"><a href="#diff_phen-1408"><span class="linenos">1408</span></a>        <span class="n">validate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">()))</span>
-</span><span id="diff_phen-1409"><a href="#diff_phen-1409"><span class="linenos">1409</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Validating for diff new path: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="diff_phen-1410"><a href="#diff_phen-1410"><span class="linenos">1410</span></a>        <span class="n">validate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">()))</span>
-</span><span id="diff_phen-1411"><a href="#diff_phen-1411"><span class="linenos">1411</span></a>
-</span><span id="diff_phen-1412"><a href="#diff_phen-1412"><span class="linenos">1412</span></a>        <span class="c1"># get old and new config</span>
-</span><span id="diff_phen-1413"><a href="#diff_phen-1413"><span class="linenos">1413</span></a>        <span class="n">old_config_path</span> <span class="o">=</span> <span class="n">old_phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="diff_phen-1414"><a href="#diff_phen-1414"><span class="linenos">1414</span></a>        <span class="k">with</span> <span class="n">old_config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="diff_phen-1415"><a href="#diff_phen-1415"><span class="linenos">1415</span></a>            <span class="n">old_config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="diff_phen-1416"><a href="#diff_phen-1416"><span class="linenos">1416</span></a>        <span class="n">new_config_path</span> <span class="o">=</span> <span class="n">new_phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
-</span><span id="diff_phen-1417"><a href="#diff_phen-1417"><span class="linenos">1417</span></a>        <span class="k">with</span> <span class="n">new_config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
-</span><span id="diff_phen-1418"><a href="#diff_phen-1418"><span class="linenos">1418</span></a>            <span class="n">new_config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
-</span><span id="diff_phen-1419"><a href="#diff_phen-1419"><span class="linenos">1419</span></a>
-</span><span id="diff_phen-1420"><a href="#diff_phen-1420"><span class="linenos">1420</span></a>        <span class="c1"># write report</span>
-</span><span id="diff_phen-1421"><a href="#diff_phen-1421"><span class="linenos">1421</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Original phenotype</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1422"><a href="#diff_phen-1422"><span class="linenos">1422</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">old_config</span><span class="p">[</span><span class="s1">&#39;phenotype&#39;</span><span class="p">][</span><span class="s1">&#39;omop&#39;</span><span class="p">][</span><span class="s1">&#39;vocabulary_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1423"><a href="#diff_phen-1423"><span class="linenos">1423</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1424"><a href="#diff_phen-1424"><span class="linenos">1424</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1425"><a href="#diff_phen-1425"><span class="linenos">1425</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Changed phenotype:</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1426"><a href="#diff_phen-1426"><span class="linenos">1426</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">new_config</span><span class="p">[</span><span class="s1">&#39;phenotype&#39;</span><span class="p">][</span><span class="s1">&#39;omop&#39;</span><span class="p">][</span><span class="s1">&#39;vocabulary_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1427"><a href="#diff_phen-1427"><span class="linenos">1427</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">new_version</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1428"><a href="#diff_phen-1428"><span class="linenos">1428</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
-</span><span id="diff_phen-1429"><a href="#diff_phen-1429"><span class="linenos">1429</span></a>
-</span><span id="diff_phen-1430"><a href="#diff_phen-1430"><span class="linenos">1430</span></a>        <span class="c1"># Convert list of dicts into a dict: {name: file}</span>
-</span><span id="diff_phen-1431"><a href="#diff_phen-1431"><span class="linenos">1431</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="n">diff_config</span><span class="p">(</span><span class="n">old_config</span><span class="p">,</span> <span class="n">new_config</span><span class="p">)</span>
-</span><span id="diff_phen-1432"><a href="#diff_phen-1432"><span class="linenos">1432</span></a>
-</span><span id="diff_phen-1433"><a href="#diff_phen-1433"><span class="linenos">1433</span></a>    <span class="c1"># Step 2: check differences between map files</span>
-</span><span id="diff_phen-1434"><a href="#diff_phen-1434"><span class="linenos">1434</span></a>    <span class="c1"># List files from output directories</span>
-</span><span id="diff_phen-1435"><a href="#diff_phen-1435"><span class="linenos">1435</span></a>    <span class="n">old_map_path</span> <span class="o">=</span> <span class="n">old_phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
-</span><span id="diff_phen-1436"><a href="#diff_phen-1436"><span class="linenos">1436</span></a>    <span class="n">new_map_path</span> <span class="o">=</span> <span class="n">new_phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
-</span><span id="diff_phen-1437"><a href="#diff_phen-1437"><span class="linenos">1437</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="n">diff_map_files</span><span class="p">(</span><span class="n">old_map_path</span><span class="p">,</span> <span class="n">new_map_path</span><span class="p">)</span>
-</span><span id="diff_phen-1438"><a href="#diff_phen-1438"><span class="linenos">1438</span></a>
-</span><span id="diff_phen-1439"><a href="#diff_phen-1439"><span class="linenos">1439</span></a>    <span class="c1"># initialise report file</span>
-</span><span id="diff_phen-1440"><a href="#diff_phen-1440"><span class="linenos">1440</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Writing to report file </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">report_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="diff_phen-1441"><a href="#diff_phen-1441"><span class="linenos">1441</span></a>    <span class="n">report_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">report_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span>
-</span><span id="diff_phen-1442"><a href="#diff_phen-1442"><span class="linenos">1442</span></a>    <span class="n">report_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">report</span><span class="p">)</span>
-</span><span id="diff_phen-1443"><a href="#diff_phen-1443"><span class="linenos">1443</span></a>    <span class="n">report_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-</span><span id="diff_phen-1444"><a href="#diff_phen-1444"><span class="linenos">1444</span></a>
-</span><span id="diff_phen-1445"><a href="#diff_phen-1445"><span class="linenos">1445</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotypes diff&#39;d successfully&quot;</span><span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="diff_phen-1433"><a href="#diff_phen-1433"><span class="linenos">1433</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff_phen</span><span class="p">(</span>
+</span><span id="diff_phen-1434"><a href="#diff_phen-1434"><span class="linenos">1434</span></a>    <span class="n">new_phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
+</span><span id="diff_phen-1435"><a href="#diff_phen-1435"><span class="linenos">1435</span></a>    <span class="n">new_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="diff_phen-1436"><a href="#diff_phen-1436"><span class="linenos">1436</span></a>    <span class="n">old_phen_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
+</span><span id="diff_phen-1437"><a href="#diff_phen-1437"><span class="linenos">1437</span></a>    <span class="n">old_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="diff_phen-1438"><a href="#diff_phen-1438"><span class="linenos">1438</span></a>    <span class="n">report_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
+</span><span id="diff_phen-1439"><a href="#diff_phen-1439"><span class="linenos">1439</span></a>    <span class="n">not_check_config</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="diff_phen-1440"><a href="#diff_phen-1440"><span class="linenos">1440</span></a><span class="p">):</span>
+</span><span id="diff_phen-1441"><a href="#diff_phen-1441"><span class="linenos">1441</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Compare the differences between two versions of a phenotype&quot;&quot;&quot;</span>
+</span><span id="diff_phen-1442"><a href="#diff_phen-1442"><span class="linenos">1442</span></a>
+</span><span id="diff_phen-1443"><a href="#diff_phen-1443"><span class="linenos">1443</span></a>    <span class="c1"># write report heading</span>
+</span><span id="diff_phen-1444"><a href="#diff_phen-1444"><span class="linenos">1444</span></a>    <span class="n">report</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;# Phenotype Comparison Report</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1445"><a href="#diff_phen-1445"><span class="linenos">1445</span></a>
+</span><span id="diff_phen-1446"><a href="#diff_phen-1446"><span class="linenos">1446</span></a>    <span class="c1"># Step 1: check differences configuration files</span>
+</span><span id="diff_phen-1447"><a href="#diff_phen-1447"><span class="linenos">1447</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">not_check_config</span><span class="p">:</span>
+</span><span id="diff_phen-1448"><a href="#diff_phen-1448"><span class="linenos">1448</span></a>        <span class="c1"># validate phenotypes</span>
+</span><span id="diff_phen-1449"><a href="#diff_phen-1449"><span class="linenos">1449</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Validating for diff old path: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="diff_phen-1450"><a href="#diff_phen-1450"><span class="linenos">1450</span></a>        <span class="n">validate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">()))</span>
+</span><span id="diff_phen-1451"><a href="#diff_phen-1451"><span class="linenos">1451</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Validating for diff new path: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="diff_phen-1452"><a href="#diff_phen-1452"><span class="linenos">1452</span></a>        <span class="n">validate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">()))</span>
+</span><span id="diff_phen-1453"><a href="#diff_phen-1453"><span class="linenos">1453</span></a>
+</span><span id="diff_phen-1454"><a href="#diff_phen-1454"><span class="linenos">1454</span></a>        <span class="c1"># get old and new config</span>
+</span><span id="diff_phen-1455"><a href="#diff_phen-1455"><span class="linenos">1455</span></a>        <span class="n">old_config_path</span> <span class="o">=</span> <span class="n">old_phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="diff_phen-1456"><a href="#diff_phen-1456"><span class="linenos">1456</span></a>        <span class="k">with</span> <span class="n">old_config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="diff_phen-1457"><a href="#diff_phen-1457"><span class="linenos">1457</span></a>            <span class="n">old_config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="diff_phen-1458"><a href="#diff_phen-1458"><span class="linenos">1458</span></a>        <span class="n">new_config_path</span> <span class="o">=</span> <span class="n">new_phen_path</span> <span class="o">/</span> <span class="n">CONFIG_FILE</span>
+</span><span id="diff_phen-1459"><a href="#diff_phen-1459"><span class="linenos">1459</span></a>        <span class="k">with</span> <span class="n">new_config_path</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
+</span><span id="diff_phen-1460"><a href="#diff_phen-1460"><span class="linenos">1460</span></a>            <span class="n">new_config</span> <span class="o">=</span> <span class="n">yaml</span><span class="o">.</span><span class="n">safe_load</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
+</span><span id="diff_phen-1461"><a href="#diff_phen-1461"><span class="linenos">1461</span></a>
+</span><span id="diff_phen-1462"><a href="#diff_phen-1462"><span class="linenos">1462</span></a>        <span class="c1"># write report</span>
+</span><span id="diff_phen-1463"><a href="#diff_phen-1463"><span class="linenos">1463</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Original phenotype</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1464"><a href="#diff_phen-1464"><span class="linenos">1464</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">old_config</span><span class="p">[</span><span class="s1">&#39;phenotype&#39;</span><span class="p">][</span><span class="s1">&#39;omop&#39;</span><span class="p">][</span><span class="s1">&#39;vocabulary_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1465"><a href="#diff_phen-1465"><span class="linenos">1465</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1466"><a href="#diff_phen-1466"><span class="linenos">1466</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1467"><a href="#diff_phen-1467"><span class="linenos">1467</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;## Changed phenotype:</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1468"><a href="#diff_phen-1468"><span class="linenos">1468</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">new_config</span><span class="p">[</span><span class="s1">&#39;phenotype&#39;</span><span class="p">][</span><span class="s1">&#39;omop&#39;</span><span class="p">][</span><span class="s1">&#39;vocabulary_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1469"><a href="#diff_phen-1469"><span class="linenos">1469</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="n">new_version</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1470"><a href="#diff_phen-1470"><span class="linenos">1470</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;  - </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">new_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
+</span><span id="diff_phen-1471"><a href="#diff_phen-1471"><span class="linenos">1471</span></a>
+</span><span id="diff_phen-1472"><a href="#diff_phen-1472"><span class="linenos">1472</span></a>        <span class="c1"># Convert list of dicts into a dict: {name: file}</span>
+</span><span id="diff_phen-1473"><a href="#diff_phen-1473"><span class="linenos">1473</span></a>        <span class="n">report</span> <span class="o">+=</span> <span class="n">diff_config</span><span class="p">(</span><span class="n">old_config</span><span class="p">,</span> <span class="n">new_config</span><span class="p">)</span>
+</span><span id="diff_phen-1474"><a href="#diff_phen-1474"><span class="linenos">1474</span></a>
+</span><span id="diff_phen-1475"><a href="#diff_phen-1475"><span class="linenos">1475</span></a>    <span class="c1"># Step 2: check differences between map files</span>
+</span><span id="diff_phen-1476"><a href="#diff_phen-1476"><span class="linenos">1476</span></a>    <span class="c1"># List files from output directories</span>
+</span><span id="diff_phen-1477"><a href="#diff_phen-1477"><span class="linenos">1477</span></a>    <span class="n">old_map_path</span> <span class="o">=</span> <span class="n">old_phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
+</span><span id="diff_phen-1478"><a href="#diff_phen-1478"><span class="linenos">1478</span></a>    <span class="n">new_map_path</span> <span class="o">=</span> <span class="n">new_phen_path</span> <span class="o">/</span> <span class="n">MAP_DIR</span>
+</span><span id="diff_phen-1479"><a href="#diff_phen-1479"><span class="linenos">1479</span></a>    <span class="n">report</span> <span class="o">+=</span> <span class="n">diff_map_files</span><span class="p">(</span><span class="n">old_map_path</span><span class="p">,</span> <span class="n">new_map_path</span><span class="p">)</span>
+</span><span id="diff_phen-1480"><a href="#diff_phen-1480"><span class="linenos">1480</span></a>
+</span><span id="diff_phen-1481"><a href="#diff_phen-1481"><span class="linenos">1481</span></a>    <span class="c1"># initialise report file</span>
+</span><span id="diff_phen-1482"><a href="#diff_phen-1482"><span class="linenos">1482</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Writing to report file </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">report_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="diff_phen-1483"><a href="#diff_phen-1483"><span class="linenos">1483</span></a>    <span class="n">report_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">report_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span>
+</span><span id="diff_phen-1484"><a href="#diff_phen-1484"><span class="linenos">1484</span></a>    <span class="n">report_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">report</span><span class="p">)</span>
+</span><span id="diff_phen-1485"><a href="#diff_phen-1485"><span class="linenos">1485</span></a>    <span class="n">report_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</span><span id="diff_phen-1486"><a href="#diff_phen-1486"><span class="linenos">1486</span></a>
+</span><span id="diff_phen-1487"><a href="#diff_phen-1487"><span class="linenos">1487</span></a>    <span class="n">_logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Phenotypes diff&#39;d successfully&quot;</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -3141,81 +3199,81 @@
 
     </div>
     <a class="headerlink" href="#diff"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="diff-1448"><a href="#diff-1448"><span class="linenos">1448</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff</span><span class="p">(</span>
-</span><span id="diff-1449"><a href="#diff-1449"><span class="linenos">1449</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="diff-1450"><a href="#diff-1450"><span class="linenos">1450</span></a>    <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="diff-1451"><a href="#diff-1451"><span class="linenos">1451</span></a>    <span class="n">old_phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="diff-1452"><a href="#diff-1452"><span class="linenos">1452</span></a>    <span class="n">old_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
-</span><span id="diff-1453"><a href="#diff-1453"><span class="linenos">1453</span></a>    <span class="n">not_check_config</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
-</span><span id="diff-1454"><a href="#diff-1454"><span class="linenos">1454</span></a><span class="p">):</span>
-</span><span id="diff-1455"><a href="#diff-1455"><span class="linenos">1455</span></a>    <span class="c1"># make tmp directory .acmc</span>
-</span><span id="diff-1456"><a href="#diff-1456"><span class="linenos">1456</span></a>    <span class="n">timestamp</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y%m</span><span class="si">%d</span><span class="s2">_%H%M%S&quot;</span><span class="p">)</span>
-</span><span id="diff-1457"><a href="#diff-1457"><span class="linenos">1457</span></a>    <span class="n">temp_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;.acmc/diff_</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="diff-1458"><a href="#diff-1458"><span class="linenos">1458</span></a>
-</span><span id="diff-1459"><a href="#diff-1459"><span class="linenos">1459</span></a>    <span class="n">changed_phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
-</span><span id="diff-1460"><a href="#diff-1460"><span class="linenos">1460</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">changed_phen_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="diff-1461"><a href="#diff-1461"><span class="linenos">1461</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
-</span><span id="diff-1462"><a href="#diff-1462"><span class="linenos">1462</span></a>            <span class="sa">f</span><span class="s2">&quot;Changed phenotype directory does not exist: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="diff-1463"><a href="#diff-1463"><span class="linenos">1463</span></a>        <span class="p">)</span>
-</span><span id="diff-1464"><a href="#diff-1464"><span class="linenos">1464</span></a>
-</span><span id="diff-1465"><a href="#diff-1465"><span class="linenos">1465</span></a>    <span class="n">old_phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">old_phen_dir</span><span class="p">)</span>
-</span><span id="diff-1466"><a href="#diff-1466"><span class="linenos">1466</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">old_phen_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="diff-1467"><a href="#diff-1467"><span class="linenos">1467</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
-</span><span id="diff-1468"><a href="#diff-1468"><span class="linenos">1468</span></a>            <span class="sa">f</span><span class="s2">&quot;Old phenotype directory does not exist: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
-</span><span id="diff-1469"><a href="#diff-1469"><span class="linenos">1469</span></a>        <span class="p">)</span>
-</span><span id="diff-1470"><a href="#diff-1470"><span class="linenos">1470</span></a>
-</span><span id="diff-1471"><a href="#diff-1471"><span class="linenos">1471</span></a>    <span class="c1">#    t_path = old_phen_path / &quot;config.yml&quot;</span>
-</span><span id="diff-1472"><a href="#diff-1472"><span class="linenos">1472</span></a>    <span class="c1">#    with t_path.open(&quot;r&quot;) as file:</span>
-</span><span id="diff-1473"><a href="#diff-1473"><span class="linenos">1473</span></a>    <span class="c1">#        c = yaml.safe_load(file)</span>
-</span><span id="diff-1474"><a href="#diff-1474"><span class="linenos">1474</span></a>
-</span><span id="diff-1475"><a href="#diff-1475"><span class="linenos">1475</span></a>    <span class="k">try</span><span class="p">:</span>
-</span><span id="diff-1476"><a href="#diff-1476"><span class="linenos">1476</span></a>        <span class="c1"># Create the directory</span>
-</span><span id="diff-1477"><a href="#diff-1477"><span class="linenos">1477</span></a>        <span class="n">temp_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="diff-1478"><a href="#diff-1478"><span class="linenos">1478</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Temporary directory created: </span><span class="si">{</span><span class="n">temp_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="diff-1479"><a href="#diff-1479"><span class="linenos">1479</span></a>
-</span><span id="diff-1480"><a href="#diff-1480"><span class="linenos">1480</span></a>        <span class="c1"># Create temporary directories</span>
-</span><span id="diff-1481"><a href="#diff-1481"><span class="linenos">1481</span></a>        <span class="n">changed_path</span> <span class="o">=</span> <span class="n">temp_dir</span> <span class="o">/</span> <span class="s2">&quot;changed&quot;</span>
-</span><span id="diff-1482"><a href="#diff-1482"><span class="linenos">1482</span></a>        <span class="n">changed_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="diff-1483"><a href="#diff-1483"><span class="linenos">1483</span></a>        <span class="n">old_path</span> <span class="o">=</span> <span class="n">temp_dir</span> <span class="o">/</span> <span class="s2">&quot;old&quot;</span>
-</span><span id="diff-1484"><a href="#diff-1484"><span class="linenos">1484</span></a>        <span class="n">old_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="diff-1485"><a href="#diff-1485"><span class="linenos">1485</span></a>
-</span><span id="diff-1486"><a href="#diff-1486"><span class="linenos">1486</span></a>        <span class="c1"># checkout changed</span>
-</span><span id="diff-1487"><a href="#diff-1487"><span class="linenos">1487</span></a>        <span class="k">if</span> <span class="n">version</span> <span class="o">==</span> <span class="s2">&quot;latest&quot;</span><span class="p">:</span>
-</span><span id="diff-1488"><a href="#diff-1488"><span class="linenos">1488</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="diff-1489"><a href="#diff-1489"><span class="linenos">1489</span></a>                <span class="sa">f</span><span class="s2">&quot;Copying changed repo from </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">changed_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span>
-</span><span id="diff-1490"><a href="#diff-1490"><span class="linenos">1490</span></a>            <span class="p">)</span>
-</span><span id="diff-1491"><a href="#diff-1491"><span class="linenos">1491</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="p">,</span> <span class="n">changed_path</span><span class="p">,</span> <span class="n">dirs_exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="diff-1492"><a href="#diff-1492"><span class="linenos">1492</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="diff-1493"><a href="#diff-1493"><span class="linenos">1493</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="diff-1494"><a href="#diff-1494"><span class="linenos">1494</span></a>                <span class="sa">f</span><span class="s2">&quot;Cloning changed repo from </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">changed_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span>
-</span><span id="diff-1495"><a href="#diff-1495"><span class="linenos">1495</span></a>            <span class="p">)</span>
-</span><span id="diff-1496"><a href="#diff-1496"><span class="linenos">1496</span></a>            <span class="n">changed_repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="p">,</span> <span class="n">changed_path</span><span class="p">)</span>
-</span><span id="diff-1497"><a href="#diff-1497"><span class="linenos">1497</span></a>            <span class="n">changed_repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
-</span><span id="diff-1498"><a href="#diff-1498"><span class="linenos">1498</span></a>
-</span><span id="diff-1499"><a href="#diff-1499"><span class="linenos">1499</span></a>        <span class="c1"># checkout old</span>
-</span><span id="diff-1500"><a href="#diff-1500"><span class="linenos">1500</span></a>        <span class="k">if</span> <span class="n">old_version</span> <span class="o">==</span> <span class="s2">&quot;latest&quot;</span><span class="p">:</span>
-</span><span id="diff-1501"><a href="#diff-1501"><span class="linenos">1501</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="diff-1502"><a href="#diff-1502"><span class="linenos">1502</span></a>                <span class="sa">f</span><span class="s2">&quot;Copying old repo from </span><span class="si">{</span><span class="n">old_phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">old_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">...&quot;</span>
-</span><span id="diff-1503"><a href="#diff-1503"><span class="linenos">1503</span></a>            <span class="p">)</span>
-</span><span id="diff-1504"><a href="#diff-1504"><span class="linenos">1504</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">old_phen_path</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">dirs_exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="diff-1505"><a href="#diff-1505"><span class="linenos">1505</span></a>        <span class="k">else</span><span class="p">:</span>
-</span><span id="diff-1506"><a href="#diff-1506"><span class="linenos">1506</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
-</span><span id="diff-1507"><a href="#diff-1507"><span class="linenos">1507</span></a>                <span class="sa">f</span><span class="s2">&quot;Cloning old repo from </span><span class="si">{</span><span class="n">old_phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">old_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">...&quot;</span>
-</span><span id="diff-1508"><a href="#diff-1508"><span class="linenos">1508</span></a>            <span class="p">)</span>
-</span><span id="diff-1509"><a href="#diff-1509"><span class="linenos">1509</span></a>            <span class="n">old_repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">old_phen_dir</span><span class="p">,</span> <span class="n">old_path</span><span class="p">)</span>
-</span><span id="diff-1510"><a href="#diff-1510"><span class="linenos">1510</span></a>            <span class="n">old_repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">old_version</span><span class="p">)</span>
-</span><span id="diff-1511"><a href="#diff-1511"><span class="linenos">1511</span></a>
-</span><span id="diff-1512"><a href="#diff-1512"><span class="linenos">1512</span></a>        <span class="n">report_filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">_diff.md&quot;</span>
-</span><span id="diff-1513"><a href="#diff-1513"><span class="linenos">1513</span></a>        <span class="n">report_path</span> <span class="o">=</span> <span class="n">changed_phen_path</span> <span class="o">/</span> <span class="n">report_filename</span>
-</span><span id="diff-1514"><a href="#diff-1514"><span class="linenos">1514</span></a>        <span class="c1"># diff old with new</span>
-</span><span id="diff-1515"><a href="#diff-1515"><span class="linenos">1515</span></a>        <span class="n">diff_phen</span><span class="p">(</span>
-</span><span id="diff-1516"><a href="#diff-1516"><span class="linenos">1516</span></a>            <span class="n">changed_path</span><span class="p">,</span> <span class="n">version</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">old_version</span><span class="p">,</span> <span class="n">report_path</span><span class="p">,</span> <span class="n">not_check_config</span>
-</span><span id="diff-1517"><a href="#diff-1517"><span class="linenos">1517</span></a>        <span class="p">)</span>
-</span><span id="diff-1518"><a href="#diff-1518"><span class="linenos">1518</span></a>
-</span><span id="diff-1519"><a href="#diff-1519"><span class="linenos">1519</span></a>    <span class="k">finally</span><span class="p">:</span>
-</span><span id="diff-1520"><a href="#diff-1520"><span class="linenos">1520</span></a>        <span class="c1"># clean up tmp directory</span>
-</span><span id="diff-1521"><a href="#diff-1521"><span class="linenos">1521</span></a>        <span class="k">if</span> <span class="n">temp_dir</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
-</span><span id="diff-1522"><a href="#diff-1522"><span class="linenos">1522</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">temp_dir</span><span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="diff-1490"><a href="#diff-1490"><span class="linenos">1490</span></a><span class="k">def</span><span class="w"> </span><span class="nf">diff</span><span class="p">(</span>
+</span><span id="diff-1491"><a href="#diff-1491"><span class="linenos">1491</span></a>    <span class="n">phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="diff-1492"><a href="#diff-1492"><span class="linenos">1492</span></a>    <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="diff-1493"><a href="#diff-1493"><span class="linenos">1493</span></a>    <span class="n">old_phen_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="diff-1494"><a href="#diff-1494"><span class="linenos">1494</span></a>    <span class="n">old_version</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
+</span><span id="diff-1495"><a href="#diff-1495"><span class="linenos">1495</span></a>    <span class="n">not_check_config</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
+</span><span id="diff-1496"><a href="#diff-1496"><span class="linenos">1496</span></a><span class="p">):</span>
+</span><span id="diff-1497"><a href="#diff-1497"><span class="linenos">1497</span></a>    <span class="c1"># make tmp directory .acmc</span>
+</span><span id="diff-1498"><a href="#diff-1498"><span class="linenos">1498</span></a>    <span class="n">timestamp</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y%m</span><span class="si">%d</span><span class="s2">_%H%M%S&quot;</span><span class="p">)</span>
+</span><span id="diff-1499"><a href="#diff-1499"><span class="linenos">1499</span></a>    <span class="n">temp_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;.acmc/diff_</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="diff-1500"><a href="#diff-1500"><span class="linenos">1500</span></a>
+</span><span id="diff-1501"><a href="#diff-1501"><span class="linenos">1501</span></a>    <span class="n">changed_phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">phen_dir</span><span class="p">)</span>
+</span><span id="diff-1502"><a href="#diff-1502"><span class="linenos">1502</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">changed_phen_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="diff-1503"><a href="#diff-1503"><span class="linenos">1503</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+</span><span id="diff-1504"><a href="#diff-1504"><span class="linenos">1504</span></a>            <span class="sa">f</span><span class="s2">&quot;Changed phenotype directory does not exist: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="diff-1505"><a href="#diff-1505"><span class="linenos">1505</span></a>        <span class="p">)</span>
+</span><span id="diff-1506"><a href="#diff-1506"><span class="linenos">1506</span></a>
+</span><span id="diff-1507"><a href="#diff-1507"><span class="linenos">1507</span></a>    <span class="n">old_phen_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">old_phen_dir</span><span class="p">)</span>
+</span><span id="diff-1508"><a href="#diff-1508"><span class="linenos">1508</span></a>    <span class="k">if</span> <span class="ow">not</span> <span class="n">old_phen_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="diff-1509"><a href="#diff-1509"><span class="linenos">1509</span></a>        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+</span><span id="diff-1510"><a href="#diff-1510"><span class="linenos">1510</span></a>            <span class="sa">f</span><span class="s2">&quot;Old phenotype directory does not exist: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">old_phen_path</span><span class="o">.</span><span class="n">resolve</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span>
+</span><span id="diff-1511"><a href="#diff-1511"><span class="linenos">1511</span></a>        <span class="p">)</span>
+</span><span id="diff-1512"><a href="#diff-1512"><span class="linenos">1512</span></a>
+</span><span id="diff-1513"><a href="#diff-1513"><span class="linenos">1513</span></a>    <span class="c1">#    t_path = old_phen_path / &quot;config.yml&quot;</span>
+</span><span id="diff-1514"><a href="#diff-1514"><span class="linenos">1514</span></a>    <span class="c1">#    with t_path.open(&quot;r&quot;) as file:</span>
+</span><span id="diff-1515"><a href="#diff-1515"><span class="linenos">1515</span></a>    <span class="c1">#        c = yaml.safe_load(file)</span>
+</span><span id="diff-1516"><a href="#diff-1516"><span class="linenos">1516</span></a>
+</span><span id="diff-1517"><a href="#diff-1517"><span class="linenos">1517</span></a>    <span class="k">try</span><span class="p">:</span>
+</span><span id="diff-1518"><a href="#diff-1518"><span class="linenos">1518</span></a>        <span class="c1"># Create the directory</span>
+</span><span id="diff-1519"><a href="#diff-1519"><span class="linenos">1519</span></a>        <span class="n">temp_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="diff-1520"><a href="#diff-1520"><span class="linenos">1520</span></a>        <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Temporary directory created: </span><span class="si">{</span><span class="n">temp_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="diff-1521"><a href="#diff-1521"><span class="linenos">1521</span></a>
+</span><span id="diff-1522"><a href="#diff-1522"><span class="linenos">1522</span></a>        <span class="c1"># Create temporary directories</span>
+</span><span id="diff-1523"><a href="#diff-1523"><span class="linenos">1523</span></a>        <span class="n">changed_path</span> <span class="o">=</span> <span class="n">temp_dir</span> <span class="o">/</span> <span class="s2">&quot;changed&quot;</span>
+</span><span id="diff-1524"><a href="#diff-1524"><span class="linenos">1524</span></a>        <span class="n">changed_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="diff-1525"><a href="#diff-1525"><span class="linenos">1525</span></a>        <span class="n">old_path</span> <span class="o">=</span> <span class="n">temp_dir</span> <span class="o">/</span> <span class="s2">&quot;old&quot;</span>
+</span><span id="diff-1526"><a href="#diff-1526"><span class="linenos">1526</span></a>        <span class="n">old_path</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="diff-1527"><a href="#diff-1527"><span class="linenos">1527</span></a>
+</span><span id="diff-1528"><a href="#diff-1528"><span class="linenos">1528</span></a>        <span class="c1"># checkout changed</span>
+</span><span id="diff-1529"><a href="#diff-1529"><span class="linenos">1529</span></a>        <span class="k">if</span> <span class="n">version</span> <span class="o">==</span> <span class="s2">&quot;latest&quot;</span><span class="p">:</span>
+</span><span id="diff-1530"><a href="#diff-1530"><span class="linenos">1530</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="diff-1531"><a href="#diff-1531"><span class="linenos">1531</span></a>                <span class="sa">f</span><span class="s2">&quot;Copying changed repo from </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">changed_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span>
+</span><span id="diff-1532"><a href="#diff-1532"><span class="linenos">1532</span></a>            <span class="p">)</span>
+</span><span id="diff-1533"><a href="#diff-1533"><span class="linenos">1533</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="p">,</span> <span class="n">changed_path</span><span class="p">,</span> <span class="n">dirs_exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="diff-1534"><a href="#diff-1534"><span class="linenos">1534</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="diff-1535"><a href="#diff-1535"><span class="linenos">1535</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="diff-1536"><a href="#diff-1536"><span class="linenos">1536</span></a>                <span class="sa">f</span><span class="s2">&quot;Cloning changed repo from </span><span class="si">{</span><span class="n">phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">changed_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">...&quot;</span>
+</span><span id="diff-1537"><a href="#diff-1537"><span class="linenos">1537</span></a>            <span class="p">)</span>
+</span><span id="diff-1538"><a href="#diff-1538"><span class="linenos">1538</span></a>            <span class="n">changed_repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">changed_phen_path</span><span class="p">,</span> <span class="n">changed_path</span><span class="p">)</span>
+</span><span id="diff-1539"><a href="#diff-1539"><span class="linenos">1539</span></a>            <span class="n">changed_repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
+</span><span id="diff-1540"><a href="#diff-1540"><span class="linenos">1540</span></a>
+</span><span id="diff-1541"><a href="#diff-1541"><span class="linenos">1541</span></a>        <span class="c1"># checkout old</span>
+</span><span id="diff-1542"><a href="#diff-1542"><span class="linenos">1542</span></a>        <span class="k">if</span> <span class="n">old_version</span> <span class="o">==</span> <span class="s2">&quot;latest&quot;</span><span class="p">:</span>
+</span><span id="diff-1543"><a href="#diff-1543"><span class="linenos">1543</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="diff-1544"><a href="#diff-1544"><span class="linenos">1544</span></a>                <span class="sa">f</span><span class="s2">&quot;Copying old repo from </span><span class="si">{</span><span class="n">old_phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">old_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">...&quot;</span>
+</span><span id="diff-1545"><a href="#diff-1545"><span class="linenos">1545</span></a>            <span class="p">)</span>
+</span><span id="diff-1546"><a href="#diff-1546"><span class="linenos">1546</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">copytree</span><span class="p">(</span><span class="n">old_phen_path</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">dirs_exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</span><span id="diff-1547"><a href="#diff-1547"><span class="linenos">1547</span></a>        <span class="k">else</span><span class="p">:</span>
+</span><span id="diff-1548"><a href="#diff-1548"><span class="linenos">1548</span></a>            <span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+</span><span id="diff-1549"><a href="#diff-1549"><span class="linenos">1549</span></a>                <span class="sa">f</span><span class="s2">&quot;Cloning old repo from </span><span class="si">{</span><span class="n">old_phen_dir</span><span class="si">}</span><span class="s2"> into </span><span class="si">{</span><span class="n">old_path</span><span class="si">}</span><span class="s2"> at version </span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">...&quot;</span>
+</span><span id="diff-1550"><a href="#diff-1550"><span class="linenos">1550</span></a>            <span class="p">)</span>
+</span><span id="diff-1551"><a href="#diff-1551"><span class="linenos">1551</span></a>            <span class="n">old_repo</span> <span class="o">=</span> <span class="n">git</span><span class="o">.</span><span class="n">Repo</span><span class="o">.</span><span class="n">clone_from</span><span class="p">(</span><span class="n">old_phen_dir</span><span class="p">,</span> <span class="n">old_path</span><span class="p">)</span>
+</span><span id="diff-1552"><a href="#diff-1552"><span class="linenos">1552</span></a>            <span class="n">old_repo</span><span class="o">.</span><span class="n">git</span><span class="o">.</span><span class="n">checkout</span><span class="p">(</span><span class="n">old_version</span><span class="p">)</span>
+</span><span id="diff-1553"><a href="#diff-1553"><span class="linenos">1553</span></a>
+</span><span id="diff-1554"><a href="#diff-1554"><span class="linenos">1554</span></a>        <span class="n">report_filename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">old_version</span><span class="si">}</span><span class="s2">_diff.md&quot;</span>
+</span><span id="diff-1555"><a href="#diff-1555"><span class="linenos">1555</span></a>        <span class="n">report_path</span> <span class="o">=</span> <span class="n">changed_phen_path</span> <span class="o">/</span> <span class="n">report_filename</span>
+</span><span id="diff-1556"><a href="#diff-1556"><span class="linenos">1556</span></a>        <span class="c1"># diff old with new</span>
+</span><span id="diff-1557"><a href="#diff-1557"><span class="linenos">1557</span></a>        <span class="n">diff_phen</span><span class="p">(</span>
+</span><span id="diff-1558"><a href="#diff-1558"><span class="linenos">1558</span></a>            <span class="n">changed_path</span><span class="p">,</span> <span class="n">version</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">old_version</span><span class="p">,</span> <span class="n">report_path</span><span class="p">,</span> <span class="n">not_check_config</span>
+</span><span id="diff-1559"><a href="#diff-1559"><span class="linenos">1559</span></a>        <span class="p">)</span>
+</span><span id="diff-1560"><a href="#diff-1560"><span class="linenos">1560</span></a>
+</span><span id="diff-1561"><a href="#diff-1561"><span class="linenos">1561</span></a>    <span class="k">finally</span><span class="p">:</span>
+</span><span id="diff-1562"><a href="#diff-1562"><span class="linenos">1562</span></a>        <span class="c1"># clean up tmp directory</span>
+</span><span id="diff-1563"><a href="#diff-1563"><span class="linenos">1563</span></a>        <span class="k">if</span> <span class="n">temp_dir</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
+</span><span id="diff-1564"><a href="#diff-1564"><span class="linenos">1564</span></a>            <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">temp_dir</span><span class="p">)</span>
 </span></pre></div>
 
 
diff --git a/docs/api/search.js b/docs/api/search.js
index 3543308..ac0440b 100644
--- a/docs/api/search.js
+++ b/docs/api/search.js
@@ -1,6 +1,6 @@
 window.pdocSearch = (function(){
 /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u<s.length;u++){var a=s[u];r[a]=this.pipeline.run(t.tokenizer(e[a]))}var l={};for(var c in o){var d=r[c]||r.any;if(d){var f=this.fieldSearch(d,c,o),h=o[c].boost;for(var p in f)f[p]=f[p]*h;for(var p in f)p in l?l[p]+=f[p]:l[p]=f[p]}}var v,g=[];for(var p in l)v={ref:p,score:l[p]},this.documentStore.hasDoc(p)&&(v.doc=this.documentStore.getDoc(p)),g.push(v);return g.sort(function(e,t){return t.score-e.score}),g},t.Index.prototype.fieldSearch=function(e,t,n){var i=n[t].bool,o=n[t].expand,r=n[t].boost,s=null,u={};return 0!==r?(e.forEach(function(e){var n=[e];1==o&&(n=this.index[t].expandToken(e));var r={};n.forEach(function(n){var o=this.index[t].getDocs(n),a=this.idf(n,t);if(s&&"AND"==i){var l={};for(var c in s)c in o&&(l[c]=o[c]);o=l}n==e&&this.fieldSearchStats(u,n,o);for(var c in o){var d=this.index[t].getTermFrequency(n,c),f=this.documentStore.getFieldLength(c,t),h=1;0!=f&&(h=1/Math.sqrt(f));var p=1;n!=e&&(p=.15*(1-(n.length-e.length)/n.length));var v=d*a*h*p;c in r?r[c]+=v:r[c]=v}},this),s=this.mergeScores(s,r,i)},this),s=this.coordNorm(s,u,e.length)):void 0},t.Index.prototype.mergeScores=function(e,t,n){if(!e)return t;if("AND"==n){var i={};for(var o in t)o in e&&(i[o]=e[o]+t[o]);return i}for(var o in t)o in e?e[o]+=t[o]:e[o]=t[o];return e},t.Index.prototype.fieldSearchStats=function(e,t,n){for(var i in n)i in e?e[i].push(t):e[i]=[t]},t.Index.prototype.coordNorm=function(e,t,n){for(var i in e)if(i in t){var o=t[i].length;e[i]=e[i]*o/n}return e},t.Index.prototype.toJSON=function(){var e={};return this._fields.forEach(function(t){e[t]=this.index[t].toJSON()},this),{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),index:e,pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},t.DocumentStore=function(e){this._save=null===e||void 0===e?!0:e,this.docs={},this.docInfo={},this.length=0},t.DocumentStore.load=function(e){var t=new this;return t.length=e.length,t.docs=e.docs,t.docInfo=e.docInfo,t._save=e.save,t},t.DocumentStore.prototype.isDocStored=function(){return this._save},t.DocumentStore.prototype.addDoc=function(t,n){this.hasDoc(t)||this.length++,this.docs[t]=this._save===!0?e(n):null},t.DocumentStore.prototype.getDoc=function(e){return this.hasDoc(e)===!1?null:this.docs[e]},t.DocumentStore.prototype.hasDoc=function(e){return e in this.docs},t.DocumentStore.prototype.removeDoc=function(e){this.hasDoc(e)&&(delete this.docs[e],delete this.docInfo[e],this.length--)},t.DocumentStore.prototype.addFieldLength=function(e,t,n){null!==e&&void 0!==e&&0!=this.hasDoc(e)&&(this.docInfo[e]||(this.docInfo[e]={}),this.docInfo[e][t]=n)},t.DocumentStore.prototype.updateFieldLength=function(e,t,n){null!==e&&void 0!==e&&0!=this.hasDoc(e)&&this.addFieldLength(e,t,n)},t.DocumentStore.prototype.getFieldLength=function(e,t){return null===e||void 0===e?0:e in this.docs&&t in this.docInfo[e]?this.docInfo[e][t]:0},t.DocumentStore.prototype.toJSON=function(){return{docs:this.docs,docInfo:this.docInfo,length:this.length,save:this._save}},t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},t={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,u="^("+o+")?"+r+o+"("+r+")?$",a="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,c=new RegExp(s),d=new RegExp(a),f=new RegExp(u),h=new RegExp(l),p=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,m=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,x=new RegExp("([^aeiouylsz])\\1$"),w=new RegExp("^"+o+i+"[^aeiouwxy]$"),I=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,D=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,_=/^(.+?)e$/,P=/ll$/,k=new RegExp("^"+o+i+"[^aeiouwxy]$"),z=function(n){var i,o,r,s,u,a,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,u=v,s.test(n)?n=n.replace(s,"$1$2"):u.test(n)&&(n=n.replace(u,"$1$2")),s=g,u=m,s.test(n)){var z=s.exec(n);s=c,s.test(z[1])&&(s=y,n=n.replace(s,""))}else if(u.test(n)){var z=u.exec(n);i=z[1],u=h,u.test(i)&&(n=i,u=S,a=x,l=w,u.test(n)?n+="e":a.test(n)?(s=y,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=I,s.test(n)){var z=s.exec(n);i=z[1],n=i+"i"}if(s=b,s.test(n)){var z=s.exec(n);i=z[1],o=z[2],s=c,s.test(i)&&(n=i+e[o])}if(s=E,s.test(n)){var z=s.exec(n);i=z[1],o=z[2],s=c,s.test(i)&&(n=i+t[o])}if(s=D,u=F,s.test(n)){var z=s.exec(n);i=z[1],s=d,s.test(i)&&(n=i)}else if(u.test(n)){var z=u.exec(n);i=z[1]+z[2],u=d,u.test(i)&&(n=i)}if(s=_,s.test(n)){var z=s.exec(n);i=z[1],s=d,u=f,a=k,(s.test(i)||u.test(i)&&!a.test(i))&&(n=i)}return s=P,u=d,s.test(n)&&u.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return z}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return e&&t.stopWordFilter.stopWords[e]!==!0?e:void 0},t.clearStopWords=function(){t.stopWordFilter.stopWords={}},t.addStopWords=function(e){null!=e&&Array.isArray(e)!==!1&&e.forEach(function(e){t.stopWordFilter.stopWords[e]=!0},this)},t.resetStopWords=function(){t.stopWordFilter.stopWords=t.defaultStopWords},t.defaultStopWords={"":!0,a:!0,able:!0,about:!0,across:!0,after:!0,all:!0,almost:!0,also:!0,am:!0,among:!0,an:!0,and:!0,any:!0,are:!0,as:!0,at:!0,be:!0,because:!0,been:!0,but:!0,by:!0,can:!0,cannot:!0,could:!0,dear:!0,did:!0,"do":!0,does:!0,either:!0,"else":!0,ever:!0,every:!0,"for":!0,from:!0,get:!0,got:!0,had:!0,has:!0,have:!0,he:!0,her:!0,hers:!0,him:!0,his:!0,how:!0,however:!0,i:!0,"if":!0,"in":!0,into:!0,is:!0,it:!0,its:!0,just:!0,least:!0,let:!0,like:!0,likely:!0,may:!0,me:!0,might:!0,most:!0,must:!0,my:!0,neither:!0,no:!0,nor:!0,not:!0,of:!0,off:!0,often:!0,on:!0,only:!0,or:!0,other:!0,our:!0,own:!0,rather:!0,said:!0,say:!0,says:!0,she:!0,should:!0,since:!0,so:!0,some:!0,than:!0,that:!0,the:!0,their:!0,them:!0,then:!0,there:!0,these:!0,they:!0,"this":!0,tis:!0,to:!0,too:!0,twas:!0,us:!0,wants:!0,was:!0,we:!0,were:!0,what:!0,when:!0,where:!0,which:!0,"while":!0,who:!0,whom:!0,why:!0,will:!0,"with":!0,would:!0,yet:!0,you:!0,your:!0},t.stopWordFilter.stopWords=t.defaultStopWords,t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(e){if(null===e||void 0===e)throw new Error("token should not be undefined");return e.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.InvertedIndex=function(){this.root={docs:{},df:0}},t.InvertedIndex.load=function(e){var t=new this;return t.root=e.root,t},t.InvertedIndex.prototype.addToken=function(e,t,n){for(var n=n||this.root,i=0;i<=e.length-1;){var o=e[i];o in n||(n[o]={docs:{},df:0}),i+=1,n=n[o]}var r=t.ref;n.docs[r]?n.docs[r]={tf:t.tf}:(n.docs[r]={tf:t.tf},n.df+=1)},t.InvertedIndex.prototype.hasToken=function(e){if(!e)return!1;for(var t=this.root,n=0;n<e.length;n++){if(!t[e[n]])return!1;t=t[e[n]]}return!0},t.InvertedIndex.prototype.getNode=function(e){if(!e)return null;for(var t=this.root,n=0;n<e.length;n++){if(!t[e[n]])return null;t=t[e[n]]}return t},t.InvertedIndex.prototype.getDocs=function(e){var t=this.getNode(e);return null==t?{}:t.docs},t.InvertedIndex.prototype.getTermFrequency=function(e,t){var n=this.getNode(e);return null==n?0:t in n.docs?n.docs[t].tf:0},t.InvertedIndex.prototype.getDocFreq=function(e){var t=this.getNode(e);return null==t?0:t.df},t.InvertedIndex.prototype.removeToken=function(e,t){if(e){var n=this.getNode(e);null!=n&&t in n.docs&&(delete n.docs[t],n.df-=1)}},t.InvertedIndex.prototype.expandToken=function(e,t,n){if(null==e||""==e)return[];var t=t||[];if(void 0==n&&(n=this.getNode(e),null==n))return t;n.df>0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e<arguments.length;e++)t=arguments[e],~this.indexOf(t)||this.elements.splice(this.locationFor(t),0,t);this.length=this.elements.length},lunr.SortedSet.prototype.toArray=function(){return this.elements.slice()},lunr.SortedSet.prototype.map=function(e,t){return this.elements.map(e,t)},lunr.SortedSet.prototype.forEach=function(e,t){return this.elements.forEach(e,t)},lunr.SortedSet.prototype.indexOf=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]<u[i]?n++:s[n]>u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o<r.length;o++)i.add(r[o]);return i},lunr.SortedSet.prototype.toJSON=function(){return this.toArray()},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.elasticlunr=t()}(this,function(){return t})}();
-    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"acmc": {"fullname": "acmc", "modulename": "acmc", "kind": "module", "doc": "<p></p>\n"}, "acmc.logging_config": {"fullname": "acmc.logging_config", "modulename": "acmc.logging_config", "kind": "module", "doc": "<p>logging_config.py</p>\n\n<p>This module defines functions to setup logging for acmc across all module.</p>\n"}, "acmc.logging_config.DEFAULT_LOG_FILE": {"fullname": "acmc.logging_config.DEFAULT_LOG_FILE", "modulename": "acmc.logging_config", "qualname": "DEFAULT_LOG_FILE", "kind": "variable", "doc": "<p>The default acmc application log filename.</p>\n", "default_value": "&#x27;acmc.log&#x27;"}, "acmc.logging_config.setup_logger": {"fullname": "acmc.logging_config.setup_logger", "modulename": "acmc.logging_config", "qualname": "setup_logger", "kind": "function", "doc": "<p>Sets up acmc logger as a singleton outputing to file and sysout syserr.</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">log_level</span><span class=\"p\">:</span> <span class=\"nb\">int</span> <span class=\"o\">=</span> <span class=\"mi\">20</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.logging_config.set_log_level": {"fullname": "acmc.logging_config.set_log_level", "modulename": "acmc.logging_config", "qualname": "set_log_level", "kind": "function", "doc": "<p>Sets the log level for the acmc logger.</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>log_level (int):</strong>  log level from the python logging libraru</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">log_level</span><span class=\"p\">:</span> <span class=\"nb\">int</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.main": {"fullname": "acmc.main", "modulename": "acmc.main", "kind": "module", "doc": "<p>main.py module</p>\n\n<p>This module provides the functionality for the acmc command line interface</p>\n"}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"fullname": "acmc.main.DEFAULT_WORKSPACE_PATH", "modulename": "acmc.main", "qualname": "DEFAULT_WORKSPACE_PATH", "kind": "variable", "doc": "<p>Default phenotype workspace path</p>\n", "default_value": "PosixPath(&#x27;workspace&#x27;)"}, "acmc.main.main": {"fullname": "acmc.main.main", "modulename": "acmc.main", "qualname": "main", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.omop": {"fullname": "acmc.omop", "modulename": "acmc.omop", "kind": "module", "doc": "<p>omop.py module</p>\n\n<p>This module provides functionality to manage OMOP vocabularies.</p>\n"}, "acmc.omop.VOCAB_PATH": {"fullname": "acmc.omop.VOCAB_PATH", "modulename": "acmc.omop", "qualname": "VOCAB_PATH", "kind": "variable", "doc": "<p>Default OMOP vocabulary path</p>\n", "default_value": "PosixPath(&#x27;vocab/omop&#x27;)"}, "acmc.omop.OMOP_CDM_Version": {"fullname": "acmc.omop.OMOP_CDM_Version", "modulename": "acmc.omop", "qualname": "OMOP_CDM_Version", "kind": "variable", "doc": "<p>Supported OMOP CDM version number</p>\n", "default_value": "&#x27;54&#x27;"}, "acmc.omop.OMOP_DB_FILENAME": {"fullname": "acmc.omop.OMOP_DB_FILENAME", "modulename": "acmc.omop", "qualname": "OMOP_DB_FILENAME", "kind": "variable", "doc": "<p>Default OMOP sqllite database filename</p>\n", "default_value": "&#x27;omop_54.sqlite&#x27;"}, "acmc.omop.DB_PATH": {"fullname": "acmc.omop.DB_PATH", "modulename": "acmc.omop", "qualname": "DB_PATH", "kind": "variable", "doc": "<p>Default OMOP sqllite database path</p>\n", "default_value": "PosixPath(&#x27;vocab/omop/omop_54.sqlite&#x27;)"}, "acmc.omop.VERSION_FILE": {"fullname": "acmc.omop.VERSION_FILE", "modulename": "acmc.omop", "qualname": "VERSION_FILE", "kind": "variable", "doc": "<p>Default OMOP version file</p>\n", "default_value": "&#x27;omop_version.yml&#x27;"}, "acmc.omop.VERSION_PATH": {"fullname": "acmc.omop.VERSION_PATH", "modulename": "acmc.omop", "qualname": "VERSION_PATH", "kind": "variable", "doc": "<p>Default OMOP version path</p>\n", "default_value": "PosixPath(&#x27;vocab/omop/omop_version.yml&#x27;)"}, "acmc.omop.EXPORT_FILE": {"fullname": "acmc.omop.EXPORT_FILE", "modulename": "acmc.omop", "qualname": "EXPORT_FILE", "kind": "variable", "doc": "<p>Default OMOP export database filename</p>\n", "default_value": "&#x27;omop_54_export.sqlite&#x27;"}, "acmc.omop.vocabularies": {"fullname": "acmc.omop.vocabularies", "modulename": "acmc.omop", "qualname": "vocabularies", "kind": "variable", "doc": "<p>Required OMOP vocabularies definition</p>\n", "default_value": "{&#x27;source&#x27;: &#x27;OHDSI Athena&#x27;, &#x27;url&#x27;: &#x27;https://athena.ohdsi.org/vocabulary/list&#x27;, &#x27;cdm_version&#x27;: &#x27;54&#x27;, &#x27;version&#x27;: &#x27;&#x27;, &#x27;vocabularies&#x27;: [{&#x27;id&#x27;: 1, &#x27;name&#x27;: &#x27;SNOMED&#x27;}, {&#x27;id&#x27;: 2, &#x27;name&#x27;: &#x27;ICD9CM&#x27;}, {&#x27;id&#x27;: 17, &#x27;name&#x27;: &#x27;Readv2&#x27;}, {&#x27;id&#x27;: 21, &#x27;name&#x27;: &#x27;ATC&#x27;}, {&#x27;id&#x27;: 55, &#x27;name&#x27;: &#x27;OPCS4&#x27;}, {&#x27;id&#x27;: 57, &#x27;name&#x27;: &#x27;HES Specialty&#x27;}, {&#x27;id&#x27;: 70, &#x27;name&#x27;: &#x27;ICD10CM&#x27;}, {&#x27;id&#x27;: 75, &#x27;name&#x27;: &#x27;dm+d&#x27;}, {&#x27;id&#x27;: 144, &#x27;name&#x27;: &#x27;UK Biobank&#x27;}, {&#x27;id&#x27;: 154, &#x27;name&#x27;: &#x27;NHS Ethnic Category&#x27;}, {&#x27;id&#x27;: 155, &#x27;name&#x27;: &#x27;NHS Place of Service&#x27;}], &#x27;tables&#x27;: []}"}, "acmc.omop.omop_vocab_types": {"fullname": "acmc.omop.omop_vocab_types", "modulename": "acmc.omop", "qualname": "omop_vocab_types", "kind": "variable", "doc": "<p>Type mappings from acmc medical coding types to OMOP vocabulary types</p>\n", "default_value": "{&#x27;read2&#x27;: &#x27;Read&#x27;, &#x27;read3&#x27;: None, &#x27;icd10&#x27;: &#x27;ICD10CM&#x27;, &#x27;snomed&#x27;: &#x27;SNOMED&#x27;, &#x27;opcs4&#x27;: &#x27;OPCS4&#x27;, &#x27;atc&#x27;: &#x27;ATC&#x27;, &#x27;med&#x27;: None, &#x27;cprd&#x27;: None}"}, "acmc.omop.install": {"fullname": "acmc.omop.install", "modulename": "acmc.omop", "qualname": "install", "kind": "function", "doc": "<p>\"Installs the OMOP release csv files in a file-based sql database</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>omop_zip_file (str):</strong>  vocabularies zip file distributed by OHDSI Athena</li>\n<li><strong>version (str):</strong>  version of the vocabularies distributed by OHDSI Athena</li>\n</ul>\n\n<h6 id=\"raises\">Raises:</h6>\n\n<ul>\n<li><strong>ValueError:</strong>  if the zip file does not exist</li>\n<li><strong>ValueError:</strong>  if the file is not a zip file</li>\n<li><strong>Exception:</strong>  if error reading omop csv files</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">omop_zip_file</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.omop.write_version_file": {"fullname": "acmc.omop.write_version_file", "modulename": "acmc.omop", "qualname": "write_version_file", "kind": "function", "doc": "<p>Writes the OMOP vocaburaries and version to a file</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>version (str):</strong>  version of the vocabularies distributed by OHDSI Athena</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.omop.clear": {"fullname": "acmc.omop.clear", "modulename": "acmc.omop", "qualname": "clear", "kind": "function", "doc": "<p>Clears the OMOP sql database</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>db_path (Path):</strong>  the path to the omop sqllite database</li>\n</ul>\n\n<h6 id=\"raises\">Raises:</h6>\n\n<ul>\n<li><strong>FileNotFoundError:</strong>  if the omop sqllite database does not exist</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">db_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.omop.delete": {"fullname": "acmc.omop.delete", "modulename": "acmc.omop", "qualname": "delete", "kind": "function", "doc": "<p>Deletes the OMOP sql database</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>db_path (Path):</strong>  the path to the omop sqllite database</li>\n</ul>\n\n<h6 id=\"raises\">Raises:</h6>\n\n<ul>\n<li><strong>FileNotFoundError:</strong>  if the omop sqllite database does not exist</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">db_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.omop.table_exists": {"fullname": "acmc.omop.table_exists", "modulename": "acmc.omop", "qualname": "table_exists", "kind": "function", "doc": "<p>Query to check if the table exists</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>cursor (sqlite3.Cursor):</strong>  a sqllite database cursor</li>\n<li><strong>table_name (str):</strong>  the table name to check</li>\n</ul>\n\n<h6 id=\"returns\">Returns:</h6>\n\n<blockquote>\n  <p>bool: true if table exists</p>\n</blockquote>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">cursor</span><span class=\"p\">:</span> <span class=\"n\">sqlite3</span><span class=\"o\">.</span><span class=\"n\">Cursor</span>, </span><span class=\"param\"><span class=\"n\">table_name</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">bool</span>:</span></span>", "funcdef": "def"}, "acmc.omop.vocab_exists": {"fullname": "acmc.omop.vocab_exists", "modulename": "acmc.omop", "qualname": "vocab_exists", "kind": "function", "doc": "<p>Query to check if the vocabulary exists</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>cursor (sqlite3.Cursor):</strong>  a sqllite database cursor</li>\n<li><strong>vocab_id (str):</strong>  the vocabulary id to check</li>\n</ul>\n\n<h6 id=\"returns\">Returns:</h6>\n\n<blockquote>\n  <p>bool: true if vocabulary id exists</p>\n</blockquote>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">cursor</span><span class=\"p\">:</span> <span class=\"n\">sqlite3</span><span class=\"o\">.</span><span class=\"n\">Cursor</span>, </span><span class=\"param\"><span class=\"n\">vocab_id</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">bool</span>:</span></span>", "funcdef": "def"}, "acmc.omop.concept_set_exist": {"fullname": "acmc.omop.concept_set_exist", "modulename": "acmc.omop", "qualname": "concept_set_exist", "kind": "function", "doc": "<p>Query to check if the concept set exists</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>cursor (sqlite3.Cursor):</strong>  a sqllite database cursor</li>\n<li><strong>concept_set_name (str):</strong>  the concept set name to check</li>\n</ul>\n\n<h6 id=\"returns\">Returns:</h6>\n\n<blockquote>\n  <p>bool: true if concept set exists</p>\n</blockquote>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">cursor</span><span class=\"p\">:</span> <span class=\"n\">sqlite3</span><span class=\"o\">.</span><span class=\"n\">Cursor</span>, </span><span class=\"param\"><span class=\"n\">concept_set_name</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">bool</span>:</span></span>", "funcdef": "def"}, "acmc.omop.export": {"fullname": "acmc.omop.export", "modulename": "acmc.omop", "qualname": "export", "kind": "function", "doc": "<p>Export concept sets to omop database in csv format</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>map_path (Path):</strong>  path to the acmc map directory containing concept sets in csv format</li>\n<li><strong>export_path (Path):</strong>  path to the directory where the omop database csv files are to be written</li>\n<li><strong>version (str):</strong>  phenotype version for omop vocabulary version</li>\n<li><strong>omop_metadata (dict):</strong>  phenotype omop metadata for omop vocabulary metadata</li>\n</ul>\n\n<h6 id=\"returns\">Returns:</h6>\n\n<blockquote>\n  <p>Path: path to the exported sqllite database</p>\n</blockquote>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">map_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">export_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">omop_metadata</span><span class=\"p\">:</span> <span class=\"nb\">dict</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>:</span></span>", "funcdef": "def"}, "acmc.parse": {"fullname": "acmc.parse", "modulename": "acmc.parse", "kind": "module", "doc": "<p>parse.py module</p>\n\n<p>This module provides functionality to set up medical code translation classes</p>\n"}, "acmc.parse.SUPPORTED_CODE_TYPES": {"fullname": "acmc.parse.SUPPORTED_CODE_TYPES", "modulename": "acmc.parse", "qualname": "SUPPORTED_CODE_TYPES", "kind": "variable", "doc": "<p>List of support medical coding types</p>\n", "default_value": "{&#x27;read3&#x27;, &#x27;read2&#x27;, &#x27;snomed&#x27;, &#x27;opcs4&#x27;, &#x27;icd10&#x27;, &#x27;atc&#x27;}"}, "acmc.parse.CodesError": {"fullname": "acmc.parse.CodesError", "modulename": "acmc.parse", "qualname": "CodesError", "kind": "class", "doc": "<p>A class used in InvalidCodesException to report an error if a code parser check fails</p>\n"}, "acmc.parse.CodesError.__init__": {"fullname": "acmc.parse.CodesError.__init__", "modulename": "acmc.parse", "qualname": "CodesError.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">message</span>, </span><span class=\"param\"><span class=\"n\">codes</span><span class=\"o\">=</span><span class=\"kc\">None</span>, </span><span class=\"param\"><span class=\"n\">codes_file</span><span class=\"o\">=</span><span class=\"kc\">None</span>, </span><span class=\"param\"><span class=\"n\">mask</span><span class=\"o\">=</span><span class=\"kc\">None</span>, </span><span class=\"param\"><span class=\"n\">code_type</span><span class=\"o\">=</span><span class=\"kc\">None</span></span>)</span>"}, "acmc.parse.InvalidCodesException": {"fullname": "acmc.parse.InvalidCodesException", "modulename": "acmc.parse", "qualname": "InvalidCodesException", "kind": "class", "doc": "<p>Custom exception class raised when invalid codes are found that cannot be resolved by processing</p>\n", "bases": "builtins.Exception"}, "acmc.parse.InvalidCodesException.__init__": {"fullname": "acmc.parse.InvalidCodesException.__init__", "modulename": "acmc.parse", "qualname": "InvalidCodesException.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">error</span></span>)</span>"}, "acmc.parse.InvalidCodesException.error": {"fullname": "acmc.parse.InvalidCodesException.error", "modulename": "acmc.parse", "qualname": "InvalidCodesException.error", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.Proto": {"fullname": "acmc.parse.Proto", "modulename": "acmc.parse", "qualname": "Proto", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n"}, "acmc.parse.Proto.__init__": {"fullname": "acmc.parse.Proto.__init__", "modulename": "acmc.parse", "qualname": "Proto.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">name</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">trud_codes_path</span><span class=\"p\">:</span> <span class=\"n\">Optional</span><span class=\"p\">[</span><span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"kc\">None</span></span>)</span>"}, "acmc.parse.Proto.checks": {"fullname": "acmc.parse.Proto.checks", "modulename": "acmc.parse", "qualname": "Proto.checks", "kind": "variable", "doc": "<p></p>\n", "annotation": ": list[tuple[str, typing.Callable[[pandas.core.frame.DataFrame], pandas.core.series.Series], typing.Callable[[pandas.core.frame.DataFrame, pathlib.Path], pandas.core.frame.DataFrame]]]"}, "acmc.parse.Proto.name": {"fullname": "acmc.parse.Proto.name", "modulename": "acmc.parse", "qualname": "Proto.name", "kind": "variable", "doc": "<p></p>\n", "annotation": ": str"}, "acmc.parse.Proto.raise_exception": {"fullname": "acmc.parse.Proto.raise_exception", "modulename": "acmc.parse", "qualname": "Proto.raise_exception", "kind": "function", "doc": "<p>Raises an exception inside a lambda function. Python does not allow using raise statement inside lambda because lambda can only contain expressions, not statements. Using raise_exception not raise_ as it's more explict</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"bp\">self</span>, </span><span class=\"param\"><span class=\"n\">ex</span><span class=\"p\">:</span> <span class=\"ne\">Exception</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.parse.Proto.in_database": {"fullname": "acmc.parse.Proto.in_database", "modulename": "acmc.parse", "qualname": "Proto.in_database", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"bp\">self</span>,</span><span class=\"param\">\t<span class=\"n\">codes</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">db</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">col</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>:</span></span>", "funcdef": "def"}, "acmc.parse.Proto.process": {"fullname": "acmc.parse.Proto.process", "modulename": "acmc.parse", "qualname": "Proto.process", "kind": "function", "doc": "<p>identify issues that do not pass and fix them with define/d process</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"bp\">self</span>,</span><span class=\"param\">\t<span class=\"n\">codes</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">codes_file</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">) -> <span class=\"n\">Tuple</span><span class=\"p\">[</span><span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span><span class=\"p\">,</span> <span class=\"nb\">list</span><span class=\"p\">]</span>:</span></span>", "funcdef": "def"}, "acmc.parse.Proto.verify": {"fullname": "acmc.parse.Proto.verify", "modulename": "acmc.parse", "qualname": "Proto.verify", "kind": "function", "doc": "<p>verify codes in codes file</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"bp\">self</span>, </span><span class=\"param\"><span class=\"n\">codes</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>, </span><span class=\"param\"><span class=\"n\">codes_file</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.parse.Read2": {"fullname": "acmc.parse.Read2", "modulename": "acmc.parse", "qualname": "Read2", "kind": "class", "doc": "<p>This Read2 class extends Proto, adding custom validation checks for a dataset of \"Read2\" codes. It ensures that the dataset is loaded, validates the codes based on several rules, and applies corrections or logs errors when necessary.</p>\n", "bases": "Proto"}, "acmc.parse.Read2.checks": {"fullname": "acmc.parse.Read2.checks", "modulename": "acmc.parse", "qualname": "Read2.checks", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.Read3": {"fullname": "acmc.parse.Read3", "modulename": "acmc.parse", "qualname": "Read3", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, "acmc.parse.Read3.checks": {"fullname": "acmc.parse.Read3.checks", "modulename": "acmc.parse", "qualname": "Read3.checks", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.Icd10": {"fullname": "acmc.parse.Icd10", "modulename": "acmc.parse", "qualname": "Icd10", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, "acmc.parse.Icd10.checks": {"fullname": "acmc.parse.Icd10.checks", "modulename": "acmc.parse", "qualname": "Icd10.checks", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.Snomed": {"fullname": "acmc.parse.Snomed", "modulename": "acmc.parse", "qualname": "Snomed", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, "acmc.parse.Snomed.checks": {"fullname": "acmc.parse.Snomed.checks", "modulename": "acmc.parse", "qualname": "Snomed.checks", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.Opcs4": {"fullname": "acmc.parse.Opcs4", "modulename": "acmc.parse", "qualname": "Opcs4", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, "acmc.parse.Opcs4.checks": {"fullname": "acmc.parse.Opcs4.checks", "modulename": "acmc.parse", "qualname": "Opcs4.checks", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.Atc": {"fullname": "acmc.parse.Atc", "modulename": "acmc.parse", "qualname": "Atc", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, "acmc.parse.Atc.checks": {"fullname": "acmc.parse.Atc.checks", "modulename": "acmc.parse", "qualname": "Atc.checks", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.Med": {"fullname": "acmc.parse.Med", "modulename": "acmc.parse", "qualname": "Med", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, "acmc.parse.Med.checks": {"fullname": "acmc.parse.Med.checks", "modulename": "acmc.parse", "qualname": "Med.checks", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.Cprd": {"fullname": "acmc.parse.Cprd", "modulename": "acmc.parse", "qualname": "Cprd", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, "acmc.parse.Cprd.checks": {"fullname": "acmc.parse.Cprd.checks", "modulename": "acmc.parse", "qualname": "Cprd.checks", "kind": "variable", "doc": "<p></p>\n"}, "acmc.parse.CodeTypeParser": {"fullname": "acmc.parse.CodeTypeParser", "modulename": "acmc.parse", "qualname": "CodeTypeParser", "kind": "class", "doc": "<p>A class used in InvalidCodesException to report an error if a code parser check fails</p>\n"}, "acmc.parse.CodeTypeParser.__init__": {"fullname": "acmc.parse.CodeTypeParser.__init__", "modulename": "acmc.parse", "qualname": "CodeTypeParser.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">trud_processed_dir</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span> <span class=\"o\">=</span> <span class=\"n\">PosixPath</span><span class=\"p\">(</span><span class=\"s1\">&#39;vocab/trud/processed&#39;</span><span class=\"p\">)</span></span>)</span>"}, "acmc.parse.CodeTypeParser.code_types": {"fullname": "acmc.parse.CodeTypeParser.code_types", "modulename": "acmc.parse", "qualname": "CodeTypeParser.code_types", "kind": "variable", "doc": "<p></p>\n"}, "acmc.phen": {"fullname": "acmc.phen", "modulename": "acmc.phen", "kind": "module", "doc": "<p>phenotype.py module</p>\n\n<p>This module provides functionality for managing phenotypes.</p>\n"}, "acmc.phen.PHEN_DIR": {"fullname": "acmc.phen.PHEN_DIR", "modulename": "acmc.phen", "qualname": "PHEN_DIR", "kind": "variable", "doc": "<p>Default phenotype directory name</p>\n", "default_value": "&#x27;phen&#x27;"}, "acmc.phen.DEFAULT_PHEN_PATH": {"fullname": "acmc.phen.DEFAULT_PHEN_PATH", "modulename": "acmc.phen", "qualname": "DEFAULT_PHEN_PATH", "kind": "variable", "doc": "<p>Default phenotype directory path</p>\n", "default_value": "PosixPath(&#x27;workspace/phen&#x27;)"}, "acmc.phen.CONCEPTS_DIR": {"fullname": "acmc.phen.CONCEPTS_DIR", "modulename": "acmc.phen", "qualname": "CONCEPTS_DIR", "kind": "variable", "doc": "<p>Default concepts directory name</p>\n", "default_value": "&#x27;concepts&#x27;"}, "acmc.phen.MAP_DIR": {"fullname": "acmc.phen.MAP_DIR", "modulename": "acmc.phen", "qualname": "MAP_DIR", "kind": "variable", "doc": "<p>Default map directory name</p>\n", "default_value": "&#x27;map&#x27;"}, "acmc.phen.CONCEPT_SET_DIR": {"fullname": "acmc.phen.CONCEPT_SET_DIR", "modulename": "acmc.phen", "qualname": "CONCEPT_SET_DIR", "kind": "variable", "doc": "<p>Default concept set directory name</p>\n", "default_value": "&#x27;concept-sets&#x27;"}, "acmc.phen.CSV_PATH": {"fullname": "acmc.phen.CSV_PATH", "modulename": "acmc.phen", "qualname": "CSV_PATH", "kind": "variable", "doc": "<p>Default CSV concept set directory path</p>\n", "default_value": "PosixPath(&#x27;concept-sets/csv&#x27;)"}, "acmc.phen.OMOP_PATH": {"fullname": "acmc.phen.OMOP_PATH", "modulename": "acmc.phen", "qualname": "OMOP_PATH", "kind": "variable", "doc": "<p>Default OMOP concept set directory path</p>\n", "default_value": "PosixPath(&#x27;concept-sets/omop&#x27;)"}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"fullname": "acmc.phen.DEFAULT_PHEN_DIR_LIST", "modulename": "acmc.phen", "qualname": "DEFAULT_PHEN_DIR_LIST", "kind": "variable", "doc": "<p>List of default phenotype directories</p>\n", "default_value": "[&#x27;concepts&#x27;, &#x27;map&#x27;, &#x27;concept-sets&#x27;]"}, "acmc.phen.CONFIG_FILE": {"fullname": "acmc.phen.CONFIG_FILE", "modulename": "acmc.phen", "qualname": "CONFIG_FILE", "kind": "variable", "doc": "<p>Default configuration filename</p>\n", "default_value": "&#x27;config.yml&#x27;"}, "acmc.phen.VOCAB_VERSION_FILE": {"fullname": "acmc.phen.VOCAB_VERSION_FILE", "modulename": "acmc.phen", "qualname": "VOCAB_VERSION_FILE", "kind": "variable", "doc": "<p>Default vocabulary version filename</p>\n", "default_value": "&#x27;vocab_version.yml&#x27;"}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"fullname": "acmc.phen.SEMANTIC_VERSION_TYPES", "modulename": "acmc.phen", "qualname": "SEMANTIC_VERSION_TYPES", "kind": "variable", "doc": "<p>List of semantic version increment types</p>\n", "default_value": "[&#x27;major&#x27;, &#x27;minor&#x27;, &#x27;patch&#x27;]"}, "acmc.phen.DEFAULT_VERSION_INC": {"fullname": "acmc.phen.DEFAULT_VERSION_INC", "modulename": "acmc.phen", "qualname": "DEFAULT_VERSION_INC", "kind": "variable", "doc": "<p>Default semantic version increment type</p>\n", "default_value": "&#x27;patch&#x27;"}, "acmc.phen.DEFAULT_GIT_BRANCH": {"fullname": "acmc.phen.DEFAULT_GIT_BRANCH", "modulename": "acmc.phen", "qualname": "DEFAULT_GIT_BRANCH", "kind": "variable", "doc": "<p>Default phenotype repo branch name</p>\n", "default_value": "&#x27;main&#x27;"}, "acmc.phen.SPLIT_COL_ACTION": {"fullname": "acmc.phen.SPLIT_COL_ACTION", "modulename": "acmc.phen", "qualname": "SPLIT_COL_ACTION", "kind": "variable", "doc": "<p>Split column preprocessing action type</p>\n", "default_value": "&#x27;split_col&#x27;"}, "acmc.phen.CODES_COL_ACTION": {"fullname": "acmc.phen.CODES_COL_ACTION", "modulename": "acmc.phen", "qualname": "CODES_COL_ACTION", "kind": "variable", "doc": "<p>Codes column preprocessing action type</p>\n", "default_value": "&#x27;codes_col&#x27;"}, "acmc.phen.DIVIDE_COL_ACTION": {"fullname": "acmc.phen.DIVIDE_COL_ACTION", "modulename": "acmc.phen", "qualname": "DIVIDE_COL_ACTION", "kind": "variable", "doc": "<p>Divide column preprocessing action type</p>\n", "default_value": "&#x27;divide_col&#x27;"}, "acmc.phen.COL_ACTIONS": {"fullname": "acmc.phen.COL_ACTIONS", "modulename": "acmc.phen", "qualname": "COL_ACTIONS", "kind": "variable", "doc": "<p>List of column preprocessing action types</p>\n", "default_value": "[&#x27;split_col&#x27;, &#x27;codes_col&#x27;, &#x27;divide_col&#x27;]"}, "acmc.phen.CODE_FILE_TYPES": {"fullname": "acmc.phen.CODE_FILE_TYPES", "modulename": "acmc.phen", "qualname": "CODE_FILE_TYPES", "kind": "variable", "doc": "<p>List of supported source concept coding list file types</p>\n", "default_value": "[&#x27;.xlsx&#x27;, &#x27;.xls&#x27;, &#x27;.csv&#x27;]"}, "acmc.phen.CONFIG_SCHEMA": {"fullname": "acmc.phen.CONFIG_SCHEMA", "modulename": "acmc.phen", "qualname": "CONFIG_SCHEMA", "kind": "variable", "doc": "<p>Phenotype config.yml schema definition</p>\n", "default_value": "{&#x27;phenotype&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;required&#x27;: True, &#x27;schema&#x27;: {&#x27;version&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True, &#x27;regex&#x27;: &#x27;^\\\\d+\\\\.\\\\d+\\\\.\\\\d+$&#x27;}, &#x27;omop&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;required&#x27;: True, &#x27;schema&#x27;: {&#x27;vocabulary_id&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True}, &#x27;vocabulary_name&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True}, &#x27;vocabulary_reference&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True, &#x27;regex&#x27;: &#x27;^https?://.*&#x27;}}}, &#x27;map&#x27;: {&#x27;type&#x27;: &#x27;list&#x27;, &#x27;schema&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;allowed&#x27;: [&#x27;read3&#x27;, &#x27;read2&#x27;, &#x27;snomed&#x27;, &#x27;opcs4&#x27;, &#x27;icd10&#x27;, &#x27;atc&#x27;]}}, &#x27;concept_sets&#x27;: {&#x27;type&#x27;: &#x27;list&#x27;, &#x27;required&#x27;: True, &#x27;schema&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;schema&#x27;: {&#x27;name&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True}, &#x27;files&#x27;: {&#x27;type&#x27;: &#x27;list&#x27;, &#x27;required&#x27;: True, &#x27;schema&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;schema&#x27;: {&#x27;path&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True}, &#x27;columns&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;required&#x27;: True}, &#x27;category&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;}, &#x27;actions&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;schema&#x27;: {&#x27;divide_col&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;}, &#x27;split_col&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;}, &#x27;codes_col&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;}}}}}}, &#x27;metadata&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;required&#x27;: False}}}}}}}"}, "acmc.phen.PhenValidationException": {"fullname": "acmc.phen.PhenValidationException", "modulename": "acmc.phen", "qualname": "PhenValidationException", "kind": "class", "doc": "<p>Custom exception class raised when validation errors in phenotype configuration file</p>\n", "bases": "builtins.Exception"}, "acmc.phen.PhenValidationException.__init__": {"fullname": "acmc.phen.PhenValidationException.__init__", "modulename": "acmc.phen", "qualname": "PhenValidationException.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">message</span>, </span><span class=\"param\"><span class=\"n\">validation_errors</span><span class=\"o\">=</span><span class=\"kc\">None</span></span>)</span>"}, "acmc.phen.PhenValidationException.validation_errors": {"fullname": "acmc.phen.PhenValidationException.validation_errors", "modulename": "acmc.phen", "qualname": "PhenValidationException.validation_errors", "kind": "variable", "doc": "<p></p>\n"}, "acmc.phen.init": {"fullname": "acmc.phen.init", "modulename": "acmc.phen", "qualname": "init", "kind": "function", "doc": "<p>Initial phenotype directory as git repo with standard structure</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">remote_url</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.fork": {"fullname": "acmc.phen.fork", "modulename": "acmc.phen", "qualname": "fork", "kind": "function", "doc": "<p>Forks an upstream phenotype in a remote repo at a specific version to a local director, and optionally sets to a new remote origin\"</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>phen_dir (str):</strong>  local directory path where the upstream repo is to be cloned</li>\n<li><strong>upstream_url (str):</strong>  url to the upstream repo</li>\n<li><strong>upstream_version (str):</strong>  version in the upstream repo to clone</li>\n<li><strong>new_origin_url (str, optional):</strong>  url of the remote repo to set as the new origin. Defaults to None.</li>\n</ul>\n\n<h6 id=\"raises\">Raises:</h6>\n\n<ul>\n<li><strong>ValueError:</strong>  if the specified version is not in the upstream repo</li>\n<li><strong>ValueError:</strong>  if the upstream repo is not a valid phenotype repo</li>\n<li><strong>ValueError:</strong>  if there's any other problems with Git</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">upstream_url</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">upstream_version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">new_origin_url</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.validate": {"fullname": "acmc.phen.validate", "modulename": "acmc.phen", "qualname": "validate", "kind": "function", "doc": "<p>Validates the phenotype directory is a git repo with standard structure</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.translate_codes": {"fullname": "acmc.phen.translate_codes", "modulename": "acmc.phen", "qualname": "translate_codes", "kind": "function", "doc": "<p>Translates each source code type the source coding list into a target type and returns all conversions as a concept set</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">source_df</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">target_code_type</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">concept_name</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">not_translate</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>:</span></span>", "funcdef": "def"}, "acmc.phen.write_vocab_version": {"fullname": "acmc.phen.write_vocab_version", "modulename": "acmc.phen", "qualname": "write_vocab_version", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.map": {"fullname": "acmc.phen.map", "modulename": "acmc.phen", "qualname": "map", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">target_code_type</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">not_translate</span><span class=\"p\">:</span> <span class=\"nb\">bool</span>,</span><span class=\"param\">\t<span class=\"n\">no_metadata</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.add_metadata": {"fullname": "acmc.phen.add_metadata", "modulename": "acmc.phen", "qualname": "add_metadata", "kind": "function", "doc": "<p>Add concept set metadata, stored as a dictionary, to each concept row</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">codes</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">metadata</span><span class=\"p\">:</span> <span class=\"nb\">dict</span>,</span><span class=\"param\">\t<span class=\"n\">no_metadata</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>:</span></span>", "funcdef": "def"}, "acmc.phen.publish": {"fullname": "acmc.phen.publish", "modulename": "acmc.phen", "qualname": "publish", "kind": "function", "doc": "<p>Publishes updates to the phenotype by commiting all changes to the repo directory</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">msg</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">remote_url</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">increment</span><span class=\"p\">:</span> <span class=\"nb\">str</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;patch&#39;</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.export": {"fullname": "acmc.phen.export", "modulename": "acmc.phen", "qualname": "export", "kind": "function", "doc": "<p>Exports a phen repo at a specific tagged version into a target directory</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.copy": {"fullname": "acmc.phen.copy", "modulename": "acmc.phen", "qualname": "copy", "kind": "function", "doc": "<p>Copys a phen repo at a specific tagged version into a target directory</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">target_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.extract_concepts": {"fullname": "acmc.phen.extract_concepts", "modulename": "acmc.phen", "qualname": "extract_concepts", "kind": "function", "doc": "<p>Extracts concepts as {name: file_path} dictionary and a name set.</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">config_data</span><span class=\"p\">:</span> <span class=\"nb\">dict</span></span><span class=\"return-annotation\">) -> <span class=\"n\">Tuple</span><span class=\"p\">[</span><span class=\"nb\">dict</span><span class=\"p\">,</span> <span class=\"n\">Set</span><span class=\"p\">[</span><span class=\"nb\">str</span><span class=\"p\">]]</span>:</span></span>", "funcdef": "def"}, "acmc.phen.diff_config": {"fullname": "acmc.phen.diff_config", "modulename": "acmc.phen", "qualname": "diff_config", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">old_config</span><span class=\"p\">:</span> <span class=\"nb\">dict</span>, </span><span class=\"param\"><span class=\"n\">new_config</span><span class=\"p\">:</span> <span class=\"nb\">dict</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">str</span>:</span></span>", "funcdef": "def"}, "acmc.phen.diff_map_files": {"fullname": "acmc.phen.diff_map_files", "modulename": "acmc.phen", "qualname": "diff_map_files", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">old_map_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>, </span><span class=\"param\"><span class=\"n\">new_map_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">str</span>:</span></span>", "funcdef": "def"}, "acmc.phen.diff_phen": {"fullname": "acmc.phen.diff_phen", "modulename": "acmc.phen", "qualname": "diff_phen", "kind": "function", "doc": "<p>Compare the differences between two versions of a phenotype</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">new_phen_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">new_version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">old_phen_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">old_version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">report_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">not_check_config</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.phen.diff": {"fullname": "acmc.phen.diff", "modulename": "acmc.phen", "qualname": "diff", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">old_phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">old_version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">not_check_config</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.trud": {"fullname": "acmc.trud", "modulename": "acmc.trud", "kind": "module", "doc": "<p>trud.py module</p>\n\n<p>This module provides functionality to manage installation of the NHS TRUD vocabularies.</p>\n"}, "acmc.trud.FQDN": {"fullname": "acmc.trud.FQDN", "modulename": "acmc.trud", "qualname": "FQDN", "kind": "variable", "doc": "<p>Fully Qualified Domain Name of NHS digital TRUD service API</p>\n", "default_value": "&#x27;isd.digital.nhs.uk&#x27;"}, "acmc.trud.VOCAB_PATH": {"fullname": "acmc.trud.VOCAB_PATH", "modulename": "acmc.trud", "qualname": "VOCAB_PATH", "kind": "variable", "doc": "<p>Default path to the TRUD vocabulary directory relative to the the acmc execution directory</p>\n", "default_value": "PosixPath(&#x27;vocab/trud&#x27;)"}, "acmc.trud.VERSION_FILE": {"fullname": "acmc.trud.VERSION_FILE", "modulename": "acmc.trud", "qualname": "VERSION_FILE", "kind": "variable", "doc": "<p>TRUD version file</p>\n", "default_value": "&#x27;trud_version.yml&#x27;"}, "acmc.trud.VERSION_PATH": {"fullname": "acmc.trud.VERSION_PATH", "modulename": "acmc.trud", "qualname": "VERSION_PATH", "kind": "variable", "doc": "<p>Default path to the TRUD version file</p>\n", "default_value": "PosixPath(&#x27;vocab/trud/trud_version.yml&#x27;)"}, "acmc.trud.DOWNLOADS_PATH": {"fullname": "acmc.trud.DOWNLOADS_PATH", "modulename": "acmc.trud", "qualname": "DOWNLOADS_PATH", "kind": "variable", "doc": "<p>Default path to the TRUD vocabulary downloads directory</p>\n", "default_value": "PosixPath(&#x27;vocab/trud/downloads&#x27;)"}, "acmc.trud.PROCESSED_PATH": {"fullname": "acmc.trud.PROCESSED_PATH", "modulename": "acmc.trud", "qualname": "PROCESSED_PATH", "kind": "variable", "doc": "<p>Default path to the processed TRUD mappings directory</p>\n", "default_value": "PosixPath(&#x27;vocab/trud/processed&#x27;)"}, "acmc.trud.get_releases": {"fullname": "acmc.trud.get_releases", "modulename": "acmc.trud", "qualname": "get_releases", "kind": "function", "doc": "<p>Retrieve release information for an item from the TRUD API.</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">item_id</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">API_KEY</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">latest</span><span class=\"o\">=</span><span class=\"kc\">False</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">list</span>:</span></span>", "funcdef": "def"}, "acmc.trud.download_release_file": {"fullname": "acmc.trud.download_release_file", "modulename": "acmc.trud", "qualname": "download_release_file", "kind": "function", "doc": "<p>Download specified file type for a given release of an item.</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">item_id</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">release_ordinal</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">release</span><span class=\"p\">:</span> <span class=\"nb\">dict</span>,</span><span class=\"param\">\t<span class=\"n\">file_json_prefix</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>:</span></span>", "funcdef": "def"}, "acmc.trud.validate_download_hash": {"fullname": "acmc.trud.validate_download_hash", "modulename": "acmc.trud", "qualname": "validate_download_hash", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">file_destination</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">item_hash</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.trud.unzip_download": {"fullname": "acmc.trud.unzip_download", "modulename": "acmc.trud", "qualname": "unzip_download", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">file_destination</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.trud.extract_icd10": {"fullname": "acmc.trud.extract_icd10", "modulename": "acmc.trud", "qualname": "extract_icd10", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.trud.extract_opsc4": {"fullname": "acmc.trud.extract_opsc4", "modulename": "acmc.trud", "qualname": "extract_opsc4", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.trud.extract_nhs_data_migrations": {"fullname": "acmc.trud.extract_nhs_data_migrations", "modulename": "acmc.trud", "qualname": "extract_nhs_data_migrations", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.trud.extract_nhs_read_browser": {"fullname": "acmc.trud.extract_nhs_read_browser", "modulename": "acmc.trud", "qualname": "extract_nhs_read_browser", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.trud.create_map_directories": {"fullname": "acmc.trud.create_map_directories", "modulename": "acmc.trud", "qualname": "create_map_directories", "kind": "function", "doc": "<p>Create map directories.</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.trud.install": {"fullname": "acmc.trud.install", "modulename": "acmc.trud", "qualname": "install", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, "acmc.util": {"fullname": "acmc.util", "modulename": "acmc.util", "kind": "module", "doc": "<p></p>\n"}, "acmc.util.QuotedDumper": {"fullname": "acmc.util.QuotedDumper", "modulename": "acmc.util", "qualname": "QuotedDumper", "kind": "class", "doc": "<p>Custom Dumper to retain quotes on strings in yaml library</p>\n", "bases": "yaml.dumper.Dumper"}, "acmc.util.QuotedDumper.increase_indent": {"fullname": "acmc.util.QuotedDumper.increase_indent", "modulename": "acmc.util", "qualname": "QuotedDumper.increase_indent", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"bp\">self</span>, </span><span class=\"param\"><span class=\"n\">flow</span><span class=\"o\">=</span><span class=\"kc\">False</span>, </span><span class=\"param\"><span class=\"n\">indentless</span><span class=\"o\">=</span><span class=\"kc\">False</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}}, "docInfo": {"acmc": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.logging_config": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 20}, "acmc.logging_config.DEFAULT_LOG_FILE": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 9}, "acmc.logging_config.setup_logger": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 16}, "acmc.logging_config.set_log_level": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 33}, "acmc.main": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 18}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 6}, "acmc.main.main": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "acmc.omop": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "acmc.omop.VOCAB_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 6}, "acmc.omop.OMOP_CDM_Version": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 7}, "acmc.omop.OMOP_DB_FILENAME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 7}, "acmc.omop.DB_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 7}, "acmc.omop.VERSION_FILE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 6}, "acmc.omop.VERSION_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 6}, "acmc.omop.EXPORT_FILE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 8, "signature": 0, "bases": 0, "doc": 7}, "acmc.omop.vocabularies": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 202, "signature": 0, "bases": 0, "doc": 6}, "acmc.omop.omop_vocab_types": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 51, "signature": 0, "bases": 0, "doc": 13}, "acmc.omop.install": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 96}, "acmc.omop.write_version_file": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 33}, "acmc.omop.clear": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 49}, "acmc.omop.delete": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 49}, "acmc.omop.table_exists": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 55}, "acmc.omop.vocab_exists": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 56}, "acmc.omop.concept_set_exist": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 59}, "acmc.omop.export": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 71, "bases": 0, "doc": 104}, "acmc.parse": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 18}, "acmc.parse.SUPPORTED_CODE_TYPES": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 20, "signature": 0, "bases": 0, "doc": 8}, "acmc.parse.CodesError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 17}, "acmc.parse.CodesError.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "acmc.parse.InvalidCodesException": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 17}, "acmc.parse.InvalidCodesException.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "acmc.parse.InvalidCodesException.error": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Proto": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 59}, "acmc.parse.Proto.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "acmc.parse.Proto.checks": {"qualname": 2, "fullname": 4, "annotation": 22, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Proto.name": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Proto.raise_exception": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 36}, "acmc.parse.Proto.in_database": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 93, "bases": 0, "doc": 3}, "acmc.parse.Proto.process": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 85, "bases": 0, "doc": 14}, "acmc.parse.Proto.verify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 7}, "acmc.parse.Read2": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 40}, "acmc.parse.Read2.checks": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Read3": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 59}, "acmc.parse.Read3.checks": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Icd10": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 59}, "acmc.parse.Icd10.checks": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Snomed": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 59}, "acmc.parse.Snomed.checks": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Opcs4": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 59}, "acmc.parse.Opcs4.checks": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Atc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 59}, "acmc.parse.Atc.checks": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Med": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 59}, "acmc.parse.Med.checks": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.Cprd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 59}, "acmc.parse.Cprd.checks": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.parse.CodeTypeParser": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 17}, "acmc.parse.CodeTypeParser.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "acmc.parse.CodeTypeParser.code_types": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.phen": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 15}, "acmc.phen.PHEN_DIR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 6}, "acmc.phen.DEFAULT_PHEN_PATH": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 6}, "acmc.phen.CONCEPTS_DIR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 6}, "acmc.phen.MAP_DIR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 6}, "acmc.phen.CONCEPT_SET_DIR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 7}, "acmc.phen.CSV_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 8}, "acmc.phen.OMOP_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 8}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 12, "signature": 0, "bases": 0, "doc": 7}, "acmc.phen.CONFIG_FILE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 5}, "acmc.phen.VOCAB_VERSION_FILE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 6}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 8}, "acmc.phen.DEFAULT_VERSION_INC": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 7}, "acmc.phen.DEFAULT_GIT_BRANCH": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 7}, "acmc.phen.SPLIT_COL_ACTION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 7}, "acmc.phen.CODES_COL_ACTION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 7}, "acmc.phen.DIVIDE_COL_ACTION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 7}, "acmc.phen.COL_ACTIONS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 14, "signature": 0, "bases": 0, "doc": 8}, "acmc.phen.CODE_FILE_TYPES": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 11}, "acmc.phen.CONFIG_SCHEMA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 392, "signature": 0, "bases": 0, "doc": 7}, "acmc.phen.PhenValidationException": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 13}, "acmc.phen.PhenValidationException.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "acmc.phen.PhenValidationException.validation_errors": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.phen.init": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 11}, "acmc.phen.fork": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 156}, "acmc.phen.validate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 13}, "acmc.phen.translate_codes": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 88, "bases": 0, "doc": 23}, "acmc.phen.write_vocab_version": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "acmc.phen.map": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 3}, "acmc.phen.add_metadata": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 14}, "acmc.phen.publish": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 59, "bases": 0, "doc": 15}, "acmc.phen.export": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 15}, "acmc.phen.copy": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 15}, "acmc.phen.extract_concepts": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 14}, "acmc.phen.diff_config": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "acmc.phen.diff_map_files": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 3}, "acmc.phen.diff_phen": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 96, "bases": 0, "doc": 11}, "acmc.phen.diff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "acmc.trud": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 20}, "acmc.trud.FQDN": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 8, "signature": 0, "bases": 0, "doc": 12}, "acmc.trud.VOCAB_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 16}, "acmc.trud.VERSION_FILE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 5}, "acmc.trud.VERSION_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 9}, "acmc.trud.DOWNLOADS_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 10}, "acmc.trud.PROCESSED_PATH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 10}, "acmc.trud.get_releases": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 13}, "acmc.trud.download_release_file": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 62, "bases": 0, "doc": 14}, "acmc.trud.validate_download_hash": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 3}, "acmc.trud.unzip_download": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 3}, "acmc.trud.extract_icd10": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "acmc.trud.extract_opsc4": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "acmc.trud.extract_nhs_data_migrations": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "acmc.trud.extract_nhs_read_browser": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "acmc.trud.create_map_directories": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 6}, "acmc.trud.install": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "acmc.util": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "acmc.util.QuotedDumper": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 12}, "acmc.util.QuotedDumper.increase_indent": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}}, "length": 118, "save": true}, "index": {"qualname": {"root": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}}, "df": 6}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.delete": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {"acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}}, "df": 2}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"acmc.trud.extract_nhs_data_migrations": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"acmc.phen.PHEN_DIR": {"tf": 1}, "acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.trud.create_map_directories": {"tf": 1}}, "df": 1}}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"acmc.phen.diff_config": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.phen.diff": {"tf": 1}}, "df": 4}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.download_release_file": {"tf": 1}, "acmc.trud.validate_download_hash": {"tf": 1}, "acmc.trud.unzip_download": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.trud.DOWNLOADS_PATH": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}}, "df": 2, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 9, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.OMOP_DB_FILENAME": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"acmc.phen.diff_map_files": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}}, "df": 3, "u": {"docs": {}, "df": 0, "p": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Snomed.checks": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.write_version_file": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 11}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.Proto.checks": {"tf": 1}, "acmc.parse.Proto.name": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.Proto.in_database": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}}, "df": 8}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.process": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.PHEN_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}}, "df": 4, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.PhenValidationException": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.validation_errors": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.main.main": {"tf": 1}}, "df": 1}}, "p": {"docs": {"acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.trud.create_map_directories": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Med": {"tf": 1}, "acmc.parse.Med.checks": {"tf": 1}}, "df": 2}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"acmc.phen.add_metadata": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.trud.extract_nhs_data_migrations": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {"acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}}, "df": 6, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}}, "df": 10}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"acmc.parse.Proto.verify": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.PhenValidationException.validation_errors": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"acmc.phen.validate": {"tf": 1}, "acmc.trud.validate_download_hash": {"tf": 1}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}}, "df": 4}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"4": {"docs": {"acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Opcs4.checks": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}}, "s": {"docs": {}, "df": 0, "c": {"4": {"docs": {"acmc.trud.extract_opsc4": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}}, "c": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.clear": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.concept_set_exist": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}}, "df": 2, "s": {"docs": {"acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}, "acmc.phen.diff_config": {"tf": 1}}, "df": 3}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodesError.__init__": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1}}, "df": 3}}}}}}}}}}}}, "l": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}}, "df": 4}, "p": {"docs": {}, "df": 0, "y": {"docs": {"acmc.phen.copy": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.checks": {"tf": 1}, "acmc.parse.Read2.checks": {"tf": 1}, "acmc.parse.Read3.checks": {"tf": 1}, "acmc.parse.Icd10.checks": {"tf": 1}, "acmc.parse.Snomed.checks": {"tf": 1}, "acmc.parse.Opcs4.checks": {"tf": 1}, "acmc.parse.Atc.checks": {"tf": 1}, "acmc.parse.Med.checks": {"tf": 1}, "acmc.parse.Cprd.checks": {"tf": 1}}, "df": 9}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Cprd": {"tf": 1}, "acmc.parse.Cprd.checks": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"acmc.phen.CSV_PATH": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.create_map_directories": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.phen.export": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.concept_set_exist": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}}, "df": 2}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.extract_concepts": {"tf": 1}, "acmc.trud.extract_icd10": {"tf": 1}, "acmc.trud.extract_opsc4": {"tf": 1}, "acmc.trud.extract_nhs_data_migrations": {"tf": 1}, "acmc.trud.extract_nhs_read_browser": {"tf": 1}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.InvalidCodesException.error": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.phen.PhenValidationException.validation_errors": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.table_exists": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.translate_codes": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.trud.install": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}, "acmc.phen.init": {"tf": 1}}, "df": 6}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException.error": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}}}, "c": {"docs": {"acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "d": {"1": {"0": {"docs": {"acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Icd10.checks": {"tf": 1}, "acmc.trud.extract_icd10": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.name": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "s": {"docs": {"acmc.trud.extract_nhs_data_migrations": {"tf": 1}, "acmc.trud.extract_nhs_read_browser": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"2": {"docs": {"acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read2.checks": {"tf": 1}}, "df": 2}, "3": {"docs": {"acmc.parse.Read3": {"tf": 1}, "acmc.parse.Read3.checks": {"tf": 1}}, "df": 2}, "docs": {"acmc.trud.extract_nhs_read_browser": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.download_release_file": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {"acmc.parse.Atc": {"tf": 1}, "acmc.parse.Atc.checks": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.phen.COL_ACTIONS": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.add_metadata": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.trud.extract_nhs_read_browser": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"acmc.trud.validate_download_hash": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"acmc.trud.unzip_download": {"tf": 1}}, "df": 1}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}, "acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "fullname": {"root": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "c": {"docs": {"acmc": {"tf": 1}, "acmc.logging_config": {"tf": 1}, "acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}, "acmc.main": {"tf": 1}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.main.main": {"tf": 1}, "acmc.omop": {"tf": 1}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.OMOP_CDM_Version": {"tf": 1}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.vocabularies": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.omop.install": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.parse": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException.error": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.Proto.checks": {"tf": 1}, "acmc.parse.Proto.name": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.Proto.in_database": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read2.checks": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Read3.checks": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Icd10.checks": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Snomed.checks": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Opcs4.checks": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Atc.checks": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Med.checks": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.parse.Cprd.checks": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1}, "acmc.phen": {"tf": 1}, "acmc.phen.PHEN_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}, "acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.validation_errors": {"tf": 1}, "acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.publish": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}, "acmc.phen.diff_config": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.phen.diff": {"tf": 1}, "acmc.trud": {"tf": 1}, "acmc.trud.FQDN": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}, "acmc.trud.validate_download_hash": {"tf": 1}, "acmc.trud.unzip_download": {"tf": 1}, "acmc.trud.extract_icd10": {"tf": 1}, "acmc.trud.extract_opsc4": {"tf": 1}, "acmc.trud.extract_nhs_data_migrations": {"tf": 1}, "acmc.trud.extract_nhs_read_browser": {"tf": 1}, "acmc.trud.create_map_directories": {"tf": 1}, "acmc.trud.install": {"tf": 1}, "acmc.util": {"tf": 1}, "acmc.util.QuotedDumper": {"tf": 1}, "acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 118}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.phen.COL_ACTIONS": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {"acmc.parse.Atc": {"tf": 1}, "acmc.parse.Atc.checks": {"tf": 1}}, "df": 2}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.add_metadata": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}}, "df": 2, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}, "acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}, "acmc.phen.diff_config": {"tf": 1}}, "df": 7}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.concept_set_exist": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}}, "df": 2, "s": {"docs": {"acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodesError.__init__": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1}}, "df": 3}}}}}}}}}}}}, "l": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}}, "df": 4}, "p": {"docs": {}, "df": 0, "y": {"docs": {"acmc.phen.copy": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.clear": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.checks": {"tf": 1}, "acmc.parse.Read2.checks": {"tf": 1}, "acmc.parse.Read3.checks": {"tf": 1}, "acmc.parse.Icd10.checks": {"tf": 1}, "acmc.parse.Snomed.checks": {"tf": 1}, "acmc.parse.Opcs4.checks": {"tf": 1}, "acmc.parse.Atc.checks": {"tf": 1}, "acmc.parse.Med.checks": {"tf": 1}, "acmc.parse.Cprd.checks": {"tf": 1}}, "df": 9}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Cprd": {"tf": 1}, "acmc.parse.Cprd.checks": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"acmc.phen.CSV_PATH": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.create_map_directories": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}}, "df": 6}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.delete": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {"acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}}, "df": 2}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"acmc.trud.extract_nhs_data_migrations": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"acmc.phen.PHEN_DIR": {"tf": 1}, "acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.trud.create_map_directories": {"tf": 1}}, "df": 1}}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"acmc.phen.diff_config": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.phen.diff": {"tf": 1}}, "df": 4}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.download_release_file": {"tf": 1}, "acmc.trud.validate_download_hash": {"tf": 1}, "acmc.trud.unzip_download": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.trud.DOWNLOADS_PATH": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 9, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.OMOP_DB_FILENAME": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"acmc.phen.diff_map_files": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}}, "df": 3, "u": {"docs": {}, "df": 0, "p": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Snomed.checks": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.main": {"tf": 1}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.main.main": {"tf": 1.4142135623730951}}, "df": 3}}, "p": {"docs": {"acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.trud.create_map_directories": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Med": {"tf": 1}, "acmc.parse.Med.checks": {"tf": 1}}, "df": 2}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"acmc.phen.add_metadata": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.trud.extract_nhs_data_migrations": {"tf": 1}}, "df": 1}}}}}}}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.write_version_file": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 11}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException.error": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.Proto.checks": {"tf": 1}, "acmc.parse.Proto.name": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.Proto.in_database": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read2.checks": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Read3.checks": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Icd10.checks": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Snomed.checks": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Opcs4.checks": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Atc.checks": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Med.checks": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.parse.Cprd.checks": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1}}, "df": 34}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.Proto.checks": {"tf": 1}, "acmc.parse.Proto.name": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.Proto.in_database": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}}, "df": 8}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.process": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen": {"tf": 1}, "acmc.phen.PHEN_DIR": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1.4142135623730951}, "acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1.4142135623730951}, "acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}, "acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.validation_errors": {"tf": 1}, "acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.publish": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}, "acmc.phen.diff_config": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1.4142135623730951}, "acmc.phen.diff": {"tf": 1}}, "df": 38, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.PhenValidationException": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.validation_errors": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop": {"tf": 1}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.OMOP_CDM_Version": {"tf": 1.4142135623730951}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1.4142135623730951}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.vocabularies": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1.4142135623730951}, "acmc.omop.install": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}}, "df": 19}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"4": {"docs": {"acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Opcs4.checks": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}}, "s": {"docs": {}, "df": 0, "c": {"4": {"docs": {"acmc.trud.extract_opsc4": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {"acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}}, "df": 6, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}}, "df": 10}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"acmc.parse.Proto.verify": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.PhenValidationException.validation_errors": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"acmc.phen.validate": {"tf": 1}, "acmc.trud.validate_download_hash": {"tf": 1}}, "df": 2}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.phen.export": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.concept_set_exist": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}}, "df": 2}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.extract_concepts": {"tf": 1}, "acmc.trud.extract_icd10": {"tf": 1}, "acmc.trud.extract_opsc4": {"tf": 1}, "acmc.trud.extract_nhs_data_migrations": {"tf": 1}, "acmc.trud.extract_nhs_read_browser": {"tf": 1}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.InvalidCodesException.error": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.phen.PhenValidationException.validation_errors": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.table_exists": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.translate_codes": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud": {"tf": 1}, "acmc.trud.FQDN": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}, "acmc.trud.validate_download_hash": {"tf": 1}, "acmc.trud.unzip_download": {"tf": 1}, "acmc.trud.extract_icd10": {"tf": 1}, "acmc.trud.extract_opsc4": {"tf": 1}, "acmc.trud.extract_nhs_data_migrations": {"tf": 1}, "acmc.trud.extract_nhs_read_browser": {"tf": 1}, "acmc.trud.create_map_directories": {"tf": 1}, "acmc.trud.install": {"tf": 1}}, "df": 17}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.trud.install": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}, "acmc.phen.init": {"tf": 1}}, "df": 6}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1}, "acmc.parse.InvalidCodesException.error": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}}}, "c": {"docs": {"acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "d": {"1": {"0": {"docs": {"acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Icd10.checks": {"tf": 1}, "acmc.trud.extract_icd10": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.name": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "s": {"docs": {"acmc.trud.extract_nhs_data_migrations": {"tf": 1}, "acmc.trud.extract_nhs_read_browser": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"2": {"docs": {"acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read2.checks": {"tf": 1}}, "df": 2}, "3": {"docs": {"acmc.parse.Read3": {"tf": 1}, "acmc.parse.Read3.checks": {"tf": 1}}, "df": 2}, "docs": {"acmc.trud.extract_nhs_read_browser": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.download_release_file": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.trud.extract_nhs_read_browser": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"acmc.trud.validate_download_hash": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"acmc.trud.unzip_download": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"acmc.util": {"tf": 1}, "acmc.util.QuotedDumper": {"tf": 1}, "acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 3}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}, "acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "annotation": {"root": {"docs": {"acmc.parse.Proto.checks": {"tf": 1}, "acmc.parse.Proto.name": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.Proto.checks": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.parse.Proto.checks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.checks": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.checks": {"tf": 2}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.checks": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.checks": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.checks": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"acmc.parse.Proto.checks": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"acmc.parse.Proto.checks": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.checks": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.Proto.name": {"tf": 1}}, "df": 1}}}}}, "default_value": {"root": {"1": {"4": {"4": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "5": {"4": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "5": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "7": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "2": {"1": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "5": {"4": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.vocabularies": {"tf": 1}}, "df": 5}, "5": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "7": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "7": {"0": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "5": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1.4142135623730951}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.OMOP_CDM_Version": {"tf": 1.4142135623730951}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1.4142135623730951}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1.4142135623730951}, "acmc.omop.vocabularies": {"tf": 7.211102550927978}, "acmc.omop.omop_vocab_types": {"tf": 3}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1.4142135623730951}, "acmc.phen.PHEN_DIR": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.CONCEPTS_DIR": {"tf": 1.4142135623730951}, "acmc.phen.MAP_DIR": {"tf": 1.4142135623730951}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1.4142135623730951}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1.4142135623730951}, "acmc.phen.CONFIG_FILE": {"tf": 1.4142135623730951}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1.4142135623730951}, "acmc.phen.SPLIT_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.CODES_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.COL_ACTIONS": {"tf": 1.4142135623730951}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1.4142135623730951}, "acmc.phen.CONFIG_SCHEMA": {"tf": 9.899494936611665}, "acmc.trud.FQDN": {"tf": 1.4142135623730951}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 37, "x": {"2": {"7": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1.4142135623730951}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1.4142135623730951}, "acmc.omop.VOCAB_PATH": {"tf": 1.4142135623730951}, "acmc.omop.OMOP_CDM_Version": {"tf": 1.4142135623730951}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1.4142135623730951}, "acmc.omop.DB_PATH": {"tf": 1.4142135623730951}, "acmc.omop.VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.omop.VERSION_PATH": {"tf": 1.4142135623730951}, "acmc.omop.EXPORT_FILE": {"tf": 1.4142135623730951}, "acmc.omop.vocabularies": {"tf": 9.273618495495704}, "acmc.omop.omop_vocab_types": {"tf": 5.0990195135927845}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 3.4641016151377544}, "acmc.phen.PHEN_DIR": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1.4142135623730951}, "acmc.phen.CONCEPTS_DIR": {"tf": 1.4142135623730951}, "acmc.phen.MAP_DIR": {"tf": 1.4142135623730951}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1.4142135623730951}, "acmc.phen.CSV_PATH": {"tf": 1.4142135623730951}, "acmc.phen.OMOP_PATH": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 2.449489742783178}, "acmc.phen.CONFIG_FILE": {"tf": 1.4142135623730951}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 2.449489742783178}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1.4142135623730951}, "acmc.phen.SPLIT_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.CODES_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.COL_ACTIONS": {"tf": 2.449489742783178}, "acmc.phen.CODE_FILE_TYPES": {"tf": 2.449489742783178}, "acmc.phen.CONFIG_SCHEMA": {"tf": 13.490737563232042}, "acmc.trud.FQDN": {"tf": 1.4142135623730951}, "acmc.trud.VOCAB_PATH": {"tf": 1.4142135623730951}, "acmc.trud.VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.trud.VERSION_PATH": {"tf": 1.4142135623730951}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1.4142135623730951}, "acmc.trud.PROCESSED_PATH": {"tf": 1.4142135623730951}}, "df": 37}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 1, "x": {"docs": {"acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "c": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {"acmc.omop.vocabularies": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1.4142135623730951}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 4}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1.7320508075688772}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 11}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.PHEN_DIR": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}}, "df": 2}}, "h": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {"acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop.VOCAB_PATH": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}}, "df": 2}}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.VOCAB_PATH": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.VERSION_PATH": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"acmc.trud.DOWNLOADS_PATH": {"tf": 1}}, "df": 1}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.vocabularies": {"tf": 1.4142135623730951}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}}, "df": 7}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 4}}}, "h": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {"acmc.omop.vocabularies": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"4": {"docs": {"acmc.omop.vocabularies": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1.4142135623730951}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 4}, "docs": {}, "df": 0}}}, "f": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}}, "df": 3}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.vocabularies": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1.4142135623730951}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 4}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 3, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"acmc.phen.CSV_PATH": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.phen.OMOP_PATH": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 2.8284271247461903}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 3.3166247903554}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}}, "df": 6}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.EXPORT_FILE": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}, "k": {"docs": {"acmc.omop.vocabularies": {"tf": 1}, "acmc.trud.FQDN": {"tf": 1}}, "df": 2}}, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"acmc.omop.vocabularies": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 5, "s": {"docs": {"acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"acmc.phen.CONFIG_FILE": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1.7320508075688772}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1.7320508075688772}}, "df": 5, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 3}}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.vocabularies": {"tf": 3.3166247903554}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 2}, "c": {"docs": {}, "df": 0, "d": {"1": {"0": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "m": {"docs": {"acmc.omop.vocabularies": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}}, "df": 2}}}, "docs": {}, "df": 0}, "9": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "m": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}, "docs": {}, "df": 0}}, "s": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.vocabularies": {"tf": 3.3166247903554}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1.4142135623730951}}, "df": 2}}}, "h": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.vocabularies": {"tf": 1.4142135623730951}, "acmc.trud.FQDN": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1.7320508075688772}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"2": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 3}, "3": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 3}, "docs": {"acmc.omop.omop_vocab_types": {"tf": 1}}, "df": 1, "v": {"2": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 3.4641016151377544}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1.4142135623730951}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "+": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 3}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 2.6457513110645907}}, "df": 1}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 4.58257569495584}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 3.3166247903554}}, "df": 1}, "d": {"docs": {"acmc.trud.VERSION_FILE": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {"acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 3}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}}, "signature": {"root": {"2": {"0": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"9": {"docs": {"acmc.parse.CodeTypeParser.__init__": {"tf": 1.4142135623730951}, "acmc.phen.publish": {"tf": 1.4142135623730951}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"acmc.logging_config.setup_logger": {"tf": 4.47213595499958}, "acmc.logging_config.set_log_level": {"tf": 3.7416573867739413}, "acmc.main.main": {"tf": 2.6457513110645907}, "acmc.omop.install": {"tf": 4.69041575982343}, "acmc.omop.write_version_file": {"tf": 3.7416573867739413}, "acmc.omop.clear": {"tf": 4.242640687119285}, "acmc.omop.delete": {"tf": 4.242640687119285}, "acmc.omop.table_exists": {"tf": 5.291502622129181}, "acmc.omop.vocab_exists": {"tf": 5.291502622129181}, "acmc.omop.concept_set_exist": {"tf": 5.291502622129181}, "acmc.omop.export": {"tf": 7.483314773547883}, "acmc.parse.CodesError.__init__": {"tf": 6.324555320336759}, "acmc.parse.InvalidCodesException.__init__": {"tf": 2.8284271247461903}, "acmc.parse.Proto.__init__": {"tf": 5.916079783099616}, "acmc.parse.Proto.raise_exception": {"tf": 4.242640687119285}, "acmc.parse.Proto.in_database": {"tf": 8.717797887081348}, "acmc.parse.Proto.process": {"tf": 8.306623862918075}, "acmc.parse.Proto.verify": {"tf": 6.48074069840786}, "acmc.parse.CodeTypeParser.__init__": {"tf": 5.5677643628300215}, "acmc.phen.PhenValidationException.__init__": {"tf": 4}, "acmc.phen.init": {"tf": 4.69041575982343}, "acmc.phen.fork": {"tf": 6.48074069840786}, "acmc.phen.validate": {"tf": 3.7416573867739413}, "acmc.phen.translate_codes": {"tf": 8.246211251235321}, "acmc.phen.write_vocab_version": {"tf": 4.242640687119285}, "acmc.phen.map": {"tf": 6.48074069840786}, "acmc.phen.add_metadata": {"tf": 7.681145747868608}, "acmc.phen.publish": {"tf": 6.782329983125268}, "acmc.phen.export": {"tf": 4.69041575982343}, "acmc.phen.copy": {"tf": 5.477225575051661}, "acmc.phen.extract_concepts": {"tf": 5.385164807134504}, "acmc.phen.diff_config": {"tf": 4.898979485566356}, "acmc.phen.diff_map_files": {"tf": 5.656854249492381}, "acmc.phen.diff_phen": {"tf": 8.48528137423857}, "acmc.phen.diff": {"tf": 7.14142842854285}, "acmc.trud.get_releases": {"tf": 5.656854249492381}, "acmc.trud.download_release_file": {"tf": 6.928203230275509}, "acmc.trud.validate_download_hash": {"tf": 4.69041575982343}, "acmc.trud.unzip_download": {"tf": 3.7416573867739413}, "acmc.trud.extract_icd10": {"tf": 2.6457513110645907}, "acmc.trud.extract_opsc4": {"tf": 2.6457513110645907}, "acmc.trud.extract_nhs_data_migrations": {"tf": 2.6457513110645907}, "acmc.trud.extract_nhs_read_browser": {"tf": 2.6457513110645907}, "acmc.trud.create_map_directories": {"tf": 2.6457513110645907}, "acmc.trud.install": {"tf": 2.6457513110645907}, "acmc.util.QuotedDumper.increase_indent": {"tf": 5.0990195135927845}}, "df": 46, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.Proto.process": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}}, "df": 2}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {"acmc.omop.vocab_exists": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 3}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"acmc.trud.get_releases": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}, "acmc.trud.validate_download_hash": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.omop.export": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.parse.Proto.__init__": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.trud.download_release_file": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.diff_config": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1.4142135623730951}, "acmc.phen.diff": {"tf": 1.4142135623730951}}, "df": 4}}}, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop.install": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}, "acmc.trud.validate_download_hash": {"tf": 1}, "acmc.trud.unzip_download": {"tf": 1}}, "df": 7}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1.7320508075688772}, "acmc.parse.Proto.process": {"tf": 1.4142135623730951}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}, "acmc.phen.add_metadata": {"tf": 1.4142135623730951}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.get_releases": {"tf": 1}, "acmc.util.QuotedDumper.increase_indent": {"tf": 1.4142135623730951}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.Proto.in_database": {"tf": 1}, "acmc.phen.init": {"tf": 1.4142135623730951}, "acmc.phen.fork": {"tf": 2}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}, "acmc.phen.map": {"tf": 1.4142135623730951}, "acmc.phen.publish": {"tf": 2}, "acmc.phen.export": {"tf": 1.4142135623730951}, "acmc.phen.copy": {"tf": 1.7320508075688772}, "acmc.phen.extract_concepts": {"tf": 1}, "acmc.phen.diff_config": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1.4142135623730951}, "acmc.phen.diff": {"tf": 2}, "acmc.trud.get_releases": {"tf": 1.4142135623730951}, "acmc.trud.download_release_file": {"tf": 1.7320508075688772}, "acmc.trud.validate_download_hash": {"tf": 1.4142135623730951}, "acmc.trud.unzip_download": {"tf": 1}}, "df": 25}}, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"3": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.concept_set_exist": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 2}, "l": {"docs": {}, "df": 0, "f": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.Proto.in_database": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.util.QuotedDumper.increase_indent": {"tf": 1}}, "df": 5}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.translate_codes": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1.4142135623730951}, "acmc.phen.diff": {"tf": 1.4142135623730951}}, "df": 8}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {"acmc.omop.vocab_exists": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.CodeTypeParser.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.PhenValidationException.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {}, "df": 0, "b": {"docs": {"acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.parse.Proto.in_database": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.export": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1.4142135623730951}, "acmc.phen.diff_config": {"tf": 1.4142135623730951}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 5}}, "r": {"docs": {"acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.publish": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1.4142135623730951}, "acmc.phen.diff": {"tf": 1.4142135623730951}}, "df": 9}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"acmc.phen.extract_concepts": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1.7320508075688772}, "acmc.parse.Proto.process": {"tf": 1.4142135623730951}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}, "acmc.phen.add_metadata": {"tf": 1.4142135623730951}}, "df": 5}}}}}}}}, "f": {"docs": {"acmc.phen.translate_codes": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud.validate_download_hash": {"tf": 1}, "acmc.trud.unzip_download": {"tf": 1}}, "df": 2}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"acmc.omop.clear": {"tf": 1.4142135623730951}, "acmc.omop.delete": {"tf": 1.4142135623730951}, "acmc.omop.export": {"tf": 2.23606797749979}, "acmc.parse.Proto.__init__": {"tf": 1.4142135623730951}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1.4142135623730951}, "acmc.phen.diff_map_files": {"tf": 2}, "acmc.phen.diff_phen": {"tf": 2.449489742783178}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 11, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.omop.export": {"tf": 1.7320508075688772}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1.4142135623730951}, "acmc.phen.diff_phen": {"tf": 1.7320508075688772}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 11}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1.7320508075688772}, "acmc.parse.Proto.process": {"tf": 1.4142135623730951}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}, "acmc.phen.add_metadata": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.CodeTypeParser.__init__": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"acmc.trud.download_release_file": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"acmc.parse.CodeTypeParser.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.write_vocab_version": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.publish": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1.4142135623730951}, "acmc.phen.diff": {"tf": 1.4142135623730951}}, "df": 10}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.table_exists": {"tf": 1.4142135623730951}, "acmc.omop.vocab_exists": {"tf": 1.4142135623730951}, "acmc.omop.concept_set_exist": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.concept_set_exist": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"acmc.phen.extract_concepts": {"tf": 1}, "acmc.phen.diff_config": {"tf": 1.4142135623730951}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.phen.diff": {"tf": 1}}, "df": 4}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.map": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1.4142135623730951}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.Proto.in_database": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1.4142135623730951}, "acmc.parse.Proto.verify": {"tf": 1.4142135623730951}, "acmc.phen.add_metadata": {"tf": 1}}, "df": 6}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1.7320508075688772}, "acmc.parse.Proto.process": {"tf": 1.4142135623730951}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}, "acmc.phen.add_metadata": {"tf": 1.4142135623730951}}, "df": 5}}, "l": {"docs": {"acmc.parse.Proto.in_database": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"acmc.phen.diff_phen": {"tf": 1}, "acmc.phen.diff": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.table_exists": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.copy": {"tf": 1}}, "df": 3}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.map": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Proto.__init__": {"tf": 1}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.map": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.process": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}}, "df": 4}}}, "o": {"docs": {"acmc.phen.map": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 2}, "acmc.parse.Proto.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}}, "df": 3}}, "t": {"docs": {"acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.phen.diff": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"acmc.phen.fork": {"tf": 1}, "acmc.phen.diff_config": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1.4142135623730951}}, "df": 4}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.map": {"tf": 1.4142135623730951}, "acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.phen.diff": {"tf": 1}}, "df": 8}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop.export": {"tf": 1}, "acmc.phen.diff_map_files": {"tf": 1.4142135623730951}}, "df": 2}, "s": {"docs": {}, "df": 0, "k": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"acmc.omop.export": {"tf": 1}, "acmc.phen.map": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.CodesError.__init__": {"tf": 1}, "acmc.phen.PhenValidationException.__init__": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "g": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.export": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.parse.InvalidCodesException.__init__": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.phen.PhenValidationException.__init__": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.init": {"tf": 1}, "acmc.phen.publish": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.diff_phen": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.download_release_file": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1.4142135623730951}, "acmc.phen.publish": {"tf": 1}}, "df": 3}}, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"acmc.phen.fork": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud.download_release_file": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"acmc.trud.validate_download_hash": {"tf": 1}}, "df": 1}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 2}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 2}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}}}, "y": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.util.QuotedDumper": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "doc": {"root": {"3": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}, "docs": {"acmc": {"tf": 1.7320508075688772}, "acmc.logging_config": {"tf": 2.23606797749979}, "acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1.7320508075688772}, "acmc.logging_config.setup_logger": {"tf": 1.7320508075688772}, "acmc.logging_config.set_log_level": {"tf": 3.7416573867739413}, "acmc.main": {"tf": 2}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1.4142135623730951}, "acmc.main.main": {"tf": 1.7320508075688772}, "acmc.omop": {"tf": 2.23606797749979}, "acmc.omop.VOCAB_PATH": {"tf": 1.4142135623730951}, "acmc.omop.OMOP_CDM_Version": {"tf": 1.4142135623730951}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1.4142135623730951}, "acmc.omop.DB_PATH": {"tf": 1.4142135623730951}, "acmc.omop.VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.omop.VERSION_PATH": {"tf": 1.4142135623730951}, "acmc.omop.EXPORT_FILE": {"tf": 1.4142135623730951}, "acmc.omop.vocabularies": {"tf": 1.4142135623730951}, "acmc.omop.omop_vocab_types": {"tf": 1.4142135623730951}, "acmc.omop.install": {"tf": 6.082762530298219}, "acmc.omop.write_version_file": {"tf": 3.605551275463989}, "acmc.omop.clear": {"tf": 4.795831523312719}, "acmc.omop.delete": {"tf": 4.795831523312719}, "acmc.omop.table_exists": {"tf": 5.0990195135927845}, "acmc.omop.vocab_exists": {"tf": 5.0990195135927845}, "acmc.omop.concept_set_exist": {"tf": 5.0990195135927845}, "acmc.omop.export": {"tf": 6}, "acmc.parse": {"tf": 2}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1.4142135623730951}, "acmc.parse.CodesError": {"tf": 1.4142135623730951}, "acmc.parse.CodesError.__init__": {"tf": 1.7320508075688772}, "acmc.parse.InvalidCodesException": {"tf": 1.4142135623730951}, "acmc.parse.InvalidCodesException.__init__": {"tf": 1.7320508075688772}, "acmc.parse.InvalidCodesException.error": {"tf": 1.7320508075688772}, "acmc.parse.Proto": {"tf": 3.872983346207417}, "acmc.parse.Proto.__init__": {"tf": 1.7320508075688772}, "acmc.parse.Proto.checks": {"tf": 1.7320508075688772}, "acmc.parse.Proto.name": {"tf": 1.7320508075688772}, "acmc.parse.Proto.raise_exception": {"tf": 1.4142135623730951}, "acmc.parse.Proto.in_database": {"tf": 1.7320508075688772}, "acmc.parse.Proto.process": {"tf": 1.4142135623730951}, "acmc.parse.Proto.verify": {"tf": 1.4142135623730951}, "acmc.parse.Read2": {"tf": 1.7320508075688772}, "acmc.parse.Read2.checks": {"tf": 1.7320508075688772}, "acmc.parse.Read3": {"tf": 3.872983346207417}, "acmc.parse.Read3.checks": {"tf": 1.7320508075688772}, "acmc.parse.Icd10": {"tf": 3.872983346207417}, "acmc.parse.Icd10.checks": {"tf": 1.7320508075688772}, "acmc.parse.Snomed": {"tf": 3.872983346207417}, "acmc.parse.Snomed.checks": {"tf": 1.7320508075688772}, "acmc.parse.Opcs4": {"tf": 3.872983346207417}, "acmc.parse.Opcs4.checks": {"tf": 1.7320508075688772}, "acmc.parse.Atc": {"tf": 3.872983346207417}, "acmc.parse.Atc.checks": {"tf": 1.7320508075688772}, "acmc.parse.Med": {"tf": 3.872983346207417}, "acmc.parse.Med.checks": {"tf": 1.7320508075688772}, "acmc.parse.Cprd": {"tf": 3.872983346207417}, "acmc.parse.Cprd.checks": {"tf": 1.7320508075688772}, "acmc.parse.CodeTypeParser": {"tf": 1.4142135623730951}, "acmc.parse.CodeTypeParser.__init__": {"tf": 1.7320508075688772}, "acmc.parse.CodeTypeParser.code_types": {"tf": 1.7320508075688772}, "acmc.phen": {"tf": 2.23606797749979}, "acmc.phen.PHEN_DIR": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1.4142135623730951}, "acmc.phen.CONCEPTS_DIR": {"tf": 1.4142135623730951}, "acmc.phen.MAP_DIR": {"tf": 1.4142135623730951}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1.4142135623730951}, "acmc.phen.CSV_PATH": {"tf": 1.4142135623730951}, "acmc.phen.OMOP_PATH": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1.4142135623730951}, "acmc.phen.CONFIG_FILE": {"tf": 1.4142135623730951}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1.4142135623730951}, "acmc.phen.SPLIT_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.CODES_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1.4142135623730951}, "acmc.phen.COL_ACTIONS": {"tf": 1.4142135623730951}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1.4142135623730951}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1.4142135623730951}, "acmc.phen.PhenValidationException": {"tf": 1.4142135623730951}, "acmc.phen.PhenValidationException.__init__": {"tf": 1.7320508075688772}, "acmc.phen.PhenValidationException.validation_errors": {"tf": 1.7320508075688772}, "acmc.phen.init": {"tf": 1.4142135623730951}, "acmc.phen.fork": {"tf": 6.928203230275509}, "acmc.phen.validate": {"tf": 1.4142135623730951}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}, "acmc.phen.write_vocab_version": {"tf": 1.7320508075688772}, "acmc.phen.map": {"tf": 1.7320508075688772}, "acmc.phen.add_metadata": {"tf": 1.4142135623730951}, "acmc.phen.publish": {"tf": 1.4142135623730951}, "acmc.phen.export": {"tf": 1.4142135623730951}, "acmc.phen.copy": {"tf": 1.4142135623730951}, "acmc.phen.extract_concepts": {"tf": 1.7320508075688772}, "acmc.phen.diff_config": {"tf": 1.7320508075688772}, "acmc.phen.diff_map_files": {"tf": 1.7320508075688772}, "acmc.phen.diff_phen": {"tf": 1.4142135623730951}, "acmc.phen.diff": {"tf": 1.7320508075688772}, "acmc.trud": {"tf": 2.23606797749979}, "acmc.trud.FQDN": {"tf": 1.4142135623730951}, "acmc.trud.VOCAB_PATH": {"tf": 1.4142135623730951}, "acmc.trud.VERSION_FILE": {"tf": 1.4142135623730951}, "acmc.trud.VERSION_PATH": {"tf": 1.4142135623730951}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1.4142135623730951}, "acmc.trud.PROCESSED_PATH": {"tf": 1.4142135623730951}, "acmc.trud.get_releases": {"tf": 1.7320508075688772}, "acmc.trud.download_release_file": {"tf": 1.7320508075688772}, "acmc.trud.validate_download_hash": {"tf": 1.7320508075688772}, "acmc.trud.unzip_download": {"tf": 1.7320508075688772}, "acmc.trud.extract_icd10": {"tf": 1.7320508075688772}, "acmc.trud.extract_opsc4": {"tf": 1.7320508075688772}, "acmc.trud.extract_nhs_data_migrations": {"tf": 1.7320508075688772}, "acmc.trud.extract_nhs_read_browser": {"tf": 1.7320508075688772}, "acmc.trud.create_map_directories": {"tf": 1.7320508075688772}, "acmc.trud.install": {"tf": 1.7320508075688772}, "acmc.util": {"tf": 1.7320508075688772}, "acmc.util.QuotedDumper": {"tf": 1.4142135623730951}, "acmc.util.QuotedDumper.increase_indent": {"tf": 1.7320508075688772}}, "df": 118, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1.7320508075688772}}, "df": 2, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config": {"tf": 1.4142135623730951}, "acmc.logging_config.set_log_level": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}}, "df": 2}, "d": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}, "s": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.phen.fork": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1.7320508075688772}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}}, "df": 1}, "y": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"acmc.main": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1.4142135623730951}, "acmc.phen.translate_codes": {"tf": 1}}, "df": 14}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 2, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 2}}}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.concept_set_exist": {"tf": 2}, "acmc.omop.export": {"tf": 1.4142135623730951}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1.4142135623730951}}, "df": 8, "s": {"docs": {"acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.omop.export": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto": {"tf": 2}, "acmc.parse.Read3": {"tf": 2}, "acmc.parse.Icd10": {"tf": 2}, "acmc.parse.Snomed": {"tf": 2}, "acmc.parse.Opcs4": {"tf": 2}, "acmc.parse.Atc": {"tf": 2}, "acmc.parse.Med": {"tf": 2}, "acmc.parse.Cprd": {"tf": 2}}, "df": 8}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.translate_codes": {"tf": 1}}, "df": 1}}}}}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"acmc.main": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.diff_phen": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}}, "df": 4}}}, "e": {"docs": {"acmc.parse": {"tf": 1}, "acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}}, "df": 4, "s": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1.4142135623730951}, "acmc.parse.Read2": {"tf": 1.4142135623730951}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}}, "df": 4}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}}, "df": 4}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.copy": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.export": {"tf": 1.7320508075688772}, "acmc.phen.CSV_PATH": {"tf": 1}}, "df": 3}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.clear": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1, "d": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"acmc.omop.table_exists": {"tf": 1.4142135623730951}, "acmc.omop.vocab_exists": {"tf": 1.4142135623730951}, "acmc.omop.concept_set_exist": {"tf": 1.4142135623730951}, "acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}}, "df": 5, "s": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 9}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8, "s": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.table_exists": {"tf": 1.7320508075688772}, "acmc.omop.vocab_exists": {"tf": 1.7320508075688772}, "acmc.omop.concept_set_exist": {"tf": 1.7320508075688772}}, "df": 3}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}, "acmc.util.QuotedDumper": {"tf": 1}}, "df": 4}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.create_map_directories": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.main": {"tf": 1}, "acmc.omop": {"tf": 1}, "acmc.parse": {"tf": 1}, "acmc.phen": {"tf": 1}, "acmc.trud": {"tf": 1}}, "df": 6, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.main": {"tf": 1}, "acmc.omop": {"tf": 1}, "acmc.parse": {"tf": 1}, "acmc.phen": {"tf": 1}, "acmc.trud": {"tf": 1}}, "df": 5}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto": {"tf": 1.4142135623730951}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Read3": {"tf": 1.4142135623730951}, "acmc.parse.Icd10": {"tf": 1.4142135623730951}, "acmc.parse.Snomed": {"tf": 1.4142135623730951}, "acmc.parse.Opcs4": {"tf": 1.4142135623730951}, "acmc.parse.Atc": {"tf": 1.4142135623730951}, "acmc.parse.Med": {"tf": 1.4142135623730951}, "acmc.parse.Cprd": {"tf": 1.4142135623730951}}, "df": 9, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}}, "df": 4}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.fork": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}}, "df": 3, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.omop.export": {"tf": 1.4142135623730951}, "acmc.phen": {"tf": 1}, "acmc.phen.PHEN_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}, "acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1.4142135623730951}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.publish": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}}, "df": 14, "s": {"docs": {"acmc.phen": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.clear": {"tf": 1.7320508075688772}, "acmc.omop.delete": {"tf": 1.7320508075688772}, "acmc.omop.export": {"tf": 2.8284271247461903}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 16}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse": {"tf": 1}}, "df": 1, "r": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.process": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.main": {"tf": 1}, "acmc.omop": {"tf": 1}, "acmc.parse": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.phen": {"tf": 1}, "acmc.trud": {"tf": 1}}, "df": 7}}, "e": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1.7320508075688772}, "acmc.main": {"tf": 1.4142135623730951}, "acmc.omop.install": {"tf": 2}, "acmc.omop.write_version_file": {"tf": 1.4142135623730951}, "acmc.omop.clear": {"tf": 2}, "acmc.omop.delete": {"tf": 2}, "acmc.omop.table_exists": {"tf": 1.4142135623730951}, "acmc.omop.vocab_exists": {"tf": 1.4142135623730951}, "acmc.omop.concept_set_exist": {"tf": 1.4142135623730951}, "acmc.omop.export": {"tf": 2}, "acmc.parse.Proto": {"tf": 1.4142135623730951}, "acmc.parse.Read2": {"tf": 1.4142135623730951}, "acmc.parse.Read3": {"tf": 1.4142135623730951}, "acmc.parse.Icd10": {"tf": 1.4142135623730951}, "acmc.parse.Snomed": {"tf": 1.4142135623730951}, "acmc.parse.Opcs4": {"tf": 1.4142135623730951}, "acmc.parse.Atc": {"tf": 1.4142135623730951}, "acmc.parse.Med": {"tf": 1.4142135623730951}, "acmc.parse.Cprd": {"tf": 1.4142135623730951}, "acmc.phen.fork": {"tf": 2.8284271247461903}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.publish": {"tf": 1.4142135623730951}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.trud": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1.7320508075688772}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}}, "df": 31, "m": {"docs": {"acmc.parse.Proto.process": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 11}}}, "o": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.logging_config.setup_logger": {"tf": 1}, "acmc.omop": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.omop.table_exists": {"tf": 1.4142135623730951}, "acmc.omop.vocab_exists": {"tf": 1.4142135623730951}, "acmc.omop.concept_set_exist": {"tf": 1.4142135623730951}, "acmc.omop.export": {"tf": 2.23606797749979}, "acmc.parse": {"tf": 1}, "acmc.parse.CodesError": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.phen.fork": {"tf": 2.6457513110645907}, "acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.publish": {"tf": 1.4142135623730951}, "acmc.trud": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1.4142135623730951}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}, "acmc.util.QuotedDumper": {"tf": 1}}, "df": 31}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 7, "s": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1.4142135623730951}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.table_exists": {"tf": 2}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}}, "df": 3}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 11}, "d": {"docs": {"acmc.trud": {"tf": 1.4142135623730951}, "acmc.trud.FQDN": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}}, "df": 8}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.translate_codes": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {"acmc.phen.diff_phen": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.logging_config": {"tf": 1.4142135623730951}, "acmc.main": {"tf": 1.4142135623730951}, "acmc.omop": {"tf": 1.4142135623730951}, "acmc.parse": {"tf": 1.4142135623730951}, "acmc.phen": {"tf": 1.4142135623730951}, "acmc.trud": {"tf": 1.4142135623730951}}, "df": 6}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.main": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop": {"tf": 1}, "acmc.trud": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.phen": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {"acmc.omop.export": {"tf": 1.4142135623730951}, "acmc.phen.MAP_DIR": {"tf": 1}, "acmc.trud.create_map_directories": {"tf": 1}}, "df": 3, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.parse": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}}, "df": 3}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"acmc.omop.export": {"tf": 1.7320508075688772}, "acmc.phen.add_metadata": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto": {"tf": 1.4142135623730951}, "acmc.parse.Read3": {"tf": 1.4142135623730951}, "acmc.parse.Icd10": {"tf": 1.4142135623730951}, "acmc.parse.Snomed": {"tf": 1.4142135623730951}, "acmc.parse.Opcs4": {"tf": 1.4142135623730951}, "acmc.parse.Atc": {"tf": 1.4142135623730951}, "acmc.parse.Med": {"tf": 1.4142135623730951}, "acmc.parse.Cprd": {"tf": 1.4142135623730951}}, "df": 8}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8, "s": {"docs": {"acmc.logging_config": {"tf": 1}}, "df": 1}, "/": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Proto.process": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.vocabularies": {"tf": 1}, "acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.phen.PHEN_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 24, "s": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.delete": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.install": {"tf": 1}, "acmc.omop.clear": {"tf": 1.7320508075688772}, "acmc.omop.delete": {"tf": 1.7320508075688772}, "acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.omop.export": {"tf": 1.7320508075688772}}, "df": 10}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.Read2": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1}}, "df": 2}}}}}}}}}, "r": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1, "y": {"docs": {"acmc.omop.export": {"tf": 1.4142135623730951}, "acmc.phen.PHEN_DIR": {"tf": 1}, "acmc.phen.DEFAULT_PHEN_PATH": {"tf": 1}, "acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.publish": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1.4142135623730951}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}, "acmc.trud.PROCESSED_PATH": {"tf": 1}}, "df": 17}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.trud.create_map_directories": {"tf": 1}}, "df": 2}}}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.export": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 2}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.diff_phen": {"tf": 1}}, "df": 1}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 4}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.download_release_file": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.trud.DOWNLOADS_PATH": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {"acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}}, "df": 2}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.logging_config": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"acmc.main": {"tf": 1}, "acmc.omop": {"tf": 1}, "acmc.parse": {"tf": 1}, "acmc.phen": {"tf": 1}, "acmc.trud": {"tf": 1}}, "df": 5}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}, "acmc.main": {"tf": 1}, "acmc.omop.export": {"tf": 1.4142135623730951}, "acmc.parse.Read2": {"tf": 1}, "acmc.phen": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 8, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.export": {"tf": 1.4142135623730951}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.install": {"tf": 2.449489742783178}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 11, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.phen.CONFIG_FILE": {"tf": 1}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}}, "df": 5}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "s": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.export": {"tf": 1}}, "df": 2}}}, "x": {"docs": {"acmc.parse.Proto.process": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}}, "df": 11}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}}}, "s": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.phen.fork": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.concept_set_exist": {"tf": 2}, "acmc.parse": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.CSV_PATH": {"tf": 1}, "acmc.phen.OMOP_PATH": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 9, "u": {"docs": {}, "df": 0, "p": {"docs": {"acmc.logging_config": {"tf": 1}}, "df": 1}}, "s": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}, "acmc.omop.export": {"tf": 1.4142135623730951}, "acmc.phen.fork": {"tf": 1}}, "df": 4}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}}}}}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}}, "df": 2}}}}}}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.clear": {"tf": 1.4142135623730951}, "acmc.omop.delete": {"tf": 1.4142135623730951}, "acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.omop.export": {"tf": 1}}, "df": 8}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"3": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.phen.fork": {"tf": 2}}, "df": 7, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.init": {"tf": 1}, "acmc.phen.validate": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.add_metadata": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1, "s": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.init": {"tf": 1}, "acmc.phen.validate": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"acmc.phen.fork": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.fork": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.parse.CodesError": {"tf": 1.4142135623730951}, "acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1.4142135623730951}, "acmc.phen.fork": {"tf": 2.23606797749979}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1.4142135623730951}, "acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.export": {"tf": 1.7320508075688772}, "acmc.phen.copy": {"tf": 1.7320508075688772}, "acmc.phen.extract_concepts": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 19, "c": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "c": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}, "acmc.logging_config.setup_logger": {"tf": 1}, "acmc.logging_config.set_log_level": {"tf": 1}, "acmc.main": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}}, "df": 8}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"acmc.logging_config": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.SPLIT_COL_ACTION": {"tf": 1}, "acmc.phen.CODES_COL_ACTION": {"tf": 1}, "acmc.phen.DIVIDE_COL_ACTION": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}}, "df": 4}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"acmc.logging_config": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.publish": {"tf": 1}}, "df": 11, "o": {"docs": {}, "df": 0, "w": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.logging_config.DEFAULT_LOG_FILE": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {"acmc.trud.FQDN": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}}, "df": 2}}, "s": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 15}, "n": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 6, "d": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.parse.Proto": {"tf": 1.4142135623730951}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read3": {"tf": 1.4142135623730951}, "acmc.parse.Icd10": {"tf": 1.4142135623730951}, "acmc.parse.Snomed": {"tf": 1.4142135623730951}, "acmc.parse.Opcs4": {"tf": 1.4142135623730951}, "acmc.parse.Atc": {"tf": 1.4142135623730951}, "acmc.parse.Med": {"tf": 1.4142135623730951}, "acmc.parse.Cprd": {"tf": 1.4142135623730951}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1}}, "df": 15}, "y": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}, "acmc.omop.install": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.phen.fork": {"tf": 1}}, "df": 10}}}}}}}, "e": {"docs": {"acmc.omop.export": {"tf": 1}, "acmc.parse.InvalidCodesException": {"tf": 1}}, "df": 2}}, "t": {"docs": {"acmc.phen.fork": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}}, "df": 3, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.add_metadata": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}, "acmc.parse": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"acmc.phen.fork": {"tf": 2.8284271247461903}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.publish": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"acmc.phen.fork": {"tf": 2}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.logging_config.setup_logger": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop": {"tf": 1.4142135623730951}, "acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.OMOP_CDM_Version": {"tf": 1}, "acmc.omop.OMOP_DB_FILENAME": {"tf": 1}, "acmc.omop.DB_PATH": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.vocabularies": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.omop.install": {"tf": 1.7320508075688772}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.omop.clear": {"tf": 1.7320508075688772}, "acmc.omop.delete": {"tf": 1.7320508075688772}, "acmc.omop.export": {"tf": 2.449489742783178}, "acmc.phen.OMOP_PATH": {"tf": 1}}, "df": 16}}}, "h": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.parse.SUPPORTED_CODE_TYPES": {"tf": 1}, "acmc.parse.Proto": {"tf": 1.4142135623730951}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read3": {"tf": 1.4142135623730951}, "acmc.parse.Icd10": {"tf": 1.4142135623730951}, "acmc.parse.Snomed": {"tf": 1.4142135623730951}, "acmc.parse.Opcs4": {"tf": 1.4142135623730951}, "acmc.parse.Atc": {"tf": 1.4142135623730951}, "acmc.parse.Med": {"tf": 1.4142135623730951}, "acmc.parse.Cprd": {"tf": 1.4142135623730951}, "acmc.phen.DEFAULT_PHEN_DIR_LIST": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.COL_ACTIONS": {"tf": 1}, "acmc.phen.CODE_FILE_TYPES": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.diff_phen": {"tf": 1}, "acmc.trud": {"tf": 1}, "acmc.trud.FQDN": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 21}, "n": {"docs": {"acmc.parse.Read2": {"tf": 1}, "acmc.util.QuotedDumper": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.fork": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.omop.export": {"tf": 1.4142135623730951}, "acmc.parse.CodesError": {"tf": 1}, "acmc.parse.Proto.verify": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}, "acmc.phen.fork": {"tf": 1.7320508075688772}, "acmc.util.QuotedDumper": {"tf": 1}}, "df": 8, "t": {"docs": {"acmc.logging_config.set_log_level": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.main": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {"acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}}, "df": 3}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.install": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1.4142135623730951}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}}, "df": 2}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"acmc.phen.init": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {"acmc.omop.install": {"tf": 1.7320508075688772}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.omop.table_exists": {"tf": 1.4142135623730951}, "acmc.omop.vocab_exists": {"tf": 1.4142135623730951}, "acmc.omop.concept_set_exist": {"tf": 1.4142135623730951}, "acmc.parse.CodesError": {"tf": 1}, "acmc.parse.Proto": {"tf": 1.4142135623730951}, "acmc.parse.Read3": {"tf": 1.4142135623730951}, "acmc.parse.Icd10": {"tf": 1.4142135623730951}, "acmc.parse.Snomed": {"tf": 1.4142135623730951}, "acmc.parse.Opcs4": {"tf": 1.4142135623730951}, "acmc.parse.Atc": {"tf": 1.4142135623730951}, "acmc.parse.Med": {"tf": 1.4142135623730951}, "acmc.parse.Cprd": {"tf": 1.4142135623730951}, "acmc.parse.CodeTypeParser": {"tf": 1}, "acmc.phen.fork": {"tf": 1.7320508075688772}}, "df": 17}, "s": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.phen.fork": {"tf": 1.7320508075688772}, "acmc.phen.validate": {"tf": 1}}, "df": 12, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 9}}}}}, "d": {"docs": {"acmc.omop.vocab_exists": {"tf": 1.7320508075688772}}, "df": 1, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"acmc.parse.Proto.process": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "m": {"docs": {"acmc.trud.get_releases": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 2}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"acmc.main.DEFAULT_WORKSPACE_PATH": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.write_version_file": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.export": {"tf": 1}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.export": {"tf": 1}, "acmc.phen.fork": {"tf": 1}}, "df": 2}}, "n": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 3}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"acmc.parse.Proto.process": {"tf": 1}, "acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.validate": {"tf": 1}}, "df": 4}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {"acmc.omop.vocab_exists": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop": {"tf": 1}, "acmc.omop.vocabularies": {"tf": 1}, "acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.trud": {"tf": 1}}, "df": 5}}}, "y": {"docs": {"acmc.omop.VOCAB_PATH": {"tf": 1}, "acmc.omop.omop_vocab_types": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1.7320508075688772}, "acmc.omop.export": {"tf": 1.4142135623730951}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.trud.VOCAB_PATH": {"tf": 1}, "acmc.trud.DOWNLOADS_PATH": {"tf": 1}}, "df": 7}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.write_version_file": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}, "acmc.omop.VERSION_FILE": {"tf": 1}, "acmc.omop.VERSION_PATH": {"tf": 1}, "acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1.7320508075688772}, "acmc.omop.export": {"tf": 1.7320508075688772}, "acmc.phen.VOCAB_VERSION_FILE": {"tf": 1}, "acmc.phen.SEMANTIC_VERSION_TYPES": {"tf": 1}, "acmc.phen.DEFAULT_VERSION_INC": {"tf": 1}, "acmc.phen.fork": {"tf": 2}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}, "acmc.trud.VERSION_FILE": {"tf": 1}, "acmc.trud.VERSION_PATH": {"tf": 1}}, "df": 14, "s": {"docs": {"acmc.phen.diff_phen": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"acmc.parse.Proto.verify": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.phen.fork": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.parse.Read2": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Read2": {"tf": 1}, "acmc.phen.validate": {"tf": 1}}, "df": 2}}}}}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.OMOP_CDM_Version": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1.7320508075688772}, "acmc.parse.Proto.process": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.phen.fork": {"tf": 1.4142135623730951}}, "df": 14}, "n": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.fork": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.table_exists": {"tf": 1.4142135623730951}, "acmc.omop.concept_set_exist": {"tf": 1.4142135623730951}, "acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}, "acmc.phen.PHEN_DIR": {"tf": 1}, "acmc.phen.CONCEPTS_DIR": {"tf": 1}, "acmc.phen.MAP_DIR": {"tf": 1}, "acmc.phen.CONCEPT_SET_DIR": {"tf": 1}, "acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}, "acmc.phen.extract_concepts": {"tf": 1.4142135623730951}, "acmc.trud.FQDN": {"tf": 1}}, "df": 17}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {"acmc.phen.fork": {"tf": 1.7320508075688772}}, "df": 1}}, "h": {"docs": {}, "df": 0, "s": {"docs": {"acmc.trud": {"tf": 1}, "acmc.trud.FQDN": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.EXPORT_FILE": {"tf": 1}, "acmc.omop.export": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.export": {"tf": 1}}, "df": 1}}, "s": {"docs": {"acmc.phen.export": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.omop.table_exists": {"tf": 1.4142135623730951}, "acmc.omop.vocab_exists": {"tf": 1.4142135623730951}, "acmc.omop.concept_set_exist": {"tf": 1.4142135623730951}}, "df": 3}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1.4142135623730951}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 4}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"acmc.phen.extract_concepts": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud.VOCAB_PATH": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}}, "df": 3, "s": {"docs": {"acmc.parse.Read2": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"acmc.phen.translate_codes": {"tf": 1}, "acmc.phen.add_metadata": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.vocabularies": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.trud.get_releases": {"tf": 1}, "acmc.trud.download_release_file": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.VOCAB_PATH": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "d": {"2": {"docs": {"acmc.parse.Read2": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"acmc.omop.install": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}, "acmc.omop.export": {"tf": 1}, "acmc.phen.translate_codes": {"tf": 1}}, "df": 5}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"acmc.trud.get_releases": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {"acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}, "acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 2.8284271247461903}, "acmc.phen.validate": {"tf": 1}, "acmc.phen.publish": {"tf": 1}, "acmc.phen.export": {"tf": 1}, "acmc.phen.copy": {"tf": 1}}, "df": 7, "r": {"docs": {}, "df": 0, "t": {"docs": {"acmc.parse.CodesError": {"tf": 1}, "acmc.parse.CodeTypeParser": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto": {"tf": 1}, "acmc.parse.Read3": {"tf": 1}, "acmc.parse.Icd10": {"tf": 1}, "acmc.parse.Snomed": {"tf": 1}, "acmc.parse.Opcs4": {"tf": 1}, "acmc.parse.Atc": {"tf": 1}, "acmc.parse.Med": {"tf": 1}, "acmc.parse.Cprd": {"tf": 1}}, "df": 8, "d": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"acmc.phen.fork": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.omop.clear": {"tf": 1}, "acmc.omop.delete": {"tf": 1}, "acmc.parse.Proto.raise_exception": {"tf": 1}, "acmc.phen.fork": {"tf": 1}}, "df": 5}, "d": {"docs": {"acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.phen.PhenValidationException": {"tf": 1}}, "df": 2}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.parse.Read2": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"acmc.phen.add_metadata": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.omop.install": {"tf": 1}, "acmc.parse.Read2": {"tf": 1}}, "df": 2}}}}, "y": {"docs": {"acmc.omop.install": {"tf": 1.4142135623730951}, "acmc.omop.write_version_file": {"tf": 1}, "acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.phen.publish": {"tf": 1}}, "df": 4}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}}, "df": 3}}}, "e": {"docs": {"acmc.omop.export": {"tf": 1}, "acmc.parse.InvalidCodesException": {"tf": 1}, "acmc.phen.fork": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"acmc.parse.Proto.raise_exception": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.phen.diff_phen": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"acmc.phen.DEFAULT_GIT_BRANCH": {"tf": 1}}, "df": 1}}}}}}, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"acmc.omop.install": {"tf": 2}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"acmc.omop.table_exists": {"tf": 1}, "acmc.omop.vocab_exists": {"tf": 1}, "acmc.omop.concept_set_exist": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"acmc.trud.FQDN": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"acmc.phen.CONFIG_SCHEMA": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"acmc.util.QuotedDumper": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"acmc.phen.init": {"tf": 1}, "acmc.phen.fork": {"tf": 1}, "acmc.phen.validate": {"tf": 1}}, "df": 3}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"acmc.trud.download_release_file": {"tf": 1}}, "df": 1}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true};
+    /** pdoc search index */const docs = [{"fullname": "acmc", "modulename": "acmc", "kind": "module", "doc": "<p></p>\n"}, {"fullname": "acmc.logging_config", "modulename": "acmc.logging_config", "kind": "module", "doc": "<p>logging_config.py</p>\n\n<p>This module defines functions to setup logging for acmc across all module.</p>\n"}, {"fullname": "acmc.logging_config.DEFAULT_LOG_FILE", "modulename": "acmc.logging_config", "qualname": "DEFAULT_LOG_FILE", "kind": "variable", "doc": "<p>The default acmc application log filename.</p>\n", "default_value": "&#x27;acmc.log&#x27;"}, {"fullname": "acmc.logging_config.setup_logger", "modulename": "acmc.logging_config", "qualname": "setup_logger", "kind": "function", "doc": "<p>Sets up acmc logger as a singleton outputing to file and sysout syserr.</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">log_level</span><span class=\"p\">:</span> <span class=\"nb\">int</span> <span class=\"o\">=</span> <span class=\"mi\">20</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.logging_config.set_log_level", "modulename": "acmc.logging_config", "qualname": "set_log_level", "kind": "function", "doc": "<p>Sets the log level for the acmc logger.</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>log_level (int):</strong>  log level from the python logging libraru</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">log_level</span><span class=\"p\">:</span> <span class=\"nb\">int</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.main", "modulename": "acmc.main", "kind": "module", "doc": "<p>main.py module</p>\n\n<p>This module provides the functionality for the acmc command line interface</p>\n"}, {"fullname": "acmc.main.DEFAULT_WORKSPACE_PATH", "modulename": "acmc.main", "qualname": "DEFAULT_WORKSPACE_PATH", "kind": "variable", "doc": "<p>Default phenotype workspace path</p>\n", "default_value": "PosixPath(&#x27;workspace&#x27;)"}, {"fullname": "acmc.main.main", "modulename": "acmc.main", "qualname": "main", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.omop", "modulename": "acmc.omop", "kind": "module", "doc": "<p>omop.py module</p>\n\n<p>This module provides functionality to manage OMOP vocabularies.</p>\n"}, {"fullname": "acmc.omop.VOCAB_PATH", "modulename": "acmc.omop", "qualname": "VOCAB_PATH", "kind": "variable", "doc": "<p>Default OMOP vocabulary path</p>\n", "default_value": "PosixPath(&#x27;vocab/omop&#x27;)"}, {"fullname": "acmc.omop.OMOP_CDM_Version", "modulename": "acmc.omop", "qualname": "OMOP_CDM_Version", "kind": "variable", "doc": "<p>Supported OMOP CDM version number</p>\n", "default_value": "&#x27;54&#x27;"}, {"fullname": "acmc.omop.OMOP_DB_FILENAME", "modulename": "acmc.omop", "qualname": "OMOP_DB_FILENAME", "kind": "variable", "doc": "<p>Default OMOP sqllite database filename</p>\n", "default_value": "&#x27;omop_54.sqlite&#x27;"}, {"fullname": "acmc.omop.DB_PATH", "modulename": "acmc.omop", "qualname": "DB_PATH", "kind": "variable", "doc": "<p>Default OMOP sqllite database path</p>\n", "default_value": "PosixPath(&#x27;vocab/omop/omop_54.sqlite&#x27;)"}, {"fullname": "acmc.omop.VERSION_FILE", "modulename": "acmc.omop", "qualname": "VERSION_FILE", "kind": "variable", "doc": "<p>Default OMOP version file</p>\n", "default_value": "&#x27;omop_version.yml&#x27;"}, {"fullname": "acmc.omop.VERSION_PATH", "modulename": "acmc.omop", "qualname": "VERSION_PATH", "kind": "variable", "doc": "<p>Default OMOP version path</p>\n", "default_value": "PosixPath(&#x27;vocab/omop/omop_version.yml&#x27;)"}, {"fullname": "acmc.omop.EXPORT_FILE", "modulename": "acmc.omop", "qualname": "EXPORT_FILE", "kind": "variable", "doc": "<p>Default OMOP export database filename</p>\n", "default_value": "&#x27;omop_54_export.sqlite&#x27;"}, {"fullname": "acmc.omop.vocabularies", "modulename": "acmc.omop", "qualname": "vocabularies", "kind": "variable", "doc": "<p>Required OMOP vocabularies definition</p>\n", "default_value": "{&#x27;source&#x27;: &#x27;OHDSI Athena&#x27;, &#x27;url&#x27;: &#x27;https://athena.ohdsi.org/vocabulary/list&#x27;, &#x27;cdm_version&#x27;: &#x27;54&#x27;, &#x27;version&#x27;: &#x27;&#x27;, &#x27;vocabularies&#x27;: [{&#x27;id&#x27;: 1, &#x27;name&#x27;: &#x27;SNOMED&#x27;}, {&#x27;id&#x27;: 2, &#x27;name&#x27;: &#x27;ICD9CM&#x27;}, {&#x27;id&#x27;: 17, &#x27;name&#x27;: &#x27;Readv2&#x27;}, {&#x27;id&#x27;: 21, &#x27;name&#x27;: &#x27;ATC&#x27;}, {&#x27;id&#x27;: 55, &#x27;name&#x27;: &#x27;OPCS4&#x27;}, {&#x27;id&#x27;: 57, &#x27;name&#x27;: &#x27;HES Specialty&#x27;}, {&#x27;id&#x27;: 70, &#x27;name&#x27;: &#x27;ICD10CM&#x27;}, {&#x27;id&#x27;: 75, &#x27;name&#x27;: &#x27;dm+d&#x27;}, {&#x27;id&#x27;: 144, &#x27;name&#x27;: &#x27;UK Biobank&#x27;}, {&#x27;id&#x27;: 154, &#x27;name&#x27;: &#x27;NHS Ethnic Category&#x27;}, {&#x27;id&#x27;: 155, &#x27;name&#x27;: &#x27;NHS Place of Service&#x27;}], &#x27;tables&#x27;: []}"}, {"fullname": "acmc.omop.omop_vocab_types", "modulename": "acmc.omop", "qualname": "omop_vocab_types", "kind": "variable", "doc": "<p>Type mappings from acmc medical coding types to OMOP vocabulary types</p>\n", "default_value": "{&#x27;read2&#x27;: &#x27;Read&#x27;, &#x27;read3&#x27;: None, &#x27;icd10&#x27;: &#x27;ICD10CM&#x27;, &#x27;snomed&#x27;: &#x27;SNOMED&#x27;, &#x27;opcs4&#x27;: &#x27;OPCS4&#x27;, &#x27;atc&#x27;: &#x27;ATC&#x27;, &#x27;med&#x27;: None, &#x27;cprd&#x27;: None}"}, {"fullname": "acmc.omop.install", "modulename": "acmc.omop", "qualname": "install", "kind": "function", "doc": "<p>\"Installs the OMOP release csv files in a file-based sql database</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>omop_zip_file (str):</strong>  vocabularies zip file distributed by OHDSI Athena</li>\n<li><strong>version (str):</strong>  version of the vocabularies distributed by OHDSI Athena</li>\n</ul>\n\n<h6 id=\"raises\">Raises:</h6>\n\n<ul>\n<li><strong>ValueError:</strong>  if the zip file does not exist</li>\n<li><strong>ValueError:</strong>  if the file is not a zip file</li>\n<li><strong>Exception:</strong>  if error reading omop csv files</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">omop_zip_file</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.omop.write_version_file", "modulename": "acmc.omop", "qualname": "write_version_file", "kind": "function", "doc": "<p>Writes the OMOP vocaburaries and version to a file</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>version (str):</strong>  version of the vocabularies distributed by OHDSI Athena</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.omop.clear", "modulename": "acmc.omop", "qualname": "clear", "kind": "function", "doc": "<p>Clears the OMOP sql database</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>db_path (Path):</strong>  the path to the omop sqllite database</li>\n</ul>\n\n<h6 id=\"raises\">Raises:</h6>\n\n<ul>\n<li><strong>FileNotFoundError:</strong>  if the omop sqllite database does not exist</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">db_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.omop.delete", "modulename": "acmc.omop", "qualname": "delete", "kind": "function", "doc": "<p>Deletes the OMOP sql database</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>db_path (Path):</strong>  the path to the omop sqllite database</li>\n</ul>\n\n<h6 id=\"raises\">Raises:</h6>\n\n<ul>\n<li><strong>FileNotFoundError:</strong>  if the omop sqllite database does not exist</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">db_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.omop.table_exists", "modulename": "acmc.omop", "qualname": "table_exists", "kind": "function", "doc": "<p>Query to check if the table exists</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>cursor (sqlite3.Cursor):</strong>  a sqllite database cursor</li>\n<li><strong>table_name (str):</strong>  the table name to check</li>\n</ul>\n\n<h6 id=\"returns\">Returns:</h6>\n\n<blockquote>\n  <p>bool: true if table exists</p>\n</blockquote>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">cursor</span><span class=\"p\">:</span> <span class=\"n\">sqlite3</span><span class=\"o\">.</span><span class=\"n\">Cursor</span>, </span><span class=\"param\"><span class=\"n\">table_name</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">bool</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.omop.vocab_exists", "modulename": "acmc.omop", "qualname": "vocab_exists", "kind": "function", "doc": "<p>Query to check if the vocabulary exists</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>cursor (sqlite3.Cursor):</strong>  a sqllite database cursor</li>\n<li><strong>vocab_id (str):</strong>  the vocabulary id to check</li>\n</ul>\n\n<h6 id=\"returns\">Returns:</h6>\n\n<blockquote>\n  <p>bool: true if vocabulary id exists</p>\n</blockquote>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">cursor</span><span class=\"p\">:</span> <span class=\"n\">sqlite3</span><span class=\"o\">.</span><span class=\"n\">Cursor</span>, </span><span class=\"param\"><span class=\"n\">vocab_id</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">bool</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.omop.concept_set_exist", "modulename": "acmc.omop", "qualname": "concept_set_exist", "kind": "function", "doc": "<p>Query to check if the concept set exists</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>cursor (sqlite3.Cursor):</strong>  a sqllite database cursor</li>\n<li><strong>concept_set_name (str):</strong>  the concept set name to check</li>\n</ul>\n\n<h6 id=\"returns\">Returns:</h6>\n\n<blockquote>\n  <p>bool: true if concept set exists</p>\n</blockquote>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">cursor</span><span class=\"p\">:</span> <span class=\"n\">sqlite3</span><span class=\"o\">.</span><span class=\"n\">Cursor</span>, </span><span class=\"param\"><span class=\"n\">concept_set_name</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">bool</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.omop.export", "modulename": "acmc.omop", "qualname": "export", "kind": "function", "doc": "<p>Export concept sets to omop database in csv format</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>map_path (Path):</strong>  path to the acmc map directory containing concept sets in csv format</li>\n<li><strong>export_path (Path):</strong>  path to the directory where the omop database csv files are to be written</li>\n<li><strong>version (str):</strong>  phenotype version for omop vocabulary version</li>\n<li><strong>omop_metadata (dict):</strong>  phenotype omop metadata for omop vocabulary metadata</li>\n</ul>\n\n<h6 id=\"returns\">Returns:</h6>\n\n<blockquote>\n  <p>Path: path to the exported sqllite database</p>\n</blockquote>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">map_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">export_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">omop_metadata</span><span class=\"p\">:</span> <span class=\"nb\">dict</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.parse", "modulename": "acmc.parse", "kind": "module", "doc": "<p>parse.py module</p>\n\n<p>This module provides functionality to set up medical code translation classes</p>\n"}, {"fullname": "acmc.parse.SUPPORTED_CODE_TYPES", "modulename": "acmc.parse", "qualname": "SUPPORTED_CODE_TYPES", "kind": "variable", "doc": "<p>List of support medical coding types</p>\n", "default_value": "{&#x27;opcs4&#x27;, &#x27;atc&#x27;, &#x27;snomed&#x27;, &#x27;icd10&#x27;, &#x27;read2&#x27;, &#x27;read3&#x27;}"}, {"fullname": "acmc.parse.CodesError", "modulename": "acmc.parse", "qualname": "CodesError", "kind": "class", "doc": "<p>A class used in InvalidCodesException to report an error if a code parser check fails</p>\n"}, {"fullname": "acmc.parse.CodesError.__init__", "modulename": "acmc.parse", "qualname": "CodesError.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">message</span>, </span><span class=\"param\"><span class=\"n\">codes</span><span class=\"o\">=</span><span class=\"kc\">None</span>, </span><span class=\"param\"><span class=\"n\">codes_file</span><span class=\"o\">=</span><span class=\"kc\">None</span>, </span><span class=\"param\"><span class=\"n\">mask</span><span class=\"o\">=</span><span class=\"kc\">None</span>, </span><span class=\"param\"><span class=\"n\">code_type</span><span class=\"o\">=</span><span class=\"kc\">None</span></span>)</span>"}, {"fullname": "acmc.parse.InvalidCodesException", "modulename": "acmc.parse", "qualname": "InvalidCodesException", "kind": "class", "doc": "<p>Custom exception class raised when invalid codes are found that cannot be resolved by processing</p>\n", "bases": "builtins.Exception"}, {"fullname": "acmc.parse.InvalidCodesException.__init__", "modulename": "acmc.parse", "qualname": "InvalidCodesException.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">error</span></span>)</span>"}, {"fullname": "acmc.parse.InvalidCodesException.error", "modulename": "acmc.parse", "qualname": "InvalidCodesException.error", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.Proto", "modulename": "acmc.parse", "qualname": "Proto", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n"}, {"fullname": "acmc.parse.Proto.__init__", "modulename": "acmc.parse", "qualname": "Proto.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">name</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">trud_codes_path</span><span class=\"p\">:</span> <span class=\"n\">Optional</span><span class=\"p\">[</span><span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"kc\">None</span></span>)</span>"}, {"fullname": "acmc.parse.Proto.checks", "modulename": "acmc.parse", "qualname": "Proto.checks", "kind": "variable", "doc": "<p></p>\n", "annotation": ": list[tuple[str, typing.Callable[[pandas.core.frame.DataFrame], pandas.core.series.Series], typing.Callable[[pandas.core.frame.DataFrame, pathlib.Path], pandas.core.frame.DataFrame]]]"}, {"fullname": "acmc.parse.Proto.name", "modulename": "acmc.parse", "qualname": "Proto.name", "kind": "variable", "doc": "<p></p>\n", "annotation": ": str"}, {"fullname": "acmc.parse.Proto.raise_exception", "modulename": "acmc.parse", "qualname": "Proto.raise_exception", "kind": "function", "doc": "<p>Raises an exception inside a lambda function. Python does not allow using raise statement inside lambda because lambda can only contain expressions, not statements. Using raise_exception not raise_ as it's more explict</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"bp\">self</span>, </span><span class=\"param\"><span class=\"n\">ex</span><span class=\"p\">:</span> <span class=\"ne\">Exception</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.parse.Proto.in_database", "modulename": "acmc.parse", "qualname": "Proto.in_database", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"bp\">self</span>,</span><span class=\"param\">\t<span class=\"n\">codes</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">db</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">col</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.parse.Proto.process", "modulename": "acmc.parse", "qualname": "Proto.process", "kind": "function", "doc": "<p>identify issues that do not pass and fix them with define/d process</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"bp\">self</span>,</span><span class=\"param\">\t<span class=\"n\">codes</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">codes_file</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">) -> <span class=\"n\">Tuple</span><span class=\"p\">[</span><span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span><span class=\"p\">,</span> <span class=\"nb\">list</span><span class=\"p\">]</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.parse.Proto.verify", "modulename": "acmc.parse", "qualname": "Proto.verify", "kind": "function", "doc": "<p>verify codes in codes file</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"bp\">self</span>, </span><span class=\"param\"><span class=\"n\">codes</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>, </span><span class=\"param\"><span class=\"n\">codes_file</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.parse.Read2", "modulename": "acmc.parse", "qualname": "Read2", "kind": "class", "doc": "<p>This Read2 class extends Proto, adding custom validation checks for a dataset of \"Read2\" codes. It ensures that the dataset is loaded, validates the codes based on several rules, and applies corrections or logs errors when necessary.</p>\n", "bases": "Proto"}, {"fullname": "acmc.parse.Read2.checks", "modulename": "acmc.parse", "qualname": "Read2.checks", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.Read3", "modulename": "acmc.parse", "qualname": "Read3", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, {"fullname": "acmc.parse.Read3.checks", "modulename": "acmc.parse", "qualname": "Read3.checks", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.Icd10", "modulename": "acmc.parse", "qualname": "Icd10", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, {"fullname": "acmc.parse.Icd10.checks", "modulename": "acmc.parse", "qualname": "Icd10.checks", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.Snomed", "modulename": "acmc.parse", "qualname": "Snomed", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, {"fullname": "acmc.parse.Snomed.checks", "modulename": "acmc.parse", "qualname": "Snomed.checks", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.Opcs4", "modulename": "acmc.parse", "qualname": "Opcs4", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, {"fullname": "acmc.parse.Opcs4.checks", "modulename": "acmc.parse", "qualname": "Opcs4.checks", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.Atc", "modulename": "acmc.parse", "qualname": "Atc", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, {"fullname": "acmc.parse.Atc.checks", "modulename": "acmc.parse", "qualname": "Atc.checks", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.Med", "modulename": "acmc.parse", "qualname": "Med", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, {"fullname": "acmc.parse.Med.checks", "modulename": "acmc.parse", "qualname": "Med.checks", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.Cprd", "modulename": "acmc.parse", "qualname": "Cprd", "kind": "class", "doc": "<p>Define checks as list of 3 tuple: (Message, Condition, Process)</p>\n\n<ul>\n<li>Message = The name of the condition (what is printed and logged)</li>\n<li>Condition = True if Passed, and False if Failed</li>\n<li>Process = Aims to resolve all issues that stop condition from passing (Do not change index!)</li>\n</ul>\n", "bases": "Proto"}, {"fullname": "acmc.parse.Cprd.checks", "modulename": "acmc.parse", "qualname": "Cprd.checks", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.parse.CodeTypeParser", "modulename": "acmc.parse", "qualname": "CodeTypeParser", "kind": "class", "doc": "<p>A class used in InvalidCodesException to report an error if a code parser check fails</p>\n"}, {"fullname": "acmc.parse.CodeTypeParser.__init__", "modulename": "acmc.parse", "qualname": "CodeTypeParser.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">trud_processed_dir</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span> <span class=\"o\">=</span> <span class=\"n\">PosixPath</span><span class=\"p\">(</span><span class=\"s1\">&#39;vocab/trud/processed&#39;</span><span class=\"p\">)</span></span>)</span>"}, {"fullname": "acmc.parse.CodeTypeParser.code_types", "modulename": "acmc.parse", "qualname": "CodeTypeParser.code_types", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.phen", "modulename": "acmc.phen", "kind": "module", "doc": "<p>phenotype.py module</p>\n\n<p>This module provides functionality for managing phenotypes.</p>\n"}, {"fullname": "acmc.phen.PHEN_DIR", "modulename": "acmc.phen", "qualname": "PHEN_DIR", "kind": "variable", "doc": "<p>Default phenotype directory name</p>\n", "default_value": "&#x27;phen&#x27;"}, {"fullname": "acmc.phen.DEFAULT_PHEN_PATH", "modulename": "acmc.phen", "qualname": "DEFAULT_PHEN_PATH", "kind": "variable", "doc": "<p>Default phenotype directory path</p>\n", "default_value": "PosixPath(&#x27;workspace/phen&#x27;)"}, {"fullname": "acmc.phen.CONCEPTS_DIR", "modulename": "acmc.phen", "qualname": "CONCEPTS_DIR", "kind": "variable", "doc": "<p>Default concepts directory name</p>\n", "default_value": "&#x27;concepts&#x27;"}, {"fullname": "acmc.phen.MAP_DIR", "modulename": "acmc.phen", "qualname": "MAP_DIR", "kind": "variable", "doc": "<p>Default map directory name</p>\n", "default_value": "&#x27;map&#x27;"}, {"fullname": "acmc.phen.CONCEPT_SET_DIR", "modulename": "acmc.phen", "qualname": "CONCEPT_SET_DIR", "kind": "variable", "doc": "<p>Default concept set directory name</p>\n", "default_value": "&#x27;concept-sets&#x27;"}, {"fullname": "acmc.phen.CSV_PATH", "modulename": "acmc.phen", "qualname": "CSV_PATH", "kind": "variable", "doc": "<p>Default CSV concept set directory path</p>\n", "default_value": "PosixPath(&#x27;concept-sets/csv&#x27;)"}, {"fullname": "acmc.phen.OMOP_PATH", "modulename": "acmc.phen", "qualname": "OMOP_PATH", "kind": "variable", "doc": "<p>Default OMOP concept set directory path</p>\n", "default_value": "PosixPath(&#x27;concept-sets/omop&#x27;)"}, {"fullname": "acmc.phen.DEFAULT_PHEN_DIR_LIST", "modulename": "acmc.phen", "qualname": "DEFAULT_PHEN_DIR_LIST", "kind": "variable", "doc": "<p>List of default phenotype directories</p>\n", "default_value": "[&#x27;concepts&#x27;, &#x27;map&#x27;, &#x27;concept-sets&#x27;]"}, {"fullname": "acmc.phen.CONFIG_FILE", "modulename": "acmc.phen", "qualname": "CONFIG_FILE", "kind": "variable", "doc": "<p>Default configuration filename</p>\n", "default_value": "&#x27;config.yml&#x27;"}, {"fullname": "acmc.phen.VOCAB_VERSION_FILE", "modulename": "acmc.phen", "qualname": "VOCAB_VERSION_FILE", "kind": "variable", "doc": "<p>Default vocabulary version filename</p>\n", "default_value": "&#x27;vocab_version.yml&#x27;"}, {"fullname": "acmc.phen.SEMANTIC_VERSION_TYPES", "modulename": "acmc.phen", "qualname": "SEMANTIC_VERSION_TYPES", "kind": "variable", "doc": "<p>List of semantic version increment types</p>\n", "default_value": "[&#x27;major&#x27;, &#x27;minor&#x27;, &#x27;patch&#x27;]"}, {"fullname": "acmc.phen.DEFAULT_VERSION_INC", "modulename": "acmc.phen", "qualname": "DEFAULT_VERSION_INC", "kind": "variable", "doc": "<p>Default semantic version increment type</p>\n", "default_value": "&#x27;patch&#x27;"}, {"fullname": "acmc.phen.DEFAULT_GIT_BRANCH", "modulename": "acmc.phen", "qualname": "DEFAULT_GIT_BRANCH", "kind": "variable", "doc": "<p>Default phenotype repo branch name</p>\n", "default_value": "&#x27;main&#x27;"}, {"fullname": "acmc.phen.SPLIT_COL_ACTION", "modulename": "acmc.phen", "qualname": "SPLIT_COL_ACTION", "kind": "variable", "doc": "<p>Split column preprocessing action type</p>\n", "default_value": "&#x27;split_col&#x27;"}, {"fullname": "acmc.phen.CODES_COL_ACTION", "modulename": "acmc.phen", "qualname": "CODES_COL_ACTION", "kind": "variable", "doc": "<p>Codes column preprocessing action type</p>\n", "default_value": "&#x27;codes_col&#x27;"}, {"fullname": "acmc.phen.DIVIDE_COL_ACTION", "modulename": "acmc.phen", "qualname": "DIVIDE_COL_ACTION", "kind": "variable", "doc": "<p>Divide column preprocessing action type</p>\n", "default_value": "&#x27;divide_col&#x27;"}, {"fullname": "acmc.phen.COL_ACTIONS", "modulename": "acmc.phen", "qualname": "COL_ACTIONS", "kind": "variable", "doc": "<p>List of column preprocessing action types</p>\n", "default_value": "[&#x27;split_col&#x27;, &#x27;codes_col&#x27;, &#x27;divide_col&#x27;]"}, {"fullname": "acmc.phen.CODE_FILE_TYPES", "modulename": "acmc.phen", "qualname": "CODE_FILE_TYPES", "kind": "variable", "doc": "<p>List of supported source concept coding list file types</p>\n", "default_value": "[&#x27;.xlsx&#x27;, &#x27;.xls&#x27;, &#x27;.csv&#x27;]"}, {"fullname": "acmc.phen.CONFIG_SCHEMA", "modulename": "acmc.phen", "qualname": "CONFIG_SCHEMA", "kind": "variable", "doc": "<p>Phenotype config.yml schema definition</p>\n", "default_value": "{&#x27;phenotype&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;required&#x27;: True, &#x27;schema&#x27;: {&#x27;version&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True, &#x27;regex&#x27;: &#x27;^\\\\d+\\\\.\\\\d+\\\\.\\\\d+$&#x27;}, &#x27;omop&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;required&#x27;: True, &#x27;schema&#x27;: {&#x27;vocabulary_id&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True}, &#x27;vocabulary_name&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True}, &#x27;vocabulary_reference&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True, &#x27;regex&#x27;: &#x27;^https?://.*&#x27;}}}, &#x27;map&#x27;: {&#x27;type&#x27;: &#x27;list&#x27;, &#x27;schema&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;allowed&#x27;: [&#x27;opcs4&#x27;, &#x27;atc&#x27;, &#x27;snomed&#x27;, &#x27;icd10&#x27;, &#x27;read2&#x27;, &#x27;read3&#x27;]}}, &#x27;concept_sets&#x27;: {&#x27;type&#x27;: &#x27;list&#x27;, &#x27;required&#x27;: True, &#x27;schema&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;schema&#x27;: {&#x27;name&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True}, &#x27;files&#x27;: {&#x27;type&#x27;: &#x27;list&#x27;, &#x27;required&#x27;: True, &#x27;schema&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;schema&#x27;: {&#x27;path&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;, &#x27;required&#x27;: True}, &#x27;columns&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;required&#x27;: True}, &#x27;category&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;}, &#x27;actions&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;schema&#x27;: {&#x27;divide_col&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;}, &#x27;split_col&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;}, &#x27;codes_col&#x27;: {&#x27;type&#x27;: &#x27;string&#x27;}}}}}}, &#x27;metadata&#x27;: {&#x27;type&#x27;: &#x27;dict&#x27;, &#x27;required&#x27;: False}}}}}}}"}, {"fullname": "acmc.phen.PhenValidationException", "modulename": "acmc.phen", "qualname": "PhenValidationException", "kind": "class", "doc": "<p>Custom exception class raised when validation errors in phenotype configuration file</p>\n", "bases": "builtins.Exception"}, {"fullname": "acmc.phen.PhenValidationException.__init__", "modulename": "acmc.phen", "qualname": "PhenValidationException.__init__", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">message</span>, </span><span class=\"param\"><span class=\"n\">validation_errors</span><span class=\"o\">=</span><span class=\"kc\">None</span></span>)</span>"}, {"fullname": "acmc.phen.PhenValidationException.validation_errors", "modulename": "acmc.phen", "qualname": "PhenValidationException.validation_errors", "kind": "variable", "doc": "<p></p>\n"}, {"fullname": "acmc.phen.init", "modulename": "acmc.phen", "qualname": "init", "kind": "function", "doc": "<p>Initial phenotype directory as git repo with standard structure</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">remote_url</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.fork", "modulename": "acmc.phen", "qualname": "fork", "kind": "function", "doc": "<p>Forks an upstream phenotype in a remote repo at a specific version to a local director, and optionally sets to a new remote origin\"</p>\n\n<h6 id=\"arguments\">Arguments:</h6>\n\n<ul>\n<li><strong>phen_dir (str):</strong>  local directory path where the upstream repo is to be cloned</li>\n<li><strong>upstream_url (str):</strong>  url to the upstream repo</li>\n<li><strong>upstream_version (str):</strong>  version in the upstream repo to clone</li>\n<li><strong>new_origin_url (str, optional):</strong>  url of the remote repo to set as the new origin. Defaults to None.</li>\n</ul>\n\n<h6 id=\"raises\">Raises:</h6>\n\n<ul>\n<li><strong>ValueError:</strong>  if the specified version is not in the upstream repo</li>\n<li><strong>ValueError:</strong>  if the upstream repo is not a valid phenotype repo</li>\n<li><strong>ValueError:</strong>  if there's any other problems with Git</li>\n</ul>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">upstream_url</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">upstream_version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">new_origin_url</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.validate", "modulename": "acmc.phen", "qualname": "validate", "kind": "function", "doc": "<p>Validates the phenotype directory is a git repo with standard structure</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.translate_codes", "modulename": "acmc.phen", "qualname": "translate_codes", "kind": "function", "doc": "<p>Translates each source code type the source coding list into a target type and returns all conversions as a concept set</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">source_df</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">target_code_type</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">concept_name</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">not_translate</span><span class=\"p\">:</span> <span class=\"nb\">bool</span>,</span><span class=\"param\">\t<span class=\"n\">do_reverse_translate</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.write_vocab_version", "modulename": "acmc.phen", "qualname": "write_vocab_version", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.map", "modulename": "acmc.phen", "qualname": "map", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">target_code_type</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">not_translate</span><span class=\"p\">:</span> <span class=\"nb\">bool</span>,</span><span class=\"param\">\t<span class=\"n\">no_metadata</span><span class=\"p\">:</span> <span class=\"nb\">bool</span>,</span><span class=\"param\">\t<span class=\"n\">do_reverse_translate</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.add_metadata", "modulename": "acmc.phen", "qualname": "add_metadata", "kind": "function", "doc": "<p>Add concept set metadata, stored as a dictionary, to each concept row</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">codes</span><span class=\"p\">:</span> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>,</span><span class=\"param\">\t<span class=\"n\">metadata</span><span class=\"p\">:</span> <span class=\"nb\">dict</span>,</span><span class=\"param\">\t<span class=\"n\">no_metadata</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pandas</span><span class=\"o\">.</span><span class=\"n\">core</span><span class=\"o\">.</span><span class=\"n\">frame</span><span class=\"o\">.</span><span class=\"n\">DataFrame</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.publish", "modulename": "acmc.phen", "qualname": "publish", "kind": "function", "doc": "<p>Publishes updates to the phenotype by commiting all changes to the repo directory</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">msg</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">remote_url</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">increment</span><span class=\"p\">:</span> <span class=\"nb\">str</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;patch&#39;</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.export", "modulename": "acmc.phen", "qualname": "export", "kind": "function", "doc": "<p>Exports a phen repo at a specific tagged version into a target directory</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.copy", "modulename": "acmc.phen", "qualname": "copy", "kind": "function", "doc": "<p>Copys a phen repo at a specific tagged version into a target directory</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">target_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.extract_concepts", "modulename": "acmc.phen", "qualname": "extract_concepts", "kind": "function", "doc": "<p>Extracts concepts as {name: file_path} dictionary and a name set.</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">config_data</span><span class=\"p\">:</span> <span class=\"nb\">dict</span></span><span class=\"return-annotation\">) -> <span class=\"n\">Tuple</span><span class=\"p\">[</span><span class=\"nb\">dict</span><span class=\"p\">,</span> <span class=\"n\">Set</span><span class=\"p\">[</span><span class=\"nb\">str</span><span class=\"p\">]]</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.diff_config", "modulename": "acmc.phen", "qualname": "diff_config", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">old_config</span><span class=\"p\">:</span> <span class=\"nb\">dict</span>, </span><span class=\"param\"><span class=\"n\">new_config</span><span class=\"p\">:</span> <span class=\"nb\">dict</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">str</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.diff_map_files", "modulename": "acmc.phen", "qualname": "diff_map_files", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">old_map_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>, </span><span class=\"param\"><span class=\"n\">new_map_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">str</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.diff_phen", "modulename": "acmc.phen", "qualname": "diff_phen", "kind": "function", "doc": "<p>Compare the differences between two versions of a phenotype</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">new_phen_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">new_version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">old_phen_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">old_version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">report_path</span><span class=\"p\">:</span> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>,</span><span class=\"param\">\t<span class=\"n\">not_check_config</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.phen.diff", "modulename": "acmc.phen", "qualname": "diff", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">old_phen_dir</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">old_version</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">not_check_config</span><span class=\"p\">:</span> <span class=\"nb\">bool</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud", "modulename": "acmc.trud", "kind": "module", "doc": "<p>trud.py module</p>\n\n<p>This module provides functionality to manage installation of the NHS TRUD vocabularies.</p>\n"}, {"fullname": "acmc.trud.FQDN", "modulename": "acmc.trud", "qualname": "FQDN", "kind": "variable", "doc": "<p>Fully Qualified Domain Name of NHS digital TRUD service API</p>\n", "default_value": "&#x27;isd.digital.nhs.uk&#x27;"}, {"fullname": "acmc.trud.VOCAB_PATH", "modulename": "acmc.trud", "qualname": "VOCAB_PATH", "kind": "variable", "doc": "<p>Default path to the TRUD vocabulary directory relative to the the acmc execution directory</p>\n", "default_value": "PosixPath(&#x27;vocab/trud&#x27;)"}, {"fullname": "acmc.trud.VERSION_FILE", "modulename": "acmc.trud", "qualname": "VERSION_FILE", "kind": "variable", "doc": "<p>TRUD version file</p>\n", "default_value": "&#x27;trud_version.yml&#x27;"}, {"fullname": "acmc.trud.VERSION_PATH", "modulename": "acmc.trud", "qualname": "VERSION_PATH", "kind": "variable", "doc": "<p>Default path to the TRUD version file</p>\n", "default_value": "PosixPath(&#x27;vocab/trud/trud_version.yml&#x27;)"}, {"fullname": "acmc.trud.DOWNLOADS_PATH", "modulename": "acmc.trud", "qualname": "DOWNLOADS_PATH", "kind": "variable", "doc": "<p>Default path to the TRUD vocabulary downloads directory</p>\n", "default_value": "PosixPath(&#x27;vocab/trud/downloads&#x27;)"}, {"fullname": "acmc.trud.PROCESSED_PATH", "modulename": "acmc.trud", "qualname": "PROCESSED_PATH", "kind": "variable", "doc": "<p>Default path to the processed TRUD mappings directory</p>\n", "default_value": "PosixPath(&#x27;vocab/trud/processed&#x27;)"}, {"fullname": "acmc.trud.get_releases", "modulename": "acmc.trud", "qualname": "get_releases", "kind": "function", "doc": "<p>Retrieve release information for an item from the TRUD API.</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">item_id</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">API_KEY</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">latest</span><span class=\"o\">=</span><span class=\"kc\">False</span></span><span class=\"return-annotation\">) -> <span class=\"nb\">list</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.download_release_file", "modulename": "acmc.trud", "qualname": "download_release_file", "kind": "function", "doc": "<p>Download specified file type for a given release of an item.</p>\n", "signature": "<span class=\"signature pdoc-code multiline\">(<span class=\"param\">\t<span class=\"n\">item_id</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">release_ordinal</span><span class=\"p\">:</span> <span class=\"nb\">str</span>,</span><span class=\"param\">\t<span class=\"n\">release</span><span class=\"p\">:</span> <span class=\"nb\">dict</span>,</span><span class=\"param\">\t<span class=\"n\">file_json_prefix</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">) -> <span class=\"n\">pathlib</span><span class=\"o\">.</span><span class=\"n\">Path</span>:</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.validate_download_hash", "modulename": "acmc.trud", "qualname": "validate_download_hash", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">file_destination</span><span class=\"p\">:</span> <span class=\"nb\">str</span>, </span><span class=\"param\"><span class=\"n\">item_hash</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.unzip_download", "modulename": "acmc.trud", "qualname": "unzip_download", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"n\">file_destination</span><span class=\"p\">:</span> <span class=\"nb\">str</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.extract_icd10", "modulename": "acmc.trud", "qualname": "extract_icd10", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.extract_opsc4", "modulename": "acmc.trud", "qualname": "extract_opsc4", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.extract_nhs_data_migrations", "modulename": "acmc.trud", "qualname": "extract_nhs_data_migrations", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.extract_nhs_read_browser", "modulename": "acmc.trud", "qualname": "extract_nhs_read_browser", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.create_map_directories", "modulename": "acmc.trud", "qualname": "create_map_directories", "kind": "function", "doc": "<p>Create map directories.</p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.trud.install", "modulename": "acmc.trud", "qualname": "install", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"return-annotation\">):</span></span>", "funcdef": "def"}, {"fullname": "acmc.util", "modulename": "acmc.util", "kind": "module", "doc": "<p></p>\n"}, {"fullname": "acmc.util.QuotedDumper", "modulename": "acmc.util", "qualname": "QuotedDumper", "kind": "class", "doc": "<p>Custom Dumper to retain quotes on strings in yaml library</p>\n", "bases": "yaml.dumper.Dumper"}, {"fullname": "acmc.util.QuotedDumper.increase_indent", "modulename": "acmc.util", "qualname": "QuotedDumper.increase_indent", "kind": "function", "doc": "<p></p>\n", "signature": "<span class=\"signature pdoc-code condensed\">(<span class=\"param\"><span class=\"bp\">self</span>, </span><span class=\"param\"><span class=\"n\">flow</span><span class=\"o\">=</span><span class=\"kc\">False</span>, </span><span class=\"param\"><span class=\"n\">indentless</span><span class=\"o\">=</span><span class=\"kc\">False</span></span><span class=\"return-annotation\">):</span></span>", "funcdef": "def"}];
 
     // mirrored in build-search-index.js (part 1)
     // Also split on html tags. this is a cheap heuristic, but good enough.
-- 
GitLab