Repository: monarch-initiative/gpsea (language: python)

Issue:
Remove `ProteinMetadata` from `TranscriptAnnotation`
As of now, `TranscriptAnnotation` includes `protein_affected` property with a sequence of `ProteinMetadata`. However, the property is out of scope and should be removed.

Instead, we just need to keep the `protein_effect_location` that describes the location of the variant within the protein sequence, and we must add a new property with `protein_id` to ensure we can map `tx` to the corresponding protein accession.

## Requirements

Removing `ProteinMetadata` propagates across our code base and it will require multiple updates, such as the following:

- Remove `protein_affected` property from `TranscriptAnnotation`
- add new property with a good name that will return the protein accession ID (e.g. `NP_037407.4` for `NM_013275.6` [here](https://github.com/monarch-initiative/genophenocorr/blob/3082135b701182b1ef51947335d70ac37856261c/src/genophenocorr/preprocessing/test_data/vep_response/deletion.json#L69)). The property provides an `Optional[str]` because some transcripts are not protein-coding
- adjust `VepFunctionalAnnotator`. 1) remove `protein_annotator` because we do not need it anymore, right? 2) implement parsing of the new property with protein ID
- update `Cohort.get_protein_features_affected` - when we don't have `ProteinMetadata` in `Variant`s, then we won't be able to produce this information anymore. I think this is not too bad and we should just report the protein IDs.
- update `Patient` and `PatientCreator` - the `Patient` model should not be aware of the `ProteinMetadata`. The model should just expose the variants and phenotypes - the raw data from phenopackets. Therefore, `proteins` property must be removed. In result, this propagates into the `Cohort.from_patients` method. We will need to rework the logic there too.

I suggest we should do these changes together during a call, during a "stop the world" session, when not much else is going on, PRs are merged, so that these changes do not break stuff on other branches.
`ProtFeatureTypePredicate` and `ProtFeaturePredicate` should use regions to determine overlaps
The protein predicates should use functionality of `Region` (introduced in #101 ) to determine the overlap instead of the hard-to-read statements like:

![Image](https://github.com/monarch-initiative/genophenocorr/assets/12170955/fadbbc9c-0c45-4c69-95dd-8b47e8292b18)
> L#186

or:

![Image](https://github.com/monarch-initiative/genophenocorr/assets/12170955/b1add345-cf88-466a-b24f-6df960df45b1)

> L#229



Discussion / hints:

Fix patch:
diff --git a/.github/workflows/python_ci.yml b/.github/workflows/python_ci.yml
index cf97bd75..cb435206 100644
--- a/.github/workflows/python_ci.yml
+++ b/.github/workflows/python_ci.yml
@@ -21,7 +21,7 @@ jobs:
             python-version: ${{ matrix.python-version }}
         - name: Install package
           run: |
-            python3 -m pip install .[test,docs]
+            python3 -m pip install --editable .[test,docs]
         - name: Run pytest tests
           run: |
             pytest
diff --git a/docs/tutorial.rst b/docs/tutorial.rst
index d455c514..3a216e35 100644
--- a/docs/tutorial.rst
+++ b/docs/tutorial.rst
@@ -48,7 +48,7 @@ We can then view the data using the list commands.
   >>> sorted(cohort.list_all_variants())
   [('1_281_281_A_G', 16), ('1_361_363_TTC_T', 13)]
   >>> sorted(cohort.list_all_proteins())
-  [('NP_09876.5', 26)]
+  [('NP_09876.5', 29)]
   >>> tx_dict = cohort.list_data_by_tx('NM_1234.5')
   >>> sorted(tx_dict['NM_1234.5'].items())
   [('FRAMESHIFT_VARIANT', 1), ('MISSENSE_VARIANT', 1)]
diff --git a/notebooks/KBG/KBG.ipynb b/notebooks/KBG/KBG.ipynb
index 7b5eead4..4e2de6ae 100644
--- a/notebooks/KBG/KBG.ipynb
+++ b/notebooks/KBG/KBG.ipynb
@@ -83,84 +83,409 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "Patients Created:   0%|          | 0/328 [00:00<?, ?it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P1[PMID_36446582_Novara,_2017_P1]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Sacharow, 2012_P2[PMID_36446582_Sacharow,_2012_P2]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P11[PMID_36446582_Novara,_2017_P11]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P20[PMID_36446582_Goldenberg2016_P20]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P4[PMID_36446582_Goldenberg2016_P4]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Khalifa, 2013_P1A[PMID_36446582_Khalifa,_2013_P1A]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG1[PMID_36446582_KBG1]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Scarano, 2013_P10[PMID_36446582_Scarano,_2013_P10]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P18[PMID_36446582_Goldenberg2016_P18]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Parenti2021_P23[PMID_36446582_Parenti2021_P23]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Crippa2015_P2[PMID_36446582_Crippa2015_P2]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P24[PMID_36446582_Goldenberg2016_P24]\n",
-      "Patients Created:  11%|█         | 35/328 [00:00<00:00, 339.12it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Gnazzo, 2020_P31[PMID_36446582_Gnazzo,_2020_P31]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P3[PMID_36446582_Novara,_2017_P3]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P2[PMID_36446582_Goldenberg2016_P2]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG9[PMID_36446582_KBG9]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P9[PMID_36446582_Novara,_2017_P9]\n",
-      "Patients Created:  21%|██        | 69/328 [00:00<00:01, 207.12it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Willemsen2010_P3[PMID_36446582_Willemsen2010_P3]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Srivastava, 2017_P1[PMID_36446582_Srivastava,_2017_P1]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P16[PMID_36446582_Kutkowska-Kazmierczak2021_P16]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Gnazzo, 2020_P29[PMID_36446582_Gnazzo,_2020_P29]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Lim2014[PMID_36446582_Lim2014]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Gnazzo, 2020_P30[PMID_36446582_Gnazzo,_2020_P30]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P10[PMID_36446582_Goldenberg2016_P10]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG38[PMID_36446582_KBG38]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P17[PMID_36446582_Kutkowska-Kazmierczak2021_P17]\n",
-      "Patients Created:  33%|███▎      | 107/328 [00:00<00:00, 263.41it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P28[PMID_36446582_Goldenberg2016_P28]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P33[PMID_36446582_Goldenberg2016_P33]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Bucerzan2020[PMID_36446582_Bucerzan2020]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P7[PMID_36446582_Novara,_2017_P7]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Willemsen2010_P2[PMID_36446582_Willemsen2010_P2]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P22[PMID_36446582_Goldenberg2016_P22]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P29[PMID_36446582_Goldenberg2016_P29]\n",
-      "Patients Created:  43%|████▎     | 140/328 [00:00<00:00, 283.55it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Youngs2011[PMID_36446582_Youngs2011]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG25[PMID_36446582_KBG25]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG58[PMID_36446582_KBG58]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P26[PMID_36446582_Goldenberg2016_P26]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P12[PMID_36446582_Novara,_2017_P12]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P19[PMID_36446582_Kutkowska-Kazmierczak2021_P19]\n",
-      "Patients Created:  52%|█████▏    | 171/328 [00:00<00:00, 264.16it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P5[PMID_36446582_Novara,_2017_P5]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Khalifa, 2013_P1B[PMID_36446582_Khalifa,_2013_P1B]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P20[PMID_36446582_Kutkowska-Kazmierczak2021_P20]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P32[PMID_36446582_Goldenberg2016_P32]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG22[PMID_36446582_KBG22]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P23[PMID_36446582_Kutkowska-Kazmierczak2021_P23]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Palumbo 2016[PMID_36446582_Palumbo_2016]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P22[PMID_36446582_Kutkowska-Kazmierczak2021_P22]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P36[PMID_36446582_Goldenberg2016_P36]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P21[PMID_36446582_Kutkowska-Kazmierczak2021_P21]\n",
-      "Patients Created:  63%|██████▎   | 206/328 [00:00<00:00, 286.47it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Scarano, 2013_P11[PMID_36446582_Scarano,_2013_P11]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Behnert, 2018[PMID_36446582_Behnert,_2018]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG23[PMID_36446582_KBG23]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P19[PMID_36446582_Goldenberg2016_P19]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Ockeloen2015_P20[PMID_36446582_Ockeloen2015_P20]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG26[PMID_36446582_KBG26]\n",
-      "Patients Created:  73%|███████▎  | 241/328 [00:00<00:00, 303.89it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient KBG2[PMID_36446582_KBG2]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P2[PMID_36446582_Novara,_2017_P2]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Willemsen2010_P4[PMID_36446582_Willemsen2010_P4]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Scarano, 2013_P12[PMID_36446582_Scarano,_2013_P12]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P4[PMID_36446582_Novara,_2017_P4]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Isrie, 2012_P1[PMID_36446582_Isrie,_2012_P1]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Miyatake, 2013[PMID_36446582_Miyatake,_2013]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Spengler, 2013[PMID_36446582_Spengler,_2013]\n",
-      "Patients Created:  84%|████████▍ | 277/328 [00:00<00:00, 317.76it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Willemsen2010_P1[PMID_36446582_Willemsen2010_P1]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P3[PMID_36446582_Goldenberg2016_P3]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P15[PMID_36446582_Kutkowska-Kazmierczak2021_P15]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P18[PMID_36446582_Kutkowska-Kazmierczak2021_P18]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Isrie, 2012_P2[PMID_36446582_Isrie,_2012_P2]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Crippa2015_P3[PMID_36446582_Crippa2015_P3]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P1[PMID_36446582_Goldenberg2016_P1]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Novara, 2017_P8[PMID_36446582_Novara,_2017_P8]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P13[PMID_36446582_Goldenberg2016_P13]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P12[PMID_36446582_Goldenberg2016_P12]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Goldenberg2016_P21[PMID_36446582_Goldenberg2016_P21]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Kutkowska-Kazmierczak2021_P14[PMID_36446582_Kutkowska-Kazmierczak2021_P14]\n",
-      "Patients Created:  96%|█████████▋| 316/328 [00:01<00:00, 337.80it/s]Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Crippa2015_P1[PMID_36446582_Crippa2015_P1]\n",
-      "Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but did not find one in patient Sacharow, 2012_P1[PMID_36446582_Sacharow,_2012_P1]\n",
-      "Patients Created: 100%|██████████| 328/328 [00:01<00:00, 300.51it/s]\n"
+      "Patients Created: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████| 328/328 [00:01<00:00, 196.20it/s]"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "328\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "Validated under none policy\n",
+      "Showing errors and warnings\n",
+      "328 phenopacket(s) found at `phenopackets`\n",
+      "  patient #0\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P2[PMID_36446582_Novara,_2017_P2]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P2 has no variants to work with\n",
+      "  patient #1\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P13[PMID_36446582_Goldenberg2016_P13]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P13 has no variants to work with\n",
+      "  patient #3\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Ockeloen2015_P20[PMID_36446582_Ockeloen2015_P20]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Ockeloen2015_P20 has no variants to work with\n",
+      "  patient #7\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P22[PMID_36446582_Kutkowska-Kazmierczak2021_P22]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P22 has no variants to work with\n",
+      "  patient #10\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Gnazzo, 2020_P31[PMID_36446582_Gnazzo,_2020_P31]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Gnazzo,_2020_P31 has no variants to work with\n",
+      "  patient #13\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P29[PMID_36446582_Goldenberg2016_P29]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P29 has no variants to work with\n",
+      "  patient #14\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P18[PMID_36446582_Kutkowska-Kazmierczak2021_P18]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P18 has no variants to work with\n",
+      "  patient #24\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P1[PMID_36446582_Goldenberg2016_P1]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P1 has no variants to work with\n",
+      "  patient #29\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P33[PMID_36446582_Goldenberg2016_P33]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P33 has no variants to work with\n",
+      "  patient #31\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P14[PMID_36446582_Kutkowska-Kazmierczak2021_P14]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P14 has no variants to work with\n",
+      "  patient #36\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P15[PMID_36446582_Kutkowska-Kazmierczak2021_P15]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P15 has no variants to work with\n",
+      "  patient #39\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P32[PMID_36446582_Goldenberg2016_P32]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P32 has no variants to work with\n",
+      "  patient #40\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Bucerzan2020[PMID_36446582_Bucerzan2020]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Bucerzan2020 has no variants to work with\n",
+      "  patient #43\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P24[PMID_36446582_Goldenberg2016_P24]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P24 has no variants to work with\n",
+      "  patient #47\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Miyatake, 2013[PMID_36446582_Miyatake,_2013]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Miyatake,_2013 has no variants to work with\n",
+      "  patient #53\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG1[PMID_36446582_KBG1]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG1 has no variants to work with\n",
+      "  patient #57\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Sacharow, 2012_P2[PMID_36446582_Sacharow,_2012_P2]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Sacharow,_2012_P2 has no variants to work with\n",
+      "  patient #59\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P19[PMID_36446582_Kutkowska-Kazmierczak2021_P19]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P19 has no variants to work with\n",
+      "  patient #61\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P28[PMID_36446582_Goldenberg2016_P28]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P28 has no variants to work with\n",
+      "  patient #65\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Gnazzo, 2020_P30[PMID_36446582_Gnazzo,_2020_P30]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Gnazzo,_2020_P30 has no variants to work with\n",
+      "  patient #67\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P23[PMID_36446582_Kutkowska-Kazmierczak2021_P23]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P23 has no variants to work with\n",
+      "  patient #68\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P11[PMID_36446582_Novara,_2017_P11]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P11 has no variants to work with\n",
+      "  patient #72\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P12[PMID_36446582_Goldenberg2016_P12]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P12 has no variants to work with\n",
+      "  patient #73\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P3[PMID_36446582_Novara,_2017_P3]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P3 has no variants to work with\n",
+      "  patient #74\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Khalifa, 2013_P1B[PMID_36446582_Khalifa,_2013_P1B]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Khalifa,_2013_P1B has no variants to work with\n",
+      "  patient #75\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Isrie, 2012_P2[PMID_36446582_Isrie,_2012_P2]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Isrie,_2012_P2 has no variants to work with\n",
+      "  patient #76\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P19[PMID_36446582_Goldenberg2016_P19]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P19 has no variants to work with\n",
+      "  patient #79\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P8[PMID_36446582_Novara,_2017_P8]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P8 has no variants to work with\n",
+      "  patient #82\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG26[PMID_36446582_KBG26]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG26 has no variants to work with\n",
+      "  patient #86\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Scarano, 2013_P11[PMID_36446582_Scarano,_2013_P11]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Scarano,_2013_P11 has no variants to work with\n",
+      "  patient #88\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Crippa2015_P1[PMID_36446582_Crippa2015_P1]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Crippa2015_P1 has no variants to work with\n",
+      "  patient #95\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P4[PMID_36446582_Novara,_2017_P4]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P4 has no variants to work with\n",
+      "  patient #98\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Parenti2021_P23[PMID_36446582_Parenti2021_P23]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Parenti2021_P23 has no variants to work with\n",
+      "  patient #133\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P5[PMID_36446582_Novara,_2017_P5]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P5 has no variants to work with\n",
+      "  patient #135\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Willemsen2010_P1[PMID_36446582_Willemsen2010_P1]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Willemsen2010_P1 has no variants to work with\n",
+      "  patient #139\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P22[PMID_36446582_Goldenberg2016_P22]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P22 has no variants to work with\n",
+      "  patient #140\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Scarano, 2013_P10[PMID_36446582_Scarano,_2013_P10]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Scarano,_2013_P10 has no variants to work with\n",
+      "  patient #147\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P9[PMID_36446582_Novara,_2017_P9]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P9 has no variants to work with\n",
+      "  patient #150\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P18[PMID_36446582_Goldenberg2016_P18]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P18 has no variants to work with\n",
+      "  patient #156\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Willemsen2010_P2[PMID_36446582_Willemsen2010_P2]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Willemsen2010_P2 has no variants to work with\n",
+      "  patient #159\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Spengler, 2013[PMID_36446582_Spengler,_2013]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Spengler,_2013 has no variants to work with\n",
+      "  patient #164\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Youngs2011[PMID_36446582_Youngs2011]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Youngs2011 has no variants to work with\n",
+      "  patient #165\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P21[PMID_36446582_Goldenberg2016_P21]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P21 has no variants to work with\n",
+      "  patient #166\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Crippa2015_P3[PMID_36446582_Crippa2015_P3]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Crippa2015_P3 has no variants to work with\n",
+      "  patient #191\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Palumbo 2016[PMID_36446582_Palumbo_2016]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Palumbo_2016 has no variants to work with\n",
+      "  patient #202\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P7[PMID_36446582_Novara,_2017_P7]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P7 has no variants to work with\n",
+      "  patient #203\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG9[PMID_36446582_KBG9]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG9 has no variants to work with\n",
+      "  patient #226\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG25[PMID_36446582_KBG25]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG25 has no variants to work with\n",
+      "  patient #229\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P4[PMID_36446582_Goldenberg2016_P4]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P4 has no variants to work with\n",
+      "  patient #230\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Scarano, 2013_P12[PMID_36446582_Scarano,_2013_P12]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Scarano,_2013_P12 has no variants to work with\n",
+      "  patient #232\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P20[PMID_36446582_Goldenberg2016_P20]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P20 has no variants to work with\n",
+      "  patient #233\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Crippa2015_P2[PMID_36446582_Crippa2015_P2]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Crippa2015_P2 has no variants to work with\n",
+      "  patient #235\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P36[PMID_36446582_Goldenberg2016_P36]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P36 has no variants to work with\n",
+      "  patient #239\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Willemsen2010_P3[PMID_36446582_Willemsen2010_P3]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Willemsen2010_P3 has no variants to work with\n",
+      "  patient #244\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Sacharow, 2012_P1[PMID_36446582_Sacharow,_2012_P1]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Sacharow,_2012_P1 has no variants to work with\n",
+      "  patient #247\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Srivastava, 2017_P1[PMID_36446582_Srivastava,_2017_P1]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Srivastava,_2017_P1 has no variants to work with\n",
+      "  patient #258\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P12[PMID_36446582_Novara,_2017_P12]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P12 has no variants to work with\n",
+      "  patient #260\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P20[PMID_36446582_Kutkowska-Kazmierczak2021_P20]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P20 has no variants to work with\n",
+      "  patient #263\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG38[PMID_36446582_KBG38]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG38 has no variants to work with\n",
+      "  patient #266\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Isrie, 2012_P1[PMID_36446582_Isrie,_2012_P1]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Isrie,_2012_P1 has no variants to work with\n",
+      "  patient #267\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Khalifa, 2013_P1A[PMID_36446582_Khalifa,_2013_P1A]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Khalifa,_2013_P1A has no variants to work with\n",
+      "  patient #270\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Willemsen2010_P4[PMID_36446582_Willemsen2010_P4]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Willemsen2010_P4 has no variants to work with\n",
+      "  patient #271\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Gnazzo, 2020_P29[PMID_36446582_Gnazzo,_2020_P29]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Gnazzo,_2020_P29 has no variants to work with\n",
+      "  patient #274\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P16[PMID_36446582_Kutkowska-Kazmierczak2021_P16]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P16 has no variants to work with\n",
+      "  patient #280\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P3[PMID_36446582_Goldenberg2016_P3]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P3 has no variants to work with\n",
+      "  patient #283\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG22[PMID_36446582_KBG22]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG22 has no variants to work with\n",
+      "  patient #287\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG2[PMID_36446582_KBG2]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG2 has no variants to work with\n",
+      "  patient #291\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Lim2014[PMID_36446582_Lim2014]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Lim2014 has no variants to work with\n",
+      "  patient #295\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG23[PMID_36446582_KBG23]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG23 has no variants to work with\n",
+      "  patient #296\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P2[PMID_36446582_Goldenberg2016_P2]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P2 has no variants to work with\n",
+      "  patient #298\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P26[PMID_36446582_Goldenberg2016_P26]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P26 has no variants to work with\n",
+      "  patient #299\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient KBG58[PMID_36446582_KBG58]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_KBG58 has no variants to work with\n",
+      "  patient #301\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P17[PMID_36446582_Kutkowska-Kazmierczak2021_P17]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P17 has no variants to work with\n",
+      "  patient #308\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Novara, 2017_P1[PMID_36446582_Novara,_2017_P1]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Novara,_2017_P1 has no variants to work with\n",
+      "  patient #309\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Goldenberg2016_P10[PMID_36446582_Goldenberg2016_P10]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Goldenberg2016_P10 has no variants to work with\n",
+      "  patient #315\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Kutkowska-Kazmierczak2021_P21[PMID_36446582_Kutkowska-Kazmierczak2021_P21]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Kutkowska-Kazmierczak2021_P21 has no variants to work with\n",
+      "  patient #318\n",
+      "    variants\n",
+      "     warnings:\n",
+      "     ·Expected a VCF record, a VRS CNV, or an expression with `hgvs.c` but had an error retrieving any from patient Behnert, 2018[PMID_36446582_Behnert,_2018]. Remove variant from testing\n",
+      "     ·Patient PMID_36446582_Behnert,_2018 has no variants to work with\n"
      ]
     }
    ],
@@ -168,7 +493,7 @@
     "from genophenocorr.preprocessing import configure_caching_cohort_creator, load_phenopacket_folder\n",
     "\n",
     "fpath_phenopackets = 'phenopackets'\n",
-    "cohort_creator = configure_caching_cohort_creator(hpo)\n",
+    "cohort_creator = configure_caching_cohort_creator(hpo, cache_dir='temp_cache')\n",
     "cohort = load_phenopacket_folder(fpath_phenopackets, cohort_creator)"
    ]
   },
@@ -261,7 +586,7 @@
        "<tr><td>Item</td><td>Description</td></tr>\n",
        "<caption>Description of the cohort. 77 individuals were removed from the cohort because they had no HPO terms.</caption>\n",
        "<tr><td>Total Individuals</td><td>328</td></tr>\n",
-       "<tr><td>Excluded Individuals</td><td>77: Spengler, 2013[PMID_36446582_Spengler,_2013];Goldenberg2016_P22[PMID_36446582_Goldenberg2016_P22];Kutkowska-Kazmierczak2021_P19[PMID_36446582_Kutkowska-Kazmierczak2021_P19];Gnazzo, 2020_P30[PMID_36446582_Gnazzo,_2020_P30];Novara, 2017_P7[PMID_36446582_Novara,_2017_P7];Crippa2015_P2[PMID_36446582_Crippa2015_P2];Goldenberg2016_P29[PMID_36446582_Goldenberg2016_P29];Kutkowska-Kazmierczak2021_P21[PMID_36446582_Kutkowska-Kazmierczak2021_P21];Behnert, 2018[PMID_36446582_Behnert,_2018];Gnazzo, 2020_P31[PMID_36446582_Gnazzo,_2020_P31];Goldenberg2016_P26[PMID_36446582_Goldenberg2016_P26];Willemsen2010_P4[PMID_36446582_Willemsen2010_P4];Kutkowska-Kazmierczak2021_P15[PMID_36446582_Kutkowska-Kazmierczak2021_P15];Goldenberg2016_P1[PMID_36446582_Goldenberg2016_P1];KBG26[PMID_36446582_KBG26];KBG23[PMID_36446582_KBG23];Novara, 2017_P8[PMID_36446582_Novara,_2017_P8];Palumbo 2016[PMID_36446582_Palumbo_2016];Isrie, 2012_P1[PMID_36446582_Isrie,_2012_P1];Willemsen2010_P3[PMID_36446582_Willemsen2010_P3];Novara, 2017_P3[PMID_36446582_Novara,_2017_P3];Kutkowska-Kazmierczak2021_P16[PMID_36446582_Kutkowska-Kazmierczak2021_P16];Novara, 2017_P12[PMID_36446582_Novara,_2017_P12];Bucerzan2020[PMID_36446582_Bucerzan2020];Srivastava, 2017_P1[PMID_36446582_Srivastava,_2017_P1];Goldenberg2016_P3[PMID_36446582_Goldenberg2016_P3];Miyatake, 2013[PMID_36446582_Miyatake,_2013];KBG58[PMID_36446582_KBG58];Goldenberg2016_P19[PMID_36446582_Goldenberg2016_P19];Goldenberg2016_P12[PMID_36446582_Goldenberg2016_P12];Gnazzo, 2020_P29[PMID_36446582_Gnazzo,_2020_P29];Goldenberg2016_P13[PMID_36446582_Goldenberg2016_P13];Kutkowska-Kazmierczak2021_P14[PMID_36446582_Kutkowska-Kazmierczak2021_P14];Goldenberg2016_P2[PMID_36446582_Goldenberg2016_P2];Novara, 2017_P2[PMID_36446582_Novara,_2017_P2];Sacharow, 2012_P1[PMID_36446582_Sacharow,_2012_P1];Goldenberg2016_P36[PMID_36446582_Goldenberg2016_P36];Scarano, 2013_P12[PMID_36446582_Scarano,_2013_P12];KBG1[PMID_36446582_KBG1];Goldenberg2016_P28[PMID_36446582_Goldenberg2016_P28];Ockeloen2015_P20[PMID_36446582_Ockeloen2015_P20];KBG22[PMID_36446582_KBG22];Goldenberg2016_P4[PMID_36446582_Goldenberg2016_P4];Novara, 2017_P11[PMID_36446582_Novara,_2017_P11];Scarano, 2013_P10[PMID_36446582_Scarano,_2013_P10];Youngs2011[PMID_36446582_Youngs2011];Goldenberg2016_P32[PMID_36446582_Goldenberg2016_P32];Novara, 2017_P9[PMID_36446582_Novara,_2017_P9];Scarano, 2013_P11[PMID_36446582_Scarano,_2013_P11];Lim2014[PMID_36446582_Lim2014];Kutkowska-Kazmierczak2021_P20[PMID_36446582_Kutkowska-Kazmierczak2021_P20];KBG38[PMID_36446582_KBG38];Novara, 2017_P4[PMID_36446582_Novara,_2017_P4];Willemsen2010_P1[PMID_36446582_Willemsen2010_P1];KBG9[PMID_36446582_KBG9];Willemsen2010_P2[PMID_36446582_Willemsen2010_P2];Kutkowska-Kazmierczak2021_P22[PMID_36446582_Kutkowska-Kazmierczak2021_P22];Goldenberg2016_P21[PMID_36446582_Goldenberg2016_P21];Khalifa, 2013_P1B[PMID_36446582_Khalifa,_2013_P1B];Kutkowska-Kazmierczak2021_P17[PMID_36446582_Kutkowska-Kazmierczak2021_P17];Crippa2015_P3[PMID_36446582_Crippa2015_P3];Isrie, 2012_P2[PMID_36446582_Isrie,_2012_P2];Novara, 2017_P1[PMID_36446582_Novara,_2017_P1];Crippa2015_P1[PMID_36446582_Crippa2015_P1];Goldenberg2016_P24[PMID_36446582_Goldenberg2016_P24];Sacharow, 2012_P2[PMID_36446582_Sacharow,_2012_P2];KBG25[PMID_36446582_KBG25];Kutkowska-Kazmierczak2021_P23[PMID_36446582_Kutkowska-Kazmierczak2021_P23];Goldenberg2016_P33[PMID_36446582_Goldenberg2016_P33];Goldenberg2016_P18[PMID_36446582_Goldenberg2016_P18];Kutkowska-Kazmierczak2021_P18[PMID_36446582_Kutkowska-Kazmierczak2021_P18];Parenti2021_P23[PMID_36446582_Parenti2021_P23];Goldenberg2016_P10[PMID_36446582_Goldenberg2016_P10];KBG2[PMID_36446582_KBG2];Khalifa, 2013_P1A[PMID_36446582_Khalifa,_2013_P1A];Goldenberg2016_P20[PMID_36446582_Goldenberg2016_P20];Novara, 2017_P5[PMID_36446582_Novara,_2017_P5]</td></tr>\n",
+       "<tr><td>Excluded Individuals</td><td>77: Kutkowska-Kazmierczak2021_P22[PMID_36446582_Kutkowska-Kazmierczak2021_P22];Goldenberg2016_P3[PMID_36446582_Goldenberg2016_P3];KBG22[PMID_36446582_KBG22];Scarano, 2013_P11[PMID_36446582_Scarano,_2013_P11];Gnazzo, 2020_P30[PMID_36446582_Gnazzo,_2020_P30];Sacharow, 2012_P2[PMID_36446582_Sacharow,_2012_P2];Willemsen2010_P1[PMID_36446582_Willemsen2010_P1];Sacharow, 2012_P1[PMID_36446582_Sacharow,_2012_P1];Isrie, 2012_P1[PMID_36446582_Isrie,_2012_P1];Goldenberg2016_P36[PMID_36446582_Goldenberg2016_P36];Scarano, 2013_P12[PMID_36446582_Scarano,_2013_P12];Goldenberg2016_P13[PMID_36446582_Goldenberg2016_P13];Gnazzo, 2020_P31[PMID_36446582_Gnazzo,_2020_P31];Goldenberg2016_P19[PMID_36446582_Goldenberg2016_P19];KBG58[PMID_36446582_KBG58];Khalifa, 2013_P1A[PMID_36446582_Khalifa,_2013_P1A];Willemsen2010_P2[PMID_36446582_Willemsen2010_P2];Goldenberg2016_P24[PMID_36446582_Goldenberg2016_P24];Goldenberg2016_P33[PMID_36446582_Goldenberg2016_P33];Novara, 2017_P3[PMID_36446582_Novara,_2017_P3];Bucerzan2020[PMID_36446582_Bucerzan2020];Crippa2015_P3[PMID_36446582_Crippa2015_P3];Kutkowska-Kazmierczak2021_P18[PMID_36446582_Kutkowska-Kazmierczak2021_P18];Kutkowska-Kazmierczak2021_P16[PMID_36446582_Kutkowska-Kazmierczak2021_P16];Goldenberg2016_P18[PMID_36446582_Goldenberg2016_P18];Goldenberg2016_P26[PMID_36446582_Goldenberg2016_P26];KBG2[PMID_36446582_KBG2];Crippa2015_P2[PMID_36446582_Crippa2015_P2];Crippa2015_P1[PMID_36446582_Crippa2015_P1];Youngs2011[PMID_36446582_Youngs2011];Kutkowska-Kazmierczak2021_P14[PMID_36446582_Kutkowska-Kazmierczak2021_P14];Goldenberg2016_P32[PMID_36446582_Goldenberg2016_P32];Goldenberg2016_P1[PMID_36446582_Goldenberg2016_P1];Palumbo 2016[PMID_36446582_Palumbo_2016];Isrie, 2012_P2[PMID_36446582_Isrie,_2012_P2];Kutkowska-Kazmierczak2021_P19[PMID_36446582_Kutkowska-Kazmierczak2021_P19];KBG23[PMID_36446582_KBG23];Kutkowska-Kazmierczak2021_P21[PMID_36446582_Kutkowska-Kazmierczak2021_P21];Gnazzo, 2020_P29[PMID_36446582_Gnazzo,_2020_P29];Khalifa, 2013_P1B[PMID_36446582_Khalifa,_2013_P1B];Novara, 2017_P7[PMID_36446582_Novara,_2017_P7];Novara, 2017_P11[PMID_36446582_Novara,_2017_P11];Lim2014[PMID_36446582_Lim2014];Willemsen2010_P3[PMID_36446582_Willemsen2010_P3];Novara, 2017_P9[PMID_36446582_Novara,_2017_P9];Parenti2021_P23[PMID_36446582_Parenti2021_P23];KBG9[PMID_36446582_KBG9];Kutkowska-Kazmierczak2021_P15[PMID_36446582_Kutkowska-Kazmierczak2021_P15];Goldenberg2016_P22[PMID_36446582_Goldenberg2016_P22];Novara, 2017_P8[PMID_36446582_Novara,_2017_P8];Novara, 2017_P4[PMID_36446582_Novara,_2017_P4];Spengler, 2013[PMID_36446582_Spengler,_2013];Goldenberg2016_P20[PMID_36446582_Goldenberg2016_P20];Miyatake, 2013[PMID_36446582_Miyatake,_2013];Novara, 2017_P5[PMID_36446582_Novara,_2017_P5];Kutkowska-Kazmierczak2021_P20[PMID_36446582_Kutkowska-Kazmierczak2021_P20];Scarano, 2013_P10[PMID_36446582_Scarano,_2013_P10];Novara, 2017_P12[PMID_36446582_Novara,_2017_P12];Goldenberg2016_P21[PMID_36446582_Goldenberg2016_P21];Ockeloen2015_P20[PMID_36446582_Ockeloen2015_P20];Willemsen2010_P4[PMID_36446582_Willemsen2010_P4];Goldenberg2016_P12[PMID_36446582_Goldenberg2016_P12];Behnert, 2018[PMID_36446582_Behnert,_2018];Kutkowska-Kazmierczak2021_P17[PMID_36446582_Kutkowska-Kazmierczak2021_P17];KBG38[PMID_36446582_KBG38];KBG25[PMID_36446582_KBG25];KBG26[PMID_36446582_KBG26];Goldenberg2016_P4[PMID_36446582_Goldenberg2016_P4];Novara, 2017_P1[PMID_36446582_Novara,_2017_P1];Srivastava, 2017_P1[PMID_36446582_Srivastava,_2017_P1];Goldenberg2016_P28[PMID_36446582_Goldenberg2016_P28];Goldenberg2016_P29[PMID_36446582_Goldenberg2016_P29];KBG1[PMID_36446582_KBG1];Novara, 2017_P2[PMID_36446582_Novara,_2017_P2];Goldenberg2016_P2[PMID_36446582_Goldenberg2016_P2];Goldenberg2016_P10[PMID_36446582_Goldenberg2016_P10];Kutkowska-Kazmierczak2021_P23[PMID_36446582_Kutkowska-Kazmierczak2021_P23]</td></tr>\n",
        "<tr><td>Total Unique HPO Terms</td><td>27</td></tr>\n",
        "<tr><td>Total Unique Variants</td><td>251</td></tr>\n",
        "</table>"
@@ -396,36 +721,36 @@
        "<tr><td>Variant</td><td>Effect</td><td>Count</td><td>Key</td></tr>\n",
        "<tr><td>c.1903_1907del</td><td>FRAMESHIFT_VARIANT</td><td>33</td><td>16_89284634_89284639_GTGTTT_G</td></tr>\n",
        "<tr><td>c.2408_2412del</td><td>FRAMESHIFT_VARIANT</td><td>10</td><td>16_89284129_89284134_CTTTTT_C</td></tr>\n",
-       "<tr><td>c.2398_2401del</td><td>FRAMESHIFT_VARIANT</td><td>8</td><td>16_89284140_89284144_TTTTC_T</td></tr>\n",
        "<tr><td>c.1381_1384del</td><td>FRAMESHIFT_VARIANT</td><td>8</td><td>16_89285157_89285161_GTTTC_G</td></tr>\n",
-       "<tr><td>c.7481_7482insC</td><td>FRAMESHIFT_VARIANT</td><td>5</td><td>16_89275180_89275180_A_AG</td></tr>\n",
+       "<tr><td>c.2398_2401del</td><td>FRAMESHIFT_VARIANT</td><td>8</td><td>16_89284140_89284144_TTTTC_T</td></tr>\n",
        "<tr><td>c.6792_6793insC</td><td>FRAMESHIFT_VARIANT</td><td>5</td><td>16_89279749_89279749_C_CG</td></tr>\n",
-       "<tr><td>c.2197C>T</td><td>STOP_GAINED</td><td>3</td><td>16_89284345_89284345_G_A</td></tr>\n",
+       "<tr><td>c.7481_7482insC</td><td>FRAMESHIFT_VARIANT</td><td>5</td><td>16_89275180_89275180_A_AG</td></tr>\n",
+       "<tr><td>c.2182_2183del</td><td>FRAMESHIFT_VARIANT</td><td>3</td><td>16_89284358_89284360_GAT_G</td></tr>\n",
        "<tr><td>c.7570-1G>C</td><td>SPLICE_ACCEPTOR_VARIANT</td><td>3</td><td>16_89274958_89274958_C_G</td></tr>\n",
        "<tr><td>c.2175_2178del</td><td>FRAMESHIFT_VARIANT</td><td>3</td><td>16_89284363_89284367_CTTTG_C</td></tr>\n",
-       "<tr><td>c.1977C>G</td><td>STOP_GAINED</td><td>3</td><td>16_89284565_89284565_G_C</td></tr>\n",
-       "<tr><td>c.2182_2183del</td><td>FRAMESHIFT_VARIANT</td><td>3</td><td>16_89284358_89284360_GAT_G</td></tr>\n",
-       "<tr><td>c.3224_3227del</td><td>FRAMESHIFT_VARIANT</td><td>3</td><td>16_89283314_89283318_CCTTT_C</td></tr>\n",
        "<tr><td>c.4406G>A</td><td>STOP_GAINED</td><td>3</td><td>16_89282136_89282136_C_T</td></tr>\n",
+       "<tr><td>c.3224_3227del</td><td>FRAMESHIFT_VARIANT</td><td>3</td><td>16_89283314_89283318_CCTTT_C</td></tr>\n",
+       "<tr><td>c.2197C>T</td><td>STOP_GAINED</td><td>3</td><td>16_89284345_89284345_G_A</td></tr>\n",
+       "<tr><td>c.1977C>G</td><td>STOP_GAINED</td><td>3</td><td>16_89284565_89284565_G_C</td></tr>\n",
        "<tr><td>c.3832A>T</td><td>STOP_GAINED</td><td>3</td><td>16_89282710_89282710_T_A</td></tr>\n",
-       "<tr><td>c.1385_1388del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89285153_89285157_TTTTG_T</td></tr>\n",
-       "<tr><td>c.7216C>T</td><td>STOP_GAINED</td><td>2</td><td>16_89279326_89279326_G_A</td></tr>\n",
-       "<tr><td>c.1318C>T</td><td>STOP_GAINED</td><td>2</td><td>16_89285224_89285224_G_A</td></tr>\n",
+       "<tr><td>c.4384_4385insA</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89282157_89282157_C_CT</td></tr>\n",
        "<tr><td>c.3590_3594del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89282947_89282952_CTTTTT_C</td></tr>\n",
-       "<tr><td>c.7534C>T</td><td>MISSENSE_VARIANT</td><td>2</td><td>16_89275128_89275128_G_A</td></tr>\n",
-       "<tr><td>c.2329_2332del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89284209_89284213_TTCTC_T</td></tr>\n",
        "<tr><td>c.3704_3707del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89282834_89282838_CTGTT_C</td></tr>\n",
        "<tr><td>c.6513_6514insC</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89280028_89280028_C_CG</td></tr>\n",
-       "<tr><td>c.5790C>A</td><td>STOP_GAINED</td><td>2</td><td>16_89280752_89280752_G_T</td></tr>\n",
+       "<tr><td>c.2329_2332del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89284209_89284213_TTCTC_T</td></tr>\n",
+       "<tr><td>c.1318C>T</td><td>STOP_GAINED</td><td>2</td><td>16_89285224_89285224_G_A</td></tr>\n",
+       "<tr><td>c.7534C>T</td><td>MISSENSE_VARIANT</td><td>2</td><td>16_89275128_89275128_G_A</td></tr>\n",
        "<tr><td>c.4087C>T</td><td>STOP_GAINED</td><td>2</td><td>16_89282455_89282455_G_A</td></tr>\n",
-       "<tr><td>c.3045del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89283496_89283497_CG_C</td></tr>\n",
+       "<tr><td>c.1385_1388del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89285153_89285157_TTTTG_T</td></tr>\n",
+       "<tr><td>c.7216C>T</td><td>STOP_GAINED</td><td>2</td><td>16_89279326_89279326_G_A</td></tr>\n",
        "<tr><td>c.3309_3310insA</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89283232_89283232_C_CT</td></tr>\n",
+       "<tr><td>c.5790C>A</td><td>STOP_GAINED</td><td>2</td><td>16_89280752_89280752_G_T</td></tr>\n",
        "<tr><td>c.5488G>T</td><td>STOP_GAINED</td><td>2</td><td>16_89281054_89281054_C_A</td></tr>\n",
-       "<tr><td>c.4384_4385insA</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89282157_89282157_C_CT</td></tr>\n",
+       "<tr><td>c.3045del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89283496_89283497_CG_C</td></tr>\n",
        "<tr><td>c.1367_1370del</td><td>FRAMESHIFT_VARIANT</td><td>2</td><td>16_89285171_89285175_CTTCT_C</td></tr>\n",
        "</table>\n",
        "<p>Additionally, the following variants were observed 1 or fewer times: \n",
-       "c.7411_7422del; c.6071_6084del; c.4964_4965del; c.1785_1786delinsTT; c.3582del; c.7189C>T; c.3153del; c.211_226+1del; c.5145C>G; c.3382_3383del; c.2828_2829del; c.2751_2752insT; c.520C>T; c.3888_3889insC; c.1285_1286del; c.7552C>T; c.6340C>T; c.3448C>T; c.3198_3199del; c.7083del; c.7407C>G; c.3123_3126del; c.7753C>T; c.3295_3296del; c.2647G>T; c.3771_3772insA; c.2650del; c.4391_4392del; c.2297_2300del; c.6053_6057del; c.6364_6367del; c.3437_3461del; c.6184del; c.1389_1390insA; c.1460_1463del; c.4107_4108del; c.2866G>T; c.1763C>A; c.5889del; c.5274_5275insC; c.5123C>A; c.1711_1723del; c.4206C>G; c.2305del; c.3339G>A; c.5426_5430del; c.5483C>A; c.3905_3906del; c.3770_3771del; c.6682del; c.6701del; c.2692C>T; c.2765_2766del; c.915del; c.7834G>T; c.4558del; c.3774_3775del; c.7607G>A; c.548_551del; c.3019C>T; c.2412del; c.4218C>A; c.7570_7572del; c.4528_4529del; c.4177_4189del; c.1893_1894insA; c.3334del; c.4171C>T; c.1457C>G; c.7471-1G>C; c.5199_5227del; c.7535G>A; c.3222_3223insA; c.3974del; c.4408A>T; c.1846G>T; c.4786G>T; c.3193A>T; c.4389_4390del; c.2593_2594insT; c.6409_6410del; c.5205del; c.1801C>T; c.1940_1941delinsT; c.7416C>G; c.7356_7357insC; c.3046del; c.6817_6833del; c.3180_3181insA; c.7363del; c.3221_3222del; c.5712_5713insT; c.866_867insA; c.3310_3311insG; c.4529_4530insC; c.3591_3594del; c.6187G>T; c.3931C>T; c.7471A>C; c.4498C>T; c.3460G>T; c.4103_4104del; c.1120G>T; c.867C>G; c.7000C>T; c.3208_3209del; c.5953_5954del; c.7470+2T>C; c.6472G>T; c.1731_1732insT; c.5957_5958del; c.7192C>T; c.6628G>T; c.2512C>T; c.505G>T; c.5146G>T; c.2395A>T; c.4374_4375del; c.831del; c.6015_6016insA; c.2130del; c.6766C>T; c.4283_4286del; c.2367del; c.7180C>T; c.6968_6975del; c.6691_6692insG; c.1173C>G.</p>\n",
+       "c.4964_4965del; c.4206C>G; c.1389_1390insA; c.2512C>T; c.3019C>T; c.7607G>A; c.4283_4286del; c.5145C>G; c.2751_2752insT; c.2395A>T; c.7363del; c.7834G>T; c.5146G>T; c.3180_3181insA; c.3774_3775del; c.1763C>A; c.7180C>T; c.4558del; c.4391_4392del; c.6472G>T; c.4374_4375del; c.7192C>T; c.3310_3311insG; c.1711_1723del; c.6340C>T; c.6968_6975del; c.3591_3594del; c.2297_2300del; c.831del; c.548_551del; c.1731_1732insT; c.6409_6410del; c.2412del; c.3974del; c.1940_1941delinsT; c.4107_4108del; c.4528_4529del; c.915del; c.3153del; c.4389_4390del; c.1285_1286del; c.2828_2829del; c.6015_6016insA; c.6766C>T; c.5199_5227del; c.7411_7422del; c.5123C>A; c.6817_6833del; c.3931C>T; c.5205del; c.1457C>G; c.1120G>T; c.3437_3461del; c.3382_3383del; c.4786G>T; c.3222_3223insA; c.6071_6084del; c.1785_1786delinsTT; c.4498C>T; c.6628G>T; c.3046del; c.867C>G; c.3339G>A; c.5889del; c.4103_4104del; c.3582del; c.2866G>T; c.7356_7357insC; c.6364_6367del; c.1173C>G; c.7570_7572del; c.2647G>T; c.1801C>T; c.505G>T; c.3770_3771del; c.3295_3296del; c.1893_1894insA; c.6682del; c.4218C>A; c.2305del; c.6184del; c.3771_3772insA; c.6691_6692insG; c.3448C>T; c.4177_4189del; c.211_226+1del; c.7407C>G; c.3905_3906del; c.5426_5430del; c.6701del; c.5483C>A; c.5274_5275insC; c.1460_1463del; c.3888_3889insC; c.2650del; c.7083del; c.3334del; c.3193A>T; c.5953_5954del; c.7552C>T; c.7000C>T; c.3460G>T; c.2593_2594insT; c.7189C>T; c.4408A>T; c.6053_6057del; c.4171C>T; c.7471A>C; c.3208_3209del; c.4529_4530insC; c.2692C>T; c.6187G>T; c.520C>T; c.2130del; c.3198_3199del; c.7470+2T>C; c.3123_3126del; c.7535G>A; c.7416C>G; c.866_867insA; c.2367del; c.5957_5958del; c.5712_5713insT; c.1846G>T; c.3221_3222del; c.7471-1G>C; c.2765_2766del; c.7753C>T.</p>\n",
        "<p>Use the entry in the \"Key\" column to investigate whether specific variants display genotype-phenotype correlations</p>"
       ],
       "text/plain": [
@@ -453,7 +778,22 @@
    "execution_count": 9,
    "id": "ec6c204f",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "ename": "ValueError",
+     "evalue": "Unknown protein fallback annotator type <genophenocorr.analysis._config.CohortAnalysisConfiguration object at 0x11fe91990>",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
+      "Cell \u001b[0;32mIn[9], line 9\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mgenophenocorr\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01manalysis\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpredicate\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m BooleanPredicate, GroupingPredicate\n\u001b[1;32m      4\u001b[0m analysis_config \u001b[38;5;241m=\u001b[39m CohortAnalysisConfiguration\u001b[38;5;241m.\u001b[39mbuilder()\\\n\u001b[1;32m      5\u001b[0m     \u001b[38;5;241m.\u001b[39mmissing_implies_excluded(\u001b[38;5;28;01mTrue\u001b[39;00m)\\\n\u001b[1;32m      6\u001b[0m     \u001b[38;5;241m.\u001b[39mpval_correction(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfdr_bh\u001b[39m\u001b[38;5;124m'\u001b[39m)\\\n\u001b[1;32m      7\u001b[0m     \u001b[38;5;241m.\u001b[39mmin_perc_patients_w_hpo(\u001b[38;5;241m0.1\u001b[39m)\\\n\u001b[1;32m      8\u001b[0m     \u001b[38;5;241m.\u001b[39mbuild()\n\u001b[0;32m----> 9\u001b[0m analysis \u001b[38;5;241m=\u001b[39m \u001b[43mconfigure_cohort_analysis\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcohort\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhpo\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43manalysis_config\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/Documents/Programs/genophenocorr/src/genophenocorr/analysis/_config.py:188\u001b[0m, in \u001b[0;36mconfigure_cohort_analysis\u001b[0;34m(cohort, hpo, protein_source, cache_dir, config)\u001b[0m\n\u001b[1;32m    186\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cache_dir \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m    187\u001b[0m     cache_dir \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(os\u001b[38;5;241m.\u001b[39mgetcwd(), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.genophenocorr_cache\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m--> 188\u001b[0m protein_metadata_service \u001b[38;5;241m=\u001b[39m \u001b[43m_configure_protein_service\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprotein_source\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcache_dir\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    191\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m CommunistCohortAnalysis(cohort, hpo, protein_metadata_service,\n\u001b[1;32m    192\u001b[0m                                missing_implies_excluded\u001b[38;5;241m=\u001b[39mconfig\u001b[38;5;241m.\u001b[39mmissing_implies_excluded,\n\u001b[1;32m    193\u001b[0m                                include_sv\u001b[38;5;241m=\u001b[39mconfig\u001b[38;5;241m.\u001b[39minclude_sv,\n\u001b[1;32m    194\u001b[0m                                p_val_correction\u001b[38;5;241m=\u001b[39mconfig\u001b[38;5;241m.\u001b[39mpval_correction,\n\u001b[1;32m    195\u001b[0m                                min_perc_patients_w_hpo\u001b[38;5;241m=\u001b[39mconfig\u001b[38;5;241m.\u001b[39mmin_perc_patients_w_hpo)\n",
+      "File \u001b[0;32m~/Documents/Programs/genophenocorr/src/genophenocorr/analysis/_config.py:200\u001b[0m, in \u001b[0;36m_configure_protein_service\u001b[0;34m(protein_fallback, cache_dir)\u001b[0m\n\u001b[1;32m    197\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_configure_protein_service\u001b[39m(protein_fallback: \u001b[38;5;28mstr\u001b[39m, cache_dir) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ProteinMetadataService:\n\u001b[1;32m    198\u001b[0m     \u001b[38;5;66;03m# (1) ProteinMetadataService\u001b[39;00m\n\u001b[1;32m    199\u001b[0m     \u001b[38;5;66;03m# Setup fallback\u001b[39;00m\n\u001b[0;32m--> 200\u001b[0m     protein_fallback \u001b[38;5;241m=\u001b[39m \u001b[43m_configure_fallback_protein_service\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprotein_fallback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    201\u001b[0m     \u001b[38;5;66;03m# Setup protein metadata cache\u001b[39;00m\n\u001b[1;32m    202\u001b[0m     prot_cache_dir \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(cache_dir, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mprotein_cache\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
+      "File \u001b[0;32m~/Documents/Programs/genophenocorr/src/genophenocorr/analysis/_config.py:213\u001b[0m, in \u001b[0;36m_configure_fallback_protein_service\u001b[0;34m(protein_fallback)\u001b[0m\n\u001b[1;32m    211\u001b[0m     fallback1 \u001b[38;5;241m=\u001b[39m UniprotProteinMetadataService()\n\u001b[1;32m    212\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 213\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mUnknown protein fallback annotator type \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mprotein_fallback\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m    214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fallback1\n",
+      "\u001b[0;31mValueError\u001b[0m: Unknown protein fallback annotator type <genophenocorr.analysis._config.CohortAnalysisConfiguration object at 0x11fe91990>"
+     ]
+    }
+   ],
    "source": [
     "from genophenocorr.analysis import configure_cohort_analysis, CohortAnalysisConfiguration\n",
     "from genophenocorr.analysis.predicate import BooleanPredicate, GroupingPredicate\n",
@@ -476,618 +816,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": null,
    "id": "91809a38",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead tr th {\n",
-       "        text-align: left;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr>\n",
-       "      <th>FRAMESHIFT_VARIANT on NM_013275.6</th>\n",
-       "      <th colspan=\"2\" halign=\"left\">No</th>\n",
-       "      <th colspan=\"2\" halign=\"left\">Yes</th>\n",
-       "      <th colspan=\"2\" halign=\"left\"></th>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th></th>\n",
-       "      <th>Count</th>\n",
-       "      <th>Percent</th>\n",
-       "      <th>Count</th>\n",
-       "      <th>Percent</th>\n",
-       "      <th>p value</th>\n",
-       "      <th>Corrected p value</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>Intellectual disability [HP:0001249]</th>\n",
-       "      <td>60</td>\n",
-       "      <td>25.210084</td>\n",
-       "      <td>99</td>\n",
-       "      <td>41.596639</td>\n",
-       "      <td>0.000305</td>\n",
-       "      <td>0.008746</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of mental function [HP:0011446]</th>\n",
-       "      <td>66</td>\n",
-       "      <td>27.500000</td>\n",
-       "      <td>113</td>\n",
-       "      <td>47.083333</td>\n",
-       "      <td>0.000380</td>\n",
-       "      <td>0.008746</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Neurodevelopmental abnormality [HP:0012759]</th>\n",
-       "      <td>70</td>\n",
-       "      <td>28.925620</td>\n",
-       "      <td>127</td>\n",
-       "      <td>52.479339</td>\n",
-       "      <td>0.001123</td>\n",
-       "      <td>0.017225</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal nervous system physiology [HP:0012638]</th>\n",
-       "      <td>73</td>\n",
-       "      <td>29.918033</td>\n",
-       "      <td>135</td>\n",
-       "      <td>55.327869</td>\n",
-       "      <td>0.003385</td>\n",
-       "      <td>0.029320</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the nervous system [HP:0000707]</th>\n",
-       "      <td>73</td>\n",
-       "      <td>29.918033</td>\n",
-       "      <td>135</td>\n",
-       "      <td>55.327869</td>\n",
-       "      <td>0.003385</td>\n",
-       "      <td>0.029320</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Global developmental delay [HP:0001263]</th>\n",
-       "      <td>47</td>\n",
-       "      <td>23.039216</td>\n",
-       "      <td>86</td>\n",
-       "      <td>42.156863</td>\n",
-       "      <td>0.005883</td>\n",
-       "      <td>0.029320</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Neurodevelopmental delay [HP:0012758]</th>\n",
-       "      <td>47</td>\n",
-       "      <td>23.039216</td>\n",
-       "      <td>86</td>\n",
-       "      <td>42.156863</td>\n",
-       "      <td>0.005883</td>\n",
-       "      <td>0.029320</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal external nose morphology [HP:0010938]</th>\n",
-       "      <td>42</td>\n",
-       "      <td>19.811321</td>\n",
-       "      <td>70</td>\n",
-       "      <td>33.018868</td>\n",
-       "      <td>0.006374</td>\n",
-       "      <td>0.029320</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal nasal morphology [HP:0005105]</th>\n",
-       "      <td>42</td>\n",
-       "      <td>19.811321</td>\n",
-       "      <td>70</td>\n",
-       "      <td>33.018868</td>\n",
-       "      <td>0.006374</td>\n",
-       "      <td>0.029320</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the nose [HP:0000366]</th>\n",
-       "      <td>42</td>\n",
-       "      <td>19.811321</td>\n",
-       "      <td>70</td>\n",
-       "      <td>33.018868</td>\n",
-       "      <td>0.006374</td>\n",
-       "      <td>0.029320</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the hand [HP:0001155]</th>\n",
-       "      <td>56</td>\n",
-       "      <td>23.236515</td>\n",
-       "      <td>100</td>\n",
-       "      <td>41.493776</td>\n",
-       "      <td>0.059191</td>\n",
-       "      <td>0.197563</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the upper limb [HP:0002817]</th>\n",
-       "      <td>56</td>\n",
-       "      <td>23.236515</td>\n",
-       "      <td>100</td>\n",
-       "      <td>41.493776</td>\n",
-       "      <td>0.059191</td>\n",
-       "      <td>0.197563</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of limbs [HP:0040064]</th>\n",
-       "      <td>56</td>\n",
-       "      <td>23.236515</td>\n",
-       "      <td>100</td>\n",
-       "      <td>41.493776</td>\n",
-       "      <td>0.059191</td>\n",
-       "      <td>0.197563</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Long philtrum [HP:0000343]</th>\n",
-       "      <td>37</td>\n",
-       "      <td>17.129630</td>\n",
-       "      <td>66</td>\n",
-       "      <td>30.555556</td>\n",
-       "      <td>0.073012</td>\n",
-       "      <td>0.197563</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the philtrum [HP:0000288]</th>\n",
-       "      <td>37</td>\n",
-       "      <td>17.129630</td>\n",
-       "      <td>66</td>\n",
-       "      <td>30.555556</td>\n",
-       "      <td>0.073012</td>\n",
-       "      <td>0.197563</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal upper lip morphology [HP:0000177]</th>\n",
-       "      <td>37</td>\n",
-       "      <td>17.129630</td>\n",
-       "      <td>66</td>\n",
-       "      <td>30.555556</td>\n",
-       "      <td>0.073012</td>\n",
-       "      <td>0.197563</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal lip morphology [HP:0000159]</th>\n",
-       "      <td>37</td>\n",
-       "      <td>17.129630</td>\n",
-       "      <td>66</td>\n",
-       "      <td>30.555556</td>\n",
-       "      <td>0.073012</td>\n",
-       "      <td>0.197563</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ear morphology [HP:0031703]</th>\n",
-       "      <td>21</td>\n",
-       "      <td>10.714286</td>\n",
-       "      <td>37</td>\n",
-       "      <td>18.877551</td>\n",
-       "      <td>0.165308</td>\n",
-       "      <td>0.331764</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal hair morphology [HP:0001595]</th>\n",
-       "      <td>36</td>\n",
-       "      <td>17.142857</td>\n",
-       "      <td>69</td>\n",
-       "      <td>32.857143</td>\n",
-       "      <td>0.173094</td>\n",
-       "      <td>0.331764</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ocular adnexa morphology [HP:0030669]</th>\n",
-       "      <td>36</td>\n",
-       "      <td>17.142857</td>\n",
-       "      <td>69</td>\n",
-       "      <td>32.857143</td>\n",
-       "      <td>0.173094</td>\n",
-       "      <td>0.331764</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal skin adnexa morphology [HP:0011138]</th>\n",
-       "      <td>36</td>\n",
-       "      <td>17.142857</td>\n",
-       "      <td>69</td>\n",
-       "      <td>32.857143</td>\n",
-       "      <td>0.173094</td>\n",
-       "      <td>0.331764</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the ocular adnexa [HP:0032039]</th>\n",
-       "      <td>36</td>\n",
-       "      <td>17.142857</td>\n",
-       "      <td>69</td>\n",
-       "      <td>32.857143</td>\n",
-       "      <td>0.173094</td>\n",
-       "      <td>0.331764</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the integument [HP:0001574]</th>\n",
-       "      <td>36</td>\n",
-       "      <td>17.142857</td>\n",
-       "      <td>69</td>\n",
-       "      <td>32.857143</td>\n",
-       "      <td>0.173094</td>\n",
-       "      <td>0.331764</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the orbital region [HP:0000315]</th>\n",
-       "      <td>36</td>\n",
-       "      <td>17.142857</td>\n",
-       "      <td>69</td>\n",
-       "      <td>32.857143</td>\n",
-       "      <td>0.173094</td>\n",
-       "      <td>0.331764</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Atypical behavior [HP:0000708]</th>\n",
-       "      <td>24</td>\n",
-       "      <td>12.631579</td>\n",
-       "      <td>48</td>\n",
-       "      <td>25.263158</td>\n",
-       "      <td>0.243055</td>\n",
-       "      <td>0.415513</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Triangular face [HP:0000325]</th>\n",
-       "      <td>23</td>\n",
-       "      <td>11.855670</td>\n",
-       "      <td>45</td>\n",
-       "      <td>23.195876</td>\n",
-       "      <td>0.243888</td>\n",
-       "      <td>0.415513</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal facial shape [HP:0001999]</th>\n",
-       "      <td>23</td>\n",
-       "      <td>11.855670</td>\n",
-       "      <td>45</td>\n",
-       "      <td>23.195876</td>\n",
-       "      <td>0.243888</td>\n",
-       "      <td>0.415513</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Short stature [HP:0004322]</th>\n",
-       "      <td>40</td>\n",
-       "      <td>17.467249</td>\n",
-       "      <td>75</td>\n",
-       "      <td>32.751092</td>\n",
-       "      <td>0.319588</td>\n",
-       "      <td>0.474228</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of body height [HP:0000002]</th>\n",
-       "      <td>40</td>\n",
-       "      <td>17.467249</td>\n",
-       "      <td>75</td>\n",
-       "      <td>32.751092</td>\n",
-       "      <td>0.319588</td>\n",
-       "      <td>0.474228</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Growth delay [HP:0001510]</th>\n",
-       "      <td>40</td>\n",
-       "      <td>17.467249</td>\n",
-       "      <td>75</td>\n",
-       "      <td>32.751092</td>\n",
-       "      <td>0.319588</td>\n",
-       "      <td>0.474228</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Growth abnormality [HP:0001507]</th>\n",
-       "      <td>40</td>\n",
-       "      <td>17.467249</td>\n",
-       "      <td>75</td>\n",
-       "      <td>32.751092</td>\n",
-       "      <td>0.319588</td>\n",
-       "      <td>0.474228</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Cognitive impairment [HP:0100543]</th>\n",
-       "      <td>16</td>\n",
-       "      <td>8.556150</td>\n",
-       "      <td>35</td>\n",
-       "      <td>18.716578</td>\n",
-       "      <td>0.464138</td>\n",
-       "      <td>0.667198</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Phenotypic abnormality [HP:0000118]</th>\n",
-       "      <td>80</td>\n",
-       "      <td>31.872510</td>\n",
-       "      <td>168</td>\n",
-       "      <td>66.932271</td>\n",
-       "      <td>0.553478</td>\n",
-       "      <td>0.748823</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>All [HP:0000001]</th>\n",
-       "      <td>80</td>\n",
-       "      <td>31.872510</td>\n",
-       "      <td>168</td>\n",
-       "      <td>66.932271</td>\n",
-       "      <td>0.553478</td>\n",
-       "      <td>0.748823</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the ear [HP:0000598]</th>\n",
-       "      <td>34</td>\n",
-       "      <td>16.267943</td>\n",
-       "      <td>77</td>\n",
-       "      <td>36.842105</td>\n",
-       "      <td>0.763746</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the face [HP:0000271]</th>\n",
-       "      <td>70</td>\n",
-       "      <td>28.925620</td>\n",
-       "      <td>150</td>\n",
-       "      <td>61.983471</td>\n",
-       "      <td>0.811212</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the head [HP:0000234]</th>\n",
-       "      <td>70</td>\n",
-       "      <td>28.925620</td>\n",
-       "      <td>150</td>\n",
-       "      <td>61.983471</td>\n",
-       "      <td>0.811212</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of head or neck [HP:0000152]</th>\n",
-       "      <td>70</td>\n",
-       "      <td>28.925620</td>\n",
-       "      <td>150</td>\n",
-       "      <td>61.983471</td>\n",
-       "      <td>0.811212</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal oral cavity morphology [HP:0000163]</th>\n",
-       "      <td>65</td>\n",
-       "      <td>27.083333</td>\n",
-       "      <td>140</td>\n",
-       "      <td>58.333333</td>\n",
-       "      <td>0.844225</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal oral morphology [HP:0031816]</th>\n",
-       "      <td>65</td>\n",
-       "      <td>27.083333</td>\n",
-       "      <td>140</td>\n",
-       "      <td>58.333333</td>\n",
-       "      <td>0.844225</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the mouth [HP:0000153]</th>\n",
-       "      <td>65</td>\n",
-       "      <td>27.083333</td>\n",
-       "      <td>140</td>\n",
-       "      <td>58.333333</td>\n",
-       "      <td>0.844225</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Hearing abnormality [HP:0000364]</th>\n",
-       "      <td>22</td>\n",
-       "      <td>11.111111</td>\n",
-       "      <td>52</td>\n",
-       "      <td>26.262626</td>\n",
-       "      <td>0.871656</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ear physiology [HP:0031704]</th>\n",
-       "      <td>22</td>\n",
-       "      <td>11.111111</td>\n",
-       "      <td>52</td>\n",
-       "      <td>26.262626</td>\n",
-       "      <td>0.871656</td>\n",
-       "      <td>0.932469</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Macrodontia [HP:0001572]</th>\n",
-       "      <td>58</td>\n",
-       "      <td>24.576271</td>\n",
-       "      <td>124</td>\n",
-       "      <td>52.542373</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal dental morphology [HP:0006482]</th>\n",
-       "      <td>58</td>\n",
-       "      <td>24.576271</td>\n",
-       "      <td>124</td>\n",
-       "      <td>52.542373</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the dentition [HP:0000164]</th>\n",
-       "      <td>58</td>\n",
-       "      <td>24.576271</td>\n",
-       "      <td>124</td>\n",
-       "      <td>52.542373</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.000000</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "FRAMESHIFT_VARIANT on NM_013275.6                  No              Yes  \\\n",
-       "                                                Count    Percent Count   \n",
-       "Intellectual disability [HP:0001249]               60  25.210084    99   \n",
-       "Abnormality of mental function [HP:0011446]        66  27.500000   113   \n",
-       "Neurodevelopmental abnormality [HP:0012759]        70  28.925620   127   \n",
-       "Abnormal nervous system physiology [HP:0012638]    73  29.918033   135   \n",
-       "Abnormality of the nervous system [HP:0000707]     73  29.918033   135   \n",
-       "Global developmental delay [HP:0001263]            47  23.039216    86   \n",
-       "Neurodevelopmental delay [HP:0012758]              47  23.039216    86   \n",
-       "Abnormal external nose morphology [HP:0010938]     42  19.811321    70   \n",
-       "Abnormal nasal morphology [HP:0005105]             42  19.811321    70   \n",
-       "Abnormality of the nose [HP:0000366]               42  19.811321    70   \n",
-       "Abnormality of the hand [HP:0001155]               56  23.236515   100   \n",
-       "Abnormality of the upper limb [HP:0002817]         56  23.236515   100   \n",
-       "Abnormality of limbs [HP:0040064]                  56  23.236515   100   \n",
-       "Long philtrum [HP:0000343]                         37  17.129630    66   \n",
-       "Abnormality of the philtrum [HP:0000288]           37  17.129630    66   \n",
-       "Abnormal upper lip morphology [HP:0000177]         37  17.129630    66   \n",
-       "Abnormal lip morphology [HP:0000159]               37  17.129630    66   \n",
-       "Abnormal ear morphology [HP:0031703]               21  10.714286    37   \n",
-       "Abnormal hair morphology [HP:0001595]              36  17.142857    69   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]     36  17.142857    69   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]       36  17.142857    69   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]      36  17.142857    69   \n",
-       "Abnormality of the integument [HP:0001574]         36  17.142857    69   \n",
-       "Abnormality of the orbital region [HP:0000315]     36  17.142857    69   \n",
-       "Atypical behavior [HP:0000708]                     24  12.631579    48   \n",
-       "Triangular face [HP:0000325]                       23  11.855670    45   \n",
-       "Abnormal facial shape [HP:0001999]                 23  11.855670    45   \n",
-       "Short stature [HP:0004322]                         40  17.467249    75   \n",
-       "Abnormality of body height [HP:0000002]            40  17.467249    75   \n",
-       "Growth delay [HP:0001510]                          40  17.467249    75   \n",
-       "Growth abnormality [HP:0001507]                    40  17.467249    75   \n",
-       "Cognitive impairment [HP:0100543]                  16   8.556150    35   \n",
-       "Phenotypic abnormality [HP:0000118]                80  31.872510   168   \n",
-       "All [HP:0000001]                                   80  31.872510   168   \n",
-       "Abnormality of the ear [HP:0000598]                34  16.267943    77   \n",
-       "Abnormality of the face [HP:0000271]               70  28.925620   150   \n",
-       "Abnormality of the head [HP:0000234]               70  28.925620   150   \n",
-       "Abnormality of head or neck [HP:0000152]           70  28.925620   150   \n",
-       "Abnormal oral cavity morphology [HP:0000163]       65  27.083333   140   \n",
-       "Abnormal oral morphology [HP:0031816]              65  27.083333   140   \n",
-       "Abnormality of the mouth [HP:0000153]              65  27.083333   140   \n",
-       "Hearing abnormality [HP:0000364]                   22  11.111111    52   \n",
-       "Abnormal ear physiology [HP:0031704]               22  11.111111    52   \n",
-       "Macrodontia [HP:0001572]                           58  24.576271   124   \n",
-       "Abnormal dental morphology [HP:0006482]            58  24.576271   124   \n",
-       "Abnormality of the dentition [HP:0000164]          58  24.576271   124   \n",
-       "\n",
-       "FRAMESHIFT_VARIANT on NM_013275.6                                     \\\n",
-       "                                                   Percent   p value   \n",
-       "Intellectual disability [HP:0001249]             41.596639  0.000305   \n",
-       "Abnormality of mental function [HP:0011446]      47.083333  0.000380   \n",
-       "Neurodevelopmental abnormality [HP:0012759]      52.479339  0.001123   \n",
-       "Abnormal nervous system physiology [HP:0012638]  55.327869  0.003385   \n",
-       "Abnormality of the nervous system [HP:0000707]   55.327869  0.003385   \n",
-       "Global developmental delay [HP:0001263]          42.156863  0.005883   \n",
-       "Neurodevelopmental delay [HP:0012758]            42.156863  0.005883   \n",
-       "Abnormal external nose morphology [HP:0010938]   33.018868  0.006374   \n",
-       "Abnormal nasal morphology [HP:0005105]           33.018868  0.006374   \n",
-       "Abnormality of the nose [HP:0000366]             33.018868  0.006374   \n",
-       "Abnormality of the hand [HP:0001155]             41.493776  0.059191   \n",
-       "Abnormality of the upper limb [HP:0002817]       41.493776  0.059191   \n",
-       "Abnormality of limbs [HP:0040064]                41.493776  0.059191   \n",
-       "Long philtrum [HP:0000343]                       30.555556  0.073012   \n",
-       "Abnormality of the philtrum [HP:0000288]         30.555556  0.073012   \n",
-       "Abnormal upper lip morphology [HP:0000177]       30.555556  0.073012   \n",
-       "Abnormal lip morphology [HP:0000159]             30.555556  0.073012   \n",
-       "Abnormal ear morphology [HP:0031703]             18.877551  0.165308   \n",
-       "Abnormal hair morphology [HP:0001595]            32.857143  0.173094   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]   32.857143  0.173094   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]     32.857143  0.173094   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]    32.857143  0.173094   \n",
-       "Abnormality of the integument [HP:0001574]       32.857143  0.173094   \n",
-       "Abnormality of the orbital region [HP:0000315]   32.857143  0.173094   \n",
-       "Atypical behavior [HP:0000708]                   25.263158  0.243055   \n",
-       "Triangular face [HP:0000325]                     23.195876  0.243888   \n",
-       "Abnormal facial shape [HP:0001999]               23.195876  0.243888   \n",
-       "Short stature [HP:0004322]                       32.751092  0.319588   \n",
-       "Abnormality of body height [HP:0000002]          32.751092  0.319588   \n",
-       "Growth delay [HP:0001510]                        32.751092  0.319588   \n",
-       "Growth abnormality [HP:0001507]                  32.751092  0.319588   \n",
-       "Cognitive impairment [HP:0100543]                18.716578  0.464138   \n",
-       "Phenotypic abnormality [HP:0000118]              66.932271  0.553478   \n",
-       "All [HP:0000001]                                 66.932271  0.553478   \n",
-       "Abnormality of the ear [HP:0000598]              36.842105  0.763746   \n",
-       "Abnormality of the face [HP:0000271]             61.983471  0.811212   \n",
-       "Abnormality of the head [HP:0000234]             61.983471  0.811212   \n",
-       "Abnormality of head or neck [HP:0000152]         61.983471  0.811212   \n",
-       "Abnormal oral cavity morphology [HP:0000163]     58.333333  0.844225   \n",
-       "Abnormal oral morphology [HP:0031816]            58.333333  0.844225   \n",
-       "Abnormality of the mouth [HP:0000153]            58.333333  0.844225   \n",
-       "Hearing abnormality [HP:0000364]                 26.262626  0.871656   \n",
-       "Abnormal ear physiology [HP:0031704]             26.262626  0.871656   \n",
-       "Macrodontia [HP:0001572]                         52.542373  1.000000   \n",
-       "Abnormal dental morphology [HP:0006482]          52.542373  1.000000   \n",
-       "Abnormality of the dentition [HP:0000164]        52.542373  1.000000   \n",
-       "\n",
-       "FRAMESHIFT_VARIANT on NM_013275.6                                  \n",
-       "                                                Corrected p value  \n",
-       "Intellectual disability [HP:0001249]                     0.008746  \n",
-       "Abnormality of mental function [HP:0011446]              0.008746  \n",
-       "Neurodevelopmental abnormality [HP:0012759]              0.017225  \n",
-       "Abnormal nervous system physiology [HP:0012638]          0.029320  \n",
-       "Abnormality of the nervous system [HP:0000707]           0.029320  \n",
-       "Global developmental delay [HP:0001263]                  0.029320  \n",
-       "Neurodevelopmental delay [HP:0012758]                    0.029320  \n",
-       "Abnormal external nose morphology [HP:0010938]           0.029320  \n",
-       "Abnormal nasal morphology [HP:0005105]                   0.029320  \n",
-       "Abnormality of the nose [HP:0000366]                     0.029320  \n",
-       "Abnormality of the hand [HP:0001155]                     0.197563  \n",
-       "Abnormality of the upper limb [HP:0002817]               0.197563  \n",
-       "Abnormality of limbs [HP:0040064]                        0.197563  \n",
-       "Long philtrum [HP:0000343]                               0.197563  \n",
-       "Abnormality of the philtrum [HP:0000288]                 0.197563  \n",
-       "Abnormal upper lip morphology [HP:0000177]               0.197563  \n",
-       "Abnormal lip morphology [HP:0000159]                     0.197563  \n",
-       "Abnormal ear morphology [HP:0031703]                     0.331764  \n",
-       "Abnormal hair morphology [HP:0001595]                    0.331764  \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]           0.331764  \n",
-       "Abnormal skin adnexa morphology [HP:0011138]             0.331764  \n",
-       "Abnormality of the ocular adnexa [HP:0032039]            0.331764  \n",
-       "Abnormality of the integument [HP:0001574]               0.331764  \n",
-       "Abnormality of the orbital region [HP:0000315]           0.331764  \n",
-       "Atypical behavior [HP:0000708]                           0.415513  \n",
-       "Triangular face [HP:0000325]                             0.415513  \n",
-       "Abnormal facial shape [HP:0001999]                       0.415513  \n",
-       "Short stature [HP:0004322]                               0.474228  \n",
-       "Abnormality of body height [HP:0000002]                  0.474228  \n",
-       "Growth delay [HP:0001510]                                0.474228  \n",
-       "Growth abnormality [HP:0001507]                          0.474228  \n",
-       "Cognitive impairment [HP:0100543]                        0.667198  \n",
-       "Phenotypic abnormality [HP:0000118]                      0.748823  \n",
-       "All [HP:0000001]                                         0.748823  \n",
-       "Abnormality of the ear [HP:0000598]                      0.932469  \n",
-       "Abnormality of the face [HP:0000271]                     0.932469  \n",
-       "Abnormality of the head [HP:0000234]                     0.932469  \n",
-       "Abnormality of head or neck [HP:0000152]                 0.932469  \n",
-       "Abnormal oral cavity morphology [HP:0000163]             0.932469  \n",
-       "Abnormal oral morphology [HP:0031816]                    0.932469  \n",
-       "Abnormality of the mouth [HP:0000153]                    0.932469  \n",
-       "Hearing abnormality [HP:0000364]                         0.932469  \n",
-       "Abnormal ear physiology [HP:0031704]                     0.932469  \n",
-       "Macrodontia [HP:0001572]                                 1.000000  \n",
-       "Abnormal dental morphology [HP:0006482]                  1.000000  \n",
-       "Abnormality of the dentition [HP:0000164]                1.000000  "
-      ]
-     },
-     "execution_count": 10,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "from genophenocorr.model import VariantEffect\n",
     "\n",
@@ -1105,667 +837,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": null,
    "id": "57dd0e23",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead tr th {\n",
-       "        text-align: left;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr>\n",
-       "      <th>&gt;=1 allele of the variant 16_89284634_89284639_GTGTTT_G</th>\n",
-       "      <th colspan=\"2\" halign=\"left\">No</th>\n",
-       "      <th colspan=\"2\" halign=\"left\">Yes</th>\n",
-       "      <th colspan=\"2\" halign=\"left\"></th>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th></th>\n",
-       "      <th>Count</th>\n",
-       "      <th>Percent</th>\n",
-       "      <th>Count</th>\n",
-       "      <th>Percent</th>\n",
-       "      <th>p value</th>\n",
-       "      <th>Corrected p value</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>Neurodevelopmental abnormality [HP:0012759]</th>\n",
-       "      <td>176</td>\n",
-       "      <td>72.727273</td>\n",
-       "      <td>21</td>\n",
-       "      <td>8.677686</td>\n",
-       "      <td>0.007993</td>\n",
-       "      <td>0.169079</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal nervous system physiology [HP:0012638]</th>\n",
-       "      <td>185</td>\n",
-       "      <td>75.819672</td>\n",
-       "      <td>23</td>\n",
-       "      <td>9.426230</td>\n",
-       "      <td>0.014355</td>\n",
-       "      <td>0.169079</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the nervous system [HP:0000707]</th>\n",
-       "      <td>185</td>\n",
-       "      <td>75.819672</td>\n",
-       "      <td>23</td>\n",
-       "      <td>9.426230</td>\n",
-       "      <td>0.014355</td>\n",
-       "      <td>0.169079</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Intellectual disability [HP:0001249]</th>\n",
-       "      <td>144</td>\n",
-       "      <td>60.504202</td>\n",
-       "      <td>15</td>\n",
-       "      <td>6.302521</td>\n",
-       "      <td>0.014702</td>\n",
-       "      <td>0.169079</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Phenotypic abnormality [HP:0000118]</th>\n",
-       "      <td>217</td>\n",
-       "      <td>86.454183</td>\n",
-       "      <td>31</td>\n",
-       "      <td>12.350598</td>\n",
-       "      <td>0.046296</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>All [HP:0000001]</th>\n",
-       "      <td>217</td>\n",
-       "      <td>86.454183</td>\n",
-       "      <td>31</td>\n",
-       "      <td>12.350598</td>\n",
-       "      <td>0.046296</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of mental function [HP:0011446]</th>\n",
-       "      <td>160</td>\n",
-       "      <td>66.666667</td>\n",
-       "      <td>19</td>\n",
-       "      <td>7.916667</td>\n",
-       "      <td>0.048016</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Global developmental delay [HP:0001263]</th>\n",
-       "      <td>119</td>\n",
-       "      <td>58.333333</td>\n",
-       "      <td>14</td>\n",
-       "      <td>6.862745</td>\n",
-       "      <td>0.056706</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Neurodevelopmental delay [HP:0012758]</th>\n",
-       "      <td>119</td>\n",
-       "      <td>58.333333</td>\n",
-       "      <td>14</td>\n",
-       "      <td>6.862745</td>\n",
-       "      <td>0.056706</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the ear [HP:0000598]</th>\n",
-       "      <td>101</td>\n",
-       "      <td>48.325359</td>\n",
-       "      <td>10</td>\n",
-       "      <td>4.784689</td>\n",
-       "      <td>0.066000</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal hair morphology [HP:0001595]</th>\n",
-       "      <td>95</td>\n",
-       "      <td>45.238095</td>\n",
-       "      <td>10</td>\n",
-       "      <td>4.761905</td>\n",
-       "      <td>0.074632</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ocular adnexa morphology [HP:0030669]</th>\n",
-       "      <td>95</td>\n",
-       "      <td>45.238095</td>\n",
-       "      <td>10</td>\n",
-       "      <td>4.761905</td>\n",
-       "      <td>0.074632</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal skin adnexa morphology [HP:0011138]</th>\n",
-       "      <td>95</td>\n",
-       "      <td>45.238095</td>\n",
-       "      <td>10</td>\n",
-       "      <td>4.761905</td>\n",
-       "      <td>0.074632</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the ocular adnexa [HP:0032039]</th>\n",
-       "      <td>95</td>\n",
-       "      <td>45.238095</td>\n",
-       "      <td>10</td>\n",
-       "      <td>4.761905</td>\n",
-       "      <td>0.074632</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the integument [HP:0001574]</th>\n",
-       "      <td>95</td>\n",
-       "      <td>45.238095</td>\n",
-       "      <td>10</td>\n",
-       "      <td>4.761905</td>\n",
-       "      <td>0.074632</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the orbital region [HP:0000315]</th>\n",
-       "      <td>95</td>\n",
-       "      <td>45.238095</td>\n",
-       "      <td>10</td>\n",
-       "      <td>4.761905</td>\n",
-       "      <td>0.074632</td>\n",
-       "      <td>0.214567</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the face [HP:0000271]</th>\n",
-       "      <td>193</td>\n",
-       "      <td>79.752066</td>\n",
-       "      <td>27</td>\n",
-       "      <td>11.157025</td>\n",
-       "      <td>0.093495</td>\n",
-       "      <td>0.226357</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the head [HP:0000234]</th>\n",
-       "      <td>193</td>\n",
-       "      <td>79.752066</td>\n",
-       "      <td>27</td>\n",
-       "      <td>11.157025</td>\n",
-       "      <td>0.093495</td>\n",
-       "      <td>0.226357</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of head or neck [HP:0000152]</th>\n",
-       "      <td>193</td>\n",
-       "      <td>79.752066</td>\n",
-       "      <td>27</td>\n",
-       "      <td>11.157025</td>\n",
-       "      <td>0.093495</td>\n",
-       "      <td>0.226357</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal oral cavity morphology [HP:0000163]</th>\n",
-       "      <td>180</td>\n",
-       "      <td>75.000000</td>\n",
-       "      <td>25</td>\n",
-       "      <td>10.416667</td>\n",
-       "      <td>0.109604</td>\n",
-       "      <td>0.229172</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal oral morphology [HP:0031816]</th>\n",
-       "      <td>180</td>\n",
-       "      <td>75.000000</td>\n",
-       "      <td>25</td>\n",
-       "      <td>10.416667</td>\n",
-       "      <td>0.109604</td>\n",
-       "      <td>0.229172</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the mouth [HP:0000153]</th>\n",
-       "      <td>180</td>\n",
-       "      <td>75.000000</td>\n",
-       "      <td>25</td>\n",
-       "      <td>10.416667</td>\n",
-       "      <td>0.109604</td>\n",
-       "      <td>0.229172</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Triangular face [HP:0000325]</th>\n",
-       "      <td>62</td>\n",
-       "      <td>31.958763</td>\n",
-       "      <td>6</td>\n",
-       "      <td>3.092784</td>\n",
-       "      <td>0.134129</td>\n",
-       "      <td>0.257080</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal facial shape [HP:0001999]</th>\n",
-       "      <td>62</td>\n",
-       "      <td>31.958763</td>\n",
-       "      <td>6</td>\n",
-       "      <td>3.092784</td>\n",
-       "      <td>0.134129</td>\n",
-       "      <td>0.257080</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Hearing abnormality [HP:0000364]</th>\n",
-       "      <td>67</td>\n",
-       "      <td>33.838384</td>\n",
-       "      <td>7</td>\n",
-       "      <td>3.535354</td>\n",
-       "      <td>0.205373</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ear physiology [HP:0031704]</th>\n",
-       "      <td>67</td>\n",
-       "      <td>33.838384</td>\n",
-       "      <td>7</td>\n",
-       "      <td>3.535354</td>\n",
-       "      <td>0.205373</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Long philtrum [HP:0000343]</th>\n",
-       "      <td>92</td>\n",
-       "      <td>42.592593</td>\n",
-       "      <td>11</td>\n",
-       "      <td>5.092593</td>\n",
-       "      <td>0.238468</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the philtrum [HP:0000288]</th>\n",
-       "      <td>92</td>\n",
-       "      <td>42.592593</td>\n",
-       "      <td>11</td>\n",
-       "      <td>5.092593</td>\n",
-       "      <td>0.238468</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal upper lip morphology [HP:0000177]</th>\n",
-       "      <td>92</td>\n",
-       "      <td>42.592593</td>\n",
-       "      <td>11</td>\n",
-       "      <td>5.092593</td>\n",
-       "      <td>0.238468</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal lip morphology [HP:0000159]</th>\n",
-       "      <td>92</td>\n",
-       "      <td>42.592593</td>\n",
-       "      <td>11</td>\n",
-       "      <td>5.092593</td>\n",
-       "      <td>0.238468</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal external nose morphology [HP:0010938]</th>\n",
-       "      <td>99</td>\n",
-       "      <td>46.698113</td>\n",
-       "      <td>13</td>\n",
-       "      <td>6.132075</td>\n",
-       "      <td>0.242887</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal nasal morphology [HP:0005105]</th>\n",
-       "      <td>99</td>\n",
-       "      <td>46.698113</td>\n",
-       "      <td>13</td>\n",
-       "      <td>6.132075</td>\n",
-       "      <td>0.242887</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the nose [HP:0000366]</th>\n",
-       "      <td>99</td>\n",
-       "      <td>46.698113</td>\n",
-       "      <td>13</td>\n",
-       "      <td>6.132075</td>\n",
-       "      <td>0.242887</td>\n",
-       "      <td>0.338570</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ear morphology [HP:0031703]</th>\n",
-       "      <td>52</td>\n",
-       "      <td>26.530612</td>\n",
-       "      <td>6</td>\n",
-       "      <td>3.061224</td>\n",
-       "      <td>0.375674</td>\n",
-       "      <td>0.508265</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Atypical behavior [HP:0000708]</th>\n",
-       "      <td>64</td>\n",
-       "      <td>33.684211</td>\n",
-       "      <td>8</td>\n",
-       "      <td>4.210526</td>\n",
-       "      <td>0.396639</td>\n",
-       "      <td>0.521297</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Short stature [HP:0004322]</th>\n",
-       "      <td>101</td>\n",
-       "      <td>44.104803</td>\n",
-       "      <td>14</td>\n",
-       "      <td>6.113537</td>\n",
-       "      <td>0.452237</td>\n",
-       "      <td>0.533408</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of body height [HP:0000002]</th>\n",
-       "      <td>101</td>\n",
-       "      <td>44.104803</td>\n",
-       "      <td>14</td>\n",
-       "      <td>6.113537</td>\n",
-       "      <td>0.452237</td>\n",
-       "      <td>0.533408</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Growth delay [HP:0001510]</th>\n",
-       "      <td>101</td>\n",
-       "      <td>44.104803</td>\n",
-       "      <td>14</td>\n",
-       "      <td>6.113537</td>\n",
-       "      <td>0.452237</td>\n",
-       "      <td>0.533408</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Growth abnormality [HP:0001507]</th>\n",
-       "      <td>101</td>\n",
-       "      <td>44.104803</td>\n",
-       "      <td>14</td>\n",
-       "      <td>6.113537</td>\n",
-       "      <td>0.452237</td>\n",
-       "      <td>0.533408</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Macrodontia [HP:0001572]</th>\n",
-       "      <td>159</td>\n",
-       "      <td>67.372881</td>\n",
-       "      <td>23</td>\n",
-       "      <td>9.745763</td>\n",
-       "      <td>0.651760</td>\n",
-       "      <td>0.713833</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal dental morphology [HP:0006482]</th>\n",
-       "      <td>159</td>\n",
-       "      <td>67.372881</td>\n",
-       "      <td>23</td>\n",
-       "      <td>9.745763</td>\n",
-       "      <td>0.651760</td>\n",
-       "      <td>0.713833</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the dentition [HP:0000164]</th>\n",
-       "      <td>159</td>\n",
-       "      <td>67.372881</td>\n",
-       "      <td>23</td>\n",
-       "      <td>9.745763</td>\n",
-       "      <td>0.651760</td>\n",
-       "      <td>0.713833</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the hand [HP:0001155]</th>\n",
-       "      <td>134</td>\n",
-       "      <td>55.601660</td>\n",
-       "      <td>22</td>\n",
-       "      <td>9.128631</td>\n",
-       "      <td>0.847288</td>\n",
-       "      <td>0.866116</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the upper limb [HP:0002817]</th>\n",
-       "      <td>134</td>\n",
-       "      <td>55.601660</td>\n",
-       "      <td>22</td>\n",
-       "      <td>9.128631</td>\n",
-       "      <td>0.847288</td>\n",
-       "      <td>0.866116</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of limbs [HP:0040064]</th>\n",
-       "      <td>134</td>\n",
-       "      <td>55.601660</td>\n",
-       "      <td>22</td>\n",
-       "      <td>9.128631</td>\n",
-       "      <td>0.847288</td>\n",
-       "      <td>0.866116</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Cognitive impairment [HP:0100543]</th>\n",
-       "      <td>44</td>\n",
-       "      <td>23.529412</td>\n",
-       "      <td>7</td>\n",
-       "      <td>3.743316</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.000000</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       ">=1 allele of the variant 16_89284634_89284639_GTGTTT_G    No             \\\n",
-       "                                                        Count    Percent   \n",
-       "Neurodevelopmental abnormality [HP:0012759]               176  72.727273   \n",
-       "Abnormal nervous system physiology [HP:0012638]           185  75.819672   \n",
-       "Abnormality of the nervous system [HP:0000707]            185  75.819672   \n",
-       "Intellectual disability [HP:0001249]                      144  60.504202   \n",
-       "Phenotypic abnormality [HP:0000118]                       217  86.454183   \n",
-       "All [HP:0000001]                                          217  86.454183   \n",
-       "Abnormality of mental function [HP:0011446]               160  66.666667   \n",
-       "Global developmental delay [HP:0001263]                   119  58.333333   \n",
-       "Neurodevelopmental delay [HP:0012758]                     119  58.333333   \n",
-       "Abnormality of the ear [HP:0000598]                       101  48.325359   \n",
-       "Abnormal hair morphology [HP:0001595]                      95  45.238095   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]             95  45.238095   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]               95  45.238095   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]              95  45.238095   \n",
-       "Abnormality of the integument [HP:0001574]                 95  45.238095   \n",
-       "Abnormality of the orbital region [HP:0000315]             95  45.238095   \n",
-       "Abnormality of the face [HP:0000271]                      193  79.752066   \n",
-       "Abnormality of the head [HP:0000234]                      193  79.752066   \n",
-       "Abnormality of head or neck [HP:0000152]                  193  79.752066   \n",
-       "Abnormal oral cavity morphology [HP:0000163]              180  75.000000   \n",
-       "Abnormal oral morphology [HP:0031816]                     180  75.000000   \n",
-       "Abnormality of the mouth [HP:0000153]                     180  75.000000   \n",
-       "Triangular face [HP:0000325]                               62  31.958763   \n",
-       "Abnormal facial shape [HP:0001999]                         62  31.958763   \n",
-       "Hearing abnormality [HP:0000364]                           67  33.838384   \n",
-       "Abnormal ear physiology [HP:0031704]                       67  33.838384   \n",
-       "Long philtrum [HP:0000343]                                 92  42.592593   \n",
-       "Abnormality of the philtrum [HP:0000288]                   92  42.592593   \n",
-       "Abnormal upper lip morphology [HP:0000177]                 92  42.592593   \n",
-       "Abnormal lip morphology [HP:0000159]                       92  42.592593   \n",
-       "Abnormal external nose morphology [HP:0010938]             99  46.698113   \n",
-       "Abnormal nasal morphology [HP:0005105]                     99  46.698113   \n",
-       "Abnormality of the nose [HP:0000366]                       99  46.698113   \n",
-       "Abnormal ear morphology [HP:0031703]                       52  26.530612   \n",
-       "Atypical behavior [HP:0000708]                             64  33.684211   \n",
-       "Short stature [HP:0004322]                                101  44.104803   \n",
-       "Abnormality of body height [HP:0000002]                   101  44.104803   \n",
-       "Growth delay [HP:0001510]                                 101  44.104803   \n",
-       "Growth abnormality [HP:0001507]                           101  44.104803   \n",
-       "Macrodontia [HP:0001572]                                  159  67.372881   \n",
-       "Abnormal dental morphology [HP:0006482]                   159  67.372881   \n",
-       "Abnormality of the dentition [HP:0000164]                 159  67.372881   \n",
-       "Abnormality of the hand [HP:0001155]                      134  55.601660   \n",
-       "Abnormality of the upper limb [HP:0002817]                134  55.601660   \n",
-       "Abnormality of limbs [HP:0040064]                         134  55.601660   \n",
-       "Cognitive impairment [HP:0100543]                          44  23.529412   \n",
-       "\n",
-       ">=1 allele of the variant 16_89284634_89284639_GTGTTT_G   Yes             \\\n",
-       "                                                        Count    Percent   \n",
-       "Neurodevelopmental abnormality [HP:0012759]                21   8.677686   \n",
-       "Abnormal nervous system physiology [HP:0012638]            23   9.426230   \n",
-       "Abnormality of the nervous system [HP:0000707]             23   9.426230   \n",
-       "Intellectual disability [HP:0001249]                       15   6.302521   \n",
-       "Phenotypic abnormality [HP:0000118]                        31  12.350598   \n",
-       "All [HP:0000001]                                           31  12.350598   \n",
-       "Abnormality of mental function [HP:0011446]                19   7.916667   \n",
-       "Global developmental delay [HP:0001263]                    14   6.862745   \n",
-       "Neurodevelopmental delay [HP:0012758]                      14   6.862745   \n",
-       "Abnormality of the ear [HP:0000598]                        10   4.784689   \n",
-       "Abnormal hair morphology [HP:0001595]                      10   4.761905   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]             10   4.761905   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]               10   4.761905   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]              10   4.761905   \n",
-       "Abnormality of the integument [HP:0001574]                 10   4.761905   \n",
-       "Abnormality of the orbital region [HP:0000315]             10   4.761905   \n",
-       "Abnormality of the face [HP:0000271]                       27  11.157025   \n",
-       "Abnormality of the head [HP:0000234]                       27  11.157025   \n",
-       "Abnormality of head or neck [HP:0000152]                   27  11.157025   \n",
-       "Abnormal oral cavity morphology [HP:0000163]               25  10.416667   \n",
-       "Abnormal oral morphology [HP:0031816]                      25  10.416667   \n",
-       "Abnormality of the mouth [HP:0000153]                      25  10.416667   \n",
-       "Triangular face [HP:0000325]                                6   3.092784   \n",
-       "Abnormal facial shape [HP:0001999]                          6   3.092784   \n",
-       "Hearing abnormality [HP:0000364]                            7   3.535354   \n",
-       "Abnormal ear physiology [HP:0031704]                        7   3.535354   \n",
-       "Long philtrum [HP:0000343]                                 11   5.092593   \n",
-       "Abnormality of the philtrum [HP:0000288]                   11   5.092593   \n",
-       "Abnormal upper lip morphology [HP:0000177]                 11   5.092593   \n",
-       "Abnormal lip morphology [HP:0000159]                       11   5.092593   \n",
-       "Abnormal external nose morphology [HP:0010938]             13   6.132075   \n",
-       "Abnormal nasal morphology [HP:0005105]                     13   6.132075   \n",
-       "Abnormality of the nose [HP:0000366]                       13   6.132075   \n",
-       "Abnormal ear morphology [HP:0031703]                        6   3.061224   \n",
-       "Atypical behavior [HP:0000708]                              8   4.210526   \n",
-       "Short stature [HP:0004322]                                 14   6.113537   \n",
-       "Abnormality of body height [HP:0000002]                    14   6.113537   \n",
-       "Growth delay [HP:0001510]                                  14   6.113537   \n",
-       "Growth abnormality [HP:0001507]                            14   6.113537   \n",
-       "Macrodontia [HP:0001572]                                   23   9.745763   \n",
-       "Abnormal dental morphology [HP:0006482]                    23   9.745763   \n",
-       "Abnormality of the dentition [HP:0000164]                  23   9.745763   \n",
-       "Abnormality of the hand [HP:0001155]                       22   9.128631   \n",
-       "Abnormality of the upper limb [HP:0002817]                 22   9.128631   \n",
-       "Abnormality of limbs [HP:0040064]                          22   9.128631   \n",
-       "Cognitive impairment [HP:0100543]                           7   3.743316   \n",
-       "\n",
-       ">=1 allele of the variant 16_89284634_89284639_GTGTTT_G            \\\n",
-       "                                                          p value   \n",
-       "Neurodevelopmental abnormality [HP:0012759]              0.007993   \n",
-       "Abnormal nervous system physiology [HP:0012638]          0.014355   \n",
-       "Abnormality of the nervous system [HP:0000707]           0.014355   \n",
-       "Intellectual disability [HP:0001249]                     0.014702   \n",
-       "Phenotypic abnormality [HP:0000118]                      0.046296   \n",
-       "All [HP:0000001]                                         0.046296   \n",
-       "Abnormality of mental function [HP:0011446]              0.048016   \n",
-       "Global developmental delay [HP:0001263]                  0.056706   \n",
-       "Neurodevelopmental delay [HP:0012758]                    0.056706   \n",
-       "Abnormality of the ear [HP:0000598]                      0.066000   \n",
-       "Abnormal hair morphology [HP:0001595]                    0.074632   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]           0.074632   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]             0.074632   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]            0.074632   \n",
-       "Abnormality of the integument [HP:0001574]               0.074632   \n",
-       "Abnormality of the orbital region [HP:0000315]           0.074632   \n",
-       "Abnormality of the face [HP:0000271]                     0.093495   \n",
-       "Abnormality of the head [HP:0000234]                     0.093495   \n",
-       "Abnormality of head or neck [HP:0000152]                 0.093495   \n",
-       "Abnormal oral cavity morphology [HP:0000163]             0.109604   \n",
-       "Abnormal oral morphology [HP:0031816]                    0.109604   \n",
-       "Abnormality of the mouth [HP:0000153]                    0.109604   \n",
-       "Triangular face [HP:0000325]                             0.134129   \n",
-       "Abnormal facial shape [HP:0001999]                       0.134129   \n",
-       "Hearing abnormality [HP:0000364]                         0.205373   \n",
-       "Abnormal ear physiology [HP:0031704]                     0.205373   \n",
-       "Long philtrum [HP:0000343]                               0.238468   \n",
-       "Abnormality of the philtrum [HP:0000288]                 0.238468   \n",
-       "Abnormal upper lip morphology [HP:0000177]               0.238468   \n",
-       "Abnormal lip morphology [HP:0000159]                     0.238468   \n",
-       "Abnormal external nose morphology [HP:0010938]           0.242887   \n",
-       "Abnormal nasal morphology [HP:0005105]                   0.242887   \n",
-       "Abnormality of the nose [HP:0000366]                     0.242887   \n",
-       "Abnormal ear morphology [HP:0031703]                     0.375674   \n",
-       "Atypical behavior [HP:0000708]                           0.396639   \n",
-       "Short stature [HP:0004322]                               0.452237   \n",
-       "Abnormality of body height [HP:0000002]                  0.452237   \n",
-       "Growth delay [HP:0001510]                                0.452237   \n",
-       "Growth abnormality [HP:0001507]                          0.452237   \n",
-       "Macrodontia [HP:0001572]                                 0.651760   \n",
-       "Abnormal dental morphology [HP:0006482]                  0.651760   \n",
-       "Abnormality of the dentition [HP:0000164]                0.651760   \n",
-       "Abnormality of the hand [HP:0001155]                     0.847288   \n",
-       "Abnormality of the upper limb [HP:0002817]               0.847288   \n",
-       "Abnormality of limbs [HP:0040064]                        0.847288   \n",
-       "Cognitive impairment [HP:0100543]                        1.000000   \n",
-       "\n",
-       ">=1 allele of the variant 16_89284634_89284639_GTGTTT_G                    \n",
-       "                                                        Corrected p value  \n",
-       "Neurodevelopmental abnormality [HP:0012759]                      0.169079  \n",
-       "Abnormal nervous system physiology [HP:0012638]                  0.169079  \n",
-       "Abnormality of the nervous system [HP:0000707]                   0.169079  \n",
-       "Intellectual disability [HP:0001249]                             0.169079  \n",
-       "Phenotypic abnormality [HP:0000118]                              0.214567  \n",
-       "All [HP:0000001]                                                 0.214567  \n",
-       "Abnormality of mental function [HP:0011446]                      0.214567  \n",
-       "Global developmental delay [HP:0001263]                          0.214567  \n",
-       "Neurodevelopmental delay [HP:0012758]                            0.214567  \n",
-       "Abnormality of the ear [HP:0000598]                              0.214567  \n",
-       "Abnormal hair morphology [HP:0001595]                            0.214567  \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]                   0.214567  \n",
-       "Abnormal skin adnexa morphology [HP:0011138]                     0.214567  \n",
-       "Abnormality of the ocular adnexa [HP:0032039]                    0.214567  \n",
-       "Abnormality of the integument [HP:0001574]                       0.214567  \n",
-       "Abnormality of the orbital region [HP:0000315]                   0.214567  \n",
-       "Abnormality of the face [HP:0000271]                             0.226357  \n",
-       "Abnormality of the head [HP:0000234]                             0.226357  \n",
-       "Abnormality of head or neck [HP:0000152]                         0.226357  \n",
-       "Abnormal oral cavity morphology [HP:0000163]                     0.229172  \n",
-       "Abnormal oral morphology [HP:0031816]                            0.229172  \n",
-       "Abnormality of the mouth [HP:0000153]                            0.229172  \n",
-       "Triangular face [HP:0000325]                                     0.257080  \n",
-       "Abnormal facial shape [HP:0001999]                               0.257080  \n",
-       "Hearing abnormality [HP:0000364]                                 0.338570  \n",
-       "Abnormal ear physiology [HP:0031704]                             0.338570  \n",
-       "Long philtrum [HP:0000343]                                       0.338570  \n",
-       "Abnormality of the philtrum [HP:0000288]                         0.338570  \n",
-       "Abnormal upper lip morphology [HP:0000177]                       0.338570  \n",
-       "Abnormal lip morphology [HP:0000159]                             0.338570  \n",
-       "Abnormal external nose morphology [HP:0010938]                   0.338570  \n",
-       "Abnormal nasal morphology [HP:0005105]                           0.338570  \n",
-       "Abnormality of the nose [HP:0000366]                             0.338570  \n",
-       "Abnormal ear morphology [HP:0031703]                             0.508265  \n",
-       "Atypical behavior [HP:0000708]                                   0.521297  \n",
-       "Short stature [HP:0004322]                                       0.533408  \n",
-       "Abnormality of body height [HP:0000002]                          0.533408  \n",
-       "Growth delay [HP:0001510]                                        0.533408  \n",
-       "Growth abnormality [HP:0001507]                                  0.533408  \n",
-       "Macrodontia [HP:0001572]                                         0.713833  \n",
-       "Abnormal dental morphology [HP:0006482]                          0.713833  \n",
-       "Abnormality of the dentition [HP:0000164]                        0.713833  \n",
-       "Abnormality of the hand [HP:0001155]                             0.866116  \n",
-       "Abnormality of the upper limb [HP:0002817]                       0.866116  \n",
-       "Abnormality of limbs [HP:0040064]                                0.866116  \n",
-       "Cognitive impairment [HP:0100543]                                1.000000  "
-      ]
-     },
-     "execution_count": 11,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "var_single = analysis.compare_by_variant_key('16_89284634_89284639_GTGTTT_G')\n",
     "var_single.summarize(hpo, BooleanPredicate.YES)"
@@ -1781,765 +856,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": null,
    "id": "0dfa0a50",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead tr th {\n",
-       "        text-align: left;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr>\n",
-       "      <th>&gt;=1 allele of either variant 16_89284129_89284134_CTTTTT_C or variant 16_89284634_89284639_GTGTTT_G</th>\n",
-       "      <th colspan=\"2\" halign=\"left\">First</th>\n",
-       "      <th colspan=\"2\" halign=\"left\">Second</th>\n",
-       "      <th colspan=\"2\" halign=\"left\"></th>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th></th>\n",
-       "      <th>Count</th>\n",
-       "      <th>Percent</th>\n",
-       "      <th>Count</th>\n",
-       "      <th>Percent</th>\n",
-       "      <th>p value</th>\n",
-       "      <th>Corrected p value</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>Cognitive impairment [HP:0100543]</th>\n",
-       "      <td>0</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>7</td>\n",
-       "      <td>20.000000</td>\n",
-       "      <td>0.165543</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Short stature [HP:0004322]</th>\n",
-       "      <td>5</td>\n",
-       "      <td>12.500000</td>\n",
-       "      <td>14</td>\n",
-       "      <td>35.000000</td>\n",
-       "      <td>0.441958</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of body height [HP:0000002]</th>\n",
-       "      <td>5</td>\n",
-       "      <td>12.500000</td>\n",
-       "      <td>14</td>\n",
-       "      <td>35.000000</td>\n",
-       "      <td>0.441958</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Growth delay [HP:0001510]</th>\n",
-       "      <td>5</td>\n",
-       "      <td>12.500000</td>\n",
-       "      <td>14</td>\n",
-       "      <td>35.000000</td>\n",
-       "      <td>0.441958</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Growth abnormality [HP:0001507]</th>\n",
-       "      <td>5</td>\n",
-       "      <td>12.500000</td>\n",
-       "      <td>14</td>\n",
-       "      <td>35.000000</td>\n",
-       "      <td>0.441958</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Hearing abnormality [HP:0000364]</th>\n",
-       "      <td>3</td>\n",
-       "      <td>8.333333</td>\n",
-       "      <td>7</td>\n",
-       "      <td>19.444444</td>\n",
-       "      <td>0.657626</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ear physiology [HP:0031704]</th>\n",
-       "      <td>3</td>\n",
-       "      <td>8.333333</td>\n",
-       "      <td>7</td>\n",
-       "      <td>19.444444</td>\n",
-       "      <td>0.657626</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the ear [HP:0000598]</th>\n",
-       "      <td>4</td>\n",
-       "      <td>11.111111</td>\n",
-       "      <td>10</td>\n",
-       "      <td>27.777778</td>\n",
-       "      <td>0.683230</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the hand [HP:0001155]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>18.604651</td>\n",
-       "      <td>22</td>\n",
-       "      <td>51.162791</td>\n",
-       "      <td>0.696329</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the upper limb [HP:0002817]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>18.604651</td>\n",
-       "      <td>22</td>\n",
-       "      <td>51.162791</td>\n",
-       "      <td>0.696329</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of limbs [HP:0040064]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>18.604651</td>\n",
-       "      <td>22</td>\n",
-       "      <td>51.162791</td>\n",
-       "      <td>0.696329</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal external nose morphology [HP:0010938]</th>\n",
-       "      <td>5</td>\n",
-       "      <td>12.500000</td>\n",
-       "      <td>13</td>\n",
-       "      <td>32.500000</td>\n",
-       "      <td>0.705301</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal nasal morphology [HP:0005105]</th>\n",
-       "      <td>5</td>\n",
-       "      <td>12.500000</td>\n",
-       "      <td>13</td>\n",
-       "      <td>32.500000</td>\n",
-       "      <td>0.705301</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the nose [HP:0000366]</th>\n",
-       "      <td>5</td>\n",
-       "      <td>12.500000</td>\n",
-       "      <td>13</td>\n",
-       "      <td>32.500000</td>\n",
-       "      <td>0.705301</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Long philtrum [HP:0000343]</th>\n",
-       "      <td>4</td>\n",
-       "      <td>10.256410</td>\n",
-       "      <td>11</td>\n",
-       "      <td>28.205128</td>\n",
-       "      <td>0.711011</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the philtrum [HP:0000288]</th>\n",
-       "      <td>4</td>\n",
-       "      <td>10.256410</td>\n",
-       "      <td>11</td>\n",
-       "      <td>28.205128</td>\n",
-       "      <td>0.711011</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal upper lip morphology [HP:0000177]</th>\n",
-       "      <td>4</td>\n",
-       "      <td>10.256410</td>\n",
-       "      <td>11</td>\n",
-       "      <td>28.205128</td>\n",
-       "      <td>0.711011</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal lip morphology [HP:0000159]</th>\n",
-       "      <td>4</td>\n",
-       "      <td>10.256410</td>\n",
-       "      <td>11</td>\n",
-       "      <td>28.205128</td>\n",
-       "      <td>0.711011</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Intellectual disability [HP:0001249]</th>\n",
-       "      <td>5</td>\n",
-       "      <td>11.904762</td>\n",
-       "      <td>15</td>\n",
-       "      <td>35.714286</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of mental function [HP:0011446]</th>\n",
-       "      <td>6</td>\n",
-       "      <td>14.285714</td>\n",
-       "      <td>19</td>\n",
-       "      <td>45.238095</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Neurodevelopmental abnormality [HP:0012759]</th>\n",
-       "      <td>6</td>\n",
-       "      <td>13.953488</td>\n",
-       "      <td>21</td>\n",
-       "      <td>48.837209</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal nervous system physiology [HP:0012638]</th>\n",
-       "      <td>7</td>\n",
-       "      <td>16.279070</td>\n",
-       "      <td>23</td>\n",
-       "      <td>53.488372</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the nervous system [HP:0000707]</th>\n",
-       "      <td>7</td>\n",
-       "      <td>16.279070</td>\n",
-       "      <td>23</td>\n",
-       "      <td>53.488372</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Phenotypic abnormality [HP:0000118]</th>\n",
-       "      <td>10</td>\n",
-       "      <td>23.255814</td>\n",
-       "      <td>31</td>\n",
-       "      <td>72.093023</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>All [HP:0000001]</th>\n",
-       "      <td>10</td>\n",
-       "      <td>23.255814</td>\n",
-       "      <td>31</td>\n",
-       "      <td>72.093023</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Global developmental delay [HP:0001263]</th>\n",
-       "      <td>4</td>\n",
-       "      <td>10.526316</td>\n",
-       "      <td>14</td>\n",
-       "      <td>36.842105</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Neurodevelopmental delay [HP:0012758]</th>\n",
-       "      <td>4</td>\n",
-       "      <td>10.526316</td>\n",
-       "      <td>14</td>\n",
-       "      <td>36.842105</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Macrodontia [HP:0001572]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>19.512195</td>\n",
-       "      <td>23</td>\n",
-       "      <td>56.097561</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal dental morphology [HP:0006482]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>19.512195</td>\n",
-       "      <td>23</td>\n",
-       "      <td>56.097561</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the dentition [HP:0000164]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>19.512195</td>\n",
-       "      <td>23</td>\n",
-       "      <td>56.097561</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal oral cavity morphology [HP:0000163]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>18.604651</td>\n",
-       "      <td>25</td>\n",
-       "      <td>58.139535</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal oral morphology [HP:0031816]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>18.604651</td>\n",
-       "      <td>25</td>\n",
-       "      <td>58.139535</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the mouth [HP:0000153]</th>\n",
-       "      <td>8</td>\n",
-       "      <td>18.604651</td>\n",
-       "      <td>25</td>\n",
-       "      <td>58.139535</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the face [HP:0000271]</th>\n",
-       "      <td>9</td>\n",
-       "      <td>20.930233</td>\n",
-       "      <td>27</td>\n",
-       "      <td>62.790698</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the head [HP:0000234]</th>\n",
-       "      <td>9</td>\n",
-       "      <td>20.930233</td>\n",
-       "      <td>27</td>\n",
-       "      <td>62.790698</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of head or neck [HP:0000152]</th>\n",
-       "      <td>9</td>\n",
-       "      <td>20.930233</td>\n",
-       "      <td>27</td>\n",
-       "      <td>62.790698</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal hair morphology [HP:0001595]</th>\n",
-       "      <td>3</td>\n",
-       "      <td>7.692308</td>\n",
-       "      <td>10</td>\n",
-       "      <td>25.641026</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ocular adnexa morphology [HP:0030669]</th>\n",
-       "      <td>3</td>\n",
-       "      <td>7.692308</td>\n",
-       "      <td>10</td>\n",
-       "      <td>25.641026</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal skin adnexa morphology [HP:0011138]</th>\n",
-       "      <td>3</td>\n",
-       "      <td>7.692308</td>\n",
-       "      <td>10</td>\n",
-       "      <td>25.641026</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the ocular adnexa [HP:0032039]</th>\n",
-       "      <td>3</td>\n",
-       "      <td>7.692308</td>\n",
-       "      <td>10</td>\n",
-       "      <td>25.641026</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the integument [HP:0001574]</th>\n",
-       "      <td>3</td>\n",
-       "      <td>7.692308</td>\n",
-       "      <td>10</td>\n",
-       "      <td>25.641026</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormality of the orbital region [HP:0000315]</th>\n",
-       "      <td>3</td>\n",
-       "      <td>7.692308</td>\n",
-       "      <td>10</td>\n",
-       "      <td>25.641026</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal ear morphology [HP:0031703]</th>\n",
-       "      <td>1</td>\n",
-       "      <td>2.777778</td>\n",
-       "      <td>6</td>\n",
-       "      <td>16.666667</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Triangular face [HP:0000325]</th>\n",
-       "      <td>2</td>\n",
-       "      <td>5.555556</td>\n",
-       "      <td>6</td>\n",
-       "      <td>16.666667</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Abnormal facial shape [HP:0001999]</th>\n",
-       "      <td>2</td>\n",
-       "      <td>5.555556</td>\n",
-       "      <td>6</td>\n",
-       "      <td>16.666667</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Atypical behavior [HP:0000708]</th>\n",
-       "      <td>2</td>\n",
-       "      <td>5.555556</td>\n",
-       "      <td>8</td>\n",
-       "      <td>22.222222</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.0</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       ">=1 allele of either variant 16_89284129_89284134_CTTTTT_C or variant 16_89284634_89284639_GTGTTT_G First  \\\n",
-       "                                                                                                    Count   \n",
-       "Cognitive impairment [HP:0100543]                                                                       0   \n",
-       "Short stature [HP:0004322]                                                                              5   \n",
-       "Abnormality of body height [HP:0000002]                                                                 5   \n",
-       "Growth delay [HP:0001510]                                                                               5   \n",
-       "Growth abnormality [HP:0001507]                                                                         5   \n",
-       "Hearing abnormality [HP:0000364]                                                                        3   \n",
-       "Abnormal ear physiology [HP:0031704]                                                                    3   \n",
-       "Abnormality of the ear [HP:0000598]                                                                     4   \n",
-       "Abnormality of the hand [HP:0001155]                                                                    8   \n",
-       "Abnormality of the upper limb [HP:0002817]                                                              8   \n",
-       "Abnormality of limbs [HP:0040064]                                                                       8   \n",
-       "Abnormal external nose morphology [HP:0010938]                                                          5   \n",
-       "Abnormal nasal morphology [HP:0005105]                                                                  5   \n",
-       "Abnormality of the nose [HP:0000366]                                                                    5   \n",
-       "Long philtrum [HP:0000343]                                                                              4   \n",
-       "Abnormality of the philtrum [HP:0000288]                                                                4   \n",
-       "Abnormal upper lip morphology [HP:0000177]                                                              4   \n",
-       "Abnormal lip morphology [HP:0000159]                                                                    4   \n",
-       "Intellectual disability [HP:0001249]                                                                    5   \n",
-       "Abnormality of mental function [HP:0011446]                                                             6   \n",
-       "Neurodevelopmental abnormality [HP:0012759]                                                             6   \n",
-       "Abnormal nervous system physiology [HP:0012638]                                                         7   \n",
-       "Abnormality of the nervous system [HP:0000707]                                                          7   \n",
-       "Phenotypic abnormality [HP:0000118]                                                                    10   \n",
-       "All [HP:0000001]                                                                                       10   \n",
-       "Global developmental delay [HP:0001263]                                                                 4   \n",
-       "Neurodevelopmental delay [HP:0012758]                                                                   4   \n",
-       "Macrodontia [HP:0001572]                                                                                8   \n",
-       "Abnormal dental morphology [HP:0006482]                                                                 8   \n",
-       "Abnormality of the dentition [HP:0000164]                                                               8   \n",
-       "Abnormal oral cavity morphology [HP:0000163]                                                            8   \n",
-       "Abnormal oral morphology [HP:0031816]                                                                   8   \n",
-       "Abnormality of the mouth [HP:0000153]                                                                   8   \n",
-       "Abnormality of the face [HP:0000271]                                                                    9   \n",
-       "Abnormality of the head [HP:0000234]                                                                    9   \n",
-       "Abnormality of head or neck [HP:0000152]                                                                9   \n",
-       "Abnormal hair morphology [HP:0001595]                                                                   3   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]                                                          3   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]                                                            3   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]                                                           3   \n",
-       "Abnormality of the integument [HP:0001574]                                                              3   \n",
-       "Abnormality of the orbital region [HP:0000315]                                                          3   \n",
-       "Abnormal ear morphology [HP:0031703]                                                                    1   \n",
-       "Triangular face [HP:0000325]                                                                            2   \n",
-       "Abnormal facial shape [HP:0001999]                                                                      2   \n",
-       "Atypical behavior [HP:0000708]                                                                          2   \n",
-       "\n",
-       ">=1 allele of either variant 16_89284129_89284134_CTTTTT_C or variant 16_89284634_89284639_GTGTTT_G             \\\n",
-       "                                                                                                       Percent   \n",
-       "Cognitive impairment [HP:0100543]                                                                     0.000000   \n",
-       "Short stature [HP:0004322]                                                                           12.500000   \n",
-       "Abnormality of body height [HP:0000002]                                                              12.500000   \n",
-       "Growth delay [HP:0001510]                                                                            12.500000   \n",
-       "Growth abnormality [HP:0001507]                                                                      12.500000   \n",
-       "Hearing abnormality [HP:0000364]                                                                      8.333333   \n",
-       "Abnormal ear physiology [HP:0031704]                                                                  8.333333   \n",
-       "Abnormality of the ear [HP:0000598]                                                                  11.111111   \n",
-       "Abnormality of the hand [HP:0001155]                                                                 18.604651   \n",
-       "Abnormality of the upper limb [HP:0002817]                                                           18.604651   \n",
-       "Abnormality of limbs [HP:0040064]                                                                    18.604651   \n",
-       "Abnormal external nose morphology [HP:0010938]                                                       12.500000   \n",
-       "Abnormal nasal morphology [HP:0005105]                                                               12.500000   \n",
-       "Abnormality of the nose [HP:0000366]                                                                 12.500000   \n",
-       "Long philtrum [HP:0000343]                                                                           10.256410   \n",
-       "Abnormality of the philtrum [HP:0000288]                                                             10.256410   \n",
-       "Abnormal upper lip morphology [HP:0000177]                                                           10.256410   \n",
-       "Abnormal lip morphology [HP:0000159]                                                                 10.256410   \n",
-       "Intellectual disability [HP:0001249]                                                                 11.904762   \n",
-       "Abnormality of mental function [HP:0011446]                                                          14.285714   \n",
-       "Neurodevelopmental abnormality [HP:0012759]                                                          13.953488   \n",
-       "Abnormal nervous system physiology [HP:0012638]                                                      16.279070   \n",
-       "Abnormality of the nervous system [HP:0000707]                                                       16.279070   \n",
-       "Phenotypic abnormality [HP:0000118]                                                                  23.255814   \n",
-       "All [HP:0000001]                                                                                     23.255814   \n",
-       "Global developmental delay [HP:0001263]                                                              10.526316   \n",
-       "Neurodevelopmental delay [HP:0012758]                                                                10.526316   \n",
-       "Macrodontia [HP:0001572]                                                                             19.512195   \n",
-       "Abnormal dental morphology [HP:0006482]                                                              19.512195   \n",
-       "Abnormality of the dentition [HP:0000164]                                                            19.512195   \n",
-       "Abnormal oral cavity morphology [HP:0000163]                                                         18.604651   \n",
-       "Abnormal oral morphology [HP:0031816]                                                                18.604651   \n",
-       "Abnormality of the mouth [HP:0000153]                                                                18.604651   \n",
-       "Abnormality of the face [HP:0000271]                                                                 20.930233   \n",
-       "Abnormality of the head [HP:0000234]                                                                 20.930233   \n",
-       "Abnormality of head or neck [HP:0000152]                                                             20.930233   \n",
-       "Abnormal hair morphology [HP:0001595]                                                                 7.692308   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]                                                        7.692308   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]                                                          7.692308   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]                                                         7.692308   \n",
-       "Abnormality of the integument [HP:0001574]                                                            7.692308   \n",
-       "Abnormality of the orbital region [HP:0000315]                                                        7.692308   \n",
-       "Abnormal ear morphology [HP:0031703]                                                                  2.777778   \n",
-       "Triangular face [HP:0000325]                                                                          5.555556   \n",
-       "Abnormal facial shape [HP:0001999]                                                                    5.555556   \n",
-       "Atypical behavior [HP:0000708]                                                                        5.555556   \n",
-       "\n",
-       ">=1 allele of either variant 16_89284129_89284134_CTTTTT_C or variant 16_89284634_89284639_GTGTTT_G Second  \\\n",
-       "                                                                                                     Count   \n",
-       "Cognitive impairment [HP:0100543]                                                                        7   \n",
-       "Short stature [HP:0004322]                                                                              14   \n",
-       "Abnormality of body height [HP:0000002]                                                                 14   \n",
-       "Growth delay [HP:0001510]                                                                               14   \n",
-       "Growth abnormality [HP:0001507]                                                                         14   \n",
-       "Hearing abnormality [HP:0000364]                                                                         7   \n",
-       "Abnormal ear physiology [HP:0031704]                                                                     7   \n",
-       "Abnormality of the ear [HP:0000598]                                                                     10   \n",
-       "Abnormality of the hand [HP:0001155]                                                                    22   \n",
-       "Abnormality of the upper limb [HP:0002817]                                                              22   \n",
-       "Abnormality of limbs [HP:0040064]                                                                       22   \n",
-       "Abnormal external nose morphology [HP:0010938]                                                          13   \n",
-       "Abnormal nasal morphology [HP:0005105]                                                                  13   \n",
-       "Abnormality of the nose [HP:0000366]                                                                    13   \n",
-       "Long philtrum [HP:0000343]                                                                              11   \n",
-       "Abnormality of the philtrum [HP:0000288]                                                                11   \n",
-       "Abnormal upper lip morphology [HP:0000177]                                                              11   \n",
-       "Abnormal lip morphology [HP:0000159]                                                                    11   \n",
-       "Intellectual disability [HP:0001249]                                                                    15   \n",
-       "Abnormality of mental function [HP:0011446]                                                             19   \n",
-       "Neurodevelopmental abnormality [HP:0012759]                                                             21   \n",
-       "Abnormal nervous system physiology [HP:0012638]                                                         23   \n",
-       "Abnormality of the nervous system [HP:0000707]                                                          23   \n",
-       "Phenotypic abnormality [HP:0000118]                                                                     31   \n",
-       "All [HP:0000001]                                                                                        31   \n",
-       "Global developmental delay [HP:0001263]                                                                 14   \n",
-       "Neurodevelopmental delay [HP:0012758]                                                                   14   \n",
-       "Macrodontia [HP:0001572]                                                                                23   \n",
-       "Abnormal dental morphology [HP:0006482]                                                                 23   \n",
-       "Abnormality of the dentition [HP:0000164]                                                               23   \n",
-       "Abnormal oral cavity morphology [HP:0000163]                                                            25   \n",
-       "Abnormal oral morphology [HP:0031816]                                                                   25   \n",
-       "Abnormality of the mouth [HP:0000153]                                                                   25   \n",
-       "Abnormality of the face [HP:0000271]                                                                    27   \n",
-       "Abnormality of the head [HP:0000234]                                                                    27   \n",
-       "Abnormality of head or neck [HP:0000152]                                                                27   \n",
-       "Abnormal hair morphology [HP:0001595]                                                                   10   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]                                                          10   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]                                                            10   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]                                                           10   \n",
-       "Abnormality of the integument [HP:0001574]                                                              10   \n",
-       "Abnormality of the orbital region [HP:0000315]                                                          10   \n",
-       "Abnormal ear morphology [HP:0031703]                                                                     6   \n",
-       "Triangular face [HP:0000325]                                                                             6   \n",
-       "Abnormal facial shape [HP:0001999]                                                                       6   \n",
-       "Atypical behavior [HP:0000708]                                                                           8   \n",
-       "\n",
-       ">=1 allele of either variant 16_89284129_89284134_CTTTTT_C or variant 16_89284634_89284639_GTGTTT_G             \\\n",
-       "                                                                                                       Percent   \n",
-       "Cognitive impairment [HP:0100543]                                                                    20.000000   \n",
-       "Short stature [HP:0004322]                                                                           35.000000   \n",
-       "Abnormality of body height [HP:0000002]                                                              35.000000   \n",
-       "Growth delay [HP:0001510]                                                                            35.000000   \n",
-       "Growth abnormality [HP:0001507]                                                                      35.000000   \n",
-       "Hearing abnormality [HP:0000364]                                                                     19.444444   \n",
-       "Abnormal ear physiology [HP:0031704]                                                                 19.444444   \n",
-       "Abnormality of the ear [HP:0000598]                                                                  27.777778   \n",
-       "Abnormality of the hand [HP:0001155]                                                                 51.162791   \n",
-       "Abnormality of the upper limb [HP:0002817]                                                           51.162791   \n",
-       "Abnormality of limbs [HP:0040064]                                                                    51.162791   \n",
-       "Abnormal external nose morphology [HP:0010938]                                                       32.500000   \n",
-       "Abnormal nasal morphology [HP:0005105]                                                               32.500000   \n",
-       "Abnormality of the nose [HP:0000366]                                                                 32.500000   \n",
-       "Long philtrum [HP:0000343]                                                                           28.205128   \n",
-       "Abnormality of the philtrum [HP:0000288]                                                             28.205128   \n",
-       "Abnormal upper lip morphology [HP:0000177]                                                           28.205128   \n",
-       "Abnormal lip morphology [HP:0000159]                                                                 28.205128   \n",
-       "Intellectual disability [HP:0001249]                                                                 35.714286   \n",
-       "Abnormality of mental function [HP:0011446]                                                          45.238095   \n",
-       "Neurodevelopmental abnormality [HP:0012759]                                                          48.837209   \n",
-       "Abnormal nervous system physiology [HP:0012638]                                                      53.488372   \n",
-       "Abnormality of the nervous system [HP:0000707]                                                       53.488372   \n",
-       "Phenotypic abnormality [HP:0000118]                                                                  72.093023   \n",
-       "All [HP:0000001]                                                                                     72.093023   \n",
-       "Global developmental delay [HP:0001263]                                                              36.842105   \n",
-       "Neurodevelopmental delay [HP:0012758]                                                                36.842105   \n",
-       "Macrodontia [HP:0001572]                                                                             56.097561   \n",
-       "Abnormal dental morphology [HP:0006482]                                                              56.097561   \n",
-       "Abnormality of the dentition [HP:0000164]                                                            56.097561   \n",
-       "Abnormal oral cavity morphology [HP:0000163]                                                         58.139535   \n",
-       "Abnormal oral morphology [HP:0031816]                                                                58.139535   \n",
-       "Abnormality of the mouth [HP:0000153]                                                                58.139535   \n",
-       "Abnormality of the face [HP:0000271]                                                                 62.790698   \n",
-       "Abnormality of the head [HP:0000234]                                                                 62.790698   \n",
-       "Abnormality of head or neck [HP:0000152]                                                             62.790698   \n",
-       "Abnormal hair morphology [HP:0001595]                                                                25.641026   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]                                                       25.641026   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]                                                         25.641026   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]                                                        25.641026   \n",
-       "Abnormality of the integument [HP:0001574]                                                           25.641026   \n",
-       "Abnormality of the orbital region [HP:0000315]                                                       25.641026   \n",
-       "Abnormal ear morphology [HP:0031703]                                                                 16.666667   \n",
-       "Triangular face [HP:0000325]                                                                         16.666667   \n",
-       "Abnormal facial shape [HP:0001999]                                                                   16.666667   \n",
-       "Atypical behavior [HP:0000708]                                                                       22.222222   \n",
-       "\n",
-       ">=1 allele of either variant 16_89284129_89284134_CTTTTT_C or variant 16_89284634_89284639_GTGTTT_G            \\\n",
-       "                                                                                                      p value   \n",
-       "Cognitive impairment [HP:0100543]                                                                    0.165543   \n",
-       "Short stature [HP:0004322]                                                                           0.441958   \n",
-       "Abnormality of body height [HP:0000002]                                                              0.441958   \n",
-       "Growth delay [HP:0001510]                                                                            0.441958   \n",
-       "Growth abnormality [HP:0001507]                                                                      0.441958   \n",
-       "Hearing abnormality [HP:0000364]                                                                     0.657626   \n",
-       "Abnormal ear physiology [HP:0031704]                                                                 0.657626   \n",
-       "Abnormality of the ear [HP:0000598]                                                                  0.683230   \n",
-       "Abnormality of the hand [HP:0001155]                                                                 0.696329   \n",
-       "Abnormality of the upper limb [HP:0002817]                                                           0.696329   \n",
-       "Abnormality of limbs [HP:0040064]                                                                    0.696329   \n",
-       "Abnormal external nose morphology [HP:0010938]                                                       0.705301   \n",
-       "Abnormal nasal morphology [HP:0005105]                                                               0.705301   \n",
-       "Abnormality of the nose [HP:0000366]                                                                 0.705301   \n",
-       "Long philtrum [HP:0000343]                                                                           0.711011   \n",
-       "Abnormality of the philtrum [HP:0000288]                                                             0.711011   \n",
-       "Abnormal upper lip morphology [HP:0000177]                                                           0.711011   \n",
-       "Abnormal lip morphology [HP:0000159]                                                                 0.711011   \n",
-       "Intellectual disability [HP:0001249]                                                                 1.000000   \n",
-       "Abnormality of mental function [HP:0011446]                                                          1.000000   \n",
-       "Neurodevelopmental abnormality [HP:0012759]                                                          1.000000   \n",
-       "Abnormal nervous system physiology [HP:0012638]                                                      1.000000   \n",
-       "Abnormality of the nervous system [HP:0000707]                                                       1.000000   \n",
-       "Phenotypic abnormality [HP:0000118]                                                                  1.000000   \n",
-       "All [HP:0000001]                                                                                     1.000000   \n",
-       "Global developmental delay [HP:0001263]                                                              1.000000   \n",
-       "Neurodevelopmental delay [HP:0012758]                                                                1.000000   \n",
-       "Macrodontia [HP:0001572]                                                                             1.000000   \n",
-       "Abnormal dental morphology [HP:0006482]                                                              1.000000   \n",
-       "Abnormality of the dentition [HP:0000164]                                                            1.000000   \n",
-       "Abnormal oral cavity morphology [HP:0000163]                                                         1.000000   \n",
-       "Abnormal oral morphology [HP:0031816]                                                                1.000000   \n",
-       "Abnormality of the mouth [HP:0000153]                                                                1.000000   \n",
-       "Abnormality of the face [HP:0000271]                                                                 1.000000   \n",
-       "Abnormality of the head [HP:0000234]                                                                 1.000000   \n",
-       "Abnormality of head or neck [HP:0000152]                                                             1.000000   \n",
-       "Abnormal hair morphology [HP:0001595]                                                                1.000000   \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]                                                       1.000000   \n",
-       "Abnormal skin adnexa morphology [HP:0011138]                                                         1.000000   \n",
-       "Abnormality of the ocular adnexa [HP:0032039]                                                        1.000000   \n",
-       "Abnormality of the integument [HP:0001574]                                                           1.000000   \n",
-       "Abnormality of the orbital region [HP:0000315]                                                       1.000000   \n",
-       "Abnormal ear morphology [HP:0031703]                                                                 1.000000   \n",
-       "Triangular face [HP:0000325]                                                                         1.000000   \n",
-       "Abnormal facial shape [HP:0001999]                                                                   1.000000   \n",
-       "Atypical behavior [HP:0000708]                                                                       1.000000   \n",
-       "\n",
-       ">=1 allele of either variant 16_89284129_89284134_CTTTTT_C or variant 16_89284634_89284639_GTGTTT_G                    \n",
-       "                                                                                                    Corrected p value  \n",
-       "Cognitive impairment [HP:0100543]                                                                                 1.0  \n",
-       "Short stature [HP:0004322]                                                                                        1.0  \n",
-       "Abnormality of body height [HP:0000002]                                                                           1.0  \n",
-       "Growth delay [HP:0001510]                                                                                         1.0  \n",
-       "Growth abnormality [HP:0001507]                                                                                   1.0  \n",
-       "Hearing abnormality [HP:0000364]                                                                                  1.0  \n",
-       "Abnormal ear physiology [HP:0031704]                                                                              1.0  \n",
-       "Abnormality of the ear [HP:0000598]                                                                               1.0  \n",
-       "Abnormality of the hand [HP:0001155]                                                                              1.0  \n",
-       "Abnormality of the upper limb [HP:0002817]                                                                        1.0  \n",
-       "Abnormality of limbs [HP:0040064]                                                                                 1.0  \n",
-       "Abnormal external nose morphology [HP:0010938]                                                                    1.0  \n",
-       "Abnormal nasal morphology [HP:0005105]                                                                            1.0  \n",
-       "Abnormality of the nose [HP:0000366]                                                                              1.0  \n",
-       "Long philtrum [HP:0000343]                                                                                        1.0  \n",
-       "Abnormality of the philtrum [HP:0000288]                                                                          1.0  \n",
-       "Abnormal upper lip morphology [HP:0000177]                                                                        1.0  \n",
-       "Abnormal lip morphology [HP:0000159]                                                                              1.0  \n",
-       "Intellectual disability [HP:0001249]                                                                              1.0  \n",
-       "Abnormality of mental function [HP:0011446]                                                                       1.0  \n",
-       "Neurodevelopmental abnormality [HP:0012759]                                                                       1.0  \n",
-       "Abnormal nervous system physiology [HP:0012638]                                                                   1.0  \n",
-       "Abnormality of the nervous system [HP:0000707]                                                                    1.0  \n",
-       "Phenotypic abnormality [HP:0000118]                                                                               1.0  \n",
-       "All [HP:0000001]                                                                                                  1.0  \n",
-       "Global developmental delay [HP:0001263]                                                                           1.0  \n",
-       "Neurodevelopmental delay [HP:0012758]                                                                             1.0  \n",
-       "Macrodontia [HP:0001572]                                                                                          1.0  \n",
-       "Abnormal dental morphology [HP:0006482]                                                                           1.0  \n",
-       "Abnormality of the dentition [HP:0000164]                                                                         1.0  \n",
-       "Abnormal oral cavity morphology [HP:0000163]                                                                      1.0  \n",
-       "Abnormal oral morphology [HP:0031816]                                                                             1.0  \n",
-       "Abnormality of the mouth [HP:0000153]                                                                             1.0  \n",
-       "Abnormality of the face [HP:0000271]                                                                              1.0  \n",
-       "Abnormality of the head [HP:0000234]                                                                              1.0  \n",
-       "Abnormality of head or neck [HP:0000152]                                                                          1.0  \n",
-       "Abnormal hair morphology [HP:0001595]                                                                             1.0  \n",
-       "Abnormal ocular adnexa morphology [HP:0030669]                                                                    1.0  \n",
-       "Abnormal skin adnexa morphology [HP:0011138]                                                                      1.0  \n",
-       "Abnormality of the ocular adnexa [HP:0032039]                                                                     1.0  \n",
-       "Abnormality of the integument [HP:0001574]                                                                        1.0  \n",
-       "Abnormality of the orbital region [HP:0000315]                                                                    1.0  \n",
-       "Abnormal ear morphology [HP:0031703]                                                                              1.0  \n",
-       "Triangular face [HP:0000325]                                                                                      1.0  \n",
-       "Abnormal facial shape [HP:0001999]                                                                                1.0  \n",
-       "Atypical behavior [HP:0000708]                                                                                    1.0  "
-      ]
-     },
-     "execution_count": 12,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "var_double = analysis.compare_by_variant_keys('16_89284129_89284134_CTTTTT_C', '16_89284634_89284639_GTGTTT_G')\n",
     "var_double.summarize(hpo, BooleanPredicate.YES)"
@@ -2556,7 +876,7 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "exploratory",
+   "display_name": "Python 3 (ipykernel)",
    "language": "python",
    "name": "python3"
   },
@@ -2570,7 +890,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.10.12"
+   "version": "3.10.10"
   }
  },
  "nbformat": 4,
diff --git a/src/genophenocorr/analysis/_commie.py b/src/genophenocorr/analysis/_commie.py
index 9407ff9e..b4233266 100644
--- a/src/genophenocorr/analysis/_commie.py
+++ b/src/genophenocorr/analysis/_commie.py
@@ -8,6 +8,7 @@
 from statsmodels.stats import multitest
 
 from genophenocorr.model import Patient, Cohort, VariantEffect, FeatureType
+from genophenocorr.preprocessing import ProteinMetadataService
 from .predicate import BooleanPredicate, PolyPredicate
 from .predicate.genotype import VariantEffectPredicate, VariantPredicate, ExonPredicate, ProtFeatureTypePredicate, ProtFeaturePredicate
 from .predicate.genotype import VariantEffectsPredicate, VariantsPredicate, ExonsPredicate, ProtFeaturesPredicate, ProtFeatureTypesPredicate
@@ -103,10 +104,12 @@ class CommunistCohortAnalysis(CohortAnalysis):
 
     def __init__(self, cohort: Cohort,
                  hpo: hpotk.MinimalOntology,
+                 protein_service: ProteinMetadataService,
                  missing_implies_excluded: bool = False,
                  include_sv: bool = False,
                  p_val_correction: typing.Optional[str] = None,
-                 min_perc_patients_w_hpo: typing.Union[float, int] = .1):
+                 min_perc_patients_w_hpo: typing.Union[float, int] = .1
+                 ):
         if not isinstance(cohort, Cohort):
             raise ValueError(f"cohort must be type Cohort but was type {type(cohort)}")
 
@@ -114,6 +117,7 @@ def __init__(self, cohort: Cohort,
         self._hpo = hpotk.util.validate_instance(hpo, hpotk.MinimalOntology, 'hpo')
         self._phenotype_predicate_factory = PropagatingPhenotypeBooleanPredicateFactory(self._hpo,
                                                                                         missing_implies_excluded)
+        self._protein_service = protein_service
         self._correction = p_val_correction
         self._patient_list = list(cohort.all_patients) \
             if include_sv \
@@ -142,11 +146,11 @@ def compare_by_exon(self, exon_number: int, tx_id: str) -> GenotypePhenotypeAnal
         return self._apply_boolean_predicate(predicate)
 
     def compare_by_protein_feature_type(self, feature_type: FeatureType, tx_id: str) -> GenotypePhenotypeAnalysisResult:
-        predicate = ProtFeatureTypePredicate(transcript_id=tx_id, feature_type=feature_type)
+        predicate = ProtFeatureTypePredicate(tx_id, feature_type, self._protein_service)
         return self._apply_boolean_predicate(predicate)
 
     def compare_by_protein_feature(self, feature: str, tx_id: str) -> GenotypePhenotypeAnalysisResult:
-        predicate = ProtFeaturePredicate(tx_id, feature)
+        predicate = ProtFeaturePredicate(tx_id, feature, self._protein_service)
         return self._apply_boolean_predicate(predicate)
 
     def compare_by_variant_effects(self, effect1: VariantEffect, effect2: VariantEffect, tx_id: str) -> GenotypePhenotypeAnalysisResult:
@@ -162,11 +166,11 @@ def compare_by_exons(self, exon1_number: int, exon2_number: int, tx_id: str) ->
         return self._apply_poly_predicate(predicate)
 
     def compare_by_protein_feature_types(self, feature_type1: FeatureType, feature_type2: FeatureType, tx_id: str) -> GenotypePhenotypeAnalysisResult:
-        predicate = ProtFeatureTypesPredicate(tx_id, feature_type1, feature_type2)
+        predicate = ProtFeatureTypesPredicate(tx_id, feature_type1, feature_type2, self._protein_service)
         return self._apply_poly_predicate(predicate)
 
     def compare_by_protein_features(self, feature1: str, feature2: str, tx_id: str) -> GenotypePhenotypeAnalysisResult:
-        predicate = ProtFeaturesPredicate(tx_id, feature1, feature2)
+        predicate = ProtFeaturesPredicate(tx_id, feature1, feature2, self._protein_service)
         return self._apply_poly_predicate(predicate)
 
     def _apply_boolean_predicate(self, predicate: BooleanPredicate) -> GenotypePhenotypeAnalysisResult:
diff --git a/src/genophenocorr/analysis/_config.py b/src/genophenocorr/analysis/_config.py
index 3552e264..3dd3e718 100644
--- a/src/genophenocorr/analysis/_config.py
+++ b/src/genophenocorr/analysis/_config.py
@@ -1,14 +1,17 @@
 import logging
+import os
 import typing
 
 import hpotk
 
 from genophenocorr.model import Cohort
+from genophenocorr.preprocessing import ProteinMetadataService, UniprotProteinMetadataService, ProteinAnnotationCache, ProtCachingMetadataService
 
 from ._api import CohortAnalysis
 from ._commie import CommunistCohortAnalysis
 
 
+
 P_VAL_OPTIONS = ['bonferroni', 'b', 
                  'sidak', 's', 
                  'holm-sidak', 'hs', 
@@ -165,20 +168,47 @@ def build(self) -> CohortAnalysisConfiguration:
 
 def configure_cohort_analysis(cohort: Cohort,
                               hpo: hpotk.MinimalOntology,
+                              protein_source: str = 'UNIPROT',
+                              cache_dir: typing.Optional[str] = None,
                               config: typing.Optional[CohortAnalysisConfiguration] = None) -> CohortAnalysis:
     """
     Configure :class:`genophenocorr.analysis.CohortAnalysis` for given `cohort`.
 
     :param cohort: a :class:`genophenocorr.model.Cohort` to analyze
     :param hpo: a :class:`hpotk.MinimalOntology` with HPO to use in the analysis
+    :param protein_source: the resource to retrieve protein annotations from if we cannot find the annotations locally.
+     Choose from ``{'UNIPROT'}`` (just one fallback implementation is available at the moment).
     :param config: an optional :class:`CohortAnalysisConfiguration` to parameterize the analysis.
      The default parameters will be used if `None`.
     """
     if config is None:
         config = CohortAnalysisConfiguration.builder().build()
+    if cache_dir is None:
+        cache_dir = os.path.join(os.getcwd(), '.genophenocorr_cache')
+    protein_metadata_service = _configure_protein_service(protein_source, cache_dir)
+
 
-    return CommunistCohortAnalysis(cohort, hpo,
+    return CommunistCohortAnalysis(cohort, hpo, protein_metadata_service,
                                    missing_implies_excluded=config.missing_implies_excluded,
                                    include_sv=config.include_sv,
                                    p_val_correction=config.pval_correction,
                                    min_perc_patients_w_hpo=config.min_perc_patients_w_hpo)
+
+def _configure_protein_service(protein_fallback: str, cache_dir) -> ProteinMetadataService:
+    # (1) ProteinMetadataService
+    # Setup fallback
+    protein_fallback = _configure_fallback_protein_service(protein_fallback)
+    # Setup protein metadata cache
+    prot_cache_dir = os.path.join(cache_dir, 'protein_cache')
+    os.makedirs(prot_cache_dir, exist_ok=True)
+    prot_cache = ProteinAnnotationCache(prot_cache_dir)
+    # Assemble the final protein metadata service
+    protein_metadata_service = ProtCachingMetadataService(prot_cache, protein_fallback)
+    return protein_metadata_service
+
+def _configure_fallback_protein_service(protein_fallback: str) -> ProteinMetadataService:
+    if protein_fallback == 'UNIPROT':
+        fallback1 = UniprotProteinMetadataService()
+    else:
+        raise ValueError(f'Unknown protein fallback annotator type {protein_fallback}')
+    return fallback1
\ No newline at end of file
diff --git a/src/genophenocorr/analysis/predicate/genotype/_geno_bool.py b/src/genophenocorr/analysis/predicate/genotype/_geno_bool.py
index 5594b209..ea503b92 100644
--- a/src/genophenocorr/analysis/predicate/genotype/_geno_bool.py
+++ b/src/genophenocorr/analysis/predicate/genotype/_geno_bool.py
@@ -3,6 +3,7 @@
 import hpotk
 
 from genophenocorr.model import Patient, FeatureType, VariantEffect
+from genophenocorr.preprocessing import ProteinMetadataService
 
 from .._api import PatientCategory, BooleanPredicate
 
@@ -156,19 +157,21 @@ def __repr__(self):
 
 class ProtFeatureTypePredicate(BooleanPredicate):
     """
-    `ExonPredicate` tests if the `patient` has a variant that affects a :class:`FeatureType`
-    in the transcript of interest.
+    `ProtFeatureTypePredicate` tests if the `patient` has a variant that affects a :class:`FeatureType`
+    in the protein encoded by the transcript of interest.
 
     :param transcript_id: the accession of the transcript of interest.
     :param feature_type: an instance of the target :class:`FeatureType`.
+    :param protein_service: an instance of a :class:`ProteinMetadataService`.
     """
 
-    def __init__(self, transcript_id: str, feature_type: FeatureType) -> None:
+    def __init__(self, transcript_id: str, feature_type: FeatureType, protein_service: ProteinMetadataService) -> None:
         self._tx_id = transcript_id
         self._feature_type = hpotk.util.validate_instance(feature_type, FeatureType, 'feature_type')
+        self._protein_service = hpotk.util.validate_instance(protein_service, ProteinMetadataService, 'protein_service')
 
     def get_question(self) -> str:
-        return f'Variant that affects {self._feature_type.name} protein feature type on {self._tx_id}'
+        return f'Variant that affects {self._feature_type.name} feature type on protein encoded by transcript {self._tx_id}'
 
     def test(self, patient: Patient) -> typing.Optional[PatientCategory]:
         self._check_patient(patient)
@@ -180,14 +183,19 @@ def test(self, patient: Patient) -> typing.Optional[PatientCategory]:
             for ann in variant.tx_annotations:
                 if ann.transcript_id == self._tx_id:
                     prot_loc = ann.protein_effect_location
-                    for prot in ann.protein_affected:
-                        for feat in prot.protein_features:
-                            if feat.feature_type == self._feature_type:
-                                if len(list(range(max(prot_loc.start, feat.info.start), min(prot_loc.end, feat.info.end) + 1))) > 0:
-                                    return BooleanPredicate.YES
+                    prot_id = ann.protein_id
+                    if prot_id is not None and prot_loc is not None:
+                        proteins = self._protein_service.annotate(prot_id)
+                        for prot in proteins:
+                            if prot.protein_id == prot_id:
+                                for feat in prot.protein_features:
+                                    if feat.feature_type == self._feature_type:
+                                        if prot_loc.overlaps_with(feat.info.region):
+                                            return BooleanPredicate.YES
 
         return BooleanPredicate.NO
-
+        #TODO: Add a logger field, add a branch that handles the state where prot_id is set but prot_loc is not - gives warning
+    
     def __str__(self):
         return repr(self)
 
@@ -206,12 +214,13 @@ class ProtFeaturePredicate(BooleanPredicate):
     :param protein_feature_name: a `str` with the name of the protein feature.
     """
 
-    def __init__(self, transcript_id: str, protein_feature_name: str) -> None:
+    def __init__(self, transcript_id: str, protein_feature_name: str, protein_service:ProteinMetadataService) -> None:
         self._tx_id = transcript_id
         self._pf_name = hpotk.util.validate_instance(protein_feature_name, str, 'protein_feature_name')
+        self._protein_service = hpotk.util.validate_instance(protein_service, ProteinMetadataService, 'protein_service')
 
     def get_question(self) -> str:
-        return f'Variant that affects {self._pf_name} protein feature on {self._tx_id}'
+        return f'Variant that affects {self._pf_name} feature on protein encoded by transcript {self._tx_id}'
 
     def test(self, patient: Patient) -> typing.Optional[PatientCategory]:
         self._check_patient(patient)
@@ -223,11 +232,15 @@ def test(self, patient: Patient) -> typing.Optional[PatientCategory]:
             for ann in variant.tx_annotations:
                 if ann.transcript_id == self._tx_id:
                     prot_loc = ann.protein_effect_location
-                    for prot in ann.protein_affected:
-                        for feat in prot.protein_features:
-                            if feat.info.name == self._pf_name:
-                                if len(list(range(max(prot_loc.start, feat.info.start), min(prot_loc.end, feat.info.end) + 1))) > 0:
-                                    return BooleanPredicate.YES
+                    prot_id = ann.protein_id
+                    if prot_id is not None and prot_loc is not None:
+                        proteins = self._protein_service.annotate(prot_id)
+                        for prot in proteins:
+                            if prot.protein_id == prot_id:
+                                for feat in prot.protein_features:
+                                    if feat.info.name == self._pf_name:
+                                        if prot_loc.overlaps_with(feat.info.region):
+                                            return BooleanPredicate.YES
 
         return BooleanPredicate.NO
 
diff --git a/src/genophenocorr/analysis/predicate/genotype/_geno_group.py b/src/genophenocorr/analysis/predicate/genotype/_geno_group.py
index 81ad3009..d9ad7215 100644
--- a/src/genophenocorr/analysis/predicate/genotype/_geno_group.py
+++ b/src/genophenocorr/analysis/predicate/genotype/_geno_group.py
@@ -3,6 +3,7 @@
 import hpotk
 
 from genophenocorr.model import Patient, FeatureType, VariantEffect
+from genophenocorr.preprocessing import ProteinMetadataService
 
 from .._api import PatientCategory, GroupingPredicate
 
@@ -195,10 +196,13 @@ class ProtFeatureTypesPredicate(GroupingPredicate):
     :param feature_type2: an instance of the second target :class:`FeatureType`.
     """
 
-    def __init__(self, transcript_id: str, feature_type1: FeatureType, feature_type2: FeatureType) -> None:
+    def __init__(self, transcript_id: str, feature_type1: FeatureType, feature_type2: FeatureType, protein_service: ProteinMetadataService) -> None:
         self._tx_id = transcript_id
         self._feature_type1 = hpotk.util.validate_instance(feature_type1, FeatureType, 'feature_type')
         self._feature_type2 = hpotk.util.validate_instance(feature_type2, FeatureType, 'feature_type2')
+        if feature_type1 == feature_type2:
+            raise ValueError(f"Cannot compare against same feature types. {feature_type1} equals {feature_type2}.")
+        self._protein_service = hpotk.util.validate_instance(protein_service, ProteinMetadataService, 'protein_service')
 
     def get_question(self) -> str:
         return f'Variant that affects {self._feature_type1.name} protein feature type vs {self._feature_type2} on {self._tx_id}'
@@ -214,14 +218,18 @@ def test(self, patient: Patient) -> typing.Optional[PatientCategory]:
             for ann in variant.tx_annotations:
                 if ann.transcript_id == self._tx_id:
                     prot_loc = ann.protein_effect_location
-                    for prot in ann.protein_affected:
-                        for feat in prot.protein_features:
-                            if feat.feature_type == self._feature_type1:
-                                if len(list(range(max(prot_loc.start, feat.info.start), min(prot_loc.end, feat.info.end) + 1))) > 0:
-                                    result[0] = True
-                            if feat.feature_type == self._feature_type2:
-                                if len(list(range(max(prot_loc.start, feat.info.start), min(prot_loc.end, feat.info.end) + 1))) > 0:
-                                    result[1] = True
+                    prot_id = ann.protein_id
+                    if prot_id is not None and prot_loc is not None:
+                        proteins = self._protein_service.annotate(prot_id)
+                        for prot in proteins:
+                            if prot.protein_id == prot_id:
+                                for feat in prot.protein_features:
+                                    if feat.feature_type == self._feature_type1:
+                                        if prot_loc.overlaps_with(feat.info.region):
+                                            result[0] = True
+                                    if feat.feature_type == self._feature_type2:
+                                        if prot_loc.overlaps_with(feat.info.region):
+                                            result[1] = True
         if result == [True, False]:
             return GroupingPredicate.FIRST
         elif result == [False, True]:
@@ -233,7 +241,7 @@ def __str__(self):
         return repr(self)
 
     def __repr__(self):
-        return f'ProtFeatureTypePredicate(tx_id={self._tx_id}, feature_type1={self._feature_type1}, feature_type2={self._feature_type2})'
+        return f'ProtFeatureTypePredicate(tx_id={self._tx_id}, feature_type1={self._feature_type1}, feature_type2={self._feature_type2}, protein_service={self._protein_service})'
 
 
 class ProtFeaturesPredicate(GroupingPredicate):
@@ -249,10 +257,13 @@ class ProtFeaturesPredicate(GroupingPredicate):
     :param protein_feature2_name: a `str` with the name of the second protein feature.
     """
 
-    def __init__(self, transcript_id: str, protein_feature1_name: str, protein_feature2_name: str) -> None:
+    def __init__(self, transcript_id: str, protein_feature1_name: str, protein_feature2_name: str, protein_service: ProteinMetadataService) -> None:
         self._tx_id = transcript_id
         self._pf1_name = hpotk.util.validate_instance(protein_feature1_name, str, 'protein_feature1_name')
         self._pf2_name = hpotk.util.validate_instance(protein_feature2_name, str, 'protein_feature2_name')
+        if self._pf1_name == self._pf2_name:
+            raise ValueError(f"Cannot compare against the same features. {self._pf1_name} equals {self._pf2_name}.")
+        self._protein_service = hpotk.util.validate_instance(protein_service, ProteinMetadataService, 'protein_service')
 
     def get_question(self) -> str:
         return f'Variant that affects {self._pf1_name} protein feature vs {self._pf2_name} on {self._tx_id}'
@@ -268,14 +279,19 @@ def test(self, patient: Patient) -> typing.Optional[PatientCategory]:
             for ann in variant.tx_annotations:
                 if ann.transcript_id == self._tx_id:
                     prot_loc = ann.protein_effect_location
-                    for prot in ann.protein_affected:
-                        for feat in prot.protein_features:
-                            if feat.info.name == self._pf1_name:
-                                if len(list(range(max(prot_loc.start, feat.info.start), min(prot_loc.end, feat.info.end) + 1))) > 0:
-                                    results[0] = True
-                            if feat.info.name == self._pf1_name:
-                                if len(list(range(max(prot_loc.start, feat.info.start), min(prot_loc.end, feat.info.end) + 1))) > 0:
-                                    results[1] = True
+                    prot_id = ann.protein_id
+                    if prot_id is not None and prot_loc is not None:
+                        proteins = self._protein_service.annotate(prot_id)
+                        for prot in proteins:
+                            if prot.protein_id == prot_id:
+                                for feat in prot.protein_features:
+                                    if feat.info.name == self._pf1_name:
+                                        if prot_loc.overlaps_with(feat.info.region):
+                                            results[0] = True
+                                    if feat.info.name == self._pf2_name:
+                                        if prot_loc.overlaps_with(feat.info.region):
+                                            results[1] = True
+
         if results == [True, False]:
             return GroupingPredicate.FIRST
         elif results == [False, True]:
@@ -287,4 +303,4 @@ def __str__(self):
         return repr(self)
 
     def __repr__(self):
-        return f'ProtFeaturePredicate(tx_id={self._tx_id}, protein_feature1_name={self._pf1_name}, protein_feature2_name={self._pf2_name})'
+        return f'ProtFeaturePredicate(tx_id={self._tx_id}, protein_feature1_name={self._pf1_name}, protein_feature2_name={self._pf2_name}, protein_service={self._protein_service})'
diff --git a/src/genophenocorr/data/_toy.py b/src/genophenocorr/data/_toy.py
index 76c90e35..54eb5989 100644
--- a/src/genophenocorr/data/_toy.py
+++ b/src/genophenocorr/data/_toy.py
@@ -1,7 +1,7 @@
 from hpotk import TermId
 
 from genophenocorr.model import *
-from genophenocorr.model.genome import Contig, GenomicRegion, Region, Strand
+from genophenocorr.model.genome import Contig, GenomicRegion, Strand
 
 CONTIG = Contig('1', 'GB_ACC', 'REFSEQ_NAME', 'UCSC_NAME', 1_000)
 
@@ -31,14 +31,9 @@ def get_toy_cohort() -> Cohort:
     seizure_F = Phenotype(TermId.from_curie('HP:0001250'), 'Seizure', False)
     spasticity_F = Phenotype(TermId.from_curie('HP:0001257'), 'Spasticity', False)
 
-
-    prot_feat_1 = ProteinFeature.create(FeatureInfo('domain', Region(1, 75)), FeatureType.DOMAIN)
-    prot_feat_2 = ProteinFeature.create(FeatureInfo('region', Region(50, 100)), FeatureType.REGION)
-    prot = ProteinMetadata('NP_09876.5', 'FakeProtein', [prot_feat_1, prot_feat_2])
-
     snv = Variant.create_variant_from_scratch(VariantCoordinates(make_region(280, 281), 'A', 'G', 0), 'FakeGene',
                                                   'NM_1234.5', 'NM_1234.5:c.180A>G', False, [VariantEffect.MISSENSE_VARIANT], [1],
-                                                  [prot], 60, 60,
+                                                  'NP_09876.5', 60, 60,
                                                   Genotypes.from_mapping({
                                                       'A': Genotype.HETEROZYGOUS, 'B': Genotype.HETEROZYGOUS,
                                                       'C': Genotype.HOMOZYGOUS_ALTERNATE,
@@ -55,7 +50,7 @@ def get_toy_cohort() -> Cohort:
     deletion = Variant.create_variant_from_scratch(VariantCoordinates(make_region(360, 363), 'TTC', 'T', -2),
                                                   'FakeGene', 'NM_1234.5', 'NM_1234.5:c.261_263del',
                                                   False, [VariantEffect.FRAMESHIFT_VARIANT],
-                                                  [2], [prot], 86, 87,
+                                                  [2], 'NP_09876.5', 86, 87,
                                                   Genotypes.from_mapping({
                                                       'D': Genotype.HETEROZYGOUS, 'F': Genotype.HETEROZYGOUS,
                                                       'G': Genotype.HETEROZYGOUS, 'H': Genotype.HETEROZYGOUS,
@@ -69,143 +64,117 @@ def get_toy_cohort() -> Cohort:
                                                    )
     het_dup = Variant.create_variant_from_scratch(
         VariantCoordinates(make_region(175, 176), 'T', 'TG', 1), 'FakeGene', 'NM_1234.5',
-        'NM_1234.5:c.75A>G', False, [VariantEffect.FRAMESHIFT_VARIANT], [1], [prot], 25, 25,
+        'NM_1234.5:c.75A>G', False, [VariantEffect.FRAMESHIFT_VARIANT], [1], 'NP_09876.5', 25, 25,
         Genotypes.empty())  # Not used in the patients below, hence `empty()`.
     hom_dup = Variant.create_variant_from_scratch(
         VariantCoordinates(make_region(175, 176), 'T', 'TG', 1),'FakeGene', 'NM_1234.5',
-        'NM_1234.5:c.75A>G', False, [VariantEffect.FRAMESHIFT_VARIANT], [1], [prot], 25, 25,
+        'NM_1234.5:c.75A>G', False, [VariantEffect.FRAMESHIFT_VARIANT], [1], 'NP_09876.5', 25, 25,
         Genotypes.empty())  # Not used in the patients below, hence `empty()`.
 
     patients = (
         Patient(SampleLabels('A'),
                 phenotypes=(arachnodactyly_T, spasticity_F, seizure_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('B'),
                 phenotypes=(arachnodactyly_T, seizure_T, spasticity_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('C'),
                 phenotypes=(arachnodactyly_F, spasticity_T, seizure_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('D'),
                 phenotypes=(arachnodactyly_T, spasticity_T, seizure_T),
-                variants=[snv, deletion],
-                proteins=[prot]
+                variants=[snv, deletion]
                 ),
         Patient(SampleLabels('E'),
                 phenotypes=(arachnodactyly_T, spasticity_T, seizure_F),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('F'),
                 phenotypes=(arachnodactyly_F, spasticity_F, seizure_T),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('G'),
                 phenotypes=(arachnodactyly_T, seizure_T, spasticity_T),
-                variants=[snv, deletion],
-                proteins=[prot]
+                variants=[snv, deletion]
                 ),
         Patient(SampleLabels('H'),
                 phenotypes=(arachnodactyly_T, seizure_T, spasticity_F),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('I'),
                 phenotypes=(arachnodactyly_F, spasticity_F, seizure_T),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('J'),
                 phenotypes=(arachnodactyly_T, seizure_T, spasticity_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('K'),
                 phenotypes=(arachnodactyly_F, spasticity_T, seizure_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('L'),
                 phenotypes=(arachnodactyly_F, seizure_F, spasticity_F),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('M'),
                 phenotypes=(arachnodactyly_T, seizure_F, spasticity_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('N'),
                 phenotypes=(arachnodactyly_F, seizure_T, spasticity_F),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('O'),
                 phenotypes=(arachnodactyly_F, seizure_F, spasticity_T),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('P'),
                 phenotypes=(arachnodactyly_T, seizure_T, spasticity_F),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('Q'),
                 phenotypes=(arachnodactyly_T, seizure_F, spasticity_F),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('R'),
                 phenotypes=(arachnodactyly_T, seizure_T, spasticity_F),
-                variants=[snv, deletion],
-                proteins=[prot]
+                variants=[snv, deletion]
                 ),
         Patient(SampleLabels('S'),
                 phenotypes=(arachnodactyly_F, seizure_T, spasticity_T),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('T'),
                 phenotypes=(arachnodactyly_T, seizure_F, spasticity_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('U'),
                 phenotypes=(arachnodactyly_F, seizure_T, spasticity_T),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('V'),
                 phenotypes=(arachnodactyly_T, seizure_T, spasticity_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('W'),
                 phenotypes=(arachnodactyly_F, seizure_T, spasticity_T),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('X'),
                 phenotypes=(arachnodactyly_F, seizure_T, spasticity_T),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
         Patient(SampleLabels('Y'),
                 phenotypes=(arachnodactyly_T, seizure_T, spasticity_T),
-                variants=[snv],
-                proteins=[prot]
+                variants=[snv]
                 ),
         Patient(SampleLabels('Z'),
                 phenotypes=(arachnodactyly_F, seizure_T, spasticity_T),
-                variants=[deletion],
-                proteins=[prot]
+                variants=[deletion]
                 ),
     )
 
diff --git a/src/genophenocorr/model/_cohort.py b/src/genophenocorr/model/_cohort.py
index 6678f9b2..12ccfd0b 100644
--- a/src/genophenocorr/model/_cohort.py
+++ b/src/genophenocorr/model/_cohort.py
@@ -3,7 +3,6 @@
 
 from ._base import SampleLabels
 from ._phenotype import Phenotype
-from ._protein import ProteinMetadata
 from ._variant import Variant
 
 
@@ -14,25 +13,21 @@ class Patient:
         patient_id (SampleLabels): The patient identifiers
         phenotypes (Sequence[Phenotype]): A list of Phenotype objects
         variants (Sequence[Variant]): A list of Variant objects
-        proteins (Sequence[ProteinMetadata]): A list of ProteinMetadata objects
     """
 
     def __init__(self, labels: SampleLabels,
                  phenotypes: typing.Iterable[Phenotype],
-                 variants: typing.Iterable[Variant],
-                 proteins: typing.Iterable[ProteinMetadata]):
+                 variants: typing.Iterable[Variant]):
         """Constructs all necessary attributes for a Patient object
 
         Args:
             labels (string): A string unique to this Patient object
             phenotypes (Iterable[Phenotype]): A list of Phenotype objects
             variants (Iterable[Variant]): A list of Variant objects
-            proteins (Iterable[ProteinMetadata]): A list of ProteinMetadata objects
         """
         self._labels = labels
         self._phenotypes = tuple(phenotypes)
         self._variants = tuple(variants)
-        self._proteins = tuple(proteins)
 
     @property
     def patient_id(self) -> str:
@@ -65,14 +60,6 @@ def variants(self) -> typing.Sequence[Variant]:
         """
         return self._variants
 
-    @property
-    def proteins(self) -> typing.Sequence[ProteinMetadata]:
-        """
-        Returns:
-            Sequence[ProteinMetadata]: A list of ProteinMetadata objects associated with this Patient object
-        """
-        return self._proteins
-
     def present_phenotypes(self) -> typing.Iterator[Phenotype]:
         """
         Get an iterator over *present* phenotypes of the patient.
@@ -89,8 +76,7 @@ def __str__(self) -> str:
         return (f"Patient("
                 f"labels:{self._labels}, "
                 f"variants:{self.variants}, "
-                f"phenotypes:{[pheno.identifier for pheno in self.phenotypes]}, "
-                f"proteins:{[prot.protein_id for prot in self.proteins]})")
+                f"phenotypes:{[pheno.identifier for pheno in self.phenotypes]}")
 
     def __repr__(self) -> str:
         return str(self)
@@ -99,11 +85,10 @@ def __eq__(self, other) -> bool:
         return (isinstance(other, Patient)
                 and self.patient_id == other.patient_id
                 and self.variants == other.variants
-                and self.phenotypes == other.phenotypes
-                and self.proteins == other.proteins)
+                and self.phenotypes == other.phenotypes)
 
     def __hash__(self) -> int:
-        return hash((self.patient_id, self.variants, self.phenotypes, self.proteins))
+        return hash((self.patient_id, self.variants, self.phenotypes)) 
 
 
 class Cohort(typing.Sized):
@@ -116,8 +101,8 @@ def from_patients(members: typing.Sequence[Patient], include_patients_with_no_HP
         :param members: a sequence of cohort members.
         :return: the cohort
         """
-        cohort_variants, cohort_phenotypes, cohort_proteins = set(), set(), set()  # , cohort_proteins
-        var_counts, pheno_count, prot_counts = Counter(), Counter(), Counter()  # , prot_counts
+        cohort_variants, cohort_phenotypes = set(), set()  # , cohort_proteins
+        var_counts, pheno_count = Counter(), Counter() # , prot_counts
         members = set(members)
         excluded_members = []
         for patient in members:
@@ -131,11 +116,8 @@ def from_patients(members: typing.Sequence[Patient], include_patients_with_no_HP
             cohort_variants.update(patient.variants)
             var_counts.update([var.variant_coordinates.variant_key for var in patient.variants])
             pheno_count.update(pheno.identifier.value for pheno in patient.present_phenotypes())
-            cohort_proteins.update(patient.proteins)
-            prot_counts.update([prot.protein_id for prot in patient.proteins])
-        all_counts = {'patients': len(members), 'variants': var_counts, 'phenotypes': pheno_count,
-                      'proteins': prot_counts}  # 'proteins':prot_counts
-        return Cohort(members, cohort_phenotypes, cohort_variants, cohort_proteins,
+        all_counts = {'patients': len(members), 'variants': var_counts, 'phenotypes': pheno_count} # 'proteins':prot_counts
+        return Cohort(members, cohort_phenotypes, cohort_variants,
                       all_counts, excluded_members)  # cohort_proteins, all_counts
 
     """This class creates a collection of patients and makes it easier to determine overlapping diseases,
@@ -146,7 +128,6 @@ def from_patients(members: typing.Sequence[Patient], include_patients_with_no_HP
         all_patients (Sequence[Patient]): A set of all Patient objects in the Cohort
         all_phenotypes (Sequence[Phenotype]): A set of all Phenotype objects in the Cohort
         all_variants (Sequence[Variant]): A set of all Variant objects in the Cohort
-        all_proteins (Sequence[ProteinMetadata]): A set of all ProteinMetadata objects in the Cohort
         all_transcripts (Sequence[string]): A set of all transcript IDs referenced in all the Variant objects
         total_patient_count (integer): The total number of Patient objects
     Methods:
@@ -157,7 +138,7 @@ def from_patients(members: typing.Sequence[Patient], include_patients_with_no_HP
         list_data_by_tx(transcript:Optional[string]): A list and count of all the variants effects found for all transcripts or a given transcript if transcript is not None.
     """
 
-    def __init__(self, patient_set: typing.Set[Patient], phenotype_set, variant_set, protein_set, counts_dict, excluded_members,
+    def __init__(self, patient_set: typing.Set[Patient], phenotype_set, variant_set, counts_dict, excluded_members,
                  recessive=False):
         """Constructs all necessary attributes for a Cohort object
 
@@ -175,7 +156,6 @@ def __init__(self, patient_set: typing.Set[Patient], phenotype_set, variant_set,
             self._patient_set = frozenset(patient_set)
 
         self._phenotype_set = phenotype_set
-        self._protein_set = protein_set
         self._variant_set = variant_set
         self._all_counts_dict = counts_dict
         self._excluded_members = excluded_members
@@ -205,14 +185,6 @@ def all_variants(self) -> typing.Collection[Variant]:
         """
         return self._variant_set
 
-    @property
-    def all_proteins(self):
-        """
-        Returns:
-            set: A set of all the ProteinMetadata objects in the Cohort
-        """
-        return self._protein_set
-
     @property
     def all_transcripts(self):
         """
@@ -260,15 +232,20 @@ def list_all_variants(self, top=None):
             list: A list of tuples, formatted (variant string, number of patients with that variant)
         """
         return self._all_counts_dict.get('variants').most_common(top)
-
+    
     def list_all_proteins(self, top=None):
         """
         Args:
             top (integer, Optional): If not given, lists all proteins. Otherwise, lists only the `top` highest counts
         Returns:
-            list: A list of tuples, formatted (protein ID, number of patients with that protein)
+            list: A list of tuples, formatted (protein ID string, number of variants with that protein)
         """
-        return self._all_counts_dict.get('proteins').most_common(top)
+        prots = Counter()
+        for pat in [pats for pats in self.all_patients if pats not in self.all_excluded_patients]:
+            for var in pat.variants:
+                for trans in var.tx_annotations:
+                    prots.update([trans.protein_id])
+        return prots.most_common(top)
 
     def list_data_by_tx(self, transcript=None):
         """
@@ -278,7 +255,7 @@ def list_data_by_tx(self, transcript=None):
             dictionary: Each transcript ID references a Counter(), with the variant effect as the key and total variants with that effect as the count value
         """
         if transcript is not None:
-            var_type_dict = {transcript: Counter()}
+            var_type_dict = {transcript: Counter()} 
         else:
             var_type_dict = {tx_id: Counter() for tx_id in self.all_transcripts}
         for var in self.all_variants:
@@ -299,30 +276,5 @@ def get_excluded_ids(self):
     def get_excluded_count(self):
         return len(self.all_excluded_patients)
 
-    def get_protein_features_affected(self, tx_id: str):
-        # TODO - add documentation, type annotations.
-        protein_set = set()
-        protein_locations = []
-        for var in self.all_variants:
-            for tx in var.tx_annotations:
-                if tx.transcript_id == tx_id:
-                    # TODO - Here we are adding a sequence of `ProteinMetadata` into the `protein_set`.
-                    #  However, it looks fishy. Shouldn't we be really adding the individual `ProteinMetadata`
-                    #  into the set?
-                    protein_set.add(tx.protein_affected)
-                    if tx.protein_effect_location is not None:
-                        protein_locations.append(tx.protein_effect_location)
-
-        if len(protein_set) != 1:
-            raise ValueError(f"Found more than 1 protein: {protein_set}")
-        else:
-            protein = list(protein_set)[0][0]
-
-        all_features = Counter()
-        for location in protein_locations:
-            all_features.update(protein.get_features_variant_overlaps(location))
-
-        return all_features
-
     def __len__(self) -> int:
         return len(self._patient_set)
diff --git a/src/genophenocorr/model/_variant.py b/src/genophenocorr/model/_variant.py
index 4d18658a..2238e181 100644
--- a/src/genophenocorr/model/_variant.py
+++ b/src/genophenocorr/model/_variant.py
@@ -45,7 +45,7 @@ class TranscriptAnnotation(TranscriptInfoAware):
         is_preferred (bool): The transcript is a MANE transcript, canonical Ensembl transcript, etc.
         variant_effects (Iterable[string]): An iterable of predicted effects given by VEP
         affected_exons (Iterable[integer]): An iterable of exons affected by the variant. Returns None if none are affected.
-        affected_protein (ProteinMetadata): A ProteinMetadata object representing the protein affected by this transcript
+        protein_id (string): The protein ID for the protein encoded by the transcript.
         protein_effect_coordinates (Region, optional): An optional :class:`Region` with start and end coordinates
          of the effect on the protein sequence.
     """
@@ -56,18 +56,21 @@ def __init__(self, gene_id: str,
                  is_preferred: bool,
                  variant_effects: typing.Iterable[VariantEffect],
                  affected_exons: typing.Optional[typing.Iterable[int]],
-                 affected_protein: typing.Iterable[ProteinMetadata],
+                 protein_id: typing.Optional[str],
                  protein_effect_coordinates: typing.Optional[Region]):
         self._gene_id = hpotk.util.validate_instance(gene_id, str, 'gene_id')
         self._tx_id = hpotk.util.validate_instance(tx_id, str, 'tx_id')
         self._hgvsc_id = hpotk.util.validate_optional_instance(hgvsc, str, 'hgvsc')
         self._is_preferred = hpotk.util.validate_instance(is_preferred, bool, 'is_preferred')
         self._variant_effects = tuple(variant_effects)
-        if affected_exons is not None:
+        if affected_exons is not None: 
             self._affected_exons = tuple(affected_exons)
         else:
             self._affected_exons = None
-        self._affected_protein = tuple(affected_protein)
+        if protein_id is not None:
+            self._protein_id = hpotk.util.validate_instance(protein_id, str, 'protein_id')
+        else:
+            self._protein_id = None
         self._protein_effect_location = hpotk.util.validate_optional_instance(protein_effect_coordinates, Region,
                                                                              'protein_effect_coordinates')
 
@@ -123,12 +126,12 @@ def overlapping_exons(self) -> typing.Sequence[int]:
         return self._affected_exons
 
     @property
-    def protein_affected(self) -> typing.Sequence[ProteinMetadata]:
+    def protein_id(self) -> typing.Optional[str]:
         """
         Returns:
-            Sequence[ProteinMetadata]: The ProteinMetadata object representing the protein that is affected by the alteration of this transcript
+            Optional[str]: The protein accession ID for the protein relevant to the variant
         """
-        return self._affected_protein
+        return self._protein_id
 
     @property
     def protein_effect_location(self) -> typing.Optional[Region]:
@@ -146,7 +149,7 @@ def __str__(self) -> str:
                f"is_preferred:{self.is_preferred}," \
                f"variant_effects:{self.variant_effects}," \
                f"overlapping_exons:{self.overlapping_exons}," \
-               f"protein_affected:{self.protein_affected}," \
+               f"protein_id:{self.protein_id}," \
                f"protein_effect_location:{self.protein_effect_location})"
 
     def __eq__(self, other) -> bool:
@@ -157,7 +160,7 @@ def __eq__(self, other) -> bool:
             and self.transcript_id == other.transcript_id \
             and self.variant_effects == other.variant_effects \
             and self.overlapping_exons == other.overlapping_exons \
-            and self.protein_affected == other.protein_affected \
+            and self.protein_id == other.protein_id \
             and self.protein_effect_location == other.protein_effect_location
 
     def __repr__(self) -> str:
@@ -165,8 +168,7 @@ def __repr__(self) -> str:
 
     def __hash__(self) -> int:
         return hash((self.gene_id, self.hgvsc_id, self.is_preferred, self.transcript_id, self.overlapping_exons, self.variant_effects,
-                     self.protein_affected, self.protein_effect_location))
-
+                     self.protein_id, self.protein_effect_location))
 
 
 class VariantCoordinates:
@@ -377,13 +379,13 @@ def create_variant_from_scratch(variant_coordinates: VariantCoordinates,
                                     is_preferred: bool,
                                     consequences: typing.Iterable[VariantEffect],
                                     exons_effected: typing.Sequence[int],
-                                    protein: typing.Sequence[ProteinMetadata],
+                                    protein_id: typing.Optional[str],
                                     protein_effect_start: int,
                                     protein_effect_end: int,
                                     genotypes: Genotypes):
         protein_effect = Region(protein_effect_start, protein_effect_end)
         transcript = TranscriptAnnotation(gene_name, trans_id, hgvsc_id, is_preferred, consequences, exons_effected,
-                                          protein, protein_effect)
+                                          protein_id, protein_effect)
         return Variant(variant_coordinates, (transcript,), genotypes)
 
     def __init__(self, var_coordinates: VariantCoordinates,
diff --git a/src/genophenocorr/preprocessing/__init__.py b/src/genophenocorr/preprocessing/__init__.py
index 2bacd97b..d14883e1 100644
--- a/src/genophenocorr/preprocessing/__init__.py
+++ b/src/genophenocorr/preprocessing/__init__.py
@@ -5,7 +5,7 @@
 from ._patient import PatientCreator, CohortCreator
 from ._phenopacket import PhenopacketVariantCoordinateFinder, PhenopacketPatientCreator
 from ._phenotype import PhenotypeCreator
-from ._protein import ProteinAnnotationCache, ProtCachingFunctionalAnnotator
+from ._protein import ProteinAnnotationCache, ProtCachingMetadataService
 from ._uniprot import UniprotProteinMetadataService
 from ._variant import VariantAnnotationCache, VarCachingFunctionalAnnotator
 from ._vep import VepFunctionalAnnotator
@@ -18,7 +18,7 @@
     'PatientCreator', 'CohortCreator',
     'PhenopacketVariantCoordinateFinder', 'PhenopacketPatientCreator', 'load_phenopacket_folder', 'load_phenopacket',
     'PhenotypeCreator',
-    'ProteinAnnotationCache', 'ProtCachingFunctionalAnnotator',
+    'ProteinAnnotationCache', 'ProtCachingMetadataService',
     'UniprotProteinMetadataService',
     'VepFunctionalAnnotator', 'VariantAnnotationCache', 'VarCachingFunctionalAnnotator',
     'VVHgvsVariantCoordinateFinder', 'VVTranscriptCoordinateService',
diff --git a/src/genophenocorr/preprocessing/_config.py b/src/genophenocorr/preprocessing/_config.py
index 2e1790ea..d987a9c3 100644
--- a/src/genophenocorr/preprocessing/_config.py
+++ b/src/genophenocorr/preprocessing/_config.py
@@ -16,8 +16,6 @@
 from ._patient import CohortCreator
 from ._phenopacket import PhenopacketPatientCreator
 from ._phenotype import PhenotypeCreator
-from ._protein import ProteinAnnotationCache, ProtCachingFunctionalAnnotator
-from ._uniprot import UniprotProteinMetadataService
 from ._variant import VarCachingFunctionalAnnotator, VariantAnnotationCache
 from ._vep import VepFunctionalAnnotator
 from ._vv import VVHgvsVariantCoordinateFinder
@@ -29,8 +27,7 @@ def configure_caching_cohort_creator(hpo: hpotk.MinimalOntology,
                                      genome_build: str = 'GRCh38.p13',
                                      validation_runner: typing.Optional[hpotk.validate.ValidationRunner] = None,
                                      cache_dir: typing.Optional[str] = None,
-                                     variant_fallback: str = 'VEP',
-                                     protein_fallback: str = 'UNIPROT') -> CohortCreator[Phenopacket]:
+                                     variant_fallback: str = 'VEP') -> CohortCreator[Phenopacket]:
     """
     A convenience function for configuring a caching :class:`genophenocorr.preprocessing.PhenopacketPatientCreator`.
 
@@ -52,7 +49,7 @@ def configure_caching_cohort_creator(hpo: hpotk.MinimalOntology,
 
     build = _configure_build(genome_build)
     phenotype_creator = _setup_phenotype_creator(hpo, validation_runner)
-    functional_annotator = _configure_functional_annotator(cache_dir, variant_fallback, protein_fallback)
+    functional_annotator = _configure_functional_annotator(cache_dir, variant_fallback)
     hgvs_annotator = VVHgvsVariantCoordinateFinder(build)
     pc = PhenopacketPatientCreator(build, phenotype_creator, functional_annotator, hgvs_annotator)
 
@@ -63,8 +60,7 @@ def configure_caching_patient_creator(hpo: hpotk.MinimalOntology,
                                       genome_build: str = 'GRCh38.p13',
                                       validation_runner: typing.Optional[hpotk.validate.ValidationRunner] = None,
                                       cache_dir: typing.Optional[str] = None,
-                                      variant_fallback: str = 'VEP',
-                                      protein_fallback: str = 'UNIPROT') -> PhenopacketPatientCreator:
+                                      variant_fallback: str = 'VEP') -> PhenopacketPatientCreator:
     """
     A convenience function for configuring a caching :class:`genophenocorr.preprocessing.PhenopacketPatientCreator`.
 
@@ -88,7 +84,7 @@ def configure_caching_patient_creator(hpo: hpotk.MinimalOntology,
 
     build = _configure_build(genome_build)
     phenotype_creator = _setup_phenotype_creator(hpo, validation_runner)
-    functional_annotator = _configure_functional_annotator(cache_dir, variant_fallback, protein_fallback)
+    functional_annotator = _configure_functional_annotator(cache_dir, variant_fallback)
     hgvs_annotator = VVHgvsVariantCoordinateFinder(build)
     return PhenopacketPatientCreator(build, phenotype_creator, functional_annotator, hgvs_annotator)
 
@@ -96,8 +92,7 @@ def configure_caching_patient_creator(hpo: hpotk.MinimalOntology,
 def configure_cohort_creator(hpo: hpotk.MinimalOntology,
                              genome_build: str = 'GRCh38.p13',
                              validation_runner: typing.Optional[hpotk.validate.ValidationRunner] = None,
-                             variant_fallback: str = 'VEP',
-                             protein_fallback: str = 'UNIPROT') -> CohortCreator[Phenopacket]:
+                             variant_fallback: str = 'VEP') -> CohortCreator[Phenopacket]:
     """
     A convenience function for configuring a non-caching :class:`genophenocorr.preprocessing.PhenopacketPatientCreator`.
 
@@ -110,14 +105,11 @@ def configure_cohort_creator(hpo: hpotk.MinimalOntology,
      In any case, the directory will be created if it does not exist (including non-existing parents).
     :param variant_fallback: the fallback variant annotator to use if we cannot find the annotation locally.
      Choose from ``{'VEP'}`` (just one fallback implementation is available at the moment).
-    :param protein_fallback: the fallback protein metadata annotator to use if we cannot find the annotation locally.
-     Choose from ``{'UNIPROT'}`` (just one fallback implementation is available at the moment).
     """
     build = _configure_build(genome_build)
 
     phenotype_creator = _setup_phenotype_creator(hpo, validation_runner)
-    protein_metadata_service = _configure_fallback_protein_service(protein_fallback)
-    functional_annotator = _configure_fallback_functional(protein_metadata_service, variant_fallback)
+    functional_annotator = _configure_fallback_functional(variant_fallback)
     hgvs_annotator = VVHgvsVariantCoordinateFinder(build)
     pc = PhenopacketPatientCreator(build, phenotype_creator, functional_annotator, hgvs_annotator)
 
@@ -128,7 +120,6 @@ def configure_patient_creator(hpo: hpotk.MinimalOntology,
                               genome_build: str = 'GRCh38.p13',
                               validation_runner: typing.Optional[hpotk.validate.ValidationRunner] = None,
                               variant_fallback: str = 'VEP',
-                              protein_fallback: str = 'UNIPROT',
                               validation: str = 'lenient') -> PhenopacketPatientCreator: #Rename to something more understandable by user
     """
                                 ^^^ none, lenient, strict -
@@ -155,8 +146,7 @@ def configure_patient_creator(hpo: hpotk.MinimalOntology,
     build = _configure_build(genome_build)
 
     phenotype_creator = _setup_phenotype_creator(hpo, validation_runner)
-    protein_metadata_service = _configure_fallback_protein_service(protein_fallback)
-    functional_annotator = _configure_fallback_functional(protein_metadata_service, variant_fallback)
+    functional_annotator = _configure_fallback_functional(variant_fallback)
     hgvs_annotator = VVHgvsVariantCoordinateFinder(build)
     return PhenopacketPatientCreator(build, phenotype_creator, functional_annotator, hgvs_annotator)
 
@@ -185,21 +175,11 @@ def _setup_phenotype_creator(hpo: hpotk.MinimalOntology,
 
 
 def _configure_functional_annotator(cache_dir: str,
-                                    variant_fallback: str,
-                                    protein_fallback: str) -> FunctionalAnnotator:
-    # (1) ProteinMetadataService
-    # Setup fallback
-    protein_fallback = _configure_fallback_protein_service(protein_fallback)
-    # Setup protein metadata cache
-    prot_cache_dir = os.path.join(cache_dir, 'protein_cache')
-    os.makedirs(prot_cache_dir, exist_ok=True)
-    prot_cache = ProteinAnnotationCache(prot_cache_dir)
-    # Assemble the final protein metadata service
-    protein_metadata_service = ProtCachingFunctionalAnnotator(prot_cache, protein_fallback)
+                                    variant_fallback: str) -> FunctionalAnnotator:
 
     # (2) FunctionalAnnotator
     # Setup fallback
-    fallback = _configure_fallback_functional(protein_metadata_service, variant_fallback)
+    fallback = _configure_fallback_functional(variant_fallback)
 
     # Setup variant cache
     var_cache_dir = os.path.join(cache_dir, 'variant_cache')
@@ -210,18 +190,9 @@ def _configure_functional_annotator(cache_dir: str,
     return VarCachingFunctionalAnnotator(var_cache, fallback)
 
 
-def _configure_fallback_protein_service(protein_fallback: str) -> ProteinMetadataService:
-    if protein_fallback == 'UNIPROT':
-        fallback1 = UniprotProteinMetadataService()
-    else:
-        raise ValueError(f'Unknown protein fallback annotator type {protein_fallback}')
-    return fallback1
-
-
-def _configure_fallback_functional(protein_metadata_service: ProteinMetadataService,
-                                   variant_fallback: str) -> FunctionalAnnotator:
+def _configure_fallback_functional(variant_fallback: str) -> FunctionalAnnotator:
     if variant_fallback == 'VEP':
-        fallback = VepFunctionalAnnotator(protein_metadata_service)
+        fallback = VepFunctionalAnnotator()
     else:
         raise ValueError(f'Unknown variant fallback annotator type {variant_fallback}')
     return fallback
diff --git a/src/genophenocorr/preprocessing/_phenopacket.py b/src/genophenocorr/preprocessing/_phenopacket.py
index 17f7fe74..93f713b5 100644
--- a/src/genophenocorr/preprocessing/_phenopacket.py
+++ b/src/genophenocorr/preprocessing/_phenopacket.py
@@ -162,7 +162,6 @@ def process(self, inputs: Phenopacket, notepad: Notepad) -> Patient:
             Patient: A Patient object
         """
         sample_id = SampleLabels(label=inputs.subject.id, meta_label=inputs.id if len(inputs.id) > 0 else None)
-
         # Check phenotype
         pfs = notepad.add_subsection('phenotype-features')
         phenotypes = self._phenotype_creator.process(
@@ -174,7 +173,7 @@ def process(self, inputs: Phenopacket, notepad: Notepad) -> Patient:
         vs = notepad.add_subsection('variants')
         variants = self._add_variants(sample_id, inputs, vs)
 
-        return Patient(sample_id, phenotypes=phenotypes, variants=variants, proteins=())
+        return Patient(sample_id, phenotypes=phenotypes, variants=variants)
 
     def _add_variants(self, sample_id: SampleLabels, pp: Phenopacket, notepad: Notepad) -> typing.Sequence[Variant]:
         """Creates a list of Variant objects from the data in a given Phenopacket
diff --git a/src/genophenocorr/preprocessing/_protein.py b/src/genophenocorr/preprocessing/_protein.py
index 034916be..7962272b 100644
--- a/src/genophenocorr/preprocessing/_protein.py
+++ b/src/genophenocorr/preprocessing/_protein.py
@@ -59,7 +59,7 @@ def _create_file_name(self, prot_id: str) -> str:
         fname = f'{prot_id}.pickle'
         return os.path.join(self._datadir, fname)
 
-class ProtCachingFunctionalAnnotator(ProteinMetadataService):
+class ProtCachingMetadataService(ProteinMetadataService):
     """A class that retrieves ProteinMetadata if it exists or will run the fallback Fuctional Annotator if it does not exist.
 
     Methods:
@@ -67,7 +67,7 @@ class ProtCachingFunctionalAnnotator(ProteinMetadataService):
     """
 
     def __init__(self, cache: ProteinAnnotationCache, fallback: ProteinMetadataService):
-        """Constructs all necessary attributes for a ProtCachingFunctionalAnnotator object
+        """Constructs all necessary attributes for a ProtCachingMetadataService object
 
         Args:
             cache (ProteinAnnotationCache): A ProteinAnnotationCache object
diff --git a/src/genophenocorr/preprocessing/_uniprot.py b/src/genophenocorr/preprocessing/_uniprot.py
index dbf4b3a5..c8eea966 100644
--- a/src/genophenocorr/preprocessing/_uniprot.py
+++ b/src/genophenocorr/preprocessing/_uniprot.py
@@ -32,17 +32,15 @@ def annotate(self, protein_id: str) -> typing.Sequence[ProteinMetadata]:
             Sequence[ProteinMetadata]: A sequence of ProteinMetadata objects, or an empty sequence if no data was found.
         """
         if not isinstance(protein_id, str):
-            # TODO - log a warning?
             raise ValueError(f'Protein ID must be a str but it was {type(protein_id)}')
         api_url = self._url % protein_id
         r = requests.get(api_url).json()
         results = r['results']
         if len(results) == 0:
-            self._logger.warning("No proteins found for ID %s. Please verify refseq ID.", protein_id)
-            return []
+            raise ValueError(f"No proteins found for ID {protein_id}. Please verify refseq ID.")
         protein_list = []
+        unis = []
         for protein in results:
-            unis = []
             for uni in protein['uniProtKBCrossReferences']:
                 unis.append(uni['id'])
             if protein_id in unis:
@@ -60,11 +58,10 @@ def annotate(self, protein_id: str) -> typing.Sequence[ProteinMetadata]:
                         feat = ProteinFeature.create(FeatureInfo(feat_name, Region(feat_start, feat_end)), FeatureType[feat_type.upper()])
                         all_features_list.append(feat)
                 except KeyError:
-                    self._logger.warning("No features for %s", protein_id)
+                    raise ValueError(f"No features for {protein_id}")
                 protein_list.append(ProteinMetadata(protein_id, protein_name, all_features_list))
-            else:
-                self._logger.warning("UniProt did not return a protein ID that matches the ID we searched for: %s not in %s", protein_id, unis)
         if len(protein_list) > 1:
             self._logger.info('UniProt found %d results for ID %s', len(protein_list), protein_id)
-        # TODO - DD would like to discuss an example when there are >1 items in this list.
+        elif len(protein_list) == 0:
+            raise ValueError(f"UniProt did not return a protein ID that matches the ID we searched for: {protein_id} not in {unis}")
         return protein_list
diff --git a/src/genophenocorr/preprocessing/_vep.py b/src/genophenocorr/preprocessing/_vep.py
index bcc62024..fea9d9c6 100644
--- a/src/genophenocorr/preprocessing/_vep.py
+++ b/src/genophenocorr/preprocessing/_vep.py
@@ -6,7 +6,7 @@
 
 from genophenocorr.model import VariantCoordinates, TranscriptAnnotation, VariantEffect
 from genophenocorr.model.genome import Region
-from ._api import FunctionalAnnotator, ProteinMetadataService
+from ._api import FunctionalAnnotator
 
 
 def format_coordinates_for_vep_query(vc: VariantCoordinates) -> str:
@@ -77,11 +77,10 @@ class VepFunctionalAnnotator(FunctionalAnnotator):
     Non-coding variant effects where we do not complain if the functional annotation lacks the protein effects.
     """
 
-    def __init__(self, protein_annotator: ProteinMetadataService,
+    def __init__(self,
                  include_computational_txs: bool = False,
                  timeout: int = 10):
         self._logger = logging.getLogger(__name__)
-        self._protein_annotator = protein_annotator
         self._url = 'https://rest.ensembl.org/vep/human/region/%s?LoF=1&canonical=1' \
                     '&domains=1&hgvs=1' \
                     '&mutfunc=1&numbers=1&protein=1&refseq=1&mane=1' \
@@ -151,7 +150,6 @@ def _process_item(self, item: typing.Dict) -> typing.Optional[TranscriptAnnotati
             exons_effected = (int(x) for x in exons_effected)
 
         protein_id = item.get('protein_id')
-        protein = self._protein_annotator.annotate(protein_id)
         protein_effect_start = item.get('protein_start')
         protein_effect_end = item.get('protein_end')
         if protein_effect_start is None or protein_effect_end is None:
@@ -171,7 +169,7 @@ def _process_item(self, item: typing.Dict) -> typing.Optional[TranscriptAnnotati
                                     is_preferred,
                                     var_effects,
                                     exons_effected,
-                                    protein,
+                                    protein_id,
                                     protein_effect)
 
     def _query_vep(self, variant_coordinates: VariantCoordinates) -> dict:


Test patch:
diff --git a/src/genophenocorr/preprocessing/_test_variant.py b/src/genophenocorr/preprocessing/_test_variant.py
index c790daf2..85832b17 100644
--- a/src/genophenocorr/preprocessing/_test_variant.py
+++ b/src/genophenocorr/preprocessing/_test_variant.py
@@ -11,8 +11,6 @@
 
 from ._api import VariantCoordinateFinder
 from ._phenopacket import PhenopacketVariantCoordinateFinder
-from ._protein import ProteinAnnotationCache, ProtCachingFunctionalAnnotator
-from ._uniprot import UniprotProteinMetadataService
 from ._variant import VariantAnnotationCache, VarCachingFunctionalAnnotator
 from ._vep import VepFunctionalAnnotator
 from ._vv import VVHgvsVariantCoordinateFinder
@@ -59,11 +57,8 @@ def read_genomic_interpretation_json(fpath: str) -> GenomicInterpretation:
         return Parse(fh.read(), GenomicInterpretation())
 
 @pytest.fixture
-def variant_annotator(tmp_path):
-    pm = UniprotProteinMetadataService()
-    pac = ProteinAnnotationCache(tmp_path)
-    pfa = ProtCachingFunctionalAnnotator(pac, pm)
-    return VepFunctionalAnnotator(pfa)
+def variant_annotator():
+    return VepFunctionalAnnotator()
 
 @pytest.fixture
 def caching_annotator(variant_annotator, tmp_path):
diff --git a/tests/_protein_test_service.py b/tests/_protein_test_service.py
new file mode 100644
index 00000000..e8f03fb2
--- /dev/null
+++ b/tests/_protein_test_service.py
@@ -0,0 +1,40 @@
+
+
+from typing import Sequence
+from genophenocorr.preprocessing import ProteinMetadataService
+from genophenocorr.model import ProteinMetadata, ProteinFeature, FeatureInfo, FeatureType
+from genophenocorr.model.genome import Region
+
+class ProteinTestMetadataService(ProteinMetadataService):
+    def annotate(self, protein_id: str) -> Sequence[ProteinMetadata]:
+          final_prots = []
+          for prot in create_protein_test_data():
+                if prot.protein_id == protein_id:
+                      final_prots.append(prot)
+          return final_prots
+
+def create_protein_test_data() -> Sequence[ProteinMetadata]:
+        prots = []
+        prot_feat_1 = ProteinFeature.create(FeatureInfo('domain', Region(1, 75)), FeatureType.DOMAIN)
+        prot_feat_2 = ProteinFeature.create(FeatureInfo('region', Region(50, 100)), FeatureType.REGION)
+        prot_doc = ProteinMetadata('NP_09876.5', 'FakeProtein', [prot_feat_1, prot_feat_2])
+        prot_test = ProteinMetadata(protein_id='NP_037407.4', label='Ankyrin repeat domain-containing protein 11',
+            protein_features=(ProteinFeature.create(feature_type=FeatureType.REPEAT, info=FeatureInfo('ANK 1', Region(start=167, end=196))),
+            ProteinFeature.create(feature_type=FeatureType.REPEAT, info=FeatureInfo('ANK 2', Region(start=200, end=229))),
+            ProteinFeature.create(feature_type=FeatureType.REPEAT, info=FeatureInfo('ANK 3', Region(start=233, end=262))),
+            ProteinFeature.create(feature_type=FeatureType.REPEAT, info=FeatureInfo('ANK 4', Region(start=266, end=292))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1, end=90))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=128, end=169))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=289, end=380))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=398, end=647))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=723, end=783))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=881, end=1043))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1059, end=1393))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1424, end=1710))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1814, end=1836))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1988, end=2019))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=2131, end=2406))),
+            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Important for protein degradation', Region(start=2369, end=2663)))))
+        prots.append(prot_test)
+        prots.append(prot_doc)
+        return prots
\ No newline at end of file
diff --git a/tests/conftest.py b/tests/conftest.py
index dfa3e7c3..56d3a95f 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -3,13 +3,16 @@
 import hpotk
 import pytest
 
+from ._protein_test_service import ProteinTestMetadataService
+from genophenocorr.model import *
+from genophenocorr.model.genome import GRCh38, GenomicRegion, Region, Strand
+
 
 def pytest_addoption(parser):
     parser.addoption(
         "--runonline", action="store_true", default=False, help="run online tests"
     )
 
-
 def pytest_configure(config):
     config.addinivalue_line("markers", "online: mark test that require internet access to run")
 
@@ -38,3 +41,102 @@ def toy_validation_runner(toy_hpo: hpotk.MinimalOntology) -> hpotk.validate.Vali
         hpotk.validate.PhenotypicAbnormalityValidator(toy_hpo)
     )
     return hpotk.validate.ValidationRunner(validators)
+
+def make_region(contig: str, start: int, end: int) -> GenomicRegion:
+    return GenomicRegion(GRCh38.contig_by_name(contig), start, end, Strand.POSITIVE)
+
+@pytest.fixture(scope='session')
+def protein_test_service() -> ProteinTestMetadataService:
+    return ProteinTestMetadataService()
+
+@pytest.fixture
+def toy_cohort() -> Cohort:
+
+    prot_id = 'NP_037407.4'
+
+    phenos = get_test_phenotypes()
+
+    dup = Variant(VariantCoordinates(make_region("16", 89279849, 89279850), ref='G', alt='GC', change_length=1),
+                  [
+                      TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.6691dup', False, [VariantEffect.FRAMESHIFT_VARIANT], [9],
+                                           prot_id, Region(2230, 2231))
+                  ],
+                  Genotypes.from_mapping({SampleLabels('HetSingleVar'): Genotype.HETEROZYGOUS}))
+    indel = Variant(VariantCoordinates(make_region("16", 89284600, 89284602), ref='GG', alt='A', change_length=-1),
+                    [
+                        TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.1940_1941delinsT', False, [VariantEffect.FRAMESHIFT_VARIANT],
+                                             [9], prot_id, Region(646, 647))
+                    ],
+                    Genotypes.from_mapping({SampleLabels('HetDoubleVar1'): Genotype.HETEROZYGOUS}))
+    snv_stop_gain = Variant(VariantCoordinates(make_region("16", 89280751, 89280752), ref='G', alt='T', change_length=0),
+                            [
+                                TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.5790C>A', False, [VariantEffect.STOP_GAINED], [9], prot_id,
+                             Region(1929, 1930))],
+                            Genotypes.from_mapping({SampleLabels('HetDoubleVar1'): Genotype.HETEROZYGOUS}))
+    snv_missense = Variant(VariantCoordinates(make_region("16", 89275127, 89275128), ref='G', alt='A', change_length=0),
+                           [
+                               TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.7534C>T', False, [VariantEffect.MISSENSE_VARIANT], [10],
+                             prot_id, Region(2511, 2512))
+                           ],
+                           Genotypes.from_mapping({SampleLabels('HetDoubleVar2'): Genotype.HETEROZYGOUS}))
+    del_frameshift = Variant(VariantCoordinates(make_region("16", 89279707, 89279725), ref='AGTGTTCGGGGCGGGGCC', alt='A', change_length=-17),
+                             [
+                                 TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.6817_6833del', False, [VariantEffect.FRAMESHIFT_VARIANT],
+                              [9], prot_id, Region(2272, 2278))
+                             ],
+                             Genotypes.from_mapping({SampleLabels('HetDoubleVar2'): Genotype.HETEROZYGOUS}))
+    del_small = Variant(VariantCoordinates(make_region("16", 89279457, 89279459), ref='TG', alt='T', change_length=-1),
+                        [
+                            TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.7083del', False, [VariantEffect.FRAMESHIFT_VARIANT], [9],
+                             prot_id, Region(2360, 2362))
+                        ],
+                        Genotypes.from_mapping({SampleLabels('HomoVar'): Genotype.HOMOZYGOUS_ALTERNATE}))
+    del_large = Variant(VariantCoordinates(make_region("16", 89_190_070, 89_439_815), ref='N', alt='<DEL>', change_length=-249_745),
+                        [
+                            TranscriptAnnotation('ANKRD11', 'NM_013275.6', None, False,
+                                 [VariantEffect.STOP_LOST, VariantEffect.FEATURE_TRUNCATION, VariantEffect.CODING_SEQUENCE_VARIANT, VariantEffect.FIVE_PRIME_UTR_VARIANT,
+                                  VariantEffect.THREE_PRIME_UTR_VARIANT, VariantEffect.INTRON_VARIANT], [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
+                                 prot_id, None)
+                        ],
+                        Genotypes.from_mapping({SampleLabels('LargeCNV'): Genotype.HETEROZYGOUS}))
+
+    patients = (
+        Patient(SampleLabels('HetSingleVar'),
+                phenotypes=(phenos['arachnodactyly_T'], phenos['spasticity_F'], phenos['focal_clonic_seizure_T']),
+                variants=(dup,)
+                ),
+        Patient(SampleLabels('HetDoubleVar1'),
+                phenotypes=(phenos['arachnodactyly_T'], phenos['seizure_T'], phenos['spasticity_T']),
+                variants=(indel, snv_stop_gain)
+                ),
+        Patient(SampleLabels('HetDoubleVar2'),
+                phenotypes=(phenos['arachnodactyly_F'], phenos['spasticity_T'], phenos['seizure_T']),
+                variants=(snv_missense, del_frameshift)
+                ),
+        Patient(SampleLabels('HomoVar'),
+                phenotypes=(phenos['arachnodactyly_T'], phenos['spasticity_T'], phenos['seizure_T']),
+                variants=(del_small,)
+                ),
+        Patient(SampleLabels('LargeCNV'),
+                phenotypes=(phenos['arachnodactyly_T'], phenos['spasticity_T'], phenos['seizure_F']),
+                variants=(del_large,)
+                ),
+    )
+
+    return Cohort.from_patients(patients)
+
+
+def get_test_phenotypes():
+    phenotypes = {}
+
+    phenotypes['arachnodactyly_T'] = Phenotype(hpotk.TermId.from_curie('HP:0001166'), "Arachnodactyly", True)
+    phenotypes['seizure_T'] = Phenotype(hpotk.TermId.from_curie('HP:0001250'), "Seizure", True)
+    phenotypes['focal_clonic_seizure_T'] = Phenotype(hpotk.TermId.from_curie('HP:0002266'), "Focal clonic seizure", True)
+    phenotypes['spasticity_T'] = Phenotype(hpotk.TermId.from_curie('HP:0001257'), "Spasticity", True)
+    phenotypes['arachnodactyly_F'] = Phenotype(hpotk.TermId.from_curie('HP:0001166'), "Arachnodactyly", False)
+    phenotypes['seizure_F'] = Phenotype(hpotk.TermId.from_curie('HP:0001250'), "Seizure", False)
+    phenotypes['spasticity_F'] = Phenotype(hpotk.TermId.from_curie('HP:0001257'), "Spasticity", False)
+    phenotypes['focal_clonic_seizure_F'] = Phenotype(hpotk.TermId.from_curie('HP:0002266'), "Focal clonic seizure", False)
+
+    return phenotypes
+
diff --git a/tests/fixtures.py b/tests/fixtures.py
deleted file mode 100644
index 28414e1b..00000000
--- a/tests/fixtures.py
+++ /dev/null
@@ -1,123 +0,0 @@
-import hpotk
-import pytest
-
-from genophenocorr.model import *
-from genophenocorr.model.genome import GRCh38, GenomicRegion, Region, Strand
-
-
-def make_region(contig: str, start: int, end: int) -> GenomicRegion:
-    return GenomicRegion(GRCh38.contig_by_name(contig), start, end, Strand.POSITIVE)
-
-
-@pytest.fixture
-def toy_cohort() -> Cohort:
-
-    prot = ProteinMetadata(protein_id='NP_037407.4', label='Ankyrin repeat domain-containing protein 11',
-            protein_features=(ProteinFeature.create(feature_type=FeatureType.REPEAT, info=FeatureInfo('ANK 1', Region(start=167, end=196))),
-            ProteinFeature.create(feature_type=FeatureType.REPEAT, info=FeatureInfo('ANK 2', Region(start=200, end=229))),
-            ProteinFeature.create(feature_type=FeatureType.REPEAT, info=FeatureInfo('ANK 3', Region(start=233, end=262))),
-            ProteinFeature.create(feature_type=FeatureType.REPEAT, info=FeatureInfo('ANK 4', Region(start=266, end=292))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1, end=90))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=128, end=169))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=289, end=380))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=398, end=647))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=723, end=783))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=881, end=1043))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1059, end=1393))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1424, end=1710))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1814, end=1836))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=1988, end=2019))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Disordered', Region(start=2131, end=2406))),
-            ProteinFeature.create(feature_type=FeatureType.REGION, info=FeatureInfo('Important for protein degradation', Region(start=2369, end=2663)))))
-
-    phenos = get_test_phenotypes()
-
-    dup = Variant(VariantCoordinates(make_region("16", 89279849, 89279850), ref='G', alt='GC', change_length=1),
-                  [
-                      TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.6691dup', False, [VariantEffect.FRAMESHIFT_VARIANT], [9],
-                                           [prot], Region(2230, 2231))
-                  ],
-                  Genotypes.from_mapping({SampleLabels('HetSingleVar'): Genotype.HETEROZYGOUS}))
-    indel = Variant(VariantCoordinates(make_region("16", 89284600, 89284602), ref='GG', alt='A', change_length=-1),
-                    [
-                        TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.1940_1941delinsT', False, [VariantEffect.FRAMESHIFT_VARIANT],
-                                             [9], [prot], Region(646, 647))
-                    ],
-                    Genotypes.from_mapping({SampleLabels('HetDoubleVar1'): Genotype.HETEROZYGOUS}))
-    snv_stop_gain = Variant(VariantCoordinates(make_region("16", 89280751, 89280752), ref='G', alt='T', change_length=0),
-                            [
-                                TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.5790C>A', False, [VariantEffect.STOP_GAINED], [9], [prot],
-                             Region(1929, 1930))],
-                            Genotypes.from_mapping({SampleLabels('HetDoubleVar1'): Genotype.HETEROZYGOUS}))
-    snv_missense = Variant(VariantCoordinates(make_region("16", 89275127, 89275128), ref='G', alt='A', change_length=0),
-                           [
-                               TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.7534C>T', False, [VariantEffect.MISSENSE_VARIANT], [10],
-                             [prot], Region(2511, 2512))
-                           ],
-                           Genotypes.from_mapping({SampleLabels('HetDoubleVar2'): Genotype.HETEROZYGOUS}))
-    del_frameshift = Variant(VariantCoordinates(make_region("16", 89279707, 89279725), ref='AGTGTTCGGGGCGGGGCC', alt='A', change_length=-17),
-                             [
-                                 TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.6817_6833del', False, [VariantEffect.FRAMESHIFT_VARIANT],
-                              [9], [prot], Region(2272, 2278))
-                             ],
-                             Genotypes.from_mapping({SampleLabels('HetDoubleVar2'): Genotype.HETEROZYGOUS}))
-    del_small = Variant(VariantCoordinates(make_region("16", 89279457, 89279459), ref='TG', alt='T', change_length=-1),
-                        [
-                            TranscriptAnnotation('ANKRD11', 'NM_013275.6', 'NM_013275.6:c.7083del', False, [VariantEffect.FRAMESHIFT_VARIANT], [9],
-                             [prot], Region(2360, 2362))
-                        ],
-                        Genotypes.from_mapping({SampleLabels('HomoVar'): Genotype.HOMOZYGOUS_ALTERNATE}))
-    del_large = Variant(VariantCoordinates(make_region("16", 89_190_070, 89_439_815), ref='N', alt='<DEL>', change_length=-249_745),
-                        [
-                            TranscriptAnnotation('ANKRD11', 'NM_013275.6', None, False,
-                                 [VariantEffect.STOP_LOST, VariantEffect.FEATURE_TRUNCATION, VariantEffect.CODING_SEQUENCE_VARIANT, VariantEffect.FIVE_PRIME_UTR_VARIANT,
-                                  VariantEffect.THREE_PRIME_UTR_VARIANT, VariantEffect.INTRON_VARIANT], [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
-                                 [prot], None)
-                        ],
-                        Genotypes.from_mapping({SampleLabels('LargeCNV'): Genotype.HETEROZYGOUS}))
-
-    patients = (
-        Patient(SampleLabels('HetSingleVar'),
-                phenotypes=(phenos['arachnodactyly_T'], phenos['spasticity_F'], phenos['focal_clonic_seizure_T']),
-                variants=(dup,),
-                proteins=[prot]
-                ),
-        Patient(SampleLabels('HetDoubleVar1'),
-                phenotypes=(phenos['arachnodactyly_T'], phenos['seizure_T'], phenos['spasticity_T']),
-                variants=(indel, snv_stop_gain),
-                proteins=[prot]
-                ),
-        Patient(SampleLabels('HetDoubleVar2'),
-                phenotypes=(phenos['arachnodactyly_F'], phenos['spasticity_T'], phenos['seizure_T']),
-                variants=(snv_missense, del_frameshift),
-                proteins=[prot]
-                ),
-        Patient(SampleLabels('HomoVar'),
-                phenotypes=(phenos['arachnodactyly_T'], phenos['spasticity_T'], phenos['seizure_T']),
-                variants=(del_small,),
-                proteins=[prot]
-                ),
-        Patient(SampleLabels('LargeCNV'),
-                phenotypes=(phenos['arachnodactyly_T'], phenos['spasticity_T'], phenos['seizure_F']),
-                variants=(del_large,),
-                proteins=[prot]
-                ),
-    )
-
-    return Cohort.from_patients(patients)
-
-
-def get_test_phenotypes():
-    phenotypes = {}
-
-    phenotypes['arachnodactyly_T'] = Phenotype(hpotk.TermId.from_curie('HP:0001166'), "Arachnodactyly", True)
-    phenotypes['seizure_T'] = Phenotype(hpotk.TermId.from_curie('HP:0001250'), "Seizure", True)
-    phenotypes['focal_clonic_seizure_T'] = Phenotype(hpotk.TermId.from_curie('HP:0002266'), "Focal clonic seizure", True)
-    phenotypes['spasticity_T'] = Phenotype(hpotk.TermId.from_curie('HP:0001257'), "Spasticity", True)
-    phenotypes['arachnodactyly_F'] = Phenotype(hpotk.TermId.from_curie('HP:0001166'), "Arachnodactyly", False)
-    phenotypes['seizure_F'] = Phenotype(hpotk.TermId.from_curie('HP:0001250'), "Seizure", False)
-    phenotypes['spasticity_F'] = Phenotype(hpotk.TermId.from_curie('HP:0001257'), "Spasticity", False)
-    phenotypes['focal_clonic_seizure_F'] = Phenotype(hpotk.TermId.from_curie('HP:0002266'), "Focal clonic seizure", False)
-
-    return phenotypes
-
diff --git a/tests/test_predicates.py b/tests/test_predicates.py
index b25688f4..2f4393d6 100644
--- a/tests/test_predicates.py
+++ b/tests/test_predicates.py
@@ -8,7 +8,7 @@
 from genophenocorr.analysis.predicate.phenotype import PropagatingPhenotypePredicate
 from genophenocorr.model import Cohort, Patient, FeatureType, VariantEffect
 
-from .fixtures import toy_cohort
+from .conftest import toy_cohort, protein_test_service
 
 
 def find_patient(pat_id: str, cohort: Cohort) -> typing.Optional[Patient]:
@@ -111,9 +111,9 @@ def test_ExonPredicate(patient_id, exon, hasVarResult, toy_cohort):
                         ['HetDoubleVar1', FeatureType.REPEAT, BooleanPredicate.NO]))
                         ## TODO Why do CNV not show as affecting a feature?
                         ##['LargeCNV', FeatureType.REGION , HETEROZYGOUS]))
-def test_ProteinFeatureTypePredicate(patient_id, feature_type, hasVarResult, toy_cohort):
+def test_ProteinFeatureTypePredicate(patient_id, feature_type, hasVarResult, toy_cohort, protein_test_service):
     patient = find_patient(patient_id, toy_cohort)
-    predicate = ProtFeatureTypePredicate('NM_013275.6', feature_type=feature_type)
+    predicate = ProtFeatureTypePredicate('NM_013275.6', feature_type=feature_type, protein_service=protein_test_service)
     result = predicate.test(patient)
     assert result == hasVarResult
 
@@ -124,8 +124,8 @@ def test_ProteinFeatureTypePredicate(patient_id, feature_type, hasVarResult, toy
                         ['HetSingleVar', 'Disordered', BooleanPredicate.YES],
                         ['HomoVar', 'Disordered', BooleanPredicate.YES],
                         ['HetDoubleVar1', 'Disordered', BooleanPredicate.YES]))
-def test_ProteinFeaturePredicate(patient_id, feature, hasVarResult, toy_cohort):
-    predicate = ProtFeaturePredicate('NM_013275.6', protein_feature_name=feature)
+def test_ProteinFeaturePredicate(patient_id, feature, hasVarResult, toy_cohort, protein_test_service):
+    predicate = ProtFeaturePredicate('NM_013275.6', protein_feature_name=feature, protein_service=protein_test_service)
     patient = find_patient(patient_id, toy_cohort)
     result = predicate.test(patient)
     assert result == hasVarResult