Repository: a-r-j/graphein (language: python)

Issue:
Merge DSSP functions into protein_vis
Added functions to add DSSP predicted features to node attributes on residue graph. Bond angles and ASA are numeric and secondary structure attributes are left as strings. String values will need to be pre-processed into one_hot vectors in a separate preprocessing function later on.


Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index 5483365d..695a8e06 100644
--- a/.gitignore
+++ b/.gitignore
@@ -140,3 +140,6 @@ dmypy.json
 
 # End of https://www.toptal.com/developers/gitignore/api/python
 .vscode/settings.json
+
+# Local test files
+datasets/examples/*
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 00000000..f0ee867c
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,22 @@
+# See https://pre-commit.com for more information
+# See https://pre-commit.com/hooks.html for more hooks
+repos:
+-   repo: https://github.com/pre-commit/pre-commit-hooks
+    rev: v3.2.0
+    hooks:
+    -   id: trailing-whitespace
+    -   id: end-of-file-fixer
+    -   id: check-yaml
+    -   id: check-added-large-files
+-   repo: https://github.com/kynan/nbstripout
+    rev: master
+    hooks:
+    -   id: nbstripout
+-   repo: https://github.com/ambv/black
+    rev: stable
+    hooks:
+    - id: black
+-   repo: https://github.com/pre-commit/pre-commit-hooks
+    rev: v1.2.3
+    hooks:
+    - id: flake8
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 00000000..a40f2ece
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,1 @@
+recursive-include graphein/ *
\ No newline at end of file
diff --git a/datasets/pscdb/make_rearrangement_data.py b/datasets/pscdb/make_rearrangement_data.py
index e2861b4f..9c04a3d7 100644
--- a/datasets/pscdb/make_rearrangement_data.py
+++ b/datasets/pscdb/make_rearrangement_data.py
@@ -4,9 +4,24 @@
 import torch as torch
 from tqdm import tqdm
 
-from graphein.construct_graphs import ProteinGraph
+from graphein.protein.config import (
+    DSSPConfig,
+    GetContactsConfig,
+    ProteinGraphConfig,
+)
+from graphein.protein.edges.intramolecular import (
+    hydrogen_bond,
+    hydrophobic,
+    pi_cation,
+    pi_stacking,
+    salt_bridge,
+    t_stacking,
+    van_der_waals,
+)
+from graphein.protein.graphs import construct_graph
 
 if __name__ == "__main__":
+    """
     parser = argparse.ArgumentParser(
         description="Pass Graph Construction Params"
     )
@@ -19,6 +34,7 @@
     )
     args = parser.parse_args()
     # attention = args.attention
+    """
 
     # Load Dataframe
     # df = pd.read_feather('structural_rearrangement_data.feather')
@@ -26,20 +42,31 @@
     print(df)
 
     # Initialise Graph Constructor
-    pg = ProteinGraph(
-        granularity="CA",
-        insertions=False,
-        keep_hets=False,
-        node_featuriser="meiler",
-        get_contacts_path=args.get_contacts_path,
-        pdb_dir="pdbs/",
-        contacts_dir="contacts/",
-        exclude_waters=True,
-        covalent_bonds=False,
-        include_ss=args.include_ss,
-        include_ligand=False,
-        edge_distance_cutoff=args.edge_distance_cutoff,
-    )
+    configs = {
+        "granularity": "CA",
+        "keep_hets": False,
+        "insertions": False,
+        "verbose": False,
+        "pdb_dir": "../examples/pdbs/",
+        "get_contacts_config": GetContactsConfig(
+            contacts_dir="../examples/contacts/",
+            pdb_dir="../examples/contacts/",
+        ),
+        "dssp_config": DSSPConfig(),
+    }
+
+    config = ProteinGraphConfig(**configs)
+
+    config.edge_construction_functions = [
+        salt_bridge,
+        hydrogen_bond,
+        van_der_waals,
+        pi_cation,
+        pi_stacking,
+        hydrophobic,
+        t_stacking,
+    ]
+    # Test High-level API
 
     # Iterate over rows to produce Graph, pickle graph and label
     for row in tqdm(range(len(df))):
@@ -47,10 +74,7 @@
         file_path = f'pdbs/{example["Free PDB"]}.pdb'
         contact_file = f'contacts/{example["Free PDB"]}_contacts.tsv'
 
-        g = pg.dgl_graph_from_pdb_code(
-            pdb_code=example["Free PDB"],
-            chain_selection=list(example["Free Chains"]),
-        )
+        g = construct_graph(config=config, pdb_code=example["Free PDB"])
 
         print(g)
 
diff --git a/environment-dev.yml b/environment-dev.yml
index 217e0087..5fc87e17 100644
--- a/environment-dev.yml
+++ b/environment-dev.yml
@@ -1,6 +1,7 @@
 name: graphein-dev
 channels:
 - conda-forge
+- pytorch
 dependencies:
 - python=3.8
 - biopython
@@ -9,6 +10,7 @@ dependencies:
 - conda
 - flake8
 - isort
+- ipympl
 - mamba
 - matplotlib
 - mypy
@@ -23,6 +25,7 @@ dependencies:
 - pytest
 - pytest-cov
 - pytest-xdist
+- pytorch=1.7.1
 - rdkit
 - scipy
 - scikit-learn
@@ -32,8 +35,10 @@ dependencies:
 - pydantic
 - interrogate
 - pip:
+  - bioservices
   - propy
   - biovec
+  - hypothesis
   - multipledispatch
+  - pytorch3d
   - wget
-
diff --git a/environment.yml b/environment.yml
new file mode 100644
index 00000000..f11b200a
--- /dev/null
+++ b/environment.yml
@@ -0,0 +1,41 @@
+name: graphein-dev
+channels:
+- conda-forge
+- pytorch
+dependencies:
+- python=3.8
+- biopython
+- black
+- conda
+- flake8
+- isort
+- mamba
+- matplotlib
+- mypy
+- nbstripout
+- networkx
+- numpy
+- pandas
+- pip
+- pre-commit
+- pycodestyle
+- pydocstyle
+- pytest
+- pytest-cov
+- pytest-xdist
+- rdkit
+- scipy
+- scikit-learn
+- pytorch=1.7.1
+- xarray
+- ipympl
+- pydantic
+- interrogate
+- pip:
+    - bioservices
+    - propy
+    - pytorch3d
+    - biovec
+    - multipledispatch
+    - wget
+    - git+https://www.github.com/a-r-j/graphein@protein_vis
diff --git a/graphein/__init__.py b/graphein/__init__.py
index 9013ea0c..b000c9c2 100644
--- a/graphein/__init__.py
+++ b/graphein/__init__.py
@@ -2,6 +2,9 @@
 # Author: Arian Jamasb <arian@jamasb.io>
 # License: BSD 3 clause
 # Code Repository: https://github.com/a-r-j/graphein
+from .protein import *
+from .rna import *
+from .utils import *
 
 __version__ = "0.0.1"
 __author__ = "Arian Jamasb <arian@jamasb.io>"
diff --git a/graphein/examples/contacts/3eiy_contacts.tsv b/graphein/examples/contacts/3eiy_contacts.tsv
new file mode 100644
index 00000000..8c27730a
--- /dev/null
+++ b/graphein/examples/contacts/3eiy_contacts.tsv
@@ -0,0 +1,957 @@
+# total_frames:1 beg:0 end:0 stride:1 interaction_types:hp,sb,pc,ps,ts,vdw,hb
+# Columns: frame, interaction_type, atom_1, atom_2[, atom_3[, atom_4]]
+0	sb	A:ASP:168:OD2	A:LYS:164:NZ
+0	sb	A:ASP:71:OD2	A:LYS:105:NZ
+0	sb	A:GLU:32:OE2	A:LYS:30:NZ
+0	sb	A:ARG:87:NH2	A:ASP:15:OD1
+0	sb	A:GLU:99:OE2	A:LYS:143:NZ
+0	sb	A:GLU:140:OE2	A:LYS:136:NZ
+0	sb	A:ARG:89:NH2	A:ASP:112:OD1
+0	sb	A:GLU:99:OE1	A:LYS:143:NZ
+0	sb	A:ARG:44:NH2	A:GLU:146:OE1
+0	sb	A:GLU:146:OE1	A:LYS:149:NZ
+0	sb	A:ASP:98:OD2	A:LYS:143:NZ
+0	sb	A:ARG:44:NH1	A:ASP:43:OD2
+0	sb	A:ASP:103:OD2	A:LYS:105:NZ
+0	sb	A:GLU:140:OE1	A:LYS:136:NZ
+0	sb	A:ARG:87:NH2	A:ASP:15:OD2
+0	sb	A:ASP:103:OD1	A:LYS:105:NZ
+0	pc	A:LYS:105:NZ	A:PHE:139:CE1
+0	pc	A:ARG:87:NH2	A:HIS:111:CD2
+0	pc	A:LYS:35:NZ	A:PHE:58:CE1
+0	pc	A:ARG:44:NH2	A:TYR:142:CE1
+0	pc	A:ARG:87:NH1	A:HIS:111:CD2
+0	pc	A:LYS:143:NZ	A:TYR:142:CE1
+0	ps	A:TYR:52:CE1	A:TYR:56:CE1
+0	ps	A:PHE:138:CE1	A:TYR:142:CE1
+0	vdw	A:ALA:171:O	A:LYS:174:N
+0	vdw	A:ALA:171:O	A:LYS:175:N
+0	vdw	A:ASN:172:O	A:LYS:174:N
+0	vdw	A:ASN:172:O	A:LYS:175:N
+0	vdw	A:ASN:172:O	A:LYS:175:CA
+0	vdw	A:ALA:171:O	A:LYS:174:CA
+0	vdw	A:LYS:175:N	A:PHE:173:C
+0	vdw	A:ALA:171:C	A:PHE:173:N
+0	vdw	A:ALA:171:O	A:PHE:173:N
+0	vdw	A:ASN:172:C	A:LYS:174:N
+0	vdw	A:ASN:172:C	A:LYS:175:N
+0	vdw	A:ALA:171:C	A:ASP:168:O
+0	vdw	A:LYS:174:N	A:VAL:170:O
+0	vdw	A:LYS:175:N	A:PHE:173:O
+0	vdw	A:LYS:174:CG	A:VAL:170:O
+0	vdw	A:LYS:174:CD	A:VAL:170:O
+0	vdw	A:ASN:172:CB	A:ASP:168:O
+0	vdw	A:ASN:172:CG	A:ASP:168:O
+0	vdw	A:ASN:172:OD1	A:ASP:168:O
+0	vdw	A:ASN:172:ND2	A:ASP:168:O
+0	vdw	A:ASN:172:CB	A:LEU:63:O
+0	vdw	A:ASN:172:ND2	A:LEU:63:O
+0	vdw	A:LEU:63:CB	A:PHE:173:CA
+0	vdw	A:GLY:67:C	A:LEU:63:CD1
+0	vdw	A:GLY:67:O	A:LEU:63:CD1
+0	vdw	A:GLY:67:CA	A:LEU:63:CD1
+0	vdw	A:GLY:169:O	A:PHE:173:N
+0	vdw	A:ASN:172:N	A:ASP:168:O
+0	vdw	A:ASN:172:N	A:VAL:170:C
+0	vdw	A:ASN:172:CA	A:ASP:168:O
+0	vdw	A:GLY:169:O	A:PHE:173:CB
+0	vdw	A:GLY:169:O	A:LEU:63:N
+0	vdw	A:PHE:173:N	A:VAL:170:O
+0	vdw	A:GLY:169:O	A:THR:62:CA
+0	vdw	A:GLY:169:O	A:THR:62:C
+0	vdw	A:THR:167:O	A:VAL:170:N
+0	vdw	A:ALA:171:N	A:THR:167:O
+0	vdw	A:ALA:171:CB	A:THR:167:O
+0	vdw	A:ASP:168:O	A:VAL:170:N
+0	vdw	A:ALA:171:N	A:ASP:168:O
+0	vdw	A:ALA:171:CA	A:ASP:168:O
+0	vdw	A:ALA:171:CB	A:ASP:168:O
+0	vdw	A:GLY:169:N	A:THR:167:O
+0	vdw	A:ILE:166:O	A:VAL:170:N
+0	vdw	A:ASP:168:C	A:VAL:170:N
+0	vdw	A:ALA:171:N	A:GLY:169:C
+0	vdw	A:GLN:61:C	A:PHE:173:CG
+0	vdw	A:GLN:61:O	A:PHE:173:CG
+0	vdw	A:PHE:173:CD1	A:THR:62:O
+0	vdw	A:GLN:61:C	A:PHE:173:CB
+0	vdw	A:GLN:61:C	A:PHE:173:CD2
+0	vdw	A:GLN:61:O	A:PHE:173:CB
+0	vdw	A:GLN:61:O	A:PHE:173:CD2
+0	vdw	A:PHE:173:CB	A:VAL:170:O
+0	vdw	A:GLN:61:CA	A:PHE:173:CD2
+0	vdw	A:PHE:173:CB	A:THR:62:CA
+0	vdw	A:PHE:173:CB	A:THR:62:C
+0	vdw	A:ALA:36:CB	A:ASP:34:OD1
+0	vdw	A:GLN:61:CA	A:PHE:173:CE2
+0	vdw	A:GLN:61:CG	A:PHE:173:CE2
+0	vdw	A:GLN:61:CD	A:VAL:6:O
+0	vdw	A:LEU:12:CD1	A:VAL:170:CG2
+0	vdw	A:ALA:36:N	A:ASP:34:C
+0	vdw	A:ALA:36:N	A:ASP:34:O
+0	vdw	A:ALA:36:C	A:GLY:38:N
+0	vdw	A:ALA:36:N	A:ASP:34:OD1
+0	vdw	A:ALA:36:CA	A:ASP:34:OD1
+0	vdw	A:ALA:36:C	A:ASP:34:OD1
+0	vdw	A:SER:4:C	A:VAL:6:N
+0	vdw	A:GLN:61:OE1	A:SER:4:O
+0	vdw	A:ASN:5:N	A:PHE:3:C
+0	vdw	A:ASN:5:N	A:PHE:3:O
+0	vdw	A:ASN:5:N	A:SER:2:O
+0	vdw	A:GLN:61:OE1	A:VAL:6:O
+0	vdw	A:PHE:3:O	A:VAL:6:N
+0	vdw	A:ASN:5:O	A:PRO:7:CD
+0	vdw	A:ASN:5:O	A:PRO:7:N
+0	vdw	A:GLY:67:N	A:SER:64:O
+0	vdw	A:GLY:65:C	A:GLY:67:N
+0	vdw	A:ASP:66:C	A:ASP:68:N
+0	vdw	A:ASP:66:O	A:ASP:68:N
+0	vdw	A:ASP:66:N	A:SER:64:C
+0	vdw	A:ASP:66:N	A:SER:64:O
+0	vdw	A:ASP:68:O	A:SER:64:CA
+0	vdw	A:ASP:168:N	A:LYS:164:O
+0	vdw	A:ASP:168:CA	A:LYS:164:O
+0	vdw	A:ASP:168:CB	A:LYS:164:O
+0	vdw	A:ASP:168:CG	A:LYS:164:O
+0	vdw	A:ASP:168:OD1	A:LYS:164:O
+0	vdw	A:ASP:168:OD2	A:LYS:164:O
+0	vdw	A:ASP:168:N	A:ILE:166:C
+0	vdw	A:ASP:168:N	A:ILE:166:O
+0	vdw	A:ASP:168:OD2	A:LYS:164:NZ
+0	vdw	A:LYS:164:O	A:THR:167:N
+0	vdw	A:ILE:166:N	A:LYS:164:O
+0	vdw	A:ASP:66:OD1	A:ASP:68:N
+0	vdw	A:ASP:66:OD1	A:ASP:68:CA
+0	vdw	A:ASP:68:O	A:LEU:63:C
+0	vdw	A:ASP:68:O	A:SER:64:N
+0	vdw	A:ASP:68:O	A:SER:64:CB
+0	vdw	A:ASP:66:OD1	A:ASP:68:O
+0	vdw	A:GLY:169:C	A:LEU:63:N
+0	vdw	A:GLY:169:CA	A:LEU:63:O
+0	vdw	A:GLY:169:CA	A:ILE:166:O
+0	vdw	A:GLY:169:C	A:ILE:166:O
+0	vdw	A:GLY:169:C	A:THR:62:CA
+0	vdw	A:GLY:169:C	A:THR:62:CB
+0	vdw	A:GLU:165:O	A:GLY:169:N
+0	vdw	A:GLY:169:N	A:ILE:166:C
+0	vdw	A:GLY:169:N	A:ILE:166:O
+0	vdw	A:GLY:169:N	A:THR:167:C
+0	vdw	A:ILE:166:O	A:VAL:170:CG2
+0	vdw	A:HIS:163:O	A:THR:167:N
+0	vdw	A:HIS:163:O	A:THR:167:CB
+0	vdw	A:HIS:163:O	A:THR:167:OG1
+0	vdw	A:PRO:13:CG	A:THR:167:OG1
+0	vdw	A:GLU:165:C	A:THR:167:N
+0	vdw	A:PRO:69:CA	A:THR:62:O
+0	vdw	A:PHE:58:CD1	A:PRO:69:CG
+0	vdw	A:LYS:35:NZ	A:PRO:69:CG
+0	vdw	A:THR:62:CG2	A:VAL:170:CG2
+0	vdw	A:PRO:60:C	A:THR:62:N
+0	vdw	A:PRO:60:O	A:THR:62:N
+0	vdw	A:ILE:59:O	A:THR:62:CB
+0	vdw	A:ILE:59:O	A:THR:62:OG1
+0	vdw	A:ILE:59:CG2	A:THR:62:CG2
+0	vdw	A:PRO:69:CA	A:THR:62:OG1
+0	vdw	A:PRO:69:C	A:THR:62:OG1
+0	vdw	A:PRO:69:CB	A:THR:62:OG1
+0	vdw	A:THR:62:OG1	A:VAL:70:N
+0	vdw	A:THR:62:OG1	A:VAL:70:CB
+0	vdw	A:ILE:166:CG2	A:PRO:13:CA
+0	vdw	A:ILE:166:CG2	A:PRO:13:CB
+0	vdw	A:HIS:163:O	A:PRO:13:CB
+0	vdw	A:ILE:166:CB	A:PRO:13:CB
+0	vdw	A:GLN:14:N	A:LEU:12:C
+0	vdw	A:HIS:163:CB	A:PRO:13:CG
+0	vdw	A:HIS:163:CG	A:PRO:13:CG
+0	vdw	A:ASP:34:CG	A:LEU:37:CB
+0	vdw	A:ASP:34:CG	A:LEU:37:CG
+0	vdw	A:ASP:34:CG	A:LEU:37:CD1
+0	vdw	A:ASP:34:OD2	A:LEU:37:CG
+0	vdw	A:ASP:34:CG	A:LEU:37:N
+0	vdw	A:LYS:35:CG	A:PHE:3:CB
+0	vdw	A:LYS:35:CD	A:PHE:58:CE1
+0	vdw	A:LYS:35:CD	A:PHE:58:CZ
+0	vdw	A:ALA:33:O	A:LYS:35:CE
+0	vdw	A:ALA:8:CA	A:PRO:60:O
+0	vdw	A:ALA:8:CB	A:PRO:60:O
+0	vdw	A:PRO:60:CB	A:VAL:6:O
+0	vdw	A:ILE:59:O	A:PRO:69:CB
+0	vdw	A:ALA:8:O	A:PHE:16:CA
+0	vdw	A:ALA:8:O	A:PHE:16:CB
+0	vdw	A:ALA:8:O	A:PHE:16:C
+0	vdw	A:ALA:8:O	A:ASN:17:N
+0	vdw	A:ALA:8:O	A:ILE:59:CG2
+0	vdw	A:ALA:8:CB	A:ILE:59:CG2
+0	vdw	A:ASP:11:O	A:ASP:15:N
+0	vdw	A:ASP:11:O	A:ASP:15:CA
+0	vdw	A:ASP:11:O	A:GLN:14:CD
+0	vdw	A:ASP:11:O	A:ASP:15:CB
+0	vdw	A:ASP:11:CB	A:ASP:15:CB
+0	vdw	A:ASP:11:C	A:ASP:15:O
+0	vdw	A:ASP:11:O	A:ASP:15:O
+0	vdw	A:ASP:11:O	A:GLN:14:N
+0	vdw	A:ASP:11:O	A:GLN:14:OE1
+0	vdw	A:ASP:11:CG	A:GLN:14:NE2
+0	vdw	A:ASP:34:OD1	A:LEU:37:CA
+0	vdw	A:ASP:34:OD1	A:LEU:37:CB
+0	vdw	A:ASP:34:OD1	A:LEU:37:CG
+0	vdw	A:ASP:34:OD1	A:LEU:37:N
+0	vdw	A:ASP:34:CB	A:LEU:37:CB
+0	vdw	A:ASP:34:CB	A:LEU:37:CG
+0	vdw	A:ASP:34:O	A:LEU:37:N
+0	vdw	A:ASP:34:O	A:GLY:38:N
+0	vdw	A:LEU:37:N	A:LYS:35:C
+0	vdw	A:ASP:34:O	A:GLY:38:CA
+0	vdw	A:ASP:34:CB	A:LEU:39:O
+0	vdw	A:ASP:34:O	A:LEU:39:N
+0	vdw	A:ASP:34:CB	A:VAL:41:CG2
+0	vdw	A:SER:2:C	A:SER:4:N
+0	vdw	A:SER:2:O	A:SER:4:N
+0	vdw	A:PRO:60:CG	A:VAL:6:O
+0	vdw	A:PRO:60:CG	A:VAL:6:CB
+0	vdw	A:PRO:60:CG	A:VAL:6:CG1
+0	vdw	A:PRO:60:CG	A:PRO:7:O
+0	vdw	A:GLY:9:N	A:PRO:7:C
+0	vdw	A:GLY:9:N	A:PRO:7:O
+0	vdw	A:ASN:17:ND2	A:PRO:7:O
+0	vdw	A:ASN:17:CB	A:PRO:7:O
+0	vdw	A:ASP:11:N	A:GLY:9:C
+0	vdw	A:ASP:15:OD2	A:LYS:10:CB
+0	vdw	A:ASP:15:O	A:GLY:9:CA
+0	vdw	A:GLY:9:CA	A:PHE:16:CA
+0	vdw	A:ASP:15:O	A:GLY:9:C
+0	vdw	A:ASP:15:O	A:LYS:10:N
+0	vdw	A:ASP:11:N	A:ASP:15:O
+0	vdw	A:LEU:37:C	A:LEU:39:N
+0	vdw	A:LEU:37:O	A:LEU:39:N
+0	vdw	A:GLY:38:C	A:PHE:3:CE2
+0	vdw	A:SER:2:O	A:VAL:6:CG2
+0	vdw	A:ARG:87:CZ	A:LYS:10:CD
+0	vdw	A:ARG:87:NH2	A:LYS:10:CD
+0	vdw	A:ASP:66:OD1	A:ASP:68:CB
+0	vdw	A:ASP:66:OD1	A:ASP:68:CG
+0	vdw	A:GLU:165:OE2	A:SER:64:OG
+0	vdw	A:ALA:162:O	A:GLU:165:CA
+0	vdw	A:ALA:162:O	A:GLU:165:CB
+0	vdw	A:ALA:161:O	A:GLU:165:CB
+0	vdw	A:GLU:165:CG	A:LEU:106:CD1
+0	vdw	A:ASP:160:O	A:LYS:164:N
+0	vdw	A:ALA:162:O	A:LYS:164:N
+0	vdw	A:ALA:162:O	A:GLU:165:N
+0	vdw	A:GLU:165:N	A:HIS:163:C
+0	vdw	A:GLU:165:N	A:HIS:163:O
+0	vdw	A:ALA:161:O	A:LYS:164:N
+0	vdw	A:ALA:161:O	A:LYS:164:CB
+0	vdw	A:ALA:161:O	A:GLU:165:N
+0	vdw	A:ALA:162:C	A:LYS:164:N
+0	vdw	A:ASP:160:O	A:HIS:163:CB
+0	vdw	A:ALA:162:N	A:ASP:160:O
+0	vdw	A:ASP:71:N	A:PRO:69:O
+0	vdw	A:LEU:106:CD2	A:VAL:70:CG1
+0	vdw	A:ALA:162:O	A:ILE:166:N
+0	vdw	A:HIS:163:O	A:ILE:166:N
+0	vdw	A:HIS:163:O	A:ILE:166:CA
+0	vdw	A:ILE:166:N	A:LYS:164:C
+0	vdw	A:ALA:162:O	A:ILE:166:CB
+0	vdw	A:HIS:163:O	A:ILE:166:CB
+0	vdw	A:HIS:163:N	A:ILE:159:O
+0	vdw	A:ASP:160:O	A:HIS:163:N
+0	vdw	A:ALA:161:C	A:HIS:163:N
+0	vdw	A:ALA:161:O	A:HIS:163:N
+0	vdw	A:HIS:163:CB	A:ILE:159:O
+0	vdw	A:HIS:163:CG	A:ILE:159:O
+0	vdw	A:HIS:163:ND1	A:ILE:159:CG2
+0	vdw	A:PHE:58:CB	A:PRO:69:CB
+0	vdw	A:PHE:58:CB	A:VAL:70:O
+0	vdw	A:PHE:58:CD1	A:PRO:69:CB
+0	vdw	A:PHE:58:C	A:VAL:70:O
+0	vdw	A:ILE:59:N	A:VAL:70:O
+0	vdw	A:ILE:59:CG1	A:VAL:72:CG2
+0	vdw	A:PHE:58:CA	A:VAL:70:O
+0	vdw	A:ILE:166:CG1	A:ILE:59:CD1
+0	vdw	A:ILE:59:CD1	A:PHE:16:CD1
+0	vdw	A:ALA:162:O	A:ILE:166:CG1
+0	vdw	A:ILE:166:CG1	A:LEU:106:CD2
+0	vdw	A:ILE:166:CD1	A:PRO:13:O
+0	vdw	A:PHE:16:CD2	A:PRO:13:O
+0	vdw	A:ILE:166:CD1	A:PHE:16:CD2
+0	vdw	A:ILE:166:CD1	A:PHE:16:CE2
+0	vdw	A:ASP:15:N	A:PRO:13:C
+0	vdw	A:ASP:15:N	A:PRO:13:O
+0	vdw	A:ILE:166:CD1	A:LEU:106:CD2
+0	vdw	A:GLN:14:CA	A:HIS:163:NE2
+0	vdw	A:GLN:14:CB	A:HIS:163:CE1
+0	vdw	A:GLN:14:CB	A:HIS:163:NE2
+0	vdw	A:ALA:33:C	A:LEU:39:O
+0	vdw	A:ASP:34:N	A:LEU:39:O
+0	vdw	A:ASP:34:CA	A:LEU:39:O
+0	vdw	A:ASP:34:N	A:GLU:32:O
+0	vdw	A:ALA:33:CA	A:LEU:40:CD2
+0	vdw	A:ALA:33:CB	A:PHE:58:CE2
+0	vdw	A:GLU:21:CD	A:PHE:58:CE2
+0	vdw	A:GLU:21:OE2	A:PHE:58:CE2
+0	vdw	A:ILE:19:CG2	A:PHE:58:CE2
+0	vdw	A:GLU:21:CD	A:PHE:58:CD2
+0	vdw	A:GLU:21:OE2	A:PHE:58:CD2
+0	vdw	A:PHE:58:O	A:PRO:60:CD
+0	vdw	A:ASN:17:O	A:ILE:59:CA
+0	vdw	A:ASN:17:O	A:ILE:59:CG2
+0	vdw	A:ASN:17:O	A:PRO:60:CD
+0	vdw	A:PHE:58:O	A:VAL:18:CG1
+0	vdw	A:PHE:58:O	A:VAL:18:CA
+0	vdw	A:PHE:58:O	A:VAL:18:C
+0	vdw	A:ILE:19:N	A:PHE:58:O
+0	vdw	A:ALA:88:O	A:PHE:16:N
+0	vdw	A:ALA:88:O	A:PHE:16:CD2
+0	vdw	A:LEU:39:C	A:PHE:3:CE2
+0	vdw	A:ALA:33:CB	A:PHE:3:CD2
+0	vdw	A:ALA:33:CB	A:PHE:3:CE2
+0	vdw	A:ALA:33:CB	A:PHE:58:CZ
+0	vdw	A:ASN:17:CA	A:VAL:86:O
+0	vdw	A:ARG:87:CA	A:PHE:16:O
+0	vdw	A:ARG:87:C	A:PHE:16:O
+0	vdw	A:ALA:88:N	A:PHE:16:O
+0	vdw	A:ALA:88:CA	A:PHE:16:O
+0	vdw	A:ALA:88:O	A:PHE:16:O
+0	vdw	A:ARG:87:NE	A:ASP:15:CG
+0	vdw	A:ARG:87:NH2	A:ASP:15:CG
+0	vdw	A:ARG:87:NE	A:ASP:15:OD1
+0	vdw	A:ARG:87:NE	A:ASP:15:OD2
+0	vdw	A:ARG:87:CZ	A:ASP:15:OD2
+0	vdw	A:ARG:87:NH2	A:ASP:15:OD2
+0	vdw	A:ARG:87:CG	A:ASP:15:OD1
+0	vdw	A:LEU:39:N	A:PHE:3:CE2
+0	vdw	A:ARG:87:CD	A:HIS:111:CB
+0	vdw	A:ARG:87:CZ	A:HIS:111:CE1
+0	vdw	A:ARG:87:NE	A:HIS:111:ND1
+0	vdw	A:ARG:87:CZ	A:HIS:111:ND1
+0	vdw	A:ASP:98:OD1	A:GLY:101:N
+0	vdw	A:ASP:98:O	A:GLY:101:N
+0	vdw	A:ASP:98:O	A:GLY:101:CA
+0	vdw	A:ASP:98:C	A:GLY:101:N
+0	vdw	A:THR:97:CG2	A:VAL:102:CG2
+0	vdw	A:ASP:98:OD1	A:SER:100:N
+0	vdw	A:ASP:98:OD1	A:SER:100:CA
+0	vdw	A:ASP:98:C	A:SER:100:N
+0	vdw	A:ASP:98:CG	A:SER:100:N
+0	vdw	A:GLU:99:C	A:GLY:101:N
+0	vdw	A:ASP:98:O	A:SER:100:N
+0	vdw	A:ASP:98:OD1	A:SER:100:C
+0	vdw	A:ASP:98:OD1	A:GLY:101:O
+0	vdw	A:ASP:103:N	A:GLY:101:O
+0	vdw	A:GLY:101:O	A:THR:97:C
+0	vdw	A:ASP:98:N	A:GLY:101:O
+0	vdw	A:GLY:101:O	A:THR:97:CA
+0	vdw	A:ASP:103:N	A:MET:96:O
+0	vdw	A:ASP:103:CA	A:MET:96:O
+0	vdw	A:THR:97:CG2	A:VAL:102:CA
+0	vdw	A:ASP:103:OD1	A:LYS:105:NZ
+0	vdw	A:ASP:103:C	A:MET:96:O
+0	vdw	A:ALA:104:CB	A:MET:93:CE
+0	vdw	A:ALA:104:CA	A:LEU:94:O
+0	vdw	A:ALA:104:C	A:LEU:94:O
+0	vdw	A:ALA:161:C	A:MET:93:SD
+0	vdw	A:ALA:161:O	A:MET:93:SD
+0	vdw	A:ALA:161:CB	A:MET:93:SD
+0	vdw	A:ALA:162:N	A:ASP:160:C
+0	vdw	A:ALA:161:CB	A:GLY:158:O
+0	vdw	A:ALA:162:N	A:GLY:158:O
+0	vdw	A:ALA:162:N	A:ILE:159:C
+0	vdw	A:ALA:162:N	A:ILE:159:O
+0	vdw	A:ALA:161:CB	A:ASP:157:CG
+0	vdw	A:ALA:161:CB	A:ASP:157:OD2
+0	vdw	A:ALA:161:N	A:ILE:159:C
+0	vdw	A:ALA:161:N	A:ILE:159:O
+0	vdw	A:ASP:160:N	A:GLY:158:C
+0	vdw	A:ASP:160:N	A:GLY:158:O
+0	vdw	A:ALA:161:N	A:GLY:158:O
+0	vdw	A:ASP:71:CB	A:TYR:56:OH
+0	vdw	A:ASP:71:CG	A:TYR:56:OH
+0	vdw	A:ASP:71:OD2	A:TYR:56:OH
+0	vdw	A:ASP:71:OD2	A:LYS:105:NZ
+0	vdw	A:ASP:71:O	A:LEU:106:CB
+0	vdw	A:ASP:71:O	A:LEU:106:N
+0	vdw	A:ALA:162:CA	A:ILE:159:O
+0	vdw	A:ALA:162:C	A:ILE:159:O
+0	vdw	A:ALA:162:CB	A:ILE:159:O
+0	vdw	A:ALA:162:CB	A:ALA:90:CB
+0	vdw	A:HIS:163:CE1	A:ILE:159:CG2
+0	vdw	A:ASP:43:CB	A:LYS:30:O
+0	vdw	A:GLU:32:OE2	A:LYS:30:NZ
+0	vdw	A:ASP:71:CA	A:GLY:57:O
+0	vdw	A:GLY:57:O	A:VAL:72:N
+0	vdw	A:GLY:57:O	A:VAL:72:O
+0	vdw	A:ASP:71:OD1	A:TYR:56:OH
+0	vdw	A:ALA:90:N	A:PHE:16:CE2
+0	vdw	A:ARG:89:CA	A:PHE:16:CE2
+0	vdw	A:ARG:89:C	A:PHE:16:CE2
+0	vdw	A:GLU:32:N	A:VAL:41:O
+0	vdw	A:GLU:32:O	A:VAL:41:O
+0	vdw	A:GLU:32:O	A:VAL:41:CB
+0	vdw	A:ASP:43:N	A:VAL:41:C
+0	vdw	A:ASP:43:N	A:VAL:41:O
+0	vdw	A:TYR:31:CA	A:VAL:41:O
+0	vdw	A:TYR:31:C	A:VAL:41:O
+0	vdw	A:GLU:21:OE2	A:GLU:32:CA
+0	vdw	A:GLU:21:OE2	A:GLU:32:C
+0	vdw	A:ALA:33:N	A:GLU:21:OE2
+0	vdw	A:PHE:58:N	A:VAL:18:CG1
+0	vdw	A:GLY:57:CA	A:ILE:19:O
+0	vdw	A:GLY:57:C	A:ILE:19:O
+0	vdw	A:ILE:19:O	A:PHE:58:N
+0	vdw	A:PHE:16:CD1	A:VAL:18:CG2
+0	vdw	A:PHE:16:CE1	A:VAL:18:CG2
+0	vdw	A:ALA:88:CB	A:PHE:16:CE1
+0	vdw	A:ALA:88:CB	A:VAL:109:O
+0	vdw	A:ARG:89:CA	A:GLN:14:O
+0	vdw	A:ARG:89:C	A:PHE:16:CZ
+0	vdw	A:ALA:88:C	A:VAL:109:O
+0	vdw	A:ARG:89:N	A:VAL:109:O
+0	vdw	A:GLU:32:O	A:VAL:41:N
+0	vdw	A:GLU:32:O	A:VAL:41:CA
+0	vdw	A:GLY:83:N	A:ILE:20:O
+0	vdw	A:GLY:83:CA	A:ILE:20:O
+0	vdw	A:ALA:82:C	A:ILE:20:O
+0	vdw	A:ILE:19:CA	A:SER:84:O
+0	vdw	A:ILE:19:C	A:SER:84:O
+0	vdw	A:ILE:20:N	A:SER:84:O
+0	vdw	A:VAL:18:N	A:VAL:86:O
+0	vdw	A:VAL:18:O	A:VAL:85:CA
+0	vdw	A:VAL:18:O	A:VAL:85:C
+0	vdw	A:VAL:18:O	A:VAL:86:N
+0	vdw	A:ALA:88:N	A:VAL:86:O
+0	vdw	A:ARG:87:O	A:PRO:110:CA
+0	vdw	A:ARG:87:O	A:PRO:110:C
+0	vdw	A:ARG:87:O	A:HIS:111:N
+0	vdw	A:ALA:88:CA	A:VAL:109:O
+0	vdw	A:ALA:82:CB	A:LEU:40:CD1
+0	vdw	A:GLY:83:N	A:LEU:81:O
+0	vdw	A:LEU:81:O	A:SER:84:N
+0	vdw	A:LEU:81:O	A:SER:84:CB
+0	vdw	A:ALA:82:C	A:SER:84:N
+0	vdw	A:ALA:82:O	A:SER:84:N
+0	vdw	A:HIS:111:CD2	A:LYS:113:N
+0	vdw	A:HIS:111:CD2	A:LYS:113:CA
+0	vdw	A:HIS:111:CD2	A:LYS:113:CB
+0	vdw	A:HIS:111:CB	A:VAL:114:CG2
+0	vdw	A:ASP:98:O	A:TRP:150:CZ2
+0	vdw	A:GLU:99:CB	A:TRP:150:CD1
+0	vdw	A:GLU:99:CA	A:TRP:150:NE1
+0	vdw	A:GLU:99:CB	A:TRP:150:NE1
+0	vdw	A:GLU:99:N	A:TRP:150:CE2
+0	vdw	A:GLU:99:CA	A:TRP:150:CE2
+0	vdw	A:GLU:99:CA	A:TRP:150:CZ2
+0	vdw	A:ASP:98:C	A:TRP:150:CZ2
+0	vdw	A:THR:97:O	A:TRP:150:CZ3
+0	vdw	A:ASP:98:O	A:TRP:150:CH2
+0	vdw	A:ASP:98:C	A:TRP:150:CH2
+0	vdw	A:LYS:152:N	A:THR:97:O
+0	vdw	A:LYS:152:O	A:THR:97:O
+0	vdw	A:THR:97:O	A:VAL:151:CA
+0	vdw	A:THR:97:O	A:VAL:151:C
+0	vdw	A:GLU:154:OE2	A:THR:97:CB
+0	vdw	A:GLU:154:OE2	A:THR:97:OG1
+0	vdw	A:GLU:154:OE2	A:THR:97:CG2
+0	vdw	A:LYS:147:O	A:LYS:149:N
+0	vdw	A:GLU:99:CB	A:GLY:148:O
+0	vdw	A:GLU:99:CG	A:GLY:148:O
+0	vdw	A:GLU:99:CD	A:LYS:143:NZ
+0	vdw	A:GLU:99:OE2	A:LYS:143:NZ
+0	vdw	A:GLU:99:N	A:TRP:150:O
+0	vdw	A:GLU:99:OE2	A:TRP:150:N
+0	vdw	A:GLU:99:OE2	A:TRP:150:O
+0	vdw	A:GLU:99:CD	A:LYS:149:CA
+0	vdw	A:GLU:99:OE2	A:LYS:149:CA
+0	vdw	A:ASP:98:CA	A:TRP:150:O
+0	vdw	A:ASP:98:C	A:TRP:150:O
+0	vdw	A:ASP:98:CB	A:TRP:150:O
+0	vdw	A:ASP:103:O	A:MET:96:CA
+0	vdw	A:ASP:103:O	A:MET:96:C
+0	vdw	A:ASP:103:O	A:MET:96:O
+0	vdw	A:ASP:103:O	A:MET:96:CB
+0	vdw	A:LYS:152:O	A:MET:96:CA
+0	vdw	A:LYS:152:O	A:MET:96:C
+0	vdw	A:LYS:152:O	A:MET:96:CB
+0	vdw	A:LYS:152:O	A:THR:97:N
+0	vdw	A:GLY:155:O	A:LYS:95:N
+0	vdw	A:GLY:155:O	A:LYS:95:CA
+0	vdw	A:GLY:155:O	A:LYS:95:CB
+0	vdw	A:GLU:99:OE1	A:LYS:149:CG
+0	vdw	A:ARG:44:CD	A:LYS:149:NZ
+0	vdw	A:ARG:44:CZ	A:LYS:149:NZ
+0	vdw	A:GLU:146:OE1	A:LYS:149:CD
+0	vdw	A:ARG:44:NE	A:LYS:149:NZ
+0	vdw	A:GLU:146:OE1	A:LYS:149:NZ
+0	vdw	A:GLU:99:CD	A:LYS:149:CG
+0	vdw	A:GLU:146:CB	A:LYS:149:CD
+0	vdw	A:GLU:99:OE1	A:LYS:143:NZ
+0	vdw	A:ASP:98:OD2	A:LYS:143:NZ
+0	vdw	A:ASP:103:OD2	A:LYS:105:CE
+0	vdw	A:ASP:103:OD2	A:LYS:105:NZ
+0	vdw	A:ASP:103:O	A:MET:96:CE
+0	vdw	A:LYS:105:CG	A:MET:96:CE
+0	vdw	A:LYS:105:CE	A:MET:96:CE
+0	vdw	A:ASP:103:CG	A:LYS:105:NZ
+0	vdw	A:ASP:103:O	A:MET:96:N
+0	vdw	A:LEU:94:O	A:LYS:105:N
+0	vdw	A:GLY:155:O	A:LEU:94:C
+0	vdw	A:ASP:157:CB	A:MET:93:CG
+0	vdw	A:ASP:157:O	A:MET:93:N
+0	vdw	A:ASP:157:O	A:GLY:92:CA
+0	vdw	A:ASP:157:O	A:GLY:92:C
+0	vdw	A:GLY:158:O	A:GLY:92:CA
+0	vdw	A:ASP:157:O	A:MET:93:O
+0	vdw	A:ARG:44:CD	A:GLU:146:OE1
+0	vdw	A:ARG:44:CZ	A:GLU:146:OE1
+0	vdw	A:LYS:105:CD	A:TYR:56:OH
+0	vdw	A:LYS:105:CE	A:TYR:56:OH
+0	vdw	A:LYS:105:NZ	A:TYR:56:OH
+0	vdw	A:LYS:105:CD	A:TYR:56:CE1
+0	vdw	A:LYS:105:CD	A:PHE:139:CE1
+0	vdw	A:LYS:105:CD	A:PHE:139:CZ
+0	vdw	A:LYS:105:CE	A:PHE:139:CE1
+0	vdw	A:LYS:105:O	A:MET:93:CA
+0	vdw	A:LYS:105:O	A:MET:93:C
+0	vdw	A:LYS:105:O	A:MET:93:CB
+0	vdw	A:LEU:94:N	A:LYS:105:O
+0	vdw	A:GLY:92:O	A:LEU:106:CA
+0	vdw	A:GLY:92:O	A:VAL:107:N
+0	vdw	A:ILE:159:CG1	A:LEU:91:C
+0	vdw	A:ALA:90:C	A:GLY:92:N
+0	vdw	A:GLY:92:N	A:VAL:107:O
+0	vdw	A:ILE:124:N	A:LEU:91:C
+0	vdw	A:GLY:158:C	A:GLY:92:CA
+0	vdw	A:ILE:159:CG1	A:LEU:91:O
+0	vdw	A:ALA:90:O	A:ILE:159:CG1
+0	vdw	A:LEU:91:O	A:SER:123:CA
+0	vdw	A:LEU:91:O	A:SER:123:C
+0	vdw	A:ILE:124:N	A:LEU:91:O
+0	vdw	A:ILE:124:CA	A:LEU:91:O
+0	vdw	A:ILE:124:CB	A:LEU:91:O
+0	vdw	A:ILE:159:CD1	A:LYS:122:O
+0	vdw	A:ASP:43:CA	A:LYS:30:O
+0	vdw	A:ARG:44:N	A:LYS:30:O
+0	vdw	A:ARG:44:N	A:VAL:42:C
+0	vdw	A:LYS:30:CE	A:TYR:52:OH
+0	vdw	A:ARG:44:O	A:LYS:30:CB
+0	vdw	A:TYR:52:CE1	A:TYR:56:CD2
+0	vdw	A:TYR:56:CD1	A:VAL:72:O
+0	vdw	A:LEU:73:CD2	A:TYR:56:CD1
+0	vdw	A:TYR:52:CD1	A:TYR:56:CG
+0	vdw	A:TYR:52:CE1	A:TYR:56:CG
+0	vdw	A:LEU:106:O	A:VAL:72:CA
+0	vdw	A:LEU:106:O	A:VAL:72:C
+0	vdw	A:LEU:106:O	A:LEU:73:N
+0	vdw	A:LEU:106:O	A:LEU:73:CA
+0	vdw	A:LEU:106:O	A:LEU:73:CB
+0	vdw	A:ASN:55:O	A:LEU:73:CA
+0	vdw	A:ALA:108:CB	A:VAL:72:CG1
+0	vdw	A:LEU:73:O	A:VAL:107:CA
+0	vdw	A:LEU:73:O	A:VAL:107:C
+0	vdw	A:ALA:108:N	A:LEU:73:O
+0	vdw	A:ALA:108:CA	A:LEU:73:O
+0	vdw	A:ALA:108:CA	A:ARG:89:O
+0	vdw	A:LEU:91:N	A:VAL:107:O
+0	vdw	A:LEU:91:CA	A:VAL:107:O
+0	vdw	A:LEU:91:CB	A:VAL:107:O
+0	vdw	A:VAL:29:CG1	A:VAL:42:CG1
+0	vdw	A:ASP:43:N	A:LYS:30:O
+0	vdw	A:GLU:21:CB	A:TYR:31:O
+0	vdw	A:TYR:31:N	A:VAL:29:C
+0	vdw	A:TYR:31:N	A:VAL:29:O
+0	vdw	A:ILE:22:CD1	A:LYS:30:CA
+0	vdw	A:ILE:22:CD1	A:TYR:52:CE2
+0	vdw	A:ILE:22:CD1	A:TYR:52:CZ
+0	vdw	A:TYR:56:CA	A:VAL:72:O
+0	vdw	A:TYR:56:C	A:VAL:72:O
+0	vdw	A:GLY:57:N	A:VAL:72:O
+0	vdw	A:TYR:52:CD1	A:TYR:56:CB
+0	vdw	A:TYR:52:CE1	A:TYR:56:CB
+0	vdw	A:ALA:108:CB	A:ARG:89:O
+0	vdw	A:ALA:108:C	A:ARG:89:O
+0	vdw	A:ARG:89:O	A:VAL:109:N
+0	vdw	A:ARG:89:O	A:VAL:109:O
+0	vdw	A:ARG:89:NE	A:ASP:112:OD1
+0	vdw	A:ARG:89:CZ	A:ASP:112:OD1
+0	vdw	A:ARG:89:CZ	A:LEU:121:O
+0	vdw	A:ARG:89:NH1	A:LEU:121:O
+0	vdw	A:ARG:89:CG	A:VAL:109:CG2
+0	vdw	A:ARG:89:CZ	A:VAL:109:CG2
+0	vdw	A:ARG:89:NH1	A:LEU:91:CD2
+0	vdw	A:TYR:31:CE1	A:VAL:42:CG2
+0	vdw	A:TYR:31:CZ	A:VAL:29:CG1
+0	vdw	A:TYR:31:CD2	A:VAL:29:O
+0	vdw	A:ALA:82:CB	A:GLU:21:O
+0	vdw	A:GLU:21:N	A:TYR:56:O
+0	vdw	A:GLU:21:CA	A:TYR:56:O
+0	vdw	A:ILE:22:N	A:TYR:56:O
+0	vdw	A:ILE:20:CG1	A:LEU:80:CD1
+0	vdw	A:ILE:20:CB	A:LEU:81:O
+0	vdw	A:ILE:20:CD1	A:LEU:80:CD1
+0	vdw	A:ASP:112:N	A:PRO:110:O
+0	vdw	A:CYS:115:CB	A:PRO:110:CB
+0	vdw	A:HIS:111:C	A:LYS:113:N
+0	vdw	A:HIS:111:C	A:VAL:114:N
+0	vdw	A:ALA:119:CA	A:ASP:112:OD1
+0	vdw	A:ARG:89:NH2	A:ASP:112:OD1
+0	vdw	A:ALA:119:CB	A:ASP:112:CG
+0	vdw	A:ALA:82:N	A:LEU:80:O
+0	vdw	A:LEU:81:C	A:SER:84:OG
+0	vdw	A:LEU:81:O	A:SER:84:OG
+0	vdw	A:LEU:81:CB	A:SER:84:OG
+0	vdw	A:HIS:111:O	A:VAL:114:CA
+0	vdw	A:HIS:111:O	A:VAL:114:C
+0	vdw	A:HIS:111:O	A:VAL:114:CB
+0	vdw	A:PRO:116:CD	A:VAL:114:C
+0	vdw	A:HIS:111:O	A:LYS:113:N
+0	vdw	A:HIS:111:O	A:VAL:114:N
+0	vdw	A:ASP:112:C	A:VAL:114:N
+0	vdw	A:CYS:115:N	A:HIS:111:O
+0	vdw	A:CYS:115:N	A:LYS:113:C
+0	vdw	A:LYS:95:O	A:VAL:153:C
+0	vdw	A:GLY:155:N	A:VAL:153:C
+0	vdw	A:GLU:154:N	A:LYS:95:O
+0	vdw	A:GLU:154:CA	A:LYS:95:O
+0	vdw	A:GLU:154:CB	A:LYS:95:O
+0	vdw	A:GLU:146:O	A:GLY:148:N
+0	vdw	A:GLU:146:O	A:LYS:149:N
+0	vdw	A:GLU:146:O	A:LYS:149:CB
+0	vdw	A:LYS:147:C	A:LYS:149:N
+0	vdw	A:PHE:139:O	A:VAL:151:CB
+0	vdw	A:PHE:139:O	A:VAL:151:CG1
+0	vdw	A:PHE:139:O	A:VAL:151:CG2
+0	vdw	A:MET:96:CG	A:VAL:153:CA
+0	vdw	A:MET:96:CG	A:VAL:153:CG2
+0	vdw	A:GLY:155:N	A:LYS:95:O
+0	vdw	A:MET:93:O	A:TRP:156:CA
+0	vdw	A:PHE:139:CD1	A:TYR:142:CE2
+0	vdw	A:MET:96:SD	A:PHE:139:CB
+0	vdw	A:MET:96:SD	A:PHE:139:CG
+0	vdw	A:LEU:94:CD1	A:TRP:156:CE3
+0	vdw	A:LEU:94:CD1	A:TRP:156:CZ3
+0	vdw	A:LEU:94:CD1	A:TRP:156:CD2
+0	vdw	A:LEU:94:CD1	A:TRP:156:CE2
+0	vdw	A:LEU:94:CD1	A:TRP:156:CZ2
+0	vdw	A:LEU:94:CD1	A:TRP:156:CH2
+0	vdw	A:MET:93:O	A:TRP:156:CE3
+0	vdw	A:ILE:124:CD1	A:TRP:156:CE3
+0	vdw	A:ILE:124:CD1	A:TRP:156:CZ3
+0	vdw	A:MET:93:O	A:TRP:156:C
+0	vdw	A:ASP:157:N	A:MET:93:O
+0	vdw	A:ARG:44:NE	A:GLU:146:CD
+0	vdw	A:ARG:44:NE	A:GLU:146:OE1
+0	vdw	A:GLU:146:OE2	A:GLY:47:N
+0	vdw	A:GLU:146:OE2	A:GLY:47:CA
+0	vdw	A:ARG:44:NH2	A:TYR:142:CE1
+0	vdw	A:TYR:142:CE1	A:TYR:52:OH
+0	vdw	A:PHE:138:CE2	A:TYR:142:CD1
+0	vdw	A:PHE:138:CZ	A:TYR:142:CD1
+0	vdw	A:PHE:138:O	A:TYR:142:CD2
+0	vdw	A:PHE:139:CA	A:TYR:142:CD2
+0	vdw	A:PHE:139:O	A:TYR:142:CD2
+0	vdw	A:ILE:135:O	A:PHE:139:CD2
+0	vdw	A:ILE:135:CG2	A:PHE:139:CD2
+0	vdw	A:ILE:135:CG2	A:PHE:139:CE2
+0	vdw	A:ASP:125:N	A:SER:123:C
+0	vdw	A:ASP:125:N	A:SER:123:O
+0	vdw	A:ASP:126:N	A:SER:123:O
+0	vdw	A:ASP:126:CA	A:SER:123:O
+0	vdw	A:ASP:126:CB	A:SER:123:O
+0	vdw	A:ASP:125:N	A:SER:123:OG
+0	vdw	A:GLY:47:N	A:PHE:45:O
+0	vdw	A:ARG:44:O	A:LYS:30:N
+0	vdw	A:ARG:44:C	A:ILE:46:N
+0	vdw	A:ARG:44:O	A:ILE:46:N
+0	vdw	A:ARG:44:O	A:LYS:30:CA
+0	vdw	A:GLY:47:N	A:PHE:45:C
+0	vdw	A:ILE:46:CG1	A:PRO:28:O
+0	vdw	A:ILE:22:CG2	A:TYR:52:CD2
+0	vdw	A:PHE:138:CZ	A:TYR:52:CD2
+0	vdw	A:PHE:138:CZ	A:TYR:52:CE2
+0	vdw	A:PHE:138:CZ	A:TYR:52:CZ
+0	vdw	A:PHE:138:CE2	A:TYR:52:CD1
+0	vdw	A:PHE:138:CE2	A:TYR:52:CE1
+0	vdw	A:PHE:138:CE2	A:TYR:52:CZ
+0	vdw	A:LEU:73:CD2	A:VAL:54:CG2
+0	vdw	A:LEU:73:CB	A:VAL:54:CG2
+0	vdw	A:ASN:55:O	A:LEU:73:C
+0	vdw	A:ALA:108:O	A:LEU:73:O
+0	vdw	A:LEU:91:CD1	A:VAL:127:CG2
+0	vdw	A:LEU:91:CB	A:SER:123:C
+0	vdw	A:ILE:124:N	A:LEU:91:CB
+0	vdw	A:LEU:121:O	A:LEU:91:CD2
+0	vdw	A:LEU:121:C	A:SER:123:N
+0	vdw	A:ASP:126:OD2	A:SER:123:N
+0	vdw	A:ASP:126:OD2	A:LYS:122:N
+0	vdw	A:ASP:126:OD2	A:LYS:122:CA
+0	vdw	A:ASP:126:OD2	A:LYS:122:C
+0	vdw	A:ASP:126:OD2	A:LYS:122:CB
+0	vdw	A:ASN:120:C	A:LYS:122:N
+0	vdw	A:ASN:120:O	A:LYS:122:N
+0	vdw	A:TYR:31:CE2	A:VAL:29:CB
+0	vdw	A:TYR:31:CE2	A:VAL:29:CG1
+0	vdw	A:ILE:22:CG2	A:SER:26:OG
+0	vdw	A:ASN:55:CA	A:ILE:22:O
+0	vdw	A:ASN:55:C	A:ILE:22:O
+0	vdw	A:ILE:22:O	A:TYR:56:N
+0	vdw	A:ASN:55:CA	A:VAL:74:O
+0	vdw	A:ALA:24:N	A:ASN:55:CA
+0	vdw	A:TYR:52:CB	A:VAL:54:O
+0	vdw	A:ASN:55:N	A:VAL:74:O
+0	vdw	A:ASN:55:O	A:VAL:74:N
+0	vdw	A:ASN:55:CB	A:VAL:74:O
+0	vdw	A:ASN:55:CG	A:VAL:74:O
+0	vdw	A:ASN:55:ND2	A:VAL:74:O
+0	vdw	A:ALA:24:CB	A:ASN:55:N
+0	vdw	A:ALA:108:O	A:VAL:74:CA
+0	vdw	A:ALA:108:O	A:VAL:74:C
+0	vdw	A:ALA:108:O	A:ILE:75:N
+0	vdw	A:ARG:89:NH2	A:VAL:109:CG2
+0	vdw	A:THR:118:OG1	A:VAL:109:CB
+0	vdw	A:THR:118:CB	A:VAL:109:CG1
+0	vdw	A:ARG:89:NH2	A:THR:118:O
+0	vdw	A:ARG:89:NH2	A:LEU:121:O
+0	vdw	A:ALA:119:O	A:ARG:89:NH2
+0	vdw	A:LEU:121:N	A:THR:118:O
+0	vdw	A:LEU:121:CA	A:THR:118:O
+0	vdw	A:LEU:121:CB	A:THR:118:O
+0	vdw	A:ASN:120:N	A:THR:118:O
+0	vdw	A:ALA:119:O	A:LYS:122:NZ
+0	vdw	A:ALA:119:O	A:LEU:121:N
+0	vdw	A:PHE:45:CE1	A:VAL:29:CG2
+0	vdw	A:PRO:23:CD	A:SER:26:OG
+0	vdw	A:LEU:80:O	A:PRO:23:CB
+0	vdw	A:LEU:80:O	A:PRO:23:CG
+0	vdw	A:ASN:55:OD1	A:PRO:23:CA
+0	vdw	A:ALA:24:N	A:ASN:55:OD1
+0	vdw	A:ASN:55:OD1	A:LEU:80:N
+0	vdw	A:ASN:55:OD1	A:PRO:79:CA
+0	vdw	A:ASN:55:ND2	A:THR:76:CG2
+0	vdw	A:ASN:55:ND2	A:THR:76:OG1
+0	vdw	A:ALA:24:N	A:ASN:55:CG
+0	vdw	A:ILE:75:O	A:PRO:110:CD
+0	vdw	A:PRO:110:CG	A:THR:76:CG2
+0	vdw	A:PHE:78:O	A:THR:76:CB
+0	vdw	A:PRO:110:CD	A:THR:118:OG1
+0	vdw	A:CYS:115:CB	A:PRO:110:CG
+0	vdw	A:CYS:115:CB	A:THR:118:OG1
+0	vdw	A:CYS:115:SG	A:THR:118:OG1
+0	vdw	A:CYS:115:O	A:THR:118:OG1
+0	vdw	A:ALA:119:N	A:MET:117:C
+0	vdw	A:ALA:119:N	A:PRO:116:O
+0	vdw	A:ALA:119:CB	A:PRO:116:O
+0	vdw	A:ALA:119:C	A:LEU:121:N
+0	vdw	A:LEU:80:N	A:PHE:78:O
+0	vdw	A:CYS:115:SG	A:MET:117:CB
+0	vdw	A:CYS:115:SG	A:MET:117:SD
+0	vdw	A:CYS:115:SG	A:PRO:77:CD
+0	vdw	A:CYS:115:SG	A:THR:118:CG2
+0	vdw	A:ASP:112:O	A:CYS:115:C
+0	vdw	A:ASP:112:O	A:PRO:116:N
+0	vdw	A:ASP:112:O	A:PRO:116:CA
+0	vdw	A:ASP:112:O	A:PRO:116:CG
+0	vdw	A:ASP:112:O	A:PRO:116:CD
+0	vdw	A:CYS:115:C	A:MET:117:N
+0	vdw	A:CYS:115:O	A:MET:117:N
+0	vdw	A:CYS:115:O	A:THR:118:N
+0	vdw	A:PRO:116:CD	A:VAL:114:O
+0	vdw	A:GLU:140:CB	A:LYS:136:O
+0	vdw	A:GLU:140:CA	A:HIS:137:O
+0	vdw	A:GLU:140:C	A:HIS:137:O
+0	vdw	A:GLU:140:CB	A:HIS:137:O
+0	vdw	A:GLU:140:CG	A:VAL:153:CG2
+0	vdw	A:GLU:140:CG	A:LYS:136:O
+0	vdw	A:GLU:140:OE2	A:LYS:136:NZ
+0	vdw	A:GLU:146:N	A:LYS:143:O
+0	vdw	A:ALA:144:C	A:GLU:146:N
+0	vdw	A:LEU:145:N	A:LYS:143:C
+0	vdw	A:LEU:145:N	A:LYS:143:O
+0	vdw	A:ALA:144:N	A:GLN:141:O
+0	vdw	A:ALA:144:N	A:TYR:142:C
+0	vdw	A:ALA:144:CA	A:GLN:141:O
+0	vdw	A:GLN:141:C	A:LYS:143:N
+0	vdw	A:GLN:141:O	A:LYS:143:N
+0	vdw	A:PHE:138:O	A:TYR:142:N
+0	vdw	A:GLN:141:C	A:MET:50:SD
+0	vdw	A:MET:50:SD	A:TYR:142:N
+0	vdw	A:THR:48:OG1	A:TYR:142:C
+0	vdw	A:GLN:141:O	A:THR:48:CG2
+0	vdw	A:ALA:144:CB	A:GLN:141:O
+0	vdw	A:GLU:140:N	A:PHE:138:C
+0	vdw	A:GLU:140:N	A:PHE:138:O
+0	vdw	A:GLN:141:N	A:PHE:138:O
+0	vdw	A:GLN:141:N	A:PHE:139:C
+0	vdw	A:GLN:141:N	A:PHE:139:O
+0	vdw	A:GLU:140:N	A:LYS:136:O
+0	vdw	A:GLU:140:N	A:HIS:137:O
+0	vdw	A:GLN:141:N	A:HIS:137:O
+0	vdw	A:LYS:136:O	A:PHE:139:N
+0	vdw	A:ILE:135:O	A:PHE:139:N
+0	vdw	A:HIS:137:C	A:PHE:139:N
+0	vdw	A:LYS:136:C	A:PHE:138:N
+0	vdw	A:LYS:136:O	A:PHE:138:N
+0	vdw	A:HIS:137:O	A:PHE:139:N
+0	vdw	A:LYS:132:O	A:LYS:136:N
+0	vdw	A:ASP:133:O	A:LYS:136:N
+0	vdw	A:LYS:132:O	A:LYS:136:CB
+0	vdw	A:GLN:134:C	A:LYS:136:N
+0	vdw	A:GLN:134:O	A:LYS:136:N
+0	vdw	A:LYS:132:CB	A:TRP:156:CZ2
+0	vdw	A:LYS:132:O	A:TRP:156:CZ2
+0	vdw	A:ILE:46:CG2	A:TYR:142:O
+0	vdw	A:ILE:46:C	A:THR:48:N
+0	vdw	A:ILE:46:O	A:THR:48:N
+0	vdw	A:ILE:46:CG2	A:THR:48:OG1
+0	vdw	A:GLY:47:C	A:GLY:49:N
+0	vdw	A:PHE:138:CE2	A:TYR:142:CG
+0	vdw	A:THR:48:OG1	A:TYR:142:CA
+0	vdw	A:MET:50:SD	A:TYR:142:CA
+0	vdw	A:THR:48:OG1	A:TYR:142:O
+0	vdw	A:PHE:138:CE1	A:TYR:142:CB
+0	vdw	A:PHE:138:CZ	A:TYR:142:CB
+0	vdw	A:PHE:138:CZ	A:TYR:142:CG
+0	vdw	A:PHE:138:O	A:TYR:142:CA
+0	vdw	A:PHE:138:O	A:TYR:142:CB
+0	vdw	A:PHE:138:O	A:TYR:142:CG
+0	vdw	A:THR:48:CG2	A:TYR:142:O
+0	vdw	A:ILE:135:O	A:PHE:138:CA
+0	vdw	A:ARG:51:C	A:PHE:138:CD1
+0	vdw	A:PHE:138:CG	A:PRO:53:CD
+0	vdw	A:GLN:134:O	A:PHE:138:CA
+0	vdw	A:ARG:51:O	A:PHE:138:CD1
+0	vdw	A:ILE:135:O	A:PHE:138:CB
+0	vdw	A:ILE:135:O	A:PHE:138:N
+0	vdw	A:GLN:134:O	A:PHE:138:CB
+0	vdw	A:HIS:137:N	A:ILE:135:O
+0	vdw	A:ILE:135:CB	A:LEU:131:O
+0	vdw	A:ILE:135:CG1	A:LEU:131:O
+0	vdw	A:ILE:135:CD1	A:LEU:131:O
+0	vdw	A:ILE:135:CB	A:LYS:132:O
+0	vdw	A:HIS:137:N	A:ILE:135:C
+0	vdw	A:ASP:126:N	A:ILE:124:O
+0	vdw	A:ILE:124:O	A:VAL:127:CB
+0	vdw	A:ILE:124:O	A:VAL:127:CG2
+0	vdw	A:ILE:124:O	A:LYS:132:CE
+0	vdw	A:ILE:124:O	A:VAL:127:N
+0	vdw	A:ILE:124:O	A:LYS:132:NZ
+0	vdw	A:ASP:126:N	A:ILE:124:C
+0	vdw	A:ASP:125:C	A:VAL:127:N
+0	vdw	A:ILE:46:N	A:PRO:28:O
+0	vdw	A:ILE:46:CB	A:PRO:28:O
+0	vdw	A:GLY:49:N	A:ILE:46:O
+0	vdw	A:ILE:46:CD1	A:MET:50:O
+0	vdw	A:ARG:51:C	A:PHE:138:CE1
+0	vdw	A:ARG:51:C	A:PRO:53:N
+0	vdw	A:ARG:51:O	A:PHE:138:CE1
+0	vdw	A:MET:50:C	A:PHE:138:CE1
+0	vdw	A:MET:50:CB	A:PHE:138:CE1
+0	vdw	A:ARG:51:O	A:PRO:53:N
+0	vdw	A:ARG:51:O	A:PRO:53:CD
+0	vdw	A:ASP:126:C	A:LEU:121:CD2
+0	vdw	A:ASP:126:CB	A:LEU:121:CD2
+0	vdw	A:GLU:27:C	A:VAL:29:N
+0	vdw	A:GLU:27:O	A:VAL:29:N
+0	vdw	A:MET:50:O	A:PRO:28:CB
+0	vdw	A:GLY:49:CA	A:PRO:28:CB
+0	vdw	A:GLY:49:C	A:PRO:28:CB
+0	vdw	A:GLY:49:O	A:PRO:28:CB
+0	vdw	A:PRO:28:N	A:SER:26:O
+0	vdw	A:ARG:51:CG	A:SER:26:O
+0	vdw	A:ARG:51:CD	A:SER:26:O
+0	vdw	A:ARG:51:CB	A:SER:26:O
+0	vdw	A:GLN:25:N	A:TYR:52:O
+0	vdw	A:TYR:52:C	A:VAL:54:N
+0	vdw	A:TYR:52:O	A:VAL:54:N
+0	vdw	A:ALA:24:CA	A:TYR:52:O
+0	vdw	A:ALA:24:C	A:TYR:52:O
+0	vdw	A:ALA:24:CA	A:VAL:54:C
+0	vdw	A:ALA:24:CB	A:VAL:54:C
+0	vdw	A:GLN:25:CA	A:TYR:52:O
+0	vdw	A:ASP:126:O	A:LEU:121:CD2
+0	vdw	A:ARG:51:NH1	A:SER:26:C
+0	vdw	A:ARG:51:NH1	A:GLU:27:N
+0	vdw	A:ARG:51:CZ	A:GLU:27:CA
+0	vdw	A:PRO:23:O	A:SER:26:N
+0	vdw	A:PRO:23:O	A:SER:26:CB
+0	vdw	A:PRO:23:O	A:SER:26:OG
+0	vdw	A:ALA:24:C	A:SER:26:N
+0	vdw	A:ALA:24:O	A:SER:26:N
+0	vdw	A:GLN:25:N	A:PRO:23:O
+0	vdw	A:ALA:24:O	A:PRO:79:CB
+0	vdw	A:ALA:24:O	A:PRO:79:CG
+0	vdw	A:ALA:24:CB	A:VAL:54:CA
+0	vdw	A:PHE:78:C	A:THR:76:OG1
+0	vdw	A:PHE:78:O	A:THR:76:OG1
+0	vdw	A:PHE:78:N	A:THR:76:C
+0	vdw	A:PHE:78:N	A:THR:76:O
+0	vdw	A:ASN:120:N	A:THR:118:C
+0	vdw	A:PRO:116:C	A:THR:118:N
+0	vdw	A:PRO:116:O	A:THR:118:N
+0	vdw	A:GLU:140:CD	A:LYS:136:NZ
+0	vdw	A:GLU:140:OE1	A:LYS:136:NZ
+0	vdw	A:GLY:47:O	A:LEU:145:CD1
+0	vdw	A:ALA:144:CB	A:THR:48:CG2
+0	vdw	A:GLN:141:CB	A:HIS:137:O
+0	vdw	A:GLN:141:CG	A:HIS:137:O
+0	vdw	A:GLN:141:CG	A:HIS:137:NE2
+0	vdw	A:ASP:133:O	A:HIS:137:N
+0	vdw	A:ASP:133:O	A:HIS:137:CB
+0	vdw	A:GLN:134:O	A:HIS:137:N
+0	vdw	A:GLN:134:N	A:LYS:132:O
+0	vdw	A:ILE:135:N	A:LYS:132:O
+0	vdw	A:ASP:133:C	A:ILE:135:N
+0	vdw	A:ALA:129:O	A:ASP:133:CA
+0	vdw	A:GLY:47:O	A:GLY:49:N
+0	vdw	A:MET:50:CG	A:THR:48:CB
+0	vdw	A:MET:50:N	A:THR:48:C
+0	vdw	A:MET:50:N	A:THR:48:O
+0	vdw	A:MET:50:CB	A:THR:48:OG1
+0	vdw	A:MET:50:CG	A:THR:48:OG1
+0	vdw	A:MET:50:SD	A:THR:48:OG1
+0	vdw	A:MET:50:N	A:THR:48:OG1
+0	vdw	A:GLN:141:CB	A:MET:50:SD
+0	vdw	A:HIS:137:CE1	A:MET:50:CE
+0	vdw	A:GLN:134:O	A:PHE:138:N
+0	vdw	A:GLN:134:N	A:LEU:131:O
+0	vdw	A:GLN:134:CA	A:LEU:131:O
+0	vdw	A:GLN:134:C	A:LEU:131:O
+0	vdw	A:GLN:134:CB	A:LEU:131:O
+0	vdw	A:ILE:135:N	A:LEU:131:O
+0	vdw	A:ASP:133:N	A:LEU:131:O
+0	vdw	A:GLN:134:N	A:LYS:132:C
+0	vdw	A:GLN:134:N	A:TYR:130:O
+0	vdw	A:GLN:134:CB	A:TYR:130:O
+0	vdw	A:ASP:133:N	A:LEU:131:C
+0	vdw	A:LYS:132:N	A:PRO:128:O
+0	vdw	A:ALA:129:O	A:LYS:132:N
+0	vdw	A:LYS:132:N	A:TYR:130:C
+0	vdw	A:ALA:129:O	A:LYS:132:CA
+0	vdw	A:ALA:129:O	A:LYS:132:C
+0	vdw	A:ALA:129:O	A:LYS:132:CB
+0	vdw	A:ALA:129:O	A:ASP:133:N
+0	vdw	A:ASP:133:N	A:TYR:130:O
+0	vdw	A:LYS:132:CE	A:VAL:127:O
+0	vdw	A:ALA:129:N	A:VAL:127:O
+0	vdw	A:PRO:128:C	A:TYR:130:N
+0	vdw	A:PRO:128:O	A:TYR:130:N
+0	vdw	A:LEU:131:N	A:PRO:128:O
+0	vdw	A:GLY:49:CA	A:PRO:28:CG
+0	vdw	A:LEU:131:CA	A:PRO:128:O
+0	vdw	A:LEU:131:CB	A:PRO:128:O
+0	vdw	A:ASP:126:O	A:PRO:128:N
+0	vdw	A:ASP:126:O	A:PRO:128:CD
+0	vdw	A:GLY:49:C	A:PRO:28:CG
+0	vdw	A:GLY:49:O	A:PRO:28:CG
+0	vdw	A:ARG:51:CD	A:GLN:25:C
+0	vdw	A:ARG:51:CD	A:GLN:25:O
+0	vdw	A:ARG:51:NH2	A:GLU:27:CG
+0	vdw	A:ARG:51:NH1	A:GLN:25:O
+0	vdw	A:ASP:133:CB	A:TYR:130:O
+0	vdw	A:ALA:129:O	A:ASP:133:CB
+0	vdw	A:ALA:129:O	A:ASP:133:CG
+0	vdw	A:ALA:129:O	A:ASP:133:OD1
+0	vdw	A:ALA:129:O	A:ASP:133:OD2
+0	vdw	A:GLN:134:CG	A:TYR:130:O
+0	vdw	A:ALA:129:C	A:LEU:131:N
+0	vdw	A:ALA:129:O	A:LEU:131:N
+0	vdw	A:PRO:128:CB	A:TYR:130:CD2
+0	vdw	A:PRO:128:CB	A:TYR:130:CE2
diff --git a/graphein/examples/contacts/4hhb_contacts.tsv b/graphein/examples/contacts/4hhb_contacts.tsv
new file mode 100644
index 00000000..03643709
--- /dev/null
+++ b/graphein/examples/contacts/4hhb_contacts.tsv
@@ -0,0 +1,4132 @@
+# total_frames:1 beg:0 end:0 stride:1 interaction_types:hp,sb,pc,ps,ts,vdw,hb
+# Columns: frame, interaction_type, atom_1, atom_2[, atom_3[, atom_4]]
+0	sb	B:GLU:22:OE1	B:HIS:117:NE2
+0	sb	A:ASP:126:OD2	C:ARG:141:NH2
+0	sb	C:ARG:31:NH2	C:GLU:27:OE1
+0	sb	B:GLU:7:OE1	B:LYS:132:NZ
+0	sb	A:GLU:30:OE1	A:HIS:50:ND1
+0	sb	D:ASP:94:OD1	D:HIS:146:NE2
+0	sb	A:GLU:116:OE2	A:LYS:16:NZ
+0	sb	C:GLU:27:OE1	C:HIS:112:ND1
+0	sb	C:GLU:30:OE2	C:HIS:50:NE2
+0	sb	C:GLU:27:OE2	C:HIS:112:NE2
+0	sb	B:GLU:7:OE2	B:LYS:132:NZ
+0	sb	C:GLU:27:OE2	C:HIS:112:ND1
+0	sb	A:ASP:126:OD2	C:ARG:141:NH1
+0	sb	C:ASP:85:OD1	C:LYS:139:NZ
+0	sb	A:ARG:141:NH1	C:ASP:126:OD2
+0	sb	A:ARG:92:NH1	D:GLU:43:OE2
+0	sb	A:ARG:31:NH2	A:GLU:27:OE1
+0	sb	A:GLU:116:OE1	A:LYS:16:NZ
+0	sb	A:GLU:30:OE2	A:HIS:50:ND1
+0	sb	A:ARG:141:NH2	C:ASP:126:OD2
+0	sb	A:GLU:27:OE2	A:HIS:112:NE2
+0	sb	A:ASP:6:OD2	A:LYS:127:NZ
+0	sb	A:ASP:74:OD1	A:LYS:7:NZ
+0	sb	C:ASP:6:OD2	C:LYS:127:NZ
+0	sb	C:ASP:74:OD1	C:LYS:7:NZ
+0	sb	D:ARG:30:NH1	D:GLU:26:OE1
+0	sb	C:GLU:30:OE1	C:HIS:50:NE2
+0	sb	A:GLU:27:OE1	A:HIS:112:NE2
+0	pc	D:ARG:30:NH2	D:HIS:116:CD2
+0	pc	B:ARG:40:NH1	B:PHE:41:CE1
+0	pc	B:TYR:35:CE1	C:ARG:141:NH1
+0	pc	A:HIS:112:ND1	A:TYR:24:CE1
+0	pc	C:PHE:117:CE1	D:ARG:30:NH2
+0	pc	C:HIS:20:ND1	C:TYR:24:CE1
+0	pc	D:ARG:40:NH1	D:PHE:41:CE1
+0	pc	A:HIS:45:NE2	A:PHE:46:CE1
+0	pc	A:HIS:45:ND1	A:PHE:46:CE1
+0	pc	B:HIS:92:ND1	B:PHE:103:CE1
+0	pc	A:LYS:40:NZ	D:HIS:146:CD2
+0	pc	A:ARG:31:NH1	B:PHE:122:CE1
+0	pc	C:PHE:117:CE1	D:ARG:30:NH1
+0	pc	C:HIS:112:ND1	C:TYR:24:CE1
+0	pc	A:HIS:20:ND1	A:TYR:24:CE1
+0	pc	C:HIS:122:ND1	C:PHE:117:CE1
+0	pc	B:HIS:116:CD2	B:HIS:117:ND1
+0	pc	D:HIS:117:ND1	D:PHE:118:CE1
+0	pc	A:ARG:141:NH1	D:TYR:35:CE1
+0	pc	B:ARG:30:NH2	B:HIS:116:CD2
+0	pc	A:HIS:112:NE2	A:TYR:24:CE1
+0	pc	C:HIS:112:NE2	C:TYR:24:CE1
+0	pc	B:ARG:40:NH1	C:TYR:42:CE1
+0	pc	D:HIS:117:NE2	D:PHE:118:CE1
+0	pc	A:HIS:122:ND1	A:PHE:117:CE1
+0	pc	A:TYR:42:CE1	D:ARG:40:NH1
+0	pc	C:HIS:45:ND1	C:PHE:46:CE1
+0	pc	A:PHE:117:CE1	B:ARG:30:NH1
+0	pc	B:ARG:30:NH1	B:HIS:116:CD2
+0	pc	D:ARG:30:NH1	D:HIS:116:CD2
+0	ps	A:HIS:20:CD2	A:TYR:24:CE1
+0	ps	A:HIS:112:CD2	A:TYR:24:CE1
+0	ps	C:HIS:122:CD2	C:PHE:117:CE1
+0	ps	C:HIS:20:CD2	C:TYR:24:CE1
+0	ts	D:HIS:117:CD2	D:PHE:118:CE1
+0	ts	C:HIS:45:CD2	C:PHE:46:CE1
+0	vdw	D:GLY:46:N	D:SER:44:O
+0	vdw	D:GLU:43:C	D:PHE:45:N
+0	vdw	D:GLU:43:O	D:PHE:45:N
+0	vdw	D:PHE:42:C	D:SER:44:N
+0	vdw	D:PHE:42:O	D:SER:44:N
+0	vdw	D:PHE:42:O	D:PHE:45:N
+0	vdw	A:GLN:54:CD	A:PHE:46:CA
+0	vdw	A:ASP:47:N	A:GLN:54:CD
+0	vdw	A:ASP:47:N	A:GLN:54:OE1
+0	vdw	A:ASP:47:CA	A:GLN:54:OE1
+0	vdw	A:ASP:47:CB	A:GLN:54:OE1
+0	vdw	D:GLY:46:N	D:SER:44:C
+0	vdw	D:ASN:57:CG	D:PHE:45:O
+0	vdw	D:ASN:57:ND2	D:PHE:45:O
+0	vdw	D:ASN:57:OD1	D:PHE:45:O
+0	vdw	D:GLY:46:C	D:LEU:48:N
+0	vdw	D:LEU:91:CD1	D:LYS:95:CB
+0	vdw	D:LEU:91:CD1	D:LYS:95:CG
+0	vdw	D:LEU:91:O	D:LYS:95:CB
+0	vdw	D:ASP:94:O	D:HIS:97:CE1
+0	vdw	D:CYS:93:C	D:LYS:95:N
+0	vdw	D:LEU:91:O	D:LYS:95:N
+0	vdw	D:LEU:91:O	D:LEU:96:CG
+0	vdw	D:HIS:92:CA	D:LEU:96:CG
+0	vdw	D:HIS:97:N	D:LYS:95:C
+0	vdw	D:HIS:97:CD2	D:LYS:95:O
+0	vdw	D:LEU:91:O	D:LYS:95:CA
+0	vdw	D:LEU:91:O	D:LEU:96:N
+0	vdw	A:ASP:47:OD1	A:SER:49:CB
+0	vdw	A:ASP:47:CG	A:SER:49:OG
+0	vdw	A:ASP:47:OD1	A:SER:49:OG
+0	vdw	D:ALA:62:CB	D:PRO:58:O
+0	vdw	D:PRO:58:O	D:VAL:60:N
+0	vdw	D:ALA:62:N	D:PRO:58:O
+0	vdw	D:LYS:61:N	D:PRO:58:O
+0	vdw	D:ALA:62:CB	D:LYS:59:O
+0	vdw	D:ALA:62:N	D:LYS:59:O
+0	vdw	D:HIS:63:N	D:LYS:59:O
+0	vdw	D:LYS:59:O	D:PHE:45:CE1
+0	vdw	D:HIS:63:CB	D:LYS:59:O
+0	vdw	D:PHE:42:CD2	D:PHE:45:CE2
+0	vdw	D:PHE:42:CD2	D:PHE:45:CZ
+0	vdw	A:HIS:45:N	A:PHE:43:C
+0	vdw	A:PHE:46:N	A:PRO:44:C
+0	vdw	A:HIS:45:N	A:PHE:43:O
+0	vdw	A:PRO:44:N	A:TYR:42:C
+0	vdw	A:LEU:48:N	A:PHE:46:C
+0	vdw	A:LEU:48:N	A:PHE:46:O
+0	vdw	A:ASP:47:O	A:SER:52:CB
+0	vdw	A:ASP:47:O	A:SER:52:OG
+0	vdw	A:ASP:47:C	A:SER:49:N
+0	vdw	A:ASP:47:O	A:SER:49:N
+0	vdw	A:ASP:47:OD1	A:SER:49:N
+0	vdw	A:SER:49:O	A:SER:52:CB
+0	vdw	D:ASN:57:C	D:LYS:59:N
+0	vdw	D:ASN:57:O	D:LYS:59:N
+0	vdw	D:ASN:57:O	D:VAL:60:N
+0	vdw	D:GLY:56:O	D:PRO:58:N
+0	vdw	D:GLY:56:O	D:PRO:58:CG
+0	vdw	D:GLY:56:O	D:PRO:58:CD
+0	vdw	D:ASN:57:O	D:LYS:61:CG
+0	vdw	D:ASN:57:O	D:LYS:61:CD
+0	vdw	D:ASN:57:O	D:LYS:61:N
+0	vdw	D:ASN:57:OD1	D:LYS:59:N
+0	vdw	D:ASN:57:OD1	D:LYS:59:CA
+0	vdw	D:ASN:57:OD1	D:LYS:59:CB
+0	vdw	D:ASN:57:OD1	D:VAL:60:N
+0	vdw	D:PRO:58:C	D:VAL:60:N
+0	vdw	D:LYS:59:C	D:PHE:45:CD1
+0	vdw	D:LYS:59:C	D:PHE:45:CE1
+0	vdw	D:LYS:59:C	D:LYS:61:N
+0	vdw	D:PHE:42:O	D:PHE:45:CB
+0	vdw	D:PHE:42:CD2	D:PHE:45:CE1
+0	vdw	D:PHE:45:CD1	D:VAL:60:CG2
+0	vdw	D:GLN:39:O	D:PHE:42:CA
+0	vdw	D:GLU:43:N	D:PHE:41:C
+0	vdw	D:GLN:39:C	D:PHE:42:N
+0	vdw	D:GLN:39:O	D:PHE:42:N
+0	vdw	D:ARG:40:C	D:PHE:42:N
+0	vdw	A:HIS:45:CE1	A:TYR:42:O
+0	vdw	A:HIS:45:ND1	A:PHE:43:C
+0	vdw	A:PHE:43:O	A:PHE:46:N
+0	vdw	A:LEU:48:CD2	A:PHE:46:CB
+0	vdw	A:GLN:54:CB	A:PHE:46:CD1
+0	vdw	A:GLN:54:N	A:SER:52:C
+0	vdw	A:GLN:54:N	A:SER:52:O
+0	vdw	A:GLN:54:N	A:SER:52:OG
+0	vdw	A:ALA:53:N	A:GLY:51:O
+0	vdw	A:SER:52:O	A:VAL:55:N
+0	vdw	A:SER:52:OG	A:VAL:55:N
+0	vdw	A:SER:52:OG	A:VAL:55:CB
+0	vdw	A:LYS:56:N	A:SER:52:O
+0	vdw	A:SER:52:OG	A:VAL:55:CG2
+0	vdw	A:LYS:56:CG	A:SER:52:O
+0	vdw	D:ASN:57:CB	D:VAL:54:O
+0	vdw	D:ALA:53:O	D:ASN:57:CB
+0	vdw	D:ASN:57:CB	D:VAL:60:CG2
+0	vdw	D:ASN:57:CG	D:VAL:60:CG2
+0	vdw	A:ARG:92:NH1	D:GLU:43:OE2
+0	vdw	A:ALA:53:O	A:LYS:56:N
+0	vdw	A:ALA:53:O	A:LYS:56:CA
+0	vdw	A:ALA:53:O	A:GLY:57:N
+0	vdw	A:GLN:54:C	A:LYS:56:N
+0	vdw	A:GLN:54:C	A:GLY:57:N
+0	vdw	A:ALA:53:O	A:GLY:57:CA
+0	vdw	A:ALA:53:C	A:VAL:55:N
+0	vdw	A:ALA:53:O	A:VAL:55:N
+0	vdw	D:GLY:46:O	D:LEU:48:N
+0	vdw	D:SER:89:N	D:THR:87:C
+0	vdw	D:GLU:90:CA	D:THR:87:O
+0	vdw	D:GLU:90:CB	D:THR:87:O
+0	vdw	D:LEU:91:N	D:THR:87:O
+0	vdw	D:GLU:90:C	D:HIS:92:N
+0	vdw	D:GLU:90:N	D:THR:87:O
+0	vdw	D:ALA:86:O	D:GLU:90:CB
+0	vdw	D:LEU:91:N	D:SER:89:C
+0	vdw	D:LEU:91:N	D:SER:89:O
+0	vdw	D:SER:89:N	D:THR:87:O
+0	vdw	D:LEU:88:C	D:LEU:91:N
+0	vdw	D:LEU:88:O	D:LEU:91:N
+0	vdw	D:ASP:94:OD2	D:GLU:90:CG
+0	vdw	D:ASP:21:OD1	D:LYS:65:CG
+0	vdw	D:GLY:69:N	D:LYS:66:C
+0	vdw	D:HIS:63:O	D:LYS:66:CA
+0	vdw	D:LEU:68:N	D:LYS:66:C
+0	vdw	D:HIS:63:O	D:LYS:66:CB
+0	vdw	D:LEU:88:O	D:LEU:91:CB
+0	vdw	D:LEU:91:CB	D:THR:87:O
+0	vdw	D:GLU:90:O	D:HIS:92:N
+0	vdw	D:CYS:93:N	D:GLU:90:O
+0	vdw	D:CYS:93:N	D:LEU:91:C
+0	vdw	D:CYS:93:N	D:LEU:91:O
+0	vdw	D:ASP:94:N	D:GLU:90:O
+0	vdw	D:ASP:94:CB	D:GLU:90:O
+0	vdw	D:LEU:91:O	D:LEU:96:CB
+0	vdw	D:HIS:92:CA	D:LEU:96:CB
+0	vdw	D:HIS:92:N	D:SER:89:O
+0	vdw	D:CYS:93:N	D:SER:89:O
+0	vdw	D:CYS:93:N	D:TYR:145:CZ
+0	vdw	D:CYS:93:N	D:TYR:145:OH
+0	vdw	D:LEU:88:O	D:LEU:91:CA
+0	vdw	D:HIS:92:N	D:LEU:88:O
+0	vdw	D:ASP:94:CG	D:HIS:146:NE2
+0	vdw	D:ASP:94:OD1	D:HIS:146:NE2
+0	vdw	D:CYS:93:CA	D:TYR:145:CE1
+0	vdw	D:CYS:93:CA	D:TYR:145:CZ
+0	vdw	D:ALA:62:O	D:LYS:65:CB
+0	vdw	D:LYS:61:O	D:LYS:65:CB
+0	vdw	D:ALA:62:C	D:LYS:65:N
+0	vdw	D:ALA:62:O	D:LYS:65:N
+0	vdw	D:ALA:62:O	D:LYS:66:N
+0	vdw	D:HIS:63:C	D:LYS:65:N
+0	vdw	D:HIS:63:C	D:LYS:66:N
+0	vdw	D:HIS:63:O	D:LYS:65:N
+0	vdw	D:HIS:63:O	D:LYS:66:N
+0	vdw	D:ALA:62:C	D:GLY:64:N
+0	vdw	D:ALA:62:O	D:GLY:64:N
+0	vdw	D:LYS:61:O	D:LYS:65:N
+0	vdw	D:GLY:64:C	D:LYS:66:N
+0	vdw	D:GLY:64:O	D:LYS:66:N
+0	vdw	D:LYS:65:C	D:VAL:67:N
+0	vdw	D:HIS:63:O	D:VAL:67:N
+0	vdw	D:HIS:63:O	D:VAL:67:CB
+0	vdw	D:HIS:63:O	D:VAL:67:CG2
+0	vdw	D:HIS:63:CE1	D:VAL:67:CG2
+0	vdw	D:HIS:92:CD2	D:LEU:96:CD1
+0	vdw	D:HIS:92:CA	D:LEU:96:CD1
+0	vdw	D:HIS:92:O	D:LEU:96:C
+0	vdw	D:HIS:92:O	D:HIS:97:N
+0	vdw	D:CYS:93:O	D:HIS:97:N
+0	vdw	D:HIS:92:O	D:VAL:98:N
+0	vdw	D:LEU:96:C	D:VAL:98:N
+0	vdw	D:LEU:96:CB	D:VAL:98:CG2
+0	vdw	D:HIS:92:C	D:TYR:145:CZ
+0	vdw	D:HIS:92:C	D:TYR:145:OH
+0	vdw	D:HIS:92:O	D:TYR:145:OH
+0	vdw	D:HIS:92:O	D:HIS:97:CA
+0	vdw	D:ASP:94:N	D:HIS:92:C
+0	vdw	D:CYS:93:O	D:HIS:97:ND1
+0	vdw	D:CYS:93:O	D:HIS:97:CA
+0	vdw	A:GLU:30:OE2	A:HIS:50:CB
+0	vdw	D:HIS:63:N	D:LYS:61:C
+0	vdw	D:ALA:62:N	D:VAL:60:O
+0	vdw	D:HIS:63:N	D:VAL:60:O
+0	vdw	D:GLY:64:N	D:VAL:60:O
+0	vdw	D:HIS:63:N	D:LYS:61:O
+0	vdw	D:GLY:64:N	D:LYS:61:O
+0	vdw	D:LEU:28:CD2	D:VAL:60:O
+0	vdw	D:GLY:64:N	D:LEU:28:CD2
+0	vdw	D:ALA:62:N	D:VAL:60:C
+0	vdw	D:GLY:64:CA	D:VAL:60:O
+0	vdw	D:GLY:64:CA	D:LYS:61:O
+0	vdw	D:HIS:63:CD2	D:LEU:28:CD2
+0	vdw	D:HIS:63:CD2	D:PHE:42:CE2
+0	vdw	D:HIS:63:CD2	D:VAL:67:CG2
+0	vdw	D:HIS:63:NE2	D:PHE:42:CE2
+0	vdw	D:HIS:63:NE2	D:VAL:67:CG2
+0	vdw	D:LEU:96:O	D:VAL:98:N
+0	vdw	D:HIS:97:O	D:PHE:41:CE2
+0	vdw	D:PHE:41:CD2	D:VAL:98:CG2
+0	vdw	D:PHE:41:CE2	D:VAL:98:CG2
+0	vdw	A:THR:41:CB	D:HIS:97:C
+0	vdw	A:THR:41:CB	D:HIS:97:O
+0	vdw	A:PRO:44:CD	A:THR:41:O
+0	vdw	A:LYS:40:O	A:PHE:43:C
+0	vdw	A:LYS:40:O	A:PHE:43:N
+0	vdw	A:LYS:40:O	A:PHE:43:CA
+0	vdw	A:PHE:43:N	A:THR:41:C
+0	vdw	A:LYS:40:O	A:TYR:42:N
+0	vdw	A:LEU:48:CD1	A:LYS:40:CG
+0	vdw	A:LEU:48:CD2	A:PHE:33:CE2
+0	vdw	A:LEU:48:CD2	A:PHE:33:CZ
+0	vdw	A:GLY:51:N	A:SER:49:C
+0	vdw	A:GLY:51:N	A:SER:49:O
+0	vdw	A:SER:49:O	A:SER:52:N
+0	vdw	A:HIS:50:C	A:SER:52:N
+0	vdw	A:HIS:50:O	A:SER:52:N
+0	vdw	D:LYS:61:CE	D:MET:55:O
+0	vdw	D:LEU:48:CD2	D:VAL:60:CG2
+0	vdw	D:LEU:32:CD2	D:PHE:42:CD1
+0	vdw	D:PHE:42:CD1	D:THR:38:O
+0	vdw	D:GLN:39:C	D:PHE:41:N
+0	vdw	D:GLN:39:O	D:PHE:41:N
+0	vdw	D:PHE:41:N	D:THR:38:O
+0	vdw	A:LEU:91:O	D:ARG:40:CZ
+0	vdw	D:PHE:41:CE2	D:VAL:98:CA
+0	vdw	A:PRO:44:CD	A:TYR:42:C
+0	vdw	A:PRO:44:CD	A:TYR:42:O
+0	vdw	A:LYS:40:C	A:PHE:43:N
+0	vdw	A:PHE:43:CD2	A:PHE:46:CD1
+0	vdw	A:PHE:43:CD2	A:PHE:46:CE1
+0	vdw	D:ASN:57:N	D:MET:55:C
+0	vdw	D:GLY:56:N	D:VAL:54:C
+0	vdw	D:GLY:56:N	D:VAL:54:O
+0	vdw	D:ASN:57:N	D:VAL:54:O
+0	vdw	D:ASP:52:C	D:GLY:56:N
+0	vdw	D:ASP:52:O	D:GLY:56:N
+0	vdw	D:ALA:53:C	D:GLY:56:N
+0	vdw	D:ALA:53:O	D:GLY:56:N
+0	vdw	D:ALA:53:O	D:ASN:57:N
+0	vdw	D:ALA:53:C	D:MET:55:N
+0	vdw	D:ALA:53:O	D:MET:55:N
+0	vdw	D:MET:55:N	D:PRO:51:O
+0	vdw	D:GLN:39:CA	D:PRO:36:O
+0	vdw	D:GLN:39:CB	D:PRO:36:O
+0	vdw	D:GLN:39:CG	D:PRO:36:O
+0	vdw	D:ARG:40:N	D:TRP:37:O
+0	vdw	D:ARG:40:N	D:THR:38:C
+0	vdw	D:ARG:40:CA	D:TRP:37:O
+0	vdw	A:ARG:92:NH1	D:ARG:40:CA
+0	vdw	D:ARG:40:N	D:THR:38:O
+0	vdw	A:LEU:91:O	D:ARG:40:NE
+0	vdw	A:ARG:92:O	D:ARG:40:NE
+0	vdw	D:ARG:40:CB	D:TRP:37:O
+0	vdw	D:ARG:40:CG	D:TRP:37:O
+0	vdw	A:LEU:91:O	D:ARG:40:NH2
+0	vdw	A:LEU:91:O	A:VAL:93:N
+0	vdw	A:TYR:42:CD1	D:ARG:40:NH2
+0	vdw	A:HIS:58:NE2	A:PHE:43:CE2
+0	vdw	A:HIS:58:CD2	A:PHE:43:CE2
+0	vdw	A:GLN:54:O	A:HIS:58:CB
+0	vdw	A:GLN:54:O	A:GLY:57:N
+0	vdw	A:GLN:54:O	A:HIS:58:N
+0	vdw	A:GLY:57:N	A:VAL:55:C
+0	vdw	A:HIS:58:N	A:VAL:55:C
+0	vdw	A:GLY:57:N	A:VAL:55:O
+0	vdw	A:HIS:58:N	A:VAL:55:O
+0	vdw	A:HIS:58:N	A:LYS:56:C
+0	vdw	A:HIS:58:N	A:LYS:56:O
+0	vdw	A:GLY:59:N	A:VAL:55:O
+0	vdw	A:GLY:59:N	A:LYS:56:C
+0	vdw	A:GLY:59:N	A:LYS:56:O
+0	vdw	A:GLY:59:CA	A:VAL:55:O
+0	vdw	A:LYS:56:O	A:LYS:60:N
+0	vdw	D:ASP:52:C	D:VAL:54:N
+0	vdw	D:ALA:53:N	D:THR:50:O
+0	vdw	D:ALA:53:N	D:PRO:51:C
+0	vdw	D:ALA:53:N	D:PRO:51:O
+0	vdw	D:ASP:52:C	D:MET:55:N
+0	vdw	D:ASP:52:O	D:MET:55:N
+0	vdw	D:ALA:53:CA	D:THR:50:O
+0	vdw	D:ALA:53:CB	D:THR:50:O
+0	vdw	D:THR:50:O	D:VAL:54:N
+0	vdw	D:THR:50:O	D:VAL:54:CB
+0	vdw	D:THR:50:O	D:VAL:54:CG2
+0	vdw	D:PRO:51:O	D:VAL:54:N
+0	vdw	D:ASP:52:N	D:THR:50:O
+0	vdw	D:LEU:48:CA	D:VAL:54:CG2
+0	vdw	D:LEU:48:C	D:VAL:54:CG2
+0	vdw	D:LEU:48:O	D:VAL:54:CG2
+0	vdw	D:LEU:48:C	D:THR:50:N
+0	vdw	D:GLN:39:NE2	D:LEU:48:O
+0	vdw	D:GLN:39:CD	D:PRO:36:O
+0	vdw	A:ARG:92:CD	A:LYS:90:O
+0	vdw	A:ARG:92:NH1	A:LYS:90:O
+0	vdw	A:ARG:92:CD	A:LYS:90:C
+0	vdw	A:ARG:92:CD	A:HIS:89:O
+0	vdw	A:LEU:86:O	A:LYS:90:CA
+0	vdw	A:ARG:92:N	A:LYS:90:O
+0	vdw	A:LEU:86:O	A:LEU:91:N
+0	vdw	A:ARG:92:N	A:LYS:90:C
+0	vdw	A:LEU:91:C	A:VAL:93:N
+0	vdw	A:LEU:86:CD2	A:LEU:91:CD1
+0	vdw	A:HIS:87:CD2	A:LEU:91:CD1
+0	vdw	A:HIS:58:C	A:LYS:61:N
+0	vdw	A:HIS:58:C	A:LYS:60:N
+0	vdw	A:GLY:57:O	A:LYS:60:CB
+0	vdw	A:GLY:57:O	A:LYS:61:N
+0	vdw	A:GLY:57:O	A:LYS:60:N
+0	vdw	A:GLY:57:O	A:LYS:60:CA
+0	vdw	A:GLY:59:C	A:LYS:61:N
+0	vdw	A:GLY:59:O	A:LYS:61:N
+0	vdw	A:HIS:58:O	A:LYS:61:N
+0	vdw	A:GLY:57:C	A:GLY:59:N
+0	vdw	A:GLY:57:O	A:GLY:59:N
+0	vdw	A:LEU:86:O	A:LYS:90:N
+0	vdw	A:ALA:88:C	A:LYS:90:N
+0	vdw	A:ASP:85:O	A:HIS:89:CA
+0	vdw	A:ASP:85:O	A:HIS:89:CB
+0	vdw	A:LEU:86:O	A:LYS:90:CB
+0	vdw	A:ALA:88:N	A:LEU:86:C
+0	vdw	A:ALA:88:N	A:LEU:86:O
+0	vdw	A:LEU:83:O	A:LEU:86:CB
+0	vdw	A:ALA:82:O	A:LEU:86:CB
+0	vdw	A:HIS:58:O	A:LYS:61:CA
+0	vdw	A:HIS:58:O	A:LYS:61:CB
+0	vdw	A:ASP:85:O	A:HIS:89:CG
+0	vdw	D:ASP:73:CG	D:GLY:69:O
+0	vdw	D:ASP:73:OD1	D:GLY:69:O
+0	vdw	D:ALA:70:O	D:ASP:73:CB
+0	vdw	D:PHE:85:C	D:THR:87:N
+0	vdw	D:PHE:85:O	D:THR:87:N
+0	vdw	D:ALA:86:N	D:LYS:82:O
+0	vdw	D:ALA:86:N	D:THR:84:C
+0	vdw	D:ALA:86:N	D:GLY:83:O
+0	vdw	D:GLY:69:C	D:SER:72:N
+0	vdw	D:GLY:69:O	D:SER:72:N
+0	vdw	D:GLY:69:O	D:SER:72:CA
+0	vdw	D:ASP:73:N	D:GLY:69:O
+0	vdw	D:GLY:69:C	D:PHE:71:N
+0	vdw	D:GLY:69:O	D:PHE:71:N
+0	vdw	D:ALA:70:CB	D:VAL:67:O
+0	vdw	D:ALA:70:C	D:SER:72:N
+0	vdw	D:LEU:88:N	D:PHE:85:O
+0	vdw	D:LEU:88:C	D:PHE:85:O
+0	vdw	D:PHE:85:O	D:SER:89:N
+0	vdw	D:PHE:85:O	D:SER:89:CA
+0	vdw	D:PHE:85:O	D:SER:89:CB
+0	vdw	D:ALA:86:O	D:LEU:88:N
+0	vdw	D:GLU:90:N	D:LEU:88:C
+0	vdw	D:ALA:86:O	D:SER:89:N
+0	vdw	D:HIS:92:ND1	D:LEU:88:C
+0	vdw	D:ALA:86:C	D:LEU:88:N
+0	vdw	D:ALA:86:C	D:SER:89:N
+0	vdw	D:ALA:86:O	D:SER:89:CA
+0	vdw	D:ALA:86:O	D:SER:89:CB
+0	vdw	D:ALA:86:O	D:GLU:90:N
+0	vdw	D:LEU:141:O	D:SER:89:CA
+0	vdw	D:LEU:141:C	D:SER:89:CB
+0	vdw	D:LEU:141:O	D:SER:89:CB
+0	vdw	D:HIS:146:N	D:LYS:144:O
+0	vdw	D:LYS:144:CB	D:SER:89:OG
+0	vdw	D:GLY:69:N	D:LYS:65:O
+0	vdw	D:GLY:69:CA	D:LYS:65:O
+0	vdw	D:ALA:70:N	D:LEU:68:C
+0	vdw	D:GLY:69:N	D:LYS:66:O
+0	vdw	D:GLY:69:N	D:VAL:67:C
+0	vdw	D:GLY:69:N	D:VAL:67:O
+0	vdw	D:GLY:69:CA	D:LYS:66:O
+0	vdw	D:LEU:68:N	D:LYS:65:O
+0	vdw	D:LYS:65:O	D:VAL:67:N
+0	vdw	D:LEU:68:CA	D:PHE:71:CB
+0	vdw	D:LEU:68:C	D:PHE:71:N
+0	vdw	D:LEU:68:C	D:PHE:71:CB
+0	vdw	D:LEU:68:C	D:SER:72:N
+0	vdw	D:ALA:70:N	D:LYS:66:O
+0	vdw	D:ALA:70:N	D:VAL:67:O
+0	vdw	D:PHE:71:N	D:VAL:67:O
+0	vdw	D:PHE:71:CB	D:VAL:67:O
+0	vdw	D:ALA:70:N	D:LEU:68:O
+0	vdw	D:HIS:92:ND1	D:LEU:88:O
+0	vdw	D:HIS:92:CB	D:LEU:88:O
+0	vdw	D:HIS:92:CG	D:LEU:88:O
+0	vdw	D:CYS:93:CB	D:SER:89:O
+0	vdw	D:CYS:93:CB	D:TYR:145:CE2
+0	vdw	D:HIS:92:CB	D:TYR:145:OH
+0	vdw	D:LEU:141:O	D:TYR:145:CE2
+0	vdw	D:CYS:93:SG	D:HIS:146:CD2
+0	vdw	D:CYS:93:CB	D:TYR:145:CD1
+0	vdw	D:CYS:93:CB	D:TYR:145:CE1
+0	vdw	D:CYS:93:SG	D:TYR:145:CD1
+0	vdw	D:CYS:93:CB	D:TYR:145:CG
+0	vdw	D:CYS:93:CB	D:TYR:145:CD2
+0	vdw	D:CYS:93:SG	D:TYR:145:CA
+0	vdw	D:CYS:93:SG	D:TYR:145:CG
+0	vdw	A:LYS:40:CE	D:HIS:146:C
+0	vdw	A:LYS:40:NZ	D:HIS:146:C
+0	vdw	A:LYS:40:CE	D:HIS:146:O
+0	vdw	A:LYS:40:NZ	D:HIS:146:O
+0	vdw	A:LYS:40:CE	D:HIS:146:OXT
+0	vdw	A:LYS:40:NZ	D:HIS:146:OXT
+0	vdw	D:ASN:19:OD1	D:ASP:21:CB
+0	vdw	D:ASN:19:OD1	D:GLU:22:N
+0	vdw	D:ASN:19:OD1	D:ASP:21:N
+0	vdw	D:ASN:19:OD1	D:ASP:21:CA
+0	vdw	D:ASN:19:OD1	D:ASP:21:C
+0	vdw	D:GLU:22:N	D:VAL:20:C
+0	vdw	D:GLU:22:N	D:VAL:20:O
+0	vdw	D:ASN:19:O	D:GLU:22:N
+0	vdw	D:GLY:24:CA	D:VAL:20:O
+0	vdw	D:GLY:24:N	D:VAL:20:O
+0	vdw	D:ASP:21:C	D:VAL:23:N
+0	vdw	D:ASN:19:C	D:ASP:21:N
+0	vdw	D:ASN:19:O	D:ASP:21:N
+0	vdw	D:ASN:19:O	D:ASP:21:CA
+0	vdw	D:GLY:24:CA	D:GLY:64:C
+0	vdw	D:GLY:24:CA	D:GLY:64:O
+0	vdw	D:GLY:64:O	D:LEU:68:N
+0	vdw	D:GLY:64:O	D:VAL:67:N
+0	vdw	D:GLY:24:C	D:GLY:64:C
+0	vdw	D:GLY:24:CA	D:LEU:68:CG
+0	vdw	D:GLY:24:CA	D:LEU:68:CD2
+0	vdw	D:LEU:68:N	D:LYS:66:O
+0	vdw	D:HIS:92:CG	D:PHE:103:CZ
+0	vdw	D:HIS:92:CD2	D:PHE:103:CE1
+0	vdw	D:TYR:145:CZ	D:VAL:98:O
+0	vdw	D:TYR:145:OH	D:VAL:98:O
+0	vdw	D:TYR:145:CE1	D:VAL:98:O
+0	vdw	D:PRO:100:CD	D:VAL:98:O
+0	vdw	D:PRO:100:N	D:VAL:98:O
+0	vdw	D:CYS:93:CB	D:TYR:145:CZ
+0	vdw	D:PHE:103:CZ	D:TYR:145:OH
+0	vdw	D:PRO:100:CD	D:TYR:145:CE1
+0	vdw	A:LYS:40:N	A:PRO:37:O
+0	vdw	A:LYS:40:CA	A:PRO:37:O
+0	vdw	A:LYS:40:CB	A:PRO:37:O
+0	vdw	A:LYS:40:CG	A:PRO:37:O
+0	vdw	A:PRO:37:O	A:THR:39:N
+0	vdw	D:ASP:21:O	D:GLY:25:N
+0	vdw	D:GLY:25:N	D:VAL:23:C
+0	vdw	D:GLY:25:N	D:VAL:23:O
+0	vdw	D:GLY:24:C	D:GLY:64:CA
+0	vdw	D:GLY:24:O	D:GLY:64:CA
+0	vdw	D:GLY:24:O	D:LEU:28:CB
+0	vdw	D:GLY:24:O	D:LEU:28:N
+0	vdw	D:ALA:27:N	D:GLY:24:O
+0	vdw	D:PRO:100:N	D:VAL:98:C
+0	vdw	A:THR:38:O	A:THR:41:CB
+0	vdw	A:THR:38:O	A:THR:41:OG1
+0	vdw	A:THR:38:O	A:THR:41:CG2
+0	vdw	A:THR:39:C	A:THR:41:N
+0	vdw	A:THR:39:O	A:THR:41:N
+0	vdw	A:THR:39:O	A:TYR:42:N
+0	vdw	A:LYS:40:C	A:TYR:42:N
+0	vdw	A:LYS:40:N	A:THR:38:C
+0	vdw	A:LYS:40:N	A:THR:38:O
+0	vdw	A:THR:38:O	A:THR:41:N
+0	vdw	A:PHE:43:CD1	A:THR:39:O
+0	vdw	A:LYS:40:CG	A:PHE:33:CD1
+0	vdw	A:LEU:29:O	A:PHE:33:CG
+0	vdw	A:LEU:29:O	A:PHE:33:CD2
+0	vdw	A:ALA:26:O	A:GLU:30:CB
+0	vdw	A:GLU:27:O	A:GLU:30:CB
+0	vdw	A:GLU:30:CD	A:HIS:50:ND1
+0	vdw	A:GLU:30:CD	A:HIS:50:CE1
+0	vdw	A:GLU:30:OE1	A:HIS:50:ND1
+0	vdw	A:GLU:30:OE1	A:HIS:50:CE1
+0	vdw	A:GLU:30:OE2	A:HIS:50:CG
+0	vdw	A:GLU:30:OE2	A:HIS:50:ND1
+0	vdw	D:ALA:27:N	D:GLY:25:C
+0	vdw	D:GLU:26:N	D:GLY:24:C
+0	vdw	D:GLU:26:N	D:GLY:24:O
+0	vdw	D:GLU:22:O	D:GLU:26:N
+0	vdw	D:GLU:26:N	D:VAL:23:O
+0	vdw	D:GLY:25:O	D:GLY:29:N
+0	vdw	D:GLY:25:O	D:GLY:29:CA
+0	vdw	D:GLY:29:CA	D:MET:55:SD
+0	vdw	D:ALA:27:N	D:GLY:25:O
+0	vdw	D:GLU:26:O	D:GLY:29:N
+0	vdw	D:ALA:27:C	D:GLY:29:N
+0	vdw	D:ALA:27:O	D:GLY:29:N
+0	vdw	D:LEU:28:O	D:LEU:32:N
+0	vdw	D:LEU:28:O	D:LEU:32:CG
+0	vdw	D:LEU:28:C	D:LEU:31:N
+0	vdw	D:LEU:28:O	D:LEU:31:N
+0	vdw	D:LEU:28:O	D:LEU:31:CA
+0	vdw	D:LEU:28:O	D:LEU:31:CB
+0	vdw	D:ARG:30:N	D:LEU:28:C
+0	vdw	D:ARG:30:N	D:LEU:28:O
+0	vdw	D:LEU:32:CD2	D:THR:38:OG1
+0	vdw	D:PHE:41:CD1	D:THR:38:O
+0	vdw	D:ASN:102:ND2	D:PHE:41:CE1
+0	vdw	D:THR:38:CB	D:TYR:35:O
+0	vdw	D:ASN:102:ND2	D:PHE:41:CZ
+0	vdw	A:TYR:42:CD1	A:VAL:93:CG2
+0	vdw	A:TYR:42:CE1	A:VAL:93:CA
+0	vdw	A:ASN:97:ND2	A:TYR:42:CE2
+0	vdw	A:TYR:42:CE2	D:ASP:99:OD1
+0	vdw	A:TYR:42:CZ	D:ASP:99:OD1
+0	vdw	A:PHE:33:CE1	A:PHE:43:CD1
+0	vdw	A:PHE:33:CE1	A:PHE:43:CE1
+0	vdw	A:ALA:26:O	A:LEU:29:CB
+0	vdw	A:ALA:26:C	A:ALA:28:N
+0	vdw	A:ALA:26:C	A:LEU:29:N
+0	vdw	A:ALA:26:O	A:ALA:28:N
+0	vdw	A:ALA:26:O	A:LEU:29:N
+0	vdw	A:ALA:26:O	A:GLU:30:N
+0	vdw	D:MET:55:CB	D:PRO:51:O
+0	vdw	D:MET:55:CG	D:PRO:51:O
+0	vdw	D:GLY:29:C	D:MET:55:SD
+0	vdw	D:GLY:29:C	D:LEU:32:N
+0	vdw	D:GLY:29:O	D:VAL:54:CG1
+0	vdw	C:PRO:119:CG	D:MET:55:SD
+0	vdw	D:GLY:29:C	D:LEU:31:N
+0	vdw	D:GLY:29:O	D:LEU:32:N
+0	vdw	D:GLY:29:O	D:LEU:32:CA
+0	vdw	D:GLY:29:O	D:LEU:32:C
+0	vdw	D:GLY:29:O	D:LEU:32:CB
+0	vdw	D:LEU:32:CA	D:THR:38:OG1
+0	vdw	D:GLY:29:O	D:VAL:33:N
+0	vdw	D:ARG:30:C	D:LEU:32:N
+0	vdw	D:ARG:30:O	D:LEU:32:N
+0	vdw	D:GLY:29:O	D:VAL:33:CB
+0	vdw	D:LEU:32:C	D:VAL:34:N
+0	vdw	D:GLY:29:O	D:LEU:31:N
+0	vdw	D:LEU:31:O	D:THR:38:OG1
+0	vdw	D:THR:38:OG1	D:TYR:35:O
+0	vdw	D:GLN:39:N	D:TRP:37:C
+0	vdw	D:GLN:39:N	D:TRP:37:O
+0	vdw	D:ARG:40:CD	D:TRP:37:O
+0	vdw	D:PRO:36:C	D:THR:38:N
+0	vdw	D:PRO:36:O	D:THR:38:N
+0	vdw	D:GLN:39:N	D:PRO:36:C
+0	vdw	D:GLN:39:N	D:PRO:36:O
+0	vdw	A:ARG:92:CB	D:TRP:37:O
+0	vdw	D:THR:38:N	D:TYR:35:O
+0	vdw	D:THR:38:CA	D:TYR:35:O
+0	vdw	A:ARG:92:O	D:ARG:40:CD
+0	vdw	A:ARG:92:O	A:ASP:94:N
+0	vdw	A:TYR:140:OH	A:VAL:93:N
+0	vdw	A:HIS:58:CD2	A:LEU:29:CD1
+0	vdw	A:GLY:59:N	A:LEU:29:CD1
+0	vdw	A:GLY:59:CA	A:LEU:29:CD1
+0	vdw	A:GLY:25:O	A:LEU:29:CG
+0	vdw	A:ALA:26:N	A:GLY:59:CA
+0	vdw	A:ALA:26:N	A:GLY:22:O
+0	vdw	A:ALA:26:N	A:GLU:23:O
+0	vdw	A:ALA:26:N	A:TYR:24:C
+0	vdw	A:ALA:26:N	A:TYR:24:O
+0	vdw	A:ALA:26:CB	A:GLU:23:O
+0	vdw	A:GLU:23:CB	A:HIS:20:O
+0	vdw	D:ASP:52:N	D:THR:50:C
+0	vdw	D:GLY:29:O	D:VAL:33:CG2
+0	vdw	D:LEU:32:O	D:PRO:36:CA
+0	vdw	D:LEU:32:O	D:PRO:36:CB
+0	vdw	D:GLN:39:NE2	D:LEU:32:O
+0	vdw	D:GLN:39:NE2	D:PRO:36:CA
+0	vdw	D:GLN:39:NE2	D:PRO:36:CB
+0	vdw	A:ARG:92:CB	D:TRP:37:CB
+0	vdw	D:TRP:37:N	D:TYR:35:C
+0	vdw	D:TRP:37:N	D:TYR:35:O
+0	vdw	A:ARG:92:CA	A:HIS:87:O
+0	vdw	A:ALA:88:O	A:ARG:92:CG
+0	vdw	A:ARG:92:N	A:HIS:87:O
+0	vdw	A:HIS:87:O	A:TYR:140:OH
+0	vdw	A:HIS:87:O	A:TYR:140:CE2
+0	vdw	A:HIS:87:O	A:TYR:140:CZ
+0	vdw	A:HIS:58:O	A:VAL:62:N
+0	vdw	A:HIS:58:O	A:VAL:62:CB
+0	vdw	A:HIS:58:O	A:VAL:62:CG2
+0	vdw	A:HIS:58:O	A:LYS:60:N
+0	vdw	A:GLY:59:O	A:VAL:62:N
+0	vdw	A:GLY:59:O	A:VAL:62:CA
+0	vdw	A:GLY:59:O	A:VAL:62:CB
+0	vdw	A:HIS:58:O	A:LYS:61:C
+0	vdw	A:LYS:60:C	A:VAL:62:N
+0	vdw	A:LYS:60:O	A:VAL:62:N
+0	vdw	A:ALA:63:N	A:GLY:59:O
+0	vdw	A:ALA:63:CB	A:GLY:59:O
+0	vdw	A:GLY:25:C	A:GLY:59:CA
+0	vdw	A:GLY:25:CA	A:GLY:59:O
+0	vdw	A:GLY:22:N	A:HIS:20:C
+0	vdw	A:GLY:22:N	A:HIS:20:O
+0	vdw	A:GLY:22:C	A:HIS:20:O
+0	vdw	A:GLU:23:N	A:HIS:20:O
+0	vdw	A:GLY:22:C	A:TYR:24:N
+0	vdw	A:GLY:22:C	A:GLY:25:N
+0	vdw	A:GLY:22:O	A:TYR:24:N
+0	vdw	A:GLY:22:O	A:GLY:25:N
+0	vdw	A:ASP:85:O	A:HIS:89:N
+0	vdw	A:HIS:87:C	A:HIS:89:N
+0	vdw	A:ALA:88:CA	A:TYR:140:CD2
+0	vdw	A:ALA:88:CB	A:TYR:140:N
+0	vdw	A:ALA:88:CB	A:TYR:140:CA
+0	vdw	A:ALA:88:CB	A:TYR:140:CD2
+0	vdw	A:ALA:88:CA	A:SER:84:O
+0	vdw	A:ALA:88:CB	A:SER:84:O
+0	vdw	A:ALA:88:CB	A:LYS:139:C
+0	vdw	A:ALA:88:CA	A:TYR:140:CE2
+0	vdw	A:ALA:88:CB	A:LYS:139:O
+0	vdw	A:ASP:85:O	A:HIS:87:N
+0	vdw	A:ALA:88:N	A:ASP:85:O
+0	vdw	A:HIS:87:N	A:LEU:83:O
+0	vdw	A:HIS:87:N	A:SER:84:C
+0	vdw	A:HIS:87:N	A:SER:84:O
+0	vdw	A:ASP:85:C	A:HIS:87:N
+0	vdw	A:ALA:88:N	A:SER:84:O
+0	vdw	A:HIS:87:C	A:TYR:140:CE2
+0	vdw	A:HIS:87:ND1	A:LEU:83:O
+0	vdw	A:ALA:63:N	A:LYS:61:C
+0	vdw	A:ALA:63:N	A:LYS:61:O
+0	vdw	A:ASP:64:N	A:LYS:61:O
+0	vdw	A:ALA:65:N	A:LYS:61:O
+0	vdw	A:ASP:64:CB	A:LYS:61:O
+0	vdw	A:ALA:63:N	A:LYS:60:C
+0	vdw	A:ALA:63:N	A:LYS:60:O
+0	vdw	A:ASP:64:N	A:LYS:60:O
+0	vdw	A:ASP:64:OD1	A:LYS:60:O
+0	vdw	A:ASP:64:CB	A:LYS:60:O
+0	vdw	A:ASP:64:CG	A:LYS:60:O
+0	vdw	A:ALA:63:C	A:LYS:60:O
+0	vdw	A:ASP:64:N	A:VAL:62:C
+0	vdw	A:ASP:64:N	A:VAL:62:O
+0	vdw	A:ASP:85:CA	A:HIS:89:CD2
+0	vdw	A:ASP:85:O	A:HIS:89:CD2
+0	vdw	A:LEU:86:N	A:SER:84:C
+0	vdw	A:ALA:82:C	A:ASP:85:N
+0	vdw	A:ALA:82:O	A:ASP:85:N
+0	vdw	A:ASP:85:N	A:LEU:83:C
+0	vdw	A:ALA:82:O	A:ASP:85:CB
+0	vdw	A:ALA:82:O	A:LEU:86:N
+0	vdw	A:ASP:85:N	A:SER:81:O
+0	vdw	A:ASP:85:N	A:LEU:83:O
+0	vdw	A:LEU:83:O	A:LEU:86:N
+0	vdw	A:ALA:82:C	A:SER:84:N
+0	vdw	A:ALA:82:O	A:SER:84:N
+0	vdw	A:LEU:83:N	A:SER:81:C
+0	vdw	A:LEU:80:O	A:LEU:83:N
+0	vdw	A:LEU:80:O	A:LEU:83:C
+0	vdw	A:LEU:80:O	A:LEU:83:CB
+0	vdw	A:LEU:80:O	A:SER:84:N
+0	vdw	A:LEU:80:C	A:LEU:83:N
+0	vdw	A:LEU:136:CD2	A:LEU:83:CB
+0	vdw	A:ALA:65:CB	A:LEU:83:CD2
+0	vdw	A:ALA:65:N	A:VAL:62:O
+0	vdw	A:ALA:63:C	A:ALA:65:N
+0	vdw	A:ALA:63:O	A:ALA:65:N
+0	vdw	A:ASP:64:C	A:THR:67:N
+0	vdw	A:ASP:64:C	A:LEU:66:N
+0	vdw	A:ASP:85:OD1	A:LYS:139:CD
+0	vdw	A:ASP:85:CG	A:SER:81:O
+0	vdw	A:LEU:83:N	A:SER:81:O
+0	vdw	A:SER:81:O	A:SER:84:N
+0	vdw	A:SER:81:O	A:SER:84:OG
+0	vdw	A:ALA:82:N	A:LEU:80:C
+0	vdw	A:ASN:78:O	A:SER:81:CB
+0	vdw	A:ALA:82:N	A:LEU:80:O
+0	vdw	D:ASP:73:O	D:HIS:77:ND1
+0	vdw	D:GLY:83:C	D:PHE:85:N
+0	vdw	D:GLY:83:O	D:PHE:85:N
+0	vdw	D:ALA:70:O	D:ASP:73:CA
+0	vdw	D:GLY:74:CA	D:PHE:71:O
+0	vdw	D:GLY:74:CA	D:PHE:85:CZ
+0	vdw	D:ASP:73:C	D:LEU:75:N
+0	vdw	D:ASP:73:O	D:LEU:75:N
+0	vdw	D:ALA:76:N	D:ASP:73:O
+0	vdw	D:ALA:76:CB	D:ASP:73:O
+0	vdw	D:LEU:81:O	D:THR:84:CA
+0	vdw	D:ASN:80:O	D:THR:84:CB
+0	vdw	D:LEU:81:O	D:THR:84:CB
+0	vdw	D:ASN:80:O	D:THR:84:OG1
+0	vdw	D:HIS:77:CB	D:THR:84:OG1
+0	vdw	D:LYS:82:C	D:THR:84:N
+0	vdw	D:LYS:82:O	D:THR:84:N
+0	vdw	D:LYS:82:O	D:PHE:85:N
+0	vdw	D:ASN:80:O	D:GLY:83:N
+0	vdw	D:GLY:83:N	D:LEU:81:C
+0	vdw	D:GLY:83:N	D:LEU:81:O
+0	vdw	D:ASN:80:O	D:THR:84:N
+0	vdw	D:LEU:81:C	D:THR:84:N
+0	vdw	D:LEU:81:O	D:THR:84:N
+0	vdw	D:LEU:81:O	D:PHE:85:N
+0	vdw	B:GLU:6:CG	B:THR:4:OG1
+0	vdw	D:ALA:70:O	D:SER:72:N
+0	vdw	D:GLY:74:N	D:SER:72:C
+0	vdw	D:GLY:74:N	D:SER:72:O
+0	vdw	D:ALA:70:O	D:ASP:73:N
+0	vdw	D:ASP:73:N	D:PHE:71:C
+0	vdw	D:ASP:73:N	D:PHE:71:O
+0	vdw	D:LEU:68:O	D:SER:72:N
+0	vdw	D:LEU:68:O	D:SER:72:CA
+0	vdw	D:LEU:68:O	D:SER:72:OG
+0	vdw	D:LEU:75:CB	D:SER:72:O
+0	vdw	D:LEU:75:N	D:SER:72:C
+0	vdw	D:LEU:75:N	D:SER:72:O
+0	vdw	D:SER:72:OG	D:TRP:15:CZ2
+0	vdw	D:SER:72:CB	D:TRP:15:NE1
+0	vdw	D:SER:72:OG	D:TRP:15:NE1
+0	vdw	D:LEU:75:CA	D:SER:72:O
+0	vdw	D:ALA:76:N	D:SER:72:O
+0	vdw	D:SER:72:OG	D:TRP:15:CE2
+0	vdw	D:ALA:70:O	D:GLY:74:N
+0	vdw	D:GLY:74:N	D:PHE:71:C
+0	vdw	D:GLY:74:N	D:PHE:71:O
+0	vdw	D:ALA:70:O	D:PHE:85:CE2
+0	vdw	D:ALA:70:O	D:PHE:85:CZ
+0	vdw	D:LEU:75:N	D:PHE:71:O
+0	vdw	D:LEU:81:O	D:PHE:85:CD1
+0	vdw	D:ALA:140:C	D:ALA:142:N
+0	vdw	D:ALA:140:C	D:VAL:137:O
+0	vdw	D:LEU:81:O	D:PHE:85:CB
+0	vdw	D:ALA:140:O	D:HIS:143:N
+0	vdw	D:LYS:144:N	D:SER:89:OG
+0	vdw	D:LYS:144:CA	D:SER:89:OG
+0	vdw	D:LEU:141:C	D:SER:89:OG
+0	vdw	D:LEU:141:O	D:SER:89:OG
+0	vdw	D:ALA:140:O	D:ALA:142:N
+0	vdw	D:HIS:143:N	D:LEU:141:C
+0	vdw	D:ALA:140:O	D:HIS:143:CB
+0	vdw	D:ASN:139:O	D:HIS:143:N
+0	vdw	D:HIS:143:C	D:TYR:145:N
+0	vdw	D:ALA:142:O	D:LYS:144:N
+0	vdw	D:ASN:139:O	D:HIS:143:CA
+0	vdw	D:VAL:18:C	D:VAL:20:N
+0	vdw	D:VAL:18:O	D:VAL:20:N
+0	vdw	D:LEU:68:O	D:PHE:71:N
+0	vdw	D:LEU:68:O	D:PHE:71:CA
+0	vdw	D:LEU:68:O	D:PHE:71:CB
+0	vdw	D:LEU:68:O	D:PHE:71:C
+0	vdw	D:LEU:141:CB	D:PHE:103:CD2
+0	vdw	D:LEU:141:CB	D:PHE:103:CE2
+0	vdw	D:LEU:141:CD1	D:PHE:103:CD1
+0	vdw	D:LEU:141:CD1	D:PHE:103:CE1
+0	vdw	D:LEU:141:N	D:VAL:137:O
+0	vdw	D:ALA:138:C	D:LEU:141:N
+0	vdw	D:ALA:138:O	D:LEU:141:N
+0	vdw	D:LEU:141:CB	D:VAL:137:O
+0	vdw	D:ASN:139:C	D:LEU:141:N
+0	vdw	D:ASN:139:O	D:LEU:141:N
+0	vdw	D:LEU:141:O	D:TYR:145:CD2
+0	vdw	D:ALA:142:CA	D:TYR:145:CD2
+0	vdw	D:ALA:142:C	D:TYR:145:CD2
+0	vdw	D:ALA:142:N	D:ASN:139:C
+0	vdw	D:ALA:142:N	D:ASN:139:O
+0	vdw	D:ALA:142:CA	D:ASN:139:O
+0	vdw	D:ALA:142:C	D:ASN:139:O
+0	vdw	D:ALA:142:C	D:LYS:144:N
+0	vdw	D:ALA:138:O	D:ALA:142:N
+0	vdw	D:ALA:142:O	D:TYR:145:N
+0	vdw	D:ALA:142:O	D:TYR:145:CB
+0	vdw	D:ALA:142:O	D:TYR:145:CD2
+0	vdw	D:ASN:19:O	D:VAL:23:CB
+0	vdw	D:ASN:19:O	D:VAL:23:CG2
+0	vdw	D:ASN:19:O	D:VAL:23:N
+0	vdw	D:ASN:19:N	D:LYS:17:O
+0	vdw	D:LEU:68:CD2	D:VAL:23:CG1
+0	vdw	D:LEU:68:CD1	D:TRP:15:CH2
+0	vdw	D:LEU:68:CD1	D:PHE:71:CD2
+0	vdw	D:PHE:103:CD2	D:PRO:100:CA
+0	vdw	D:PHE:103:CD2	D:PRO:100:CB
+0	vdw	D:PHE:103:CE2	D:PRO:100:CA
+0	vdw	D:PHE:103:CE2	D:PRO:100:CB
+0	vdw	D:ALA:138:CB	D:PHE:103:CB
+0	vdw	D:ALA:138:CA	D:PHE:103:CB
+0	vdw	D:PHE:103:CA	D:PRO:100:O
+0	vdw	D:PHE:103:CB	D:PRO:100:O
+0	vdw	D:PHE:103:CG	D:PRO:100:O
+0	vdw	D:PHE:103:CD2	D:PRO:100:O
+0	vdw	D:ALA:142:CB	D:PRO:100:CB
+0	vdw	A:THR:38:CG2	D:PRO:100:CG
+0	vdw	A:PHE:36:C	A:THR:38:N
+0	vdw	A:PRO:37:C	A:THR:39:N
+0	vdw	A:PHE:36:O	A:THR:38:N
+0	vdw	A:PHE:33:O	A:PRO:37:CA
+0	vdw	A:MET:32:O	A:PHE:36:C
+0	vdw	A:PRO:37:CD	A:SER:35:C
+0	vdw	A:PRO:37:CD	A:SER:35:O
+0	vdw	A:LEU:34:N	A:MET:32:C
+0	vdw	A:LEU:34:O	B:ALA:128:CB
+0	vdw	A:GLU:30:O	A:LEU:34:N
+0	vdw	A:GLU:30:O	A:LEU:34:CB
+0	vdw	A:ARG:31:O	A:LEU:34:N
+0	vdw	A:LEU:34:C	A:PHE:36:N
+0	vdw	A:GLU:30:O	A:LEU:34:CG
+0	vdw	A:LEU:34:CD1	B:PRO:124:CB
+0	vdw	B:PRO:125:CD	B:THR:123:C
+0	vdw	B:PRO:125:CD	B:THR:123:CB
+0	vdw	B:PRO:125:CD	B:THR:123:OG1
+0	vdw	D:GLU:22:C	D:GLY:24:N
+0	vdw	D:GLU:22:O	D:GLY:24:N
+0	vdw	D:ALA:27:CA	D:VAL:23:O
+0	vdw	D:ALA:27:CB	D:VAL:23:O
+0	vdw	D:GLU:22:O	D:GLU:26:CB
+0	vdw	D:GLU:26:CA	D:VAL:23:O
+0	vdw	D:ALA:27:N	D:VAL:23:O
+0	vdw	D:LEU:68:CD2	D:VAL:23:C
+0	vdw	D:GLY:24:N	D:LEU:68:CD2
+0	vdw	D:GLU:26:C	D:LEU:28:N
+0	vdw	D:GLU:26:O	D:LEU:28:N
+0	vdw	D:ASN:102:O	D:LEU:106:CB
+0	vdw	D:ASN:102:N	D:ASP:99:O
+0	vdw	D:ASN:102:N	D:PRO:100:C
+0	vdw	D:ASN:102:CA	D:ASP:99:O
+0	vdw	D:ASN:102:CB	D:ASP:99:O
+0	vdw	D:PHE:103:N	D:PRO:100:C
+0	vdw	D:ARG:104:N	D:ASN:102:C
+0	vdw	D:ARG:104:N	D:ASN:102:O
+0	vdw	D:ASN:102:O	D:LEU:105:N
+0	vdw	D:GLU:101:O	D:PHE:103:N
+0	vdw	D:ASN:102:N	D:PRO:100:O
+0	vdw	D:PHE:103:N	D:PRO:100:O
+0	vdw	D:GLU:101:C	D:PHE:103:N
+0	vdw	D:ASN:102:O	D:LEU:105:CB
+0	vdw	D:ASN:102:O	D:LEU:106:N
+0	vdw	D:ASN:102:O	D:LEU:105:CA
+0	vdw	D:ASP:99:C	D:GLU:101:N
+0	vdw	D:ASP:99:O	D:GLU:101:N
+0	vdw	D:ASP:99:CG	D:GLU:101:N
+0	vdw	D:ASP:99:OD2	D:GLU:101:N
+0	vdw	D:ASN:102:ND2	D:ASP:99:O
+0	vdw	D:ASN:102:ND2	D:ASP:99:CB
+0	vdw	A:TYR:42:OH	D:ASP:99:CB
+0	vdw	A:TYR:42:OH	D:ASP:99:CG
+0	vdw	D:ASP:99:CG	D:GLU:101:CB
+0	vdw	D:ASP:99:OD2	D:GLU:101:CB
+0	vdw	A:PHE:36:O	A:THR:39:N
+0	vdw	A:PHE:36:O	A:THR:39:CB
+0	vdw	A:MET:32:O	A:PHE:36:O
+0	vdw	A:PHE:36:O	A:THR:39:OG1
+0	vdw	A:MET:32:CG	A:THR:39:OG1
+0	vdw	A:MET:32:CE	A:THR:39:OG1
+0	vdw	A:MET:32:O	A:PHE:36:CB
+0	vdw	A:LEU:34:N	A:MET:32:O
+0	vdw	A:MET:32:O	A:PHE:36:N
+0	vdw	A:MET:32:O	A:PHE:36:CA
+0	vdw	A:MET:32:O	A:SER:35:N
+0	vdw	A:GLU:30:C	A:MET:32:N
+0	vdw	A:GLU:30:O	A:MET:32:N
+0	vdw	A:GLU:30:O	A:PHE:33:N
+0	vdw	A:ALA:28:O	A:MET:32:N
+0	vdw	A:LEU:29:C	A:MET:32:N
+0	vdw	A:LEU:29:O	A:MET:32:N
+0	vdw	A:LEU:29:O	A:MET:32:CA
+0	vdw	A:LEU:29:O	A:MET:32:C
+0	vdw	A:LEU:29:O	A:PHE:33:N
+0	vdw	A:ARG:31:C	A:PHE:33:N
+0	vdw	A:CYS:104:SG	A:MET:32:N
+0	vdw	A:CYS:104:SG	A:MET:32:CA
+0	vdw	A:PHE:33:C	A:SER:35:N
+0	vdw	A:GLU:27:O	A:GLU:30:CA
+0	vdw	A:ARG:31:N	A:GLU:27:O
+0	vdw	A:ALA:28:C	A:ARG:31:N
+0	vdw	A:ARG:31:CG	B:PRO:124:CB
+0	vdw	A:ARG:31:CG	B:PRO:124:CG
+0	vdw	D:ARG:30:NE	D:GLU:26:CD
+0	vdw	D:ARG:30:NE	D:GLU:26:OE1
+0	vdw	D:ARG:30:CZ	D:GLU:26:OE1
+0	vdw	D:ARG:30:NH1	D:GLU:26:OE1
+0	vdw	D:ARG:30:N	D:GLU:26:O
+0	vdw	D:ARG:30:CB	D:GLU:26:O
+0	vdw	D:ARG:30:CG	D:GLU:26:O
+0	vdw	D:ALA:27:O	D:LEU:31:N
+0	vdw	D:ALA:27:O	D:LEU:31:CB
+0	vdw	D:ALA:27:O	D:VAL:109:CG1
+0	vdw	D:LEU:105:CB	D:LEU:31:CD1
+0	vdw	D:LEU:105:C	D:LEU:31:CD1
+0	vdw	D:ASN:102:OD1	D:THR:38:CG2
+0	vdw	D:ASN:102:CG	D:ASP:99:O
+0	vdw	A:ASP:94:CB	A:TYR:42:OH
+0	vdw	A:ASN:97:ND2	A:ASP:94:CB
+0	vdw	A:ASP:94:CB	D:ASP:99:OD1
+0	vdw	A:ASN:97:ND2	A:TYR:42:OH
+0	vdw	A:TYR:42:OH	D:ASP:99:OD1
+0	vdw	A:ASN:97:ND2	D:ASP:99:OD1
+0	vdw	A:ASP:94:N	A:TYR:42:OH
+0	vdw	A:ASN:97:ND2	A:ASP:94:O
+0	vdw	A:ASN:97:OD1	A:THR:39:CG2
+0	vdw	A:MET:32:CG	A:THR:39:CG2
+0	vdw	A:MET:32:SD	A:THR:39:CG2
+0	vdw	A:PHE:36:O	A:THR:39:CG2
+0	vdw	A:LEU:101:CA	A:MET:32:SD
+0	vdw	A:LEU:101:CB	A:MET:32:SD
+0	vdw	A:ALA:28:O	A:MET:32:CB
+0	vdw	A:LEU:29:O	A:MET:32:CB
+0	vdw	A:ALA:28:O	A:CYS:104:CB
+0	vdw	A:CYS:104:SG	A:MET:32:CB
+0	vdw	A:ALA:28:O	A:ARG:31:N
+0	vdw	A:ARG:31:N	A:LEU:29:C
+0	vdw	A:ARG:31:N	A:LEU:29:O
+0	vdw	A:ALA:28:O	A:ARG:31:CB
+0	vdw	A:GLU:27:C	A:LEU:29:N
+0	vdw	A:GLU:27:O	A:LEU:29:N
+0	vdw	A:GLU:27:O	A:GLU:30:N
+0	vdw	A:ALA:28:C	A:GLU:30:N
+0	vdw	A:ALA:28:N	A:GLY:25:O
+0	vdw	A:GLY:25:O	A:LEU:29:N
+0	vdw	A:ALA:28:N	A:THR:108:OG1
+0	vdw	A:ALA:28:CA	A:THR:108:OG1
+0	vdw	A:ALA:28:N	A:TYR:24:O
+0	vdw	A:ARG:31:CB	A:GLU:27:O
+0	vdw	A:ARG:31:CG	A:GLU:27:O
+0	vdw	A:GLU:23:O	A:GLU:27:N
+0	vdw	A:GLU:27:N	A:TYR:24:O
+0	vdw	A:GLU:23:O	A:GLU:27:CB
+0	vdw	A:GLU:27:CB	A:TYR:24:O
+0	vdw	A:ARG:31:NE	A:GLU:27:CG
+0	vdw	A:GLU:27:OE2	A:HIS:112:NE2
+0	vdw	A:GLU:27:OE2	A:HIS:112:CD2
+0	vdw	A:GLU:27:OE2	A:HIS:112:CE1
+0	vdw	D:ALA:27:O	D:ARG:30:N
+0	vdw	D:ARG:30:CB	D:VAL:109:CG1
+0	vdw	D:ARG:30:C	D:VAL:33:N
+0	vdw	D:ARG:30:O	D:VAL:33:N
+0	vdw	D:LEU:31:C	D:VAL:33:N
+0	vdw	D:LEU:31:O	D:VAL:33:N
+0	vdw	D:ARG:30:O	D:VAL:33:CA
+0	vdw	D:ARG:30:O	D:VAL:33:CB
+0	vdw	D:ARG:30:O	D:VAL:34:N
+0	vdw	D:ARG:30:O	D:VAL:34:CA
+0	vdw	D:ARG:30:O	D:VAL:34:CB
+0	vdw	D:ARG:30:O	D:VAL:34:CG2
+0	vdw	D:LEU:31:O	D:TYR:35:N
+0	vdw	D:LEU:31:O	D:TYR:35:CA
+0	vdw	D:LEU:31:O	D:TYR:35:C
+0	vdw	D:LEU:31:O	D:TYR:35:O
+0	vdw	D:LEU:31:O	D:TYR:35:CB
+0	vdw	D:THR:38:CG2	D:TYR:35:O
+0	vdw	A:ASP:94:OD1	D:TRP:37:NE1
+0	vdw	A:TYR:140:OH	A:VAL:93:C
+0	vdw	A:TYR:140:OH	A:VAL:93:O
+0	vdw	A:ASP:94:C	A:VAL:96:N
+0	vdw	A:ASP:94:O	A:VAL:96:N
+0	vdw	A:ASN:97:N	A:ASP:94:O
+0	vdw	A:PRO:95:N	A:VAL:93:O
+0	vdw	A:PRO:95:CD	A:VAL:93:O
+0	vdw	A:GLU:27:N	A:GLY:25:C
+0	vdw	A:GLU:27:N	A:GLY:25:O
+0	vdw	A:GLU:23:C	A:GLY:25:N
+0	vdw	A:THR:108:CG2	A:TYR:24:O
+0	vdw	A:HIS:20:O	A:TYR:24:N
+0	vdw	A:ALA:28:CB	A:TYR:24:O
+0	vdw	A:HIS:20:O	A:TYR:24:CD2
+0	vdw	C:PRO:119:CD	D:ARG:30:NH1
+0	vdw	C:ALA:120:N	C:THR:118:C
+0	vdw	C:ALA:120:N	C:THR:118:O
+0	vdw	C:ALA:120:N	C:THR:118:CG2
+0	vdw	D:TYR:35:N	D:VAL:33:C
+0	vdw	D:TYR:35:N	D:VAL:33:O
+0	vdw	D:PRO:36:N	D:VAL:34:C
+0	vdw	D:PRO:36:CD	D:VAL:34:C
+0	vdw	A:ARG:141:CB	D:PRO:36:CG
+0	vdw	D:PRO:36:CD	D:VAL:34:O
+0	vdw	A:TYR:140:O	D:PRO:36:CG
+0	vdw	A:TYR:140:CD1	D:TRP:37:CD2
+0	vdw	A:TYR:140:CD1	D:TRP:37:CE3
+0	vdw	A:TYR:140:CB	D:TRP:37:CE3
+0	vdw	A:LEU:136:O	A:TYR:140:CE2
+0	vdw	A:THR:137:O	A:TYR:140:CG
+0	vdw	A:TYR:140:CE1	A:VAL:93:O
+0	vdw	A:TYR:140:CZ	A:VAL:93:O
+0	vdw	A:THR:137:CA	A:TYR:140:CE2
+0	vdw	A:PHE:98:CE2	A:TYR:140:OH
+0	vdw	A:LEU:136:CD1	A:PHE:98:CE1
+0	vdw	A:HIS:20:O	A:TYR:24:CB
+0	vdw	A:HIS:20:CB	A:TYR:24:CE1
+0	vdw	A:HIS:20:CB	A:TYR:24:CZ
+0	vdw	A:HIS:20:CB	A:VAL:17:O
+0	vdw	A:HIS:20:O	A:TYR:24:CG
+0	vdw	A:HIS:20:CB	A:TYR:24:CE2
+0	vdw	A:HIS:20:CG	A:TYR:24:CZ
+0	vdw	A:HIS:20:CG	A:TYR:24:OH
+0	vdw	A:HIS:20:CD2	A:VAL:17:O
+0	vdw	A:HIS:20:CG	A:TYR:24:CE2
+0	vdw	A:ARG:141:OXT	C:LYS:127:CE
+0	vdw	A:ARG:141:OXT	C:LYS:127:NZ
+0	vdw	A:ARG:141:N	A:LYS:139:O
+0	vdw	A:ARG:141:N	A:LYS:139:C
+0	vdw	A:ARG:141:C	C:LYS:127:CE
+0	vdw	A:ARG:141:C	C:LYS:127:NZ
+0	vdw	A:THR:137:O	A:TYR:140:N
+0	vdw	A:THR:137:O	A:TYR:140:CB
+0	vdw	A:THR:137:C	A:TYR:140:CD2
+0	vdw	A:THR:137:O	A:TYR:140:CD2
+0	vdw	A:THR:137:CA	A:TYR:140:CD2
+0	vdw	A:SER:138:C	A:TYR:140:N
+0	vdw	A:LEU:136:C	A:SER:138:N
+0	vdw	A:LEU:136:CB	A:VAL:132:O
+0	vdw	A:ALA:65:CB	A:VAL:62:O
+0	vdw	A:LEU:66:N	A:VAL:62:O
+0	vdw	A:ALA:63:O	A:LEU:66:N
+0	vdw	A:ALA:65:CA	A:VAL:62:O
+0	vdw	A:ALA:65:C	A:VAL:62:O
+0	vdw	A:LEU:66:CG	A:VAL:62:O
+0	vdw	A:ASP:64:O	A:LEU:66:N
+0	vdw	A:ALA:63:O	A:THR:67:N
+0	vdw	A:ALA:63:O	A:THR:67:CA
+0	vdw	A:ALA:63:O	A:THR:67:CB
+0	vdw	A:ALA:63:O	A:THR:67:OG1
+0	vdw	A:ALA:63:O	A:LEU:66:C
+0	vdw	A:ALA:63:O	A:LEU:66:CB
+0	vdw	A:GLY:18:C	A:HIS:20:N
+0	vdw	A:ALA:19:N	A:VAL:17:C
+0	vdw	A:ALA:19:N	A:VAL:17:O
+0	vdw	A:HIS:20:N	A:VAL:17:C
+0	vdw	A:HIS:20:N	A:VAL:17:O
+0	vdw	A:LYS:139:CD	A:SER:84:CB
+0	vdw	A:LYS:139:N	A:THR:137:C
+0	vdw	A:LYS:139:N	A:THR:137:O
+0	vdw	A:LEU:80:O	A:SER:84:OG
+0	vdw	A:SER:84:CB	A:VAL:135:O
+0	vdw	A:SER:81:CA	A:SER:84:OG
+0	vdw	A:LEU:80:CB	A:VAL:135:CG1
+0	vdw	A:LEU:80:CB	A:MET:76:O
+0	vdw	A:ALA:65:C	A:THR:67:N
+0	vdw	A:ALA:65:C	A:ASN:68:N
+0	vdw	A:ALA:65:O	A:THR:67:N
+0	vdw	A:ALA:65:O	A:ASN:68:N
+0	vdw	A:ALA:65:O	A:ASN:68:CA
+0	vdw	A:ALA:65:O	A:ASN:68:C
+0	vdw	A:ALA:65:O	A:ASN:68:CB
+0	vdw	A:ALA:65:O	A:ALA:69:N
+0	vdw	A:ALA:63:O	A:LEU:66:CA
+0	vdw	A:ASP:64:O	A:THR:67:N
+0	vdw	A:ASP:64:O	A:THR:67:CA
+0	vdw	A:ASP:64:O	A:THR:67:C
+0	vdw	A:ASP:64:O	A:THR:67:CB
+0	vdw	A:ASN:68:N	A:ASP:64:O
+0	vdw	A:ASN:68:N	A:LEU:66:C
+0	vdw	A:THR:67:CA	A:TRP:14:NE1
+0	vdw	A:THR:67:CB	A:TRP:14:NE1
+0	vdw	A:THR:67:OG1	A:TRP:14:NE1
+0	vdw	A:ASN:68:N	A:LEU:66:O
+0	vdw	A:THR:67:OG1	A:TRP:14:CE2
+0	vdw	A:ALA:69:N	A:THR:67:C
+0	vdw	A:PRO:77:O	A:SER:81:N
+0	vdw	A:PRO:77:O	A:SER:81:CA
+0	vdw	A:ALA:79:C	A:SER:81:N
+0	vdw	A:ASN:78:O	A:SER:81:N
+0	vdw	A:LEU:80:CA	A:MET:76:O
+0	vdw	A:ALA:79:O	A:ASN:68:ND2
+0	vdw	A:ALA:79:CB	A:ASP:75:O
+0	vdw	A:LEU:80:N	A:MET:76:O
+0	vdw	A:ALA:79:CB	A:HIS:72:CB
+0	vdw	A:ASN:68:OD1	A:HIS:72:CD2
+0	vdw	A:ASN:68:C	A:VAL:70:N
+0	vdw	A:ASN:68:CB	A:ASP:64:O
+0	vdw	A:ASN:78:CA	A:ASP:75:O
+0	vdw	A:ASN:78:C	A:ASP:75:O
+0	vdw	A:ASN:78:C	A:LEU:80:N
+0	vdw	A:ASN:78:O	A:LEU:80:N
+0	vdw	A:ALA:79:N	A:ASP:75:O
+0	vdw	A:ALA:79:CA	A:ASP:75:O
+0	vdw	A:ALA:79:N	A:MET:76:C
+0	vdw	A:ALA:79:N	A:MET:76:O
+0	vdw	A:ALA:79:N	A:PRO:77:C
+0	vdw	A:ALA:79:CA	A:MET:76:O
+0	vdw	A:ASN:68:O	A:HIS:72:CD2
+0	vdw	D:GLY:74:O	D:HIS:77:CA
+0	vdw	D:HIS:77:N	D:LEU:75:C
+0	vdw	D:HIS:77:N	D:LEU:75:O
+0	vdw	D:ALA:76:N	D:GLY:74:C
+0	vdw	D:ALA:76:N	D:GLY:74:O
+0	vdw	D:GLY:74:C	D:HIS:77:N
+0	vdw	D:GLY:74:O	D:HIS:77:N
+0	vdw	D:GLY:74:O	D:HIS:77:C
+0	vdw	D:GLY:74:O	D:LEU:81:CD2
+0	vdw	D:GLY:74:O	D:LEU:78:N
+0	vdw	D:ASP:79:N	D:HIS:77:C
+0	vdw	D:ASN:80:N	D:HIS:77:C
+0	vdw	D:ASN:80:C	D:HIS:77:O
+0	vdw	D:HIS:77:O	D:LEU:81:N
+0	vdw	D:HIS:77:O	D:LEU:81:CD2
+0	vdw	D:ASN:80:C	D:LYS:82:N
+0	vdw	D:ASN:80:CA	D:HIS:77:O
+0	vdw	D:ASP:79:N	D:HIS:77:O
+0	vdw	D:ASN:80:N	D:HIS:77:O
+0	vdw	D:ASN:80:O	D:LYS:82:N
+0	vdw	D:ALA:140:CB	D:LEU:81:C
+0	vdw	D:ALA:140:CB	D:LEU:81:O
+0	vdw	D:HIS:143:ND1	D:LYS:82:CD
+0	vdw	D:HIS:143:CE1	D:LYS:82:CD
+0	vdw	D:HIS:143:NE2	D:LYS:82:CD
+0	vdw	D:HIS:143:CG	D:LYS:82:CD
+0	vdw	D:HIS:143:CD2	D:LYS:82:CD
+0	vdw	B:GLU:7:OE2	B:THR:4:N
+0	vdw	B:GLU:6:N	B:THR:4:C
+0	vdw	B:GLU:7:N	B:THR:4:C
+0	vdw	B:GLU:6:N	B:THR:4:OG1
+0	vdw	B:GLU:7:N	B:THR:4:OG1
+0	vdw	B:GLU:7:N	B:PRO:5:C
+0	vdw	B:GLU:7:CB	B:THR:4:OG1
+0	vdw	B:GLU:7:CG	B:THR:4:OG1
+0	vdw	B:GLU:6:N	B:THR:4:O
+0	vdw	B:GLU:7:N	B:THR:4:O
+0	vdw	B:GLU:7:N	B:PRO:5:O
+0	vdw	B:GLU:6:C	B:LYS:8:N
+0	vdw	D:LYS:17:N	D:TRP:15:C
+0	vdw	D:GLY:16:C	D:VAL:18:N
+0	vdw	D:GLY:16:N	D:THR:12:O
+0	vdw	D:ALA:13:O	D:GLY:16:N
+0	vdw	D:GLY:16:N	D:LEU:14:C
+0	vdw	D:GLY:16:N	D:LEU:14:O
+0	vdw	D:TRP:15:CB	D:VAL:11:O
+0	vdw	D:TRP:15:CB	D:TYR:130:OH
+0	vdw	D:LEU:75:CD2	D:PHE:71:CE2
+0	vdw	D:LEU:75:CD1	D:VAL:133:CG1
+0	vdw	D:ALA:140:N	D:GLY:136:O
+0	vdw	D:ALA:140:CA	D:GLY:136:O
+0	vdw	D:ALA:140:CB	D:GLY:136:O
+0	vdw	D:ALA:138:N	D:GLY:136:O
+0	vdw	D:ASN:139:N	D:GLY:136:O
+0	vdw	D:ALA:140:N	D:VAL:137:O
+0	vdw	D:ALA:138:C	D:ALA:140:N
+0	vdw	D:ALA:138:O	D:ALA:140:N
+0	vdw	D:ALA:140:CA	D:VAL:137:O
+0	vdw	D:ALA:140:CB	D:VAL:137:O
+0	vdw	D:ASN:139:CB	D:GLY:136:O
+0	vdw	D:ASN:139:O	D:HIS:143:CB
+0	vdw	B:GLU:7:OE1	B:LYS:132:NZ
+0	vdw	B:GLU:7:OE2	B:LYS:132:NZ
+0	vdw	B:GLU:7:OE2	B:LEU:3:CD2
+0	vdw	B:GLU:7:CD	B:THR:4:OG1
+0	vdw	B:GLU:7:OE2	B:THR:4:OG1
+0	vdw	B:GLU:7:OE2	B:LEU:3:CA
+0	vdw	B:GLU:7:CB	B:THR:4:O
+0	vdw	B:ALA:10:N	B:GLU:6:O
+0	vdw	B:ALA:10:CA	B:GLU:6:O
+0	vdw	B:ALA:10:CB	B:GLU:6:O
+0	vdw	B:GLU:6:O	B:SER:9:N
+0	vdw	B:GLU:6:O	B:SER:9:OG
+0	vdw	D:LEU:14:O	D:LYS:17:CA
+0	vdw	D:LYS:17:N	D:TRP:15:O
+0	vdw	D:TRP:15:O	D:VAL:18:N
+0	vdw	D:TRP:15:O	D:VAL:18:CB
+0	vdw	D:LEU:14:O	D:LYS:17:N
+0	vdw	D:TRP:15:CE3	D:VAL:18:CG2
+0	vdw	D:TRP:15:CE3	D:TYR:130:OH
+0	vdw	D:TRP:15:CA	D:VAL:18:CG2
+0	vdw	D:TRP:15:CE3	D:TYR:130:CE1
+0	vdw	D:LEU:75:CD2	D:TRP:15:CD2
+0	vdw	D:LEU:75:CD2	D:TRP:15:CE2
+0	vdw	D:LEU:14:O	D:VAL:18:CG2
+0	vdw	D:PHE:118:CE1	D:VAL:18:CG2
+0	vdw	D:PHE:71:CD2	D:TRP:15:CZ2
+0	vdw	D:PHE:71:CD2	D:TRP:15:CH2
+0	vdw	D:PHE:71:CE2	D:TRP:15:CH2
+0	vdw	D:PHE:71:CD1	D:VAL:137:CG1
+0	vdw	D:PHE:71:CE1	D:VAL:137:CG2
+0	vdw	D:VAL:134:O	D:VAL:137:CA
+0	vdw	D:VAL:133:O	D:VAL:137:CG2
+0	vdw	D:ASN:139:N	D:VAL:137:C
+0	vdw	D:ASN:139:N	D:VAL:137:O
+0	vdw	D:ALA:138:O	D:ALA:142:CB
+0	vdw	D:ALA:135:O	D:ALA:138:N
+0	vdw	D:ALA:138:N	D:GLY:136:C
+0	vdw	D:ALA:135:O	D:ASN:139:N
+0	vdw	D:ALA:138:N	D:VAL:134:O
+0	vdw	D:ALA:135:O	D:ASN:139:CA
+0	vdw	B:ALA:129:N	B:PRO:125:O
+0	vdw	B:GLN:127:N	B:PRO:125:C
+0	vdw	B:ALA:128:N	B:PRO:125:O
+0	vdw	B:THR:123:O	B:VAL:126:N
+0	vdw	B:THR:123:OG1	B:VAL:126:N
+0	vdw	D:LEU:106:N	D:PHE:103:O
+0	vdw	D:GLY:107:N	D:PHE:103:O
+0	vdw	D:ALA:138:CB	D:VAL:134:O
+0	vdw	A:SER:35:CA	B:ALA:128:CB
+0	vdw	A:SER:35:OG	B:ALA:128:CA
+0	vdw	B:ALA:128:CB	B:PRO:124:O
+0	vdw	A:ARG:31:O	A:SER:35:N
+0	vdw	A:ARG:31:O	A:SER:35:CA
+0	vdw	A:ARG:31:O	A:SER:35:OG
+0	vdw	B:ALA:128:CA	B:PRO:125:O
+0	vdw	B:ALA:128:CB	B:PRO:125:O
+0	vdw	A:SER:35:OG	B:GLN:127:CG
+0	vdw	A:SER:35:OG	B:GLN:127:CD
+0	vdw	B:GLN:127:N	B:PRO:124:O
+0	vdw	B:GLN:127:CA	B:PRO:124:O
+0	vdw	B:GLN:127:CB	B:PRO:124:O
+0	vdw	B:ALA:128:N	B:PRO:124:O
+0	vdw	B:PRO:124:C	B:VAL:126:N
+0	vdw	B:PRO:124:O	B:VAL:126:N
+0	vdw	B:PRO:125:N	B:THR:123:C
+0	vdw	B:PRO:125:N	B:THR:123:O
+0	vdw	A:ARG:31:NH1	B:THR:123:C
+0	vdw	A:ARG:31:NH1	B:PRO:124:N
+0	vdw	A:ARG:31:NH1	B:PRO:124:CA
+0	vdw	B:THR:123:N	B:VAL:126:CB
+0	vdw	B:THR:123:O	B:VAL:126:CB
+0	vdw	B:THR:123:OG1	B:VAL:126:CB
+0	vdw	B:GLU:121:C	B:THR:123:N
+0	vdw	B:GLU:121:O	B:THR:123:N
+0	vdw	B:THR:123:O	B:VAL:126:C
+0	vdw	B:GLN:127:N	B:THR:123:O
+0	vdw	B:GLN:127:CB	B:THR:123:O
+0	vdw	B:THR:123:O	B:VAL:126:CA
+0	vdw	B:THR:123:OG1	B:VAL:126:CG2
+0	vdw	B:LYS:120:O	B:THR:123:CG2
+0	vdw	D:HIS:117:CB	D:VAL:113:O
+0	vdw	D:LEU:110:O	D:VAL:113:CB
+0	vdw	D:LEU:106:O	D:LEU:110:CA
+0	vdw	D:GLY:107:O	D:LEU:110:CA
+0	vdw	D:LEU:106:O	D:VAL:109:C
+0	vdw	D:LEU:106:O	D:LEU:110:N
+0	vdw	D:LEU:106:O	D:LEU:110:CB
+0	vdw	D:LEU:106:O	D:VAL:109:N
+0	vdw	D:LEU:106:O	D:VAL:109:CA
+0	vdw	D:LEU:106:O	D:VAL:109:CB
+0	vdw	D:GLY:107:O	D:LEU:110:N
+0	vdw	D:ASN:108:C	D:LEU:110:N
+0	vdw	D:GLY:107:O	D:LEU:110:CB
+0	vdw	D:ASN:108:N	D:LEU:106:O
+0	vdw	D:ASN:108:O	D:LEU:110:N
+0	vdw	D:VAL:109:C	D:VAL:111:N
+0	vdw	D:CYS:112:N	D:VAL:109:C
+0	vdw	D:GLY:107:N	D:LEU:105:C
+0	vdw	D:ARG:104:C	D:LEU:106:N
+0	vdw	D:ARG:104:C	D:GLY:107:N
+0	vdw	D:GLY:107:N	D:LEU:105:O
+0	vdw	D:ARG:104:O	D:LEU:106:N
+0	vdw	D:ASN:108:N	D:LEU:106:C
+0	vdw	D:ARG:104:O	D:GLY:107:N
+0	vdw	D:ARG:104:O	D:GLY:107:CA
+0	vdw	D:GLY:107:CA	D:VAL:134:CB
+0	vdw	D:ARG:104:N	D:GLU:101:O
+0	vdw	D:ARG:104:CA	D:GLU:101:O
+0	vdw	D:GLU:101:O	D:LEU:105:N
+0	vdw	D:LEU:105:N	D:PHE:103:C
+0	vdw	D:ARG:104:CB	D:GLU:101:O
+0	vdw	A:CYS:104:SG	A:PHE:36:CD1
+0	vdw	A:LEU:100:CD2	A:PHE:36:CD2
+0	vdw	A:ARG:31:O	A:SER:35:CB
+0	vdw	A:ARG:31:C	A:CYS:104:SG
+0	vdw	A:ARG:31:CB	B:GLN:127:OE1
+0	vdw	A:ARG:31:CG	B:GLN:127:OE1
+0	vdw	A:ARG:31:CZ	B:GLN:127:OE1
+0	vdw	A:ARG:31:NH1	B:GLN:127:OE1
+0	vdw	A:ARG:31:CD	B:GLN:127:OE1
+0	vdw	A:VAL:107:CG1	B:GLN:127:OE1
+0	vdw	A:ARG:31:CZ	A:GLU:27:OE1
+0	vdw	A:ARG:31:NH2	A:GLU:27:OE1
+0	vdw	A:ARG:31:CZ	B:PHE:122:O
+0	vdw	A:ARG:31:NH1	B:PHE:122:O
+0	vdw	A:ARG:31:NH2	B:PHE:122:O
+0	vdw	A:ARG:31:NH1	B:GLN:127:CB
+0	vdw	B:LYS:120:O	B:PHE:122:N
+0	vdw	D:LEU:110:O	D:VAL:113:CA
+0	vdw	D:VAL:109:O	D:VAL:113:CG2
+0	vdw	D:ARG:30:CD	D:VAL:113:CG2
+0	vdw	D:CYS:112:N	D:VAL:109:O
+0	vdw	D:CYS:112:CA	D:VAL:109:O
+0	vdw	D:CYS:112:CB	D:VAL:109:O
+0	vdw	D:VAL:109:O	D:VAL:113:N
+0	vdw	D:VAL:109:O	D:VAL:111:N
+0	vdw	D:LEU:105:O	D:VAL:109:N
+0	vdw	D:LEU:105:O	D:VAL:109:CB
+0	vdw	D:LEU:105:O	D:VAL:109:CG2
+0	vdw	D:TYR:35:CE2	D:VAL:109:CG2
+0	vdw	D:GLY:107:C	D:VAL:109:N
+0	vdw	D:GLY:107:O	D:VAL:109:N
+0	vdw	D:ASN:108:N	D:LEU:105:O
+0	vdw	D:ASN:108:CA	D:LEU:105:O
+0	vdw	A:ASP:94:OD1	D:LEU:105:CD1
+0	vdw	A:ASP:94:CG	D:GLU:101:CG
+0	vdw	A:ASP:94:OD1	D:GLU:101:CG
+0	vdw	A:ASP:94:OD2	D:GLU:101:CG
+0	vdw	A:ASP:94:OD2	A:VAL:96:CB
+0	vdw	A:ASP:94:OD2	A:VAL:96:CG1
+0	vdw	A:ASP:94:OD2	A:VAL:96:N
+0	vdw	A:PHE:98:N	A:VAL:96:C
+0	vdw	A:LEU:100:CG	A:VAL:96:O
+0	vdw	A:PHE:98:N	A:VAL:96:O
+0	vdw	A:LYS:99:N	A:VAL:96:O
+0	vdw	A:LYS:99:CB	A:VAL:96:O
+0	vdw	A:CYS:104:SG	A:LEU:100:O
+0	vdw	A:LEU:100:C	A:SER:102:N
+0	vdw	A:LEU:100:O	A:SER:102:N
+0	vdw	A:HIS:103:CA	A:LEU:100:O
+0	vdw	A:CYS:104:N	A:LEU:100:O
+0	vdw	A:HIS:103:N	A:LEU:100:O
+0	vdw	A:CYS:104:CA	A:LEU:101:O
+0	vdw	A:CYS:104:SG	A:PHE:36:CE1
+0	vdw	A:ARG:31:CD	A:THR:108:OG1
+0	vdw	A:CYS:104:O	A:THR:108:OG1
+0	vdw	A:ALA:28:CB	A:THR:108:OG1
+0	vdw	A:CYS:104:O	A:VAL:107:CB
+0	vdw	A:CYS:104:O	A:THR:108:N
+0	vdw	A:CYS:104:O	A:THR:108:CB
+0	vdw	A:CYS:104:O	A:VAL:107:N
+0	vdw	A:ARG:31:NE	A:GLU:27:OE1
+0	vdw	A:GLU:27:CD	A:HIS:112:NE2
+0	vdw	A:GLU:27:OE1	A:HIS:112:NE2
+0	vdw	A:GLU:27:CD	A:THR:108:CG2
+0	vdw	A:GLU:27:OE1	A:THR:108:CG2
+0	vdw	D:ARG:30:NH1	D:HIS:116:CE1
+0	vdw	C:PHE:117:O	D:ARG:30:CZ
+0	vdw	C:PHE:117:O	D:ARG:30:NH1
+0	vdw	C:PHE:117:O	D:ARG:30:NH2
+0	vdw	C:HIS:122:CG	D:ARG:30:NH2
+0	vdw	C:HIS:122:ND1	D:ARG:30:NH2
+0	vdw	C:THR:118:C	D:ARG:30:NH2
+0	vdw	C:THR:118:O	D:ARG:30:NH2
+0	vdw	C:PHE:117:CD2	D:ARG:30:NH2
+0	vdw	C:HIS:122:CB	D:ARG:30:NH2
+0	vdw	C:PHE:117:CE2	D:ARG:30:NH2
+0	vdw	C:HIS:122:CG	D:VAL:34:CG2
+0	vdw	C:HIS:122:CG	C:PHE:117:CE2
+0	vdw	C:HIS:122:CG	C:PHE:117:CZ
+0	vdw	C:HIS:122:ND1	C:PHE:117:CE2
+0	vdw	C:ALA:123:CA	D:VAL:34:CG2
+0	vdw	A:ARG:141:NH1	D:VAL:34:CG1
+0	vdw	C:HIS:122:CD2	D:VAL:34:CG2
+0	vdw	D:TRP:37:CZ2	D:TYR:35:CD1
+0	vdw	A:ARG:141:NH1	D:TYR:35:CE1
+0	vdw	D:TRP:37:CH2	D:TYR:35:CD1
+0	vdw	C:ASP:126:OD2	D:TYR:35:CE1
+0	vdw	A:ASN:97:N	A:PRO:95:C
+0	vdw	A:ASN:97:N	A:PRO:95:O
+0	vdw	A:PHE:98:N	A:PRO:95:O
+0	vdw	A:PHE:98:CD2	A:PRO:95:CA
+0	vdw	A:PHE:98:CD2	A:PRO:95:O
+0	vdw	A:ASN:97:O	A:LEU:101:N
+0	vdw	A:ASN:97:C	A:LYS:99:N
+0	vdw	A:ASN:97:O	A:LYS:99:N
+0	vdw	A:ASN:97:O	A:LEU:100:CA
+0	vdw	A:ASN:97:O	A:LEU:100:CB
+0	vdw	A:ASN:97:O	A:LEU:100:N
+0	vdw	A:LEU:100:N	A:PHE:98:C
+0	vdw	A:LEU:101:N	A:PHE:98:O
+0	vdw	A:PHE:98:O	A:SER:102:N
+0	vdw	A:PHE:98:O	A:SER:102:CA
+0	vdw	A:PHE:98:O	A:SER:102:CB
+0	vdw	A:HIS:103:N	A:LEU:101:C
+0	vdw	A:LYS:99:O	A:SER:102:N
+0	vdw	A:PHE:98:O	A:SER:102:OG
+0	vdw	A:LEU:101:N	A:LYS:99:C
+0	vdw	A:LEU:100:N	A:PHE:98:O
+0	vdw	A:CYS:104:C	A:LEU:101:O
+0	vdw	A:LEU:101:O	A:LEU:105:N
+0	vdw	A:LEU:101:O	A:LEU:105:CB
+0	vdw	A:ALA:28:CB	A:LEU:105:CG
+0	vdw	A:LEU:105:N	A:SER:102:C
+0	vdw	A:LEU:105:N	A:SER:102:O
+0	vdw	A:LEU:105:CB	A:SER:102:O
+0	vdw	A:CYS:104:C	A:LEU:106:N
+0	vdw	A:HIS:103:N	A:LEU:101:O
+0	vdw	A:CYS:104:N	A:LEU:101:O
+0	vdw	A:HIS:103:C	A:LEU:105:N
+0	vdw	A:HIS:103:O	A:LEU:105:N
+0	vdw	A:ALA:28:CB	A:LEU:105:CA
+0	vdw	A:ALA:28:CB	A:LEU:105:CD2
+0	vdw	A:LEU:105:O	A:THR:108:CB
+0	vdw	A:HIS:112:CG	A:TYR:24:CE2
+0	vdw	A:HIS:112:ND1	A:TYR:24:CE2
+0	vdw	A:HIS:112:CD2	A:TYR:24:CE2
+0	vdw	A:HIS:112:CE1	A:TYR:24:CE2
+0	vdw	A:HIS:112:CG	A:TYR:24:CZ
+0	vdw	A:HIS:112:CG	A:TYR:24:OH
+0	vdw	A:HIS:112:ND1	A:TYR:24:CZ
+0	vdw	A:HIS:112:ND1	A:TYR:24:OH
+0	vdw	A:HIS:112:CG	A:THR:108:O
+0	vdw	A:HIS:112:CD2	A:THR:108:O
+0	vdw	C:HIS:122:N	C:THR:118:O
+0	vdw	C:HIS:122:CB	C:THR:118:O
+0	vdw	C:THR:118:O	C:VAL:121:N
+0	vdw	C:THR:118:O	C:VAL:121:CA
+0	vdw	C:HIS:122:CA	C:THR:118:O
+0	vdw	C:GLU:116:C	C:THR:118:N
+0	vdw	C:GLU:116:O	C:THR:118:N
+0	vdw	C:HIS:122:N	C:PRO:119:C
+0	vdw	C:HIS:122:N	C:PRO:119:O
+0	vdw	C:HIS:122:CB	C:PRO:119:O
+0	vdw	C:ALA:123:N	C:PRO:119:O
+0	vdw	C:ALA:123:CB	C:PRO:119:O
+0	vdw	C:PRO:119:C	C:VAL:121:N
+0	vdw	C:PRO:119:O	C:VAL:121:N
+0	vdw	C:ALA:120:C	C:HIS:122:N
+0	vdw	C:ALA:120:C	C:ALA:123:N
+0	vdw	C:ALA:120:O	C:ALA:123:N
+0	vdw	C:HIS:122:CA	C:PRO:119:O
+0	vdw	C:ALA:123:N	C:VAL:121:C
+0	vdw	C:ALA:123:N	C:VAL:121:O
+0	vdw	C:HIS:122:CB	C:PHE:117:CZ
+0	vdw	A:ARG:141:CD	D:VAL:34:O
+0	vdw	A:ARG:141:NH1	D:VAL:34:O
+0	vdw	A:ARG:141:CZ	C:LYS:127:CG
+0	vdw	A:ARG:141:CZ	C:ASP:126:OD2
+0	vdw	A:ARG:141:NH1	C:ASP:126:CG
+0	vdw	A:ARG:141:NH1	C:ASP:126:OD2
+0	vdw	A:PHE:98:CB	A:SER:133:CB
+0	vdw	A:PHE:98:CB	A:SER:133:OG
+0	vdw	A:LEU:105:CD1	A:LEU:66:CD1
+0	vdw	A:HIS:112:CB	A:TYR:24:CE1
+0	vdw	A:HIS:112:CB	A:TYR:24:CZ
+0	vdw	A:HIS:112:CB	A:TYR:24:OH
+0	vdw	C:THR:118:CG2	C:VAL:121:CG2
+0	vdw	C:THR:118:CG2	C:VAL:121:N
+0	vdw	C:THR:118:CG2	C:VAL:121:CB
+0	vdw	C:ASN:9:CG	C:VAL:121:CG2
+0	vdw	C:GLU:116:O	C:VAL:121:CG2
+0	vdw	C:ALA:120:O	C:SER:124:N
+0	vdw	C:ALA:120:O	C:SER:124:OG
+0	vdw	C:ALA:120:O	C:SER:124:CB
+0	vdw	C:ALA:120:O	C:ALA:123:CB
+0	vdw	C:ALA:123:C	C:LEU:125:N
+0	vdw	C:SER:124:N	C:VAL:121:O
+0	vdw	C:HIS:122:O	C:SER:124:N
+0	vdw	C:HIS:122:C	C:SER:124:N
+0	vdw	C:ALA:123:O	C:LYS:127:CG
+0	vdw	A:SER:133:O	A:THR:137:N
+0	vdw	A:SER:133:O	A:THR:137:CB
+0	vdw	A:SER:133:O	A:THR:137:CG2
+0	vdw	A:THR:134:O	A:THR:137:N
+0	vdw	A:THR:134:O	A:THR:137:CG2
+0	vdw	A:SER:138:N	A:THR:134:O
+0	vdw	A:LEU:136:N	A:SER:133:O
+0	vdw	A:LEU:136:N	A:THR:134:O
+0	vdw	A:SER:133:C	A:THR:137:CG2
+0	vdw	A:THR:137:N	A:VAL:135:C
+0	vdw	A:THR:137:N	A:VAL:135:O
+0	vdw	A:SER:138:N	A:VAL:135:O
+0	vdw	A:THR:134:CA	A:THR:137:CG2
+0	vdw	A:THR:134:C	A:THR:137:CG2
+0	vdw	A:SER:133:O	A:VAL:135:N
+0	vdw	A:LEU:136:N	A:VAL:132:O
+0	vdw	A:VAL:132:O	A:VAL:135:N
+0	vdw	A:VAL:132:O	A:VAL:135:CB
+0	vdw	A:SER:133:C	A:VAL:135:N
+0	vdw	A:THR:134:N	A:VAL:132:C
+0	vdw	A:THR:134:N	A:VAL:132:O
+0	vdw	A:ALA:130:O	A:SER:133:N
+0	vdw	A:SER:131:C	A:SER:133:N
+0	vdw	A:ALA:130:O	A:SER:133:CA
+0	vdw	A:ALA:130:O	A:SER:133:C
+0	vdw	A:LEU:129:O	A:SER:133:N
+0	vdw	A:SER:131:O	A:SER:133:N
+0	vdw	A:LEU:136:N	A:THR:134:C
+0	vdw	A:PHE:128:O	A:VAL:132:CG2
+0	vdw	A:MET:76:SD	A:VAL:132:CG2
+0	vdw	A:PHE:128:CE1	A:VAL:132:CG2
+0	vdw	A:PHE:128:CZ	A:VAL:132:CG2
+0	vdw	A:ALA:13:O	A:VAL:17:CG2
+0	vdw	A:LEU:109:CD2	A:VAL:17:CG2
+0	vdw	A:GLY:18:N	A:LYS:16:C
+0	vdw	A:GLY:18:N	A:LYS:16:O
+0	vdw	A:TRP:14:O	A:VAL:17:N
+0	vdw	A:GLY:15:O	A:VAL:17:N
+0	vdw	A:TRP:14:O	A:VAL:17:CA
+0	vdw	A:TRP:14:O	A:VAL:17:CB
+0	vdw	A:GLY:18:N	A:TRP:14:O
+0	vdw	A:GLY:15:O	A:GLY:18:N
+0	vdw	A:ALA:13:O	A:VAL:17:N
+0	vdw	A:GLY:15:C	A:VAL:17:N
+0	vdw	A:TRP:14:C	A:VAL:17:N
+0	vdw	C:ASN:9:CG	C:SER:124:OG
+0	vdw	C:ASN:9:ND2	C:SER:124:OG
+0	vdw	C:ASP:6:CA	C:SER:124:OG
+0	vdw	C:ASP:6:CG	C:SER:124:OG
+0	vdw	C:ASP:6:OD1	C:SER:124:OG
+0	vdw	C:ALA:5:O	C:ASN:9:CG
+0	vdw	C:ALA:5:O	C:ASN:9:ND2
+0	vdw	C:ASN:9:CB	C:SER:124:OG
+0	vdw	C:ASP:6:OD2	C:LYS:127:CE
+0	vdw	C:ASP:6:OD2	C:LYS:127:NZ
+0	vdw	C:ASP:6:CA	C:SER:3:O
+0	vdw	C:ASP:6:CG	C:SER:3:OG
+0	vdw	C:ASP:6:OD2	C:SER:3:OG
+0	vdw	C:ASP:6:CG	C:SER:3:N
+0	vdw	C:ASP:6:OD2	C:SER:3:N
+0	vdw	C:ASP:6:OD1	C:SER:124:CA
+0	vdw	C:ASP:6:OD1	C:SER:124:CB
+0	vdw	A:ARG:141:O	C:LYS:127:NZ
+0	vdw	A:SER:138:OG	A:VAL:135:O
+0	vdw	A:SER:138:CA	A:THR:134:O
+0	vdw	A:SER:138:OG	A:THR:134:O
+0	vdw	A:SER:138:CB	A:VAL:135:O
+0	vdw	A:VAL:132:O	A:VAL:135:CA
+0	vdw	A:VAL:132:O	A:VAL:135:C
+0	vdw	A:SER:131:O	A:VAL:135:N
+0	vdw	A:SER:131:O	A:VAL:135:CB
+0	vdw	A:SER:131:O	A:VAL:135:CG2
+0	vdw	A:ALA:69:CB	A:LEU:66:O
+0	vdw	A:LEU:66:O	A:VAL:70:CB
+0	vdw	A:ALA:69:N	A:LEU:66:O
+0	vdw	A:ALA:69:CA	A:LEU:66:O
+0	vdw	A:ALA:69:C	A:LEU:66:O
+0	vdw	A:LEU:66:O	A:VAL:70:N
+0	vdw	A:LEU:66:O	A:VAL:70:CG2
+0	vdw	A:THR:67:O	A:VAL:70:CB
+0	vdw	A:GLY:15:O	A:GLY:18:CA
+0	vdw	A:LYS:16:N	A:TRP:14:O
+0	vdw	C:ASP:6:N	C:PRO:4:C
+0	vdw	C:ASP:6:N	C:PRO:4:O
+0	vdw	C:ALA:5:N	C:SER:3:C
+0	vdw	C:ALA:5:N	C:SER:3:O
+0	vdw	C:ALA:5:N	C:SER:3:OG
+0	vdw	C:ALA:5:C	C:SER:3:O
+0	vdw	C:LYS:7:CA	C:PRO:4:O
+0	vdw	C:PRO:4:O	C:THR:8:N
+0	vdw	C:PRO:4:O	C:THR:8:OG1
+0	vdw	C:ALA:5:C	C:THR:8:N
+0	vdw	C:ALA:5:O	C:THR:8:N
+0	vdw	C:ALA:5:O	C:THR:8:CA
+0	vdw	C:LYS:7:N	C:PRO:4:C
+0	vdw	C:LYS:7:N	C:PRO:4:O
+0	vdw	C:LYS:7:CB	C:PRO:4:O
+0	vdw	C:ALA:5:C	C:LYS:7:N
+0	vdw	C:ALA:5:O	C:LYS:7:N
+0	vdw	C:PRO:4:O	C:THR:8:CB
+0	vdw	C:ALA:5:O	C:THR:8:CB
+0	vdw	C:ALA:5:O	C:ASN:9:N
+0	vdw	C:ALA:5:O	C:ASN:9:CB
+0	vdw	C:ASP:6:N	C:SER:3:C
+0	vdw	C:ASP:6:N	C:SER:3:O
+0	vdw	C:ASP:6:N	C:SER:3:OG
+0	vdw	C:LYS:7:N	C:SER:3:O
+0	vdw	C:LYS:7:CG	C:SER:3:O
+0	vdw	C:ASP:6:CB	C:SER:3:O
+0	vdw	C:ASP:6:CB	C:SER:3:OG
+0	vdw	C:ASP:6:C	C:SER:3:O
+0	vdw	C:ASP:6:CB	C:SER:3:N
+0	vdw	A:ASN:78:N	A:MET:76:C
+0	vdw	A:ASN:78:N	A:MET:76:O
+0	vdw	A:ASP:75:C	A:PRO:77:N
+0	vdw	A:ASP:75:O	A:PRO:77:N
+0	vdw	A:ASP:75:C	A:PRO:77:CD
+0	vdw	A:HIS:72:O	A:MET:76:N
+0	vdw	A:ASP:74:C	A:MET:76:N
+0	vdw	A:ASN:68:O	A:VAL:70:N
+0	vdw	A:ALA:71:N	A:ASN:68:O
+0	vdw	A:ALA:71:CA	A:ASN:68:O
+0	vdw	A:ALA:71:CB	A:ASN:68:O
+0	vdw	A:ALA:69:N	A:THR:67:O
+0	vdw	A:ALA:69:C	A:ALA:71:N
+0	vdw	A:ALA:69:O	A:ALA:71:N
+0	vdw	A:THR:67:O	A:VAL:70:N
+0	vdw	A:ASN:68:O	A:HIS:72:N
+0	vdw	A:ASN:68:O	A:HIS:72:CB
+0	vdw	A:ASN:68:O	A:HIS:72:CG
+0	vdw	A:ALA:69:C	A:HIS:72:N
+0	vdw	A:ALA:69:O	A:HIS:72:N
+0	vdw	A:ALA:69:O	A:HIS:72:CA
+0	vdw	A:ALA:69:O	A:HIS:72:C
+0	vdw	A:ALA:69:O	A:VAL:73:N
+0	vdw	A:ALA:69:O	A:VAL:73:CA
+0	vdw	A:ALA:71:C	A:ASN:68:O
+0	vdw	A:ALA:69:N	A:LEU:66:C
+0	vdw	A:THR:67:O	A:VAL:70:CA
+0	vdw	A:THR:67:O	A:VAL:70:C
+0	vdw	A:ALA:71:N	A:THR:67:O
+0	vdw	A:ALA:71:CB	A:THR:67:O
+0	vdw	A:ASN:78:N	A:ASP:75:O
+0	vdw	A:ASP:75:C	A:HIS:72:O
+0	vdw	A:ASP:74:C	A:HIS:72:O
+0	vdw	A:ASP:75:N	A:HIS:72:O
+0	vdw	A:ASP:75:CA	A:HIS:72:O
+0	vdw	A:ASP:74:N	A:HIS:72:O
+0	vdw	A:ASP:74:N	A:HIS:72:C
+0	vdw	A:HIS:72:N	A:VAL:70:C
+0	vdw	A:HIS:72:N	A:VAL:70:O
+0	vdw	A:ALA:71:C	A:VAL:73:N
+0	vdw	D:ASN:80:N	D:LEU:78:C
+0	vdw	D:ASN:80:N	D:LEU:78:O
+0	vdw	D:LYS:8:O	D:THR:12:CB
+0	vdw	D:LYS:8:O	D:THR:12:OG1
+0	vdw	D:LEU:78:O	D:VAL:1:N
+0	vdw	B:LYS:8:N	B:THR:4:O
+0	vdw	B:LYS:8:CB	B:THR:4:O
+0	vdw	B:LYS:8:N	B:PRO:5:O
+0	vdw	B:LYS:8:CB	B:PRO:5:O
+0	vdw	B:GLU:7:CA	B:THR:4:O
+0	vdw	B:GLU:7:C	B:THR:4:O
+0	vdw	B:LYS:8:C	B:PRO:5:O
+0	vdw	B:PRO:5:O	B:SER:9:N
+0	vdw	B:PRO:5:O	B:SER:9:CA
+0	vdw	B:PRO:5:O	B:SER:9:CB
+0	vdw	B:ALA:10:N	B:LYS:8:C
+0	vdw	D:LEU:14:N	D:THR:12:O
+0	vdw	D:LEU:14:N	D:VAL:11:O
+0	vdw	D:LEU:14:N	D:THR:12:C
+0	vdw	D:THR:12:O	D:TRP:15:N
+0	vdw	D:ALA:13:C	D:TRP:15:N
+0	vdw	D:ALA:13:O	D:TRP:15:N
+0	vdw	D:ALA:10:O	D:LEU:14:N
+0	vdw	D:TYR:130:OH	D:VAL:11:C
+0	vdw	D:TRP:15:N	D:VAL:11:O
+0	vdw	D:TYR:130:OH	D:VAL:11:O
+0	vdw	D:TYR:130:CZ	D:VAL:11:O
+0	vdw	D:ALA:13:N	D:VAL:11:C
+0	vdw	D:ALA:13:N	D:VAL:11:O
+0	vdw	D:TYR:130:CZ	D:VAL:11:CG1
+0	vdw	B:LEU:3:CD1	B:VAL:133:CG2
+0	vdw	B:ALA:10:N	B:GLU:7:C
+0	vdw	B:ALA:10:N	B:GLU:7:O
+0	vdw	B:ALA:10:CB	B:GLU:7:O
+0	vdw	B:GLU:7:O	B:VAL:11:CG2
+0	vdw	B:GLU:7:O	B:VAL:11:N
+0	vdw	B:GLU:7:C	B:SER:9:N
+0	vdw	B:GLU:7:O	B:SER:9:N
+0	vdw	B:SER:9:C	B:VAL:11:N
+0	vdw	B:SER:9:O	B:VAL:11:N
+0	vdw	B:SER:9:O	B:THR:12:N
+0	vdw	B:ALA:10:C	B:THR:12:N
+0	vdw	B:ALA:13:N	B:SER:9:O
+0	vdw	B:ALA:13:CA	B:SER:9:O
+0	vdw	B:ALA:13:CB	B:SER:9:O
+0	vdw	B:ALA:10:N	B:LYS:8:O
+0	vdw	D:LEU:14:O	D:LYS:17:CB
+0	vdw	D:GLU:121:OE1	D:LYS:17:CE
+0	vdw	D:LYS:17:CB	D:PHE:118:CE2
+0	vdw	D:GLU:121:CD	D:LYS:17:CE
+0	vdw	D:GLU:121:OE2	D:LYS:17:CE
+0	vdw	D:TRP:15:N	D:TYR:130:OH
+0	vdw	D:LEU:14:CB	D:TYR:130:OH
+0	vdw	D:TYR:130:OH	D:VAL:11:CA
+0	vdw	D:LEU:114:CD1	D:TYR:130:CD1
+0	vdw	D:TYR:130:CZ	D:VAL:11:CA
+0	vdw	D:TYR:130:O	D:VAL:133:CA
+0	vdw	D:TYR:130:O	D:VAL:133:CB
+0	vdw	D:ALA:135:N	D:VAL:133:C
+0	vdw	D:ALA:135:N	D:VAL:133:O
+0	vdw	D:VAL:133:O	D:VAL:137:N
+0	vdw	D:VAL:134:O	D:VAL:137:N
+0	vdw	D:GLY:136:N	D:VAL:133:C
+0	vdw	D:GLY:136:N	D:VAL:133:O
+0	vdw	D:GLY:136:CA	D:VAL:133:O
+0	vdw	D:GLY:136:C	D:VAL:133:O
+0	vdw	D:GLY:136:N	D:VAL:134:C
+0	vdw	D:GLY:136:N	D:VAL:134:O
+0	vdw	D:ALA:135:C	D:VAL:137:N
+0	vdw	D:ALA:135:O	D:VAL:137:N
+0	vdw	D:LYS:132:C	D:VAL:134:N
+0	vdw	D:LYS:132:O	D:VAL:134:N
+0	vdw	D:ALA:135:N	D:LYS:132:O
+0	vdw	D:GLN:131:O	D:VAL:134:N
+0	vdw	D:ALA:135:N	D:GLN:131:O
+0	vdw	D:TYR:130:O	D:VAL:133:C
+0	vdw	D:TYR:130:O	D:VAL:134:N
+0	vdw	D:ALA:135:O	D:ASN:139:CB
+0	vdw	D:ALA:135:O	D:ASN:139:CG
+0	vdw	D:GLY:136:N	D:LYS:132:O
+0	vdw	D:GLY:136:CA	D:LYS:132:O
+0	vdw	D:GLY:136:CA	D:VAL:1:CG1
+0	vdw	B:ALA:129:O	B:LYS:132:CA
+0	vdw	B:ALA:129:O	B:LYS:132:CB
+0	vdw	B:ALA:128:O	B:LYS:132:CG
+0	vdw	B:ALA:128:O	B:LYS:132:N
+0	vdw	B:ALA:129:O	B:LYS:132:N
+0	vdw	B:ALA:128:C	B:TYR:130:N
+0	vdw	B:ALA:128:O	B:TYR:130:N
+0	vdw	B:ALA:128:O	B:GLN:131:N
+0	vdw	B:ALA:128:O	B:GLN:131:CA
+0	vdw	B:ALA:128:O	B:GLN:131:CB
+0	vdw	B:ALA:129:O	B:GLN:131:N
+0	vdw	B:ALA:129:O	B:VAL:133:N
+0	vdw	B:LYS:132:N	B:TYR:130:C
+0	vdw	B:LYS:132:N	B:TYR:130:O
+0	vdw	B:ALA:129:O	B:VAL:133:CG2
+0	vdw	B:ALA:129:N	B:VAL:126:O
+0	vdw	B:ALA:129:CB	B:VAL:126:O
+0	vdw	B:TYR:130:N	B:VAL:126:O
+0	vdw	B:ALA:128:N	B:VAL:126:O
+0	vdw	B:ALA:129:N	B:GLN:127:C
+0	vdw	B:ALA:129:N	B:GLN:127:O
+0	vdw	B:GLN:127:C	B:TYR:130:N
+0	vdw	B:GLN:127:O	B:TYR:130:N
+0	vdw	B:TYR:130:CD2	B:VAL:126:O
+0	vdw	D:LEU:114:CD2	D:PHE:118:CE1
+0	vdw	D:LEU:114:O	D:PHE:118:CD1
+0	vdw	D:GLU:121:OE2	D:PHE:118:CD2
+0	vdw	D:LEU:110:O	D:LEU:114:CG
+0	vdw	D:LEU:14:CD2	D:TYR:130:CE2
+0	vdw	D:TYR:130:O	D:VAL:134:CG1
+0	vdw	D:GLN:131:O	D:VAL:134:CG2
+0	vdw	D:TYR:130:O	D:VAL:134:CG2
+0	vdw	B:GLN:127:O	B:GLN:131:N
+0	vdw	B:GLN:127:O	B:GLN:131:CB
+0	vdw	B:GLN:127:O	B:GLN:131:CG
+0	vdw	B:ALA:129:C	B:GLN:131:N
+0	vdw	B:ALA:128:N	B:VAL:126:C
+0	vdw	B:GLN:127:CB	B:PHE:122:CE2
+0	vdw	B:GLN:127:CA	B:PHE:122:CZ
+0	vdw	B:GLN:127:O	B:TYR:130:CA
+0	vdw	B:GLN:127:O	B:TYR:130:C
+0	vdw	B:GLY:119:O	B:PHE:122:N
+0	vdw	B:GLY:119:O	B:PHE:122:CA
+0	vdw	B:LYS:120:C	B:PHE:122:N
+0	vdw	B:GLU:121:CB	B:PHE:118:O
+0	vdw	D:HIS:117:CA	D:VAL:113:O
+0	vdw	D:LEU:114:O	D:PHE:118:N
+0	vdw	D:HIS:116:C	D:PHE:118:N
+0	vdw	D:GLY:119:N	D:HIS:117:C
+0	vdw	D:ALA:115:N	D:VAL:113:C
+0	vdw	D:ALA:115:N	D:VAL:113:O
+0	vdw	D:LEU:110:O	D:VAL:113:C
+0	vdw	D:LEU:110:O	D:LEU:114:N
+0	vdw	D:LEU:114:N	D:VAL:111:O
+0	vdw	D:LEU:110:O	D:LEU:114:CB
+0	vdw	D:ALA:115:N	D:VAL:111:O
+0	vdw	D:HIS:116:N	D:VAL:113:O
+0	vdw	D:HIS:116:CB	D:VAL:113:O
+0	vdw	D:HIS:116:N	D:LEU:114:C
+0	vdw	D:HIS:116:N	D:LEU:114:O
+0	vdw	D:ALA:115:N	D:CYS:112:O
+0	vdw	D:CYS:112:C	D:LEU:114:N
+0	vdw	D:LEU:114:O	D:PHE:118:CB
+0	vdw	D:LEU:114:CB	D:PHE:122:CE1
+0	vdw	D:GLY:107:O	D:VAL:111:N
+0	vdw	D:CYS:112:N	D:LEU:110:C
+0	vdw	D:LEU:110:C	D:VAL:113:N
+0	vdw	D:CYS:112:N	D:LEU:110:O
+0	vdw	D:LEU:110:O	D:VAL:113:N
+0	vdw	D:VAL:111:C	D:VAL:113:N
+0	vdw	D:VAL:111:O	D:VAL:113:N
+0	vdw	D:ASN:108:O	D:VAL:111:N
+0	vdw	D:ASN:108:O	D:VAL:111:CA
+0	vdw	D:ALA:115:CB	D:VAL:111:O
+0	vdw	D:GLY:107:O	D:VAL:111:CG2
+0	vdw	D:ASN:108:O	D:VAL:111:CB
+0	vdw	D:ARG:104:O	D:ASN:108:N
+0	vdw	D:ARG:104:O	D:ASN:108:CG
+0	vdw	D:ASN:108:OD1	D:GLN:131:NE2
+0	vdw	C:HIS:103:CE1	D:ASN:108:OD1
+0	vdw	B:GLN:127:NE2	B:GLN:131:OE1
+0	vdw	A:HIS:103:ND1	B:GLN:131:OE1
+0	vdw	A:HIS:103:CE1	B:GLN:131:CD
+0	vdw	A:HIS:103:CE1	B:GLN:131:OE1
+0	vdw	B:GLN:131:OE1	B:VAL:111:CG1
+0	vdw	B:GLY:119:O	B:PHE:122:CB
+0	vdw	B:ALA:115:CA	B:PHE:122:CG
+0	vdw	B:ALA:115:CA	B:PHE:122:CD2
+0	vdw	B:ALA:115:CB	B:PHE:122:CD2
+0	vdw	B:GLU:121:N	B:GLY:119:C
+0	vdw	B:GLU:121:N	B:GLY:119:O
+0	vdw	B:LYS:120:N	B:PHE:118:O
+0	vdw	B:GLU:121:N	B:PHE:118:O
+0	vdw	B:LYS:120:N	B:PHE:118:C
+0	vdw	D:ALA:115:O	D:HIS:117:N
+0	vdw	D:ALA:115:C	D:HIS:117:N
+0	vdw	C:ALA:110:O	D:HIS:116:CA
+0	vdw	D:HIS:117:N	D:VAL:113:O
+0	vdw	D:HIS:117:N	D:LEU:114:O
+0	vdw	D:CYS:112:O	D:HIS:116:N
+0	vdw	D:CYS:112:O	D:HIS:116:CB
+0	vdw	D:ALA:115:CB	D:CYS:112:O
+0	vdw	C:ALA:110:CB	D:CYS:112:O
+0	vdw	D:ASN:108:O	D:CYS:112:N
+0	vdw	D:ASN:108:O	D:CYS:112:SG
+0	vdw	C:HIS:103:NE2	D:ASN:108:O
+0	vdw	C:HIS:103:CD2	D:ASN:108:CB
+0	vdw	C:HIS:103:NE2	D:ASN:108:CB
+0	vdw	A:HIS:103:CB	A:LYS:99:O
+0	vdw	A:HIS:103:O	A:VAL:107:CB
+0	vdw	A:HIS:103:O	A:VAL:107:CG2
+0	vdw	A:CYS:104:N	A:SER:102:C
+0	vdw	A:CYS:104:N	A:SER:102:O
+0	vdw	A:HIS:103:C	A:LEU:106:N
+0	vdw	A:HIS:103:O	A:LEU:106:N
+0	vdw	A:HIS:103:O	A:LEU:106:CA
+0	vdw	A:HIS:103:O	A:LEU:106:C
+0	vdw	A:HIS:103:O	A:VAL:107:N
+0	vdw	A:HIS:103:O	A:LEU:106:CB
+0	vdw	A:LEU:105:C	A:THR:108:N
+0	vdw	A:LEU:105:O	A:THR:108:N
+0	vdw	A:LEU:106:C	A:THR:108:N
+0	vdw	A:LEU:106:O	A:THR:108:N
+0	vdw	A:LEU:109:N	A:VAL:107:C
+0	vdw	A:ALA:110:N	A:VAL:107:C
+0	vdw	A:HIS:103:NE2	A:VAL:107:CG2
+0	vdw	A:VAL:107:CG2	B:VAL:111:CG1
+0	vdw	A:HIS:103:CE1	A:VAL:107:CG2
+0	vdw	A:ALA:111:N	A:VAL:107:O
+0	vdw	A:ALA:111:CB	A:VAL:107:O
+0	vdw	A:LEU:109:N	A:VAL:107:O
+0	vdw	A:ALA:110:N	A:VAL:107:O
+0	vdw	A:ALA:111:N	A:THR:108:O
+0	vdw	A:ALA:111:N	A:LEU:109:C
+0	vdw	A:ALA:111:N	A:LEU:109:O
+0	vdw	A:ALA:110:CB	A:VAL:107:O
+0	vdw	A:ALA:111:O	B:GLY:119:CA
+0	vdw	A:ALA:111:C	A:LEU:113:N
+0	vdw	A:ALA:111:CA	B:ALA:115:O
+0	vdw	B:ALA:115:O	B:GLY:119:CA
+0	vdw	C:PRO:114:CA	D:HIS:116:CD2
+0	vdw	C:PRO:114:CA	D:HIS:116:NE2
+0	vdw	C:PRO:114:C	D:HIS:116:NE2
+0	vdw	C:GLU:116:N	C:PRO:114:C
+0	vdw	C:PRO:114:O	D:HIS:116:NE2
+0	vdw	C:GLU:116:N	C:PRO:114:O
+0	vdw	C:ALA:110:O	D:HIS:116:CD2
+0	vdw	C:ALA:110:CA	C:PHE:117:CG
+0	vdw	C:ALA:110:CA	C:PHE:117:CD2
+0	vdw	C:ALA:110:CB	C:PHE:117:CD2
+0	vdw	C:HIS:122:CD2	C:PHE:117:CZ
+0	vdw	C:ALA:110:CB	C:PHE:117:CE2
+0	vdw	C:ASP:126:OD2	D:TYR:35:OH
+0	vdw	A:LYS:99:O	A:SER:102:CB
+0	vdw	A:HIS:103:N	A:LYS:99:O
+0	vdw	A:LEU:106:N	A:SER:102:O
+0	vdw	A:LEU:129:CD1	A:SER:102:O
+0	vdw	A:LEU:106:CB	A:SER:102:O
+0	vdw	A:LEU:105:C	A:VAL:107:N
+0	vdw	A:LEU:105:O	A:VAL:107:N
+0	vdw	A:LEU:105:O	A:THR:108:CA
+0	vdw	A:LEU:105:O	A:THR:108:C
+0	vdw	A:LEU:105:O	A:LEU:109:N
+0	vdw	A:LEU:106:O	A:LEU:109:N
+0	vdw	A:ALA:110:N	A:LEU:106:O
+0	vdw	A:LEU:105:O	A:LEU:109:CB
+0	vdw	A:LEU:105:O	A:LEU:109:CG
+0	vdw	A:LEU:106:O	A:LEU:109:CB
+0	vdw	A:ALA:110:CA	A:LEU:106:O
+0	vdw	A:ALA:110:CB	A:LEU:106:O
+0	vdw	A:ALA:110:N	A:THR:108:C
+0	vdw	A:ALA:110:N	A:THR:108:O
+0	vdw	A:HIS:112:N	A:THR:108:O
+0	vdw	A:HIS:112:N	A:LEU:109:C
+0	vdw	A:HIS:112:N	A:LEU:109:O
+0	vdw	A:HIS:112:C	A:LEU:109:O
+0	vdw	A:LEU:109:O	A:LEU:113:N
+0	vdw	A:LEU:109:O	A:LEU:113:CG
+0	vdw	A:ALA:111:CA	A:THR:108:O
+0	vdw	A:LEU:109:O	A:LEU:113:CA
+0	vdw	A:LEU:109:O	A:LEU:113:CB
+0	vdw	A:ALA:110:O	A:HIS:112:N
+0	vdw	A:HIS:112:C	A:PRO:114:N
+0	vdw	A:HIS:112:C	A:PRO:114:CD
+0	vdw	A:ALA:110:C	A:HIS:112:N
+0	vdw	A:HIS:112:O	A:PRO:114:CD
+0	vdw	C:ALA:115:N	C:LEU:113:O
+0	vdw	C:ALA:115:N	C:LEU:113:C
+0	vdw	C:GLU:116:N	C:LEU:113:O
+0	vdw	C:LEU:113:O	C:PHE:117:N
+0	vdw	C:ALA:115:C	C:PHE:117:N
+0	vdw	C:LEU:113:O	C:PHE:117:CB
+0	vdw	C:GLU:116:CB	C:LEU:113:CB
+0	vdw	C:GLU:116:CB	C:LEU:113:CD1
+0	vdw	C:GLU:116:O	C:VAL:121:CB
+0	vdw	C:GLU:116:O	C:VAL:121:CG1
+0	vdw	C:ASP:126:N	C:HIS:122:O
+0	vdw	C:ASP:126:CB	C:HIS:122:O
+0	vdw	C:HIS:122:O	C:LEU:125:N
+0	vdw	C:ALA:123:O	C:ASP:126:N
+0	vdw	C:ASP:126:N	C:SER:124:C
+0	vdw	C:ASP:126:N	C:SER:124:O
+0	vdw	C:ALA:123:O	C:ASP:126:CB
+0	vdw	A:ARG:141:NH2	C:ASP:126:OD2
+0	vdw	C:ASP:126:C	C:PHE:128:N
+0	vdw	C:ASP:126:O	C:PHE:128:N
+0	vdw	C:ASP:126:O	C:LEU:129:N
+0	vdw	C:ALA:130:N	C:ASP:126:O
+0	vdw	C:ALA:130:CB	C:ASP:126:O
+0	vdw	C:ASP:126:OD1	C:LEU:106:CD1
+0	vdw	A:SER:102:OG	A:SER:133:OG
+0	vdw	A:ALA:130:O	A:SER:133:CB
+0	vdw	A:LEU:129:O	A:SER:133:CB
+0	vdw	A:LEU:129:O	A:SER:133:OG
+0	vdw	A:LEU:129:CB	A:SER:102:OG
+0	vdw	A:LEU:125:O	A:LEU:129:CB
+0	vdw	A:LEU:125:O	A:LEU:129:CG
+0	vdw	A:ALA:13:O	A:LEU:113:CD1
+0	vdw	A:LEU:113:CD2	A:LYS:16:CG
+0	vdw	A:GLU:116:OE2	A:LYS:16:NZ
+0	vdw	C:LEU:125:CD1	C:VAL:121:CG1
+0	vdw	C:SER:124:CB	C:VAL:121:O
+0	vdw	C:SER:124:C	C:VAL:121:O
+0	vdw	C:LEU:125:N	C:VAL:121:O
+0	vdw	C:ASN:9:CB	C:SER:124:CB
+0	vdw	C:LEU:125:CG	C:VAL:121:O
+0	vdw	C:LEU:125:CB	C:VAL:121:O
+0	vdw	C:ALA:123:O	C:LEU:125:N
+0	vdw	C:ALA:123:O	C:LYS:127:N
+0	vdw	C:LYS:127:N	C:SER:124:C
+0	vdw	C:LYS:127:N	C:SER:124:O
+0	vdw	C:LYS:127:C	C:SER:124:O
+0	vdw	C:LYS:127:CB	C:SER:124:O
+0	vdw	C:PHE:128:CB	C:SER:124:O
+0	vdw	C:PHE:128:N	C:SER:124:O
+0	vdw	C:PHE:128:CA	C:SER:124:O
+0	vdw	C:LEU:129:N	C:LYS:127:C
+0	vdw	C:LEU:125:C	C:LYS:127:N
+0	vdw	C:LEU:125:O	C:LYS:127:N
+0	vdw	A:ALA:130:O	A:THR:134:CB
+0	vdw	A:ALA:130:O	A:THR:134:OG1
+0	vdw	A:SER:131:O	A:THR:134:CA
+0	vdw	A:SER:131:O	A:THR:134:C
+0	vdw	A:SER:131:O	A:THR:134:CB
+0	vdw	A:ALA:130:O	A:THR:134:N
+0	vdw	A:SER:131:C	A:THR:134:N
+0	vdw	A:ALA:130:C	A:VAL:132:N
+0	vdw	A:ALA:130:O	A:VAL:132:N
+0	vdw	A:PHE:128:C	A:SER:131:N
+0	vdw	A:PHE:128:O	A:SER:131:N
+0	vdw	A:LEU:129:C	A:SER:131:N
+0	vdw	A:LEU:129:O	A:SER:131:N
+0	vdw	A:PHE:128:O	A:SER:131:CA
+0	vdw	A:PHE:128:O	A:SER:131:C
+0	vdw	A:SER:131:O	A:THR:134:N
+0	vdw	A:LYS:127:O	A:SER:131:N
+0	vdw	A:ALA:130:N	A:PHE:128:C
+0	vdw	A:ALA:130:N	A:PHE:128:O
+0	vdw	A:PHE:128:O	A:VAL:132:N
+0	vdw	A:LEU:129:O	A:VAL:132:N
+0	vdw	A:PHE:128:O	A:SER:131:CB
+0	vdw	A:LEU:129:N	A:LYS:127:C
+0	vdw	A:LEU:129:N	A:LYS:127:O
+0	vdw	A:ALA:130:N	A:LYS:127:O
+0	vdw	A:LEU:125:O	A:LEU:129:N
+0	vdw	A:ASP:126:O	A:LEU:129:N
+0	vdw	A:ALA:130:N	A:ASP:126:O
+0	vdw	A:PHE:128:CE2	A:VAL:70:CG2
+0	vdw	A:TRP:14:CA	A:VAL:10:O
+0	vdw	A:ALA:13:C	A:GLY:15:N
+0	vdw	A:ALA:13:O	A:LYS:16:CA
+0	vdw	A:ALA:13:O	A:LYS:16:CB
+0	vdw	A:ALA:13:O	A:GLY:15:N
+0	vdw	A:ALA:13:O	A:LYS:16:N
+0	vdw	A:GLU:116:OE2	A:LYS:16:CG
+0	vdw	A:GLU:116:OE2	A:LYS:16:CD
+0	vdw	C:ALA:12:CB	C:ASN:9:O
+0	vdw	C:ALA:12:CB	C:THR:8:O
+0	vdw	C:ALA:12:N	C:ASN:9:O
+0	vdw	C:ALA:12:CA	C:ASN:9:O
+0	vdw	C:ALA:13:N	C:ASN:9:O
+0	vdw	C:ALA:13:CB	C:ASN:9:O
+0	vdw	C:ASN:9:N	C:ASP:6:C
+0	vdw	C:ASN:9:N	C:ASP:6:O
+0	vdw	C:ASN:9:CA	C:ASP:6:O
+0	vdw	C:ASN:9:C	C:ASP:6:O
+0	vdw	C:ASN:9:CB	C:ASP:6:O
+0	vdw	C:ASP:6:O	C:VAL:10:N
+0	vdw	C:ASP:6:C	C:THR:8:N
+0	vdw	C:ASP:6:O	C:THR:8:N
+0	vdw	C:ASN:9:N	C:LYS:7:C
+0	vdw	C:ASN:9:N	C:LYS:7:O
+0	vdw	C:LYS:7:O	C:VAL:10:N
+0	vdw	C:ASP:6:O	C:VAL:10:CA
+0	vdw	C:ASP:6:O	C:VAL:10:CB
+0	vdw	C:ASP:6:O	C:VAL:10:CG2
+0	vdw	C:ASN:9:C	C:LYS:11:N
+0	vdw	A:MET:76:CE	A:SER:131:CB
+0	vdw	A:LEU:2:CD2	A:MET:76:CE
+0	vdw	A:LYS:127:O	A:SER:131:CB
+0	vdw	A:PHE:128:CZ	A:VAL:70:CG2
+0	vdw	A:VAL:10:CG1	A:VAL:70:CG2
+0	vdw	A:TRP:14:CB	A:VAL:70:CG1
+0	vdw	A:TRP:14:N	A:VAL:10:O
+0	vdw	A:TRP:14:CB	A:VAL:10:O
+0	vdw	A:GLY:15:N	A:LYS:11:O
+0	vdw	A:GLY:15:CA	A:LYS:11:O
+0	vdw	A:LYS:16:N	A:TRP:14:C
+0	vdw	A:ALA:12:N	A:VAL:10:O
+0	vdw	A:ALA:13:N	A:VAL:10:O
+0	vdw	A:ALA:13:N	A:LYS:11:O
+0	vdw	A:ALA:12:C	A:TRP:14:N
+0	vdw	A:ALA:12:O	A:TRP:14:N
+0	vdw	A:ALA:12:O	A:GLY:15:N
+0	vdw	A:ALA:12:O	A:LYS:16:N
+0	vdw	C:THR:8:C	C:VAL:10:N
+0	vdw	C:THR:8:O	C:VAL:10:N
+0	vdw	C:ALA:12:N	C:THR:8:O
+0	vdw	C:ALA:12:CA	C:THR:8:O
+0	vdw	C:LYS:11:N	C:THR:8:O
+0	vdw	C:LYS:11:CG	C:LYS:7:O
+0	vdw	C:LYS:11:CB	C:LYS:7:O
+0	vdw	C:LYS:11:N	C:LYS:7:O
+0	vdw	C:LEU:2:O	C:LYS:7:NZ
+0	vdw	A:ASP:75:N	A:VAL:73:O
+0	vdw	A:VAL:70:O	A:VAL:73:N
+0	vdw	A:LYS:11:CE	A:VAL:73:CG1
+0	vdw	A:LEU:2:CD2	A:VAL:73:CG2
+0	vdw	A:LYS:11:CE	A:VAL:70:O
+0	vdw	A:LYS:11:CG	A:LYS:7:O
+0	vdw	A:LYS:11:CA	A:LYS:7:O
+0	vdw	C:ASP:74:OD1	C:LYS:7:CD
+0	vdw	C:ASP:74:OD1	C:LYS:7:CE
+0	vdw	C:LEU:2:O	C:LYS:7:CE
+0	vdw	C:ASP:74:OD1	C:LYS:7:NZ
+0	vdw	A:ASP:75:N	A:VAL:73:C
+0	vdw	D:LYS:8:O	D:VAL:11:N
+0	vdw	D:LYS:8:O	D:THR:12:N
+0	vdw	D:LYS:8:O	D:VAL:11:CB
+0	vdw	D:ALA:10:N	D:LYS:8:O
+0	vdw	D:LYS:8:CB	D:THR:4:O
+0	vdw	D:LYS:8:CB	D:PRO:5:CA
+0	vdw	D:ALA:10:N	D:LYS:8:C
+0	vdw	B:LEU:75:O	B:LEU:78:CD1
+0	vdw	B:LYS:8:O	B:THR:12:CB
+0	vdw	B:LYS:8:O	B:THR:12:OG1
+0	vdw	B:LYS:8:O	B:THR:12:CG2
+0	vdw	B:LYS:8:O	B:VAL:11:N
+0	vdw	B:LYS:8:O	B:THR:12:N
+0	vdw	D:ALA:13:N	D:SER:9:O
+0	vdw	D:ALA:13:CA	D:SER:9:O
+0	vdw	D:ALA:13:CB	D:SER:9:O
+0	vdw	D:SER:9:C	D:VAL:11:N
+0	vdw	D:SER:9:C	D:THR:12:N
+0	vdw	D:SER:9:O	D:VAL:11:N
+0	vdw	D:SER:9:O	D:THR:12:N
+0	vdw	D:ALA:10:C	D:THR:12:N
+0	vdw	D:ALA:10:O	D:LEU:14:CB
+0	vdw	D:TYR:130:CE2	D:VAL:11:CA
+0	vdw	D:GLU:7:O	D:SER:9:C
+0	vdw	D:ALA:10:C	D:GLU:7:O
+0	vdw	D:GLU:7:O	D:VAL:11:N
+0	vdw	D:GLU:7:O	D:VAL:11:CG2
+0	vdw	D:ALA:129:CB	D:VAL:11:CG2
+0	vdw	D:ALA:129:O	D:VAL:133:CG2
+0	vdw	D:GLU:7:OE2	D:LEU:3:CD2
+0	vdw	D:GLU:7:CB	D:LEU:3:CD2
+0	vdw	B:LYS:8:O	B:VAL:11:CB
+0	vdw	B:ALA:10:O	B:THR:12:N
+0	vdw	B:ALA:13:N	B:VAL:11:C
+0	vdw	B:ALA:13:N	B:VAL:11:O
+0	vdw	B:TYR:130:CE2	B:VAL:11:CA
+0	vdw	B:TYR:130:OH	B:VAL:11:C
+0	vdw	B:TYR:130:CZ	B:VAL:11:O
+0	vdw	B:TYR:130:OH	B:VAL:11:O
+0	vdw	B:TRP:15:CB	B:VAL:11:O
+0	vdw	B:ALA:10:O	B:LEU:14:N
+0	vdw	B:ALA:10:O	B:LEU:14:CB
+0	vdw	B:LEU:14:N	B:VAL:11:O
+0	vdw	B:TRP:15:N	B:VAL:11:O
+0	vdw	B:LEU:14:N	B:THR:12:C
+0	vdw	B:ALA:13:O	B:GLY:16:N
+0	vdw	B:ALA:13:C	B:TRP:15:N
+0	vdw	B:ALA:13:O	B:TRP:15:N
+0	vdw	D:GLU:121:OE1	D:LEU:14:CD1
+0	vdw	D:TYR:130:N	D:VAL:126:O
+0	vdw	D:TYR:130:CD2	D:VAL:126:O
+0	vdw	D:ALA:128:C	D:TYR:130:N
+0	vdw	D:GLN:127:C	D:TYR:130:N
+0	vdw	D:GLN:127:O	D:TYR:130:N
+0	vdw	D:ALA:129:O	D:VAL:133:N
+0	vdw	D:TYR:130:O	D:VAL:133:N
+0	vdw	D:ALA:129:C	D:LYS:132:N
+0	vdw	D:ALA:129:O	D:LYS:132:N
+0	vdw	D:ALA:129:O	D:LYS:132:CB
+0	vdw	D:LYS:132:N	D:TYR:130:O
+0	vdw	D:ALA:129:C	D:GLN:131:N
+0	vdw	D:ALA:129:O	D:GLN:131:N
+0	vdw	D:TYR:130:C	D:VAL:133:N
+0	vdw	D:GLN:131:C	D:VAL:133:N
+0	vdw	D:GLN:131:O	D:VAL:133:N
+0	vdw	D:GLN:127:O	D:TYR:130:CA
+0	vdw	D:ALA:128:O	D:LYS:132:N
+0	vdw	B:ALA:135:C	B:VAL:137:N
+0	vdw	B:ALA:135:N	B:LYS:132:O
+0	vdw	B:GLY:136:N	B:LYS:132:O
+0	vdw	B:LYS:132:C	B:VAL:134:N
+0	vdw	B:LYS:132:O	B:VAL:134:N
+0	vdw	B:ALA:135:N	B:VAL:133:C
+0	vdw	B:ALA:135:N	B:GLN:131:O
+0	vdw	B:ALA:135:CB	B:GLN:131:O
+0	vdw	B:ALA:135:N	B:VAL:133:O
+0	vdw	B:GLY:136:N	B:VAL:133:O
+0	vdw	B:GLY:136:N	B:VAL:134:C
+0	vdw	B:GLY:136:N	B:VAL:134:O
+0	vdw	B:TYR:130:C	B:VAL:133:N
+0	vdw	B:TYR:130:O	B:VAL:133:N
+0	vdw	B:TYR:130:O	B:VAL:133:CA
+0	vdw	B:TYR:130:O	B:VAL:133:C
+0	vdw	B:TYR:130:O	B:VAL:133:CB
+0	vdw	B:TYR:130:O	B:VAL:134:N
+0	vdw	B:TYR:130:O	B:VAL:134:CG2
+0	vdw	B:GLN:131:C	B:VAL:133:N
+0	vdw	B:TYR:130:O	B:VAL:134:CA
+0	vdw	B:TYR:130:O	B:VAL:134:CG1
+0	vdw	B:PHE:122:CE1	B:TYR:130:CD2
+0	vdw	B:LEU:114:CD1	B:TYR:130:CD1
+0	vdw	B:LEU:14:CD2	B:TYR:130:CE2
+0	vdw	B:LEU:14:CD2	B:TYR:130:CZ
+0	vdw	B:TRP:15:CE3	B:TYR:130:OH
+0	vdw	B:TRP:15:N	B:TYR:130:OH
+0	vdw	B:TRP:15:CB	B:TYR:130:OH
+0	vdw	B:LEU:14:CD1	B:PHE:118:CG
+0	vdw	B:LEU:14:CD1	B:PHE:118:CD1
+0	vdw	B:LEU:14:CD1	B:PHE:118:CD2
+0	vdw	B:LEU:14:CD1	B:PHE:118:CE1
+0	vdw	B:LEU:14:CD1	B:PHE:118:CE2
+0	vdw	B:LEU:14:N	B:THR:12:O
+0	vdw	D:GLU:121:CB	D:PHE:118:O
+0	vdw	D:GLN:127:CA	D:PHE:122:CZ
+0	vdw	D:GLN:127:O	D:TYR:130:CB
+0	vdw	D:TYR:130:CB	D:VAL:126:O
+0	vdw	D:GLN:127:O	D:TYR:130:C
+0	vdw	D:GLN:127:O	D:GLN:131:N
+0	vdw	D:GLN:127:O	D:GLN:131:CA
+0	vdw	D:GLN:127:O	D:GLN:131:CB
+0	vdw	C:SER:35:OG	D:GLN:131:CG
+0	vdw	D:GLN:127:O	D:GLN:131:CG
+0	vdw	C:SER:35:CB	D:GLN:131:CG
+0	vdw	D:LYS:132:N	D:TYR:130:C
+0	vdw	D:ALA:128:C	D:GLN:131:N
+0	vdw	D:ALA:128:O	D:GLN:131:N
+0	vdw	D:ALA:128:O	D:GLN:131:CA
+0	vdw	D:ALA:128:O	D:GLN:131:CB
+0	vdw	D:ALA:135:CB	D:GLN:131:O
+0	vdw	B:GLN:131:O	B:VAL:134:CG2
+0	vdw	B:GLN:131:O	B:VAL:133:N
+0	vdw	B:GLN:131:O	B:VAL:134:N
+0	vdw	B:LEU:14:CD2	B:PHE:122:CD1
+0	vdw	B:LEU:114:O	B:PHE:118:CG
+0	vdw	B:LEU:114:O	B:PHE:118:CD1
+0	vdw	D:LYS:120:N	D:PHE:118:O
+0	vdw	D:GLU:121:N	D:PHE:118:O
+0	vdw	D:GLY:119:O	D:PHE:122:CB
+0	vdw	D:ALA:115:O	D:GLY:119:N
+0	vdw	D:GLU:121:N	D:GLY:119:C
+0	vdw	D:GLU:121:N	D:GLY:119:O
+0	vdw	D:GLY:119:O	D:PHE:122:N
+0	vdw	D:GLU:121:CA	D:GLY:119:O
+0	vdw	D:GLY:119:O	D:PHE:122:CA
+0	vdw	D:ALA:115:CA	D:PHE:122:CD2
+0	vdw	D:ALA:115:CB	D:PHE:122:CD2
+0	vdw	D:PHE:122:CE2	D:VAL:111:CG1
+0	vdw	D:GLN:131:OE1	D:VAL:111:CG1
+0	vdw	C:VAL:107:CG2	D:VAL:111:CG1
+0	vdw	D:GLN:127:CG	D:PHE:122:CE2
+0	vdw	D:GLN:127:CA	D:PHE:122:CE2
+0	vdw	D:GLN:127:CB	D:PHE:122:CE2
+0	vdw	C:HIS:103:CE1	D:GLN:131:CD
+0	vdw	C:HIS:103:ND1	D:GLN:131:OE1
+0	vdw	C:HIS:103:CE1	D:GLN:131:OE1
+0	vdw	D:GLN:127:NE2	D:GLN:131:OE1
+0	vdw	C:PHE:36:CZ	D:GLN:131:CD
+0	vdw	A:HIS:103:CE1	B:ASN:108:OD1
+0	vdw	B:ASN:108:OD1	B:GLN:131:NE2
+0	vdw	B:ARG:104:O	B:ASN:108:CG
+0	vdw	B:GLY:107:O	B:VAL:111:CG2
+0	vdw	B:ALA:115:N	B:VAL:111:O
+0	vdw	B:ALA:115:CB	B:VAL:111:O
+0	vdw	B:LEU:114:N	B:VAL:111:O
+0	vdw	B:VAL:111:C	B:VAL:113:N
+0	vdw	B:VAL:111:O	B:VAL:113:N
+0	vdw	B:GLY:107:O	B:VAL:111:CB
+0	vdw	B:ASN:108:O	B:VAL:111:CB
+0	vdw	B:HIS:116:N	B:LEU:114:C
+0	vdw	B:ALA:115:N	B:VAL:113:C
+0	vdw	B:ALA:115:N	B:VAL:113:O
+0	vdw	B:ALA:115:N	B:CYS:112:O
+0	vdw	B:ALA:115:CA	B:CYS:112:O
+0	vdw	B:HIS:117:N	B:LEU:114:C
+0	vdw	B:LEU:114:O	B:PHE:118:N
+0	vdw	B:LEU:114:O	B:PHE:118:CA
+0	vdw	B:LEU:114:O	B:PHE:118:CB
+0	vdw	B:ALA:115:O	B:GLY:119:N
+0	vdw	B:HIS:117:CA	B:LEU:114:O
+0	vdw	B:HIS:117:C	B:LEU:114:O
+0	vdw	B:HIS:117:CB	B:LEU:114:O
+0	vdw	B:GLY:119:N	B:HIS:117:C
+0	vdw	B:HIS:117:N	B:LEU:114:O
+0	vdw	B:HIS:116:C	B:PHE:118:N
+0	vdw	C:ALA:111:CA	D:ALA:115:O
+0	vdw	D:ALA:115:O	D:GLY:119:CA
+0	vdw	C:ALA:111:CA	C:VAL:107:O
+0	vdw	C:ALA:111:C	C:LEU:113:N
+0	vdw	C:ALA:111:O	D:GLY:119:CA
+0	vdw	C:ALA:111:N	C:VAL:107:O
+0	vdw	C:VAL:107:O	D:ALA:115:CB
+0	vdw	C:VAL:107:CG1	D:ALA:115:CB
+0	vdw	C:ALA:110:N	C:VAL:107:O
+0	vdw	C:ALA:110:CA	C:VAL:107:O
+0	vdw	C:ALA:110:CB	C:VAL:107:O
+0	vdw	C:ALA:111:N	C:LEU:109:C
+0	vdw	C:ALA:111:N	C:LEU:109:O
+0	vdw	C:ALA:111:CB	C:VAL:107:O
+0	vdw	C:LEU:109:N	C:VAL:107:O
+0	vdw	C:ALA:111:N	C:THR:108:C
+0	vdw	C:ALA:111:N	C:THR:108:O
+0	vdw	C:HIS:103:O	C:VAL:107:CG2
+0	vdw	C:VAL:107:CG1	D:GLN:127:OE1
+0	vdw	C:LEU:109:N	C:VAL:107:C
+0	vdw	C:HIS:103:O	C:LEU:106:CB
+0	vdw	C:HIS:103:O	C:LEU:105:N
+0	vdw	C:HIS:103:O	C:LEU:106:N
+0	vdw	C:HIS:103:CB	C:LEU:100:O
+0	vdw	C:HIS:103:CB	C:LYS:99:O
+0	vdw	A:HIS:103:NE2	B:ASN:108:O
+0	vdw	B:CYS:112:N	B:VAL:109:O
+0	vdw	B:CYS:112:CA	B:VAL:109:O
+0	vdw	B:ASN:108:O	B:CYS:112:N
+0	vdw	B:ASN:108:O	B:CYS:112:SG
+0	vdw	B:CYS:112:N	B:LEU:110:C
+0	vdw	B:CYS:112:N	B:LEU:110:O
+0	vdw	B:ALA:115:CB	B:CYS:112:O
+0	vdw	B:CYS:112:O	B:HIS:116:N
+0	vdw	B:ALA:115:C	B:HIS:117:N
+0	vdw	B:HIS:116:N	B:LEU:114:O
+0	vdw	B:HIS:116:N	B:VAL:113:O
+0	vdw	A:ALA:110:O	B:HIS:116:CA
+0	vdw	B:ALA:115:O	B:HIS:117:N
+0	vdw	C:HIS:112:C	C:PRO:114:CD
+0	vdw	C:HIS:112:O	C:PRO:114:CD
+0	vdw	C:HIS:112:C	C:LEU:109:O
+0	vdw	C:LEU:109:O	C:LEU:113:N
+0	vdw	C:ALA:110:O	C:HIS:112:N
+0	vdw	C:ALA:110:N	C:LEU:106:O
+0	vdw	C:ALA:110:CB	C:LEU:106:O
+0	vdw	C:ALA:110:N	C:THR:108:C
+0	vdw	C:ALA:110:N	C:THR:108:O
+0	vdw	C:HIS:112:N	C:LEU:109:C
+0	vdw	C:HIS:112:N	C:LEU:109:O
+0	vdw	C:ALA:110:C	C:HIS:112:N
+0	vdw	C:LEU:105:C	C:VAL:107:N
+0	vdw	C:LEU:105:O	C:VAL:107:N
+0	vdw	C:HIS:103:O	C:LEU:106:CA
+0	vdw	C:HIS:103:O	C:LEU:106:C
+0	vdw	C:HIS:103:O	C:VAL:107:N
+0	vdw	C:LEU:106:O	C:LEU:109:N
+0	vdw	C:LEU:106:C	C:THR:108:N
+0	vdw	C:LEU:106:O	C:THR:108:N
+0	vdw	C:CYS:104:O	C:VAL:107:N
+0	vdw	C:LYS:99:CB	C:VAL:96:O
+0	vdw	C:LYS:99:CG	C:VAL:96:O
+0	vdw	A:ALA:110:CB	A:PHE:117:CZ
+0	vdw	A:HIS:122:CG	A:PHE:117:CZ
+0	vdw	A:HIS:122:CD2	A:PHE:117:CZ
+0	vdw	A:HIS:122:CB	A:PHE:117:CZ
+0	vdw	A:ALA:110:CA	A:PHE:117:CG
+0	vdw	A:ALA:110:CB	A:PHE:117:CD2
+0	vdw	A:ALA:110:CB	A:PHE:117:CE2
+0	vdw	A:ALA:115:N	A:LEU:113:C
+0	vdw	A:GLU:116:OE1	A:LEU:113:C
+0	vdw	A:PRO:114:CA	B:HIS:116:CD2
+0	vdw	A:PRO:114:CA	B:HIS:116:NE2
+0	vdw	C:LEU:109:O	C:LEU:113:CA
+0	vdw	C:LEU:109:O	C:LEU:113:CB
+0	vdw	C:LEU:109:O	C:LEU:113:CG
+0	vdw	C:LEU:106:O	C:LEU:109:CB
+0	vdw	C:LEU:105:O	C:LEU:109:CB
+0	vdw	C:LEU:106:CD2	C:LEU:125:CB
+0	vdw	C:LEU:129:CD1	C:SER:102:O
+0	vdw	C:LEU:129:CB	C:SER:102:OG
+0	vdw	C:LEU:129:CB	C:SER:102:CB
+0	vdw	A:ALA:130:CB	A:ASP:126:O
+0	vdw	A:ALA:130:CB	A:LYS:127:O
+0	vdw	A:ASP:126:C	A:PHE:128:N
+0	vdw	A:ASP:126:O	A:PHE:128:N
+0	vdw	A:ASP:126:OD1	A:LEU:106:CD1
+0	vdw	A:ASP:126:N	A:SER:124:O
+0	vdw	A:ASP:126:N	A:HIS:122:O
+0	vdw	A:ALA:123:O	A:ASP:126:N
+0	vdw	A:ASP:126:N	A:SER:124:C
+0	vdw	A:LEU:106:CD2	A:LEU:125:CB
+0	vdw	A:LEU:125:CB	A:VAL:121:O
+0	vdw	A:LEU:125:CD1	A:VAL:121:CG1
+0	vdw	A:GLU:116:OE1	A:LEU:113:CA
+0	vdw	A:ALA:115:N	A:LEU:113:O
+0	vdw	A:GLU:116:OE1	A:LEU:113:O
+0	vdw	A:GLU:116:OE1	A:LEU:113:CB
+0	vdw	A:GLU:116:N	A:LEU:113:O
+0	vdw	A:LEU:113:O	A:PHE:117:N
+0	vdw	A:LEU:113:O	A:PHE:117:CB
+0	vdw	C:ALA:13:O	C:VAL:17:CG2
+0	vdw	C:ALA:13:C	C:GLY:15:N
+0	vdw	C:ALA:13:O	C:GLY:15:N
+0	vdw	C:ALA:13:O	C:LYS:16:CA
+0	vdw	C:ALA:13:O	C:VAL:17:N
+0	vdw	C:ALA:13:O	C:LYS:16:N
+0	vdw	C:LEU:125:O	C:PHE:128:CB
+0	vdw	C:LEU:125:C	C:PHE:128:N
+0	vdw	C:LEU:125:O	C:PHE:128:N
+0	vdw	C:LEU:125:O	C:PHE:128:CA
+0	vdw	C:LEU:125:O	C:PHE:128:C
+0	vdw	C:LEU:125:O	C:LEU:129:N
+0	vdw	C:LEU:125:O	C:LEU:129:CB
+0	vdw	C:LEU:125:O	C:LEU:129:CG
+0	vdw	C:ALA:130:N	C:LYS:127:O
+0	vdw	C:ALA:130:N	C:PHE:128:C
+0	vdw	C:ALA:130:N	C:PHE:128:O
+0	vdw	C:ALA:130:CA	C:LYS:127:O
+0	vdw	C:ALA:130:CB	C:LYS:127:O
+0	vdw	C:LYS:127:O	C:SER:131:N
+0	vdw	C:PHE:128:C	C:SER:131:N
+0	vdw	C:PHE:128:O	C:SER:131:N
+0	vdw	C:LEU:129:C	C:SER:131:N
+0	vdw	C:PHE:128:O	C:VAL:132:CB
+0	vdw	C:LYS:127:O	C:SER:131:CB
+0	vdw	C:LYS:127:O	C:SER:131:OG
+0	vdw	C:PHE:128:O	C:SER:131:CA
+0	vdw	C:PHE:128:O	C:SER:131:CB
+0	vdw	C:PHE:128:O	C:VAL:132:N
+0	vdw	C:PHE:128:O	C:VAL:132:CG2
+0	vdw	C:PHE:128:O	C:SER:131:C
+0	vdw	C:ALA:130:O	C:THR:134:CB
+0	vdw	C:ALA:130:O	C:THR:134:OG1
+0	vdw	C:ALA:130:C	C:VAL:132:N
+0	vdw	C:ALA:130:C	C:SER:133:N
+0	vdw	C:ALA:130:O	C:SER:133:N
+0	vdw	C:ALA:130:O	C:SER:133:CA
+0	vdw	C:ALA:130:O	C:SER:133:C
+0	vdw	C:ALA:130:O	C:THR:134:N
+0	vdw	C:ALA:130:O	C:THR:134:CA
+0	vdw	C:LEU:129:O	C:SER:131:N
+0	vdw	C:ALA:130:O	C:SER:133:CB
+0	vdw	C:SER:131:O	C:THR:134:CB
+0	vdw	A:ALA:130:CA	A:LYS:127:O
+0	vdw	A:LYS:127:N	A:SER:124:O
+0	vdw	A:LEU:125:C	A:LYS:127:N
+0	vdw	A:LEU:125:O	A:LYS:127:N
+0	vdw	A:LYS:127:CA	A:SER:124:O
+0	vdw	A:LYS:127:C	A:SER:124:O
+0	vdw	A:LYS:127:O	A:SER:131:OG
+0	vdw	A:ALA:123:O	A:LYS:127:N
+0	vdw	A:PHE:128:N	A:SER:124:O
+0	vdw	A:PHE:128:CA	A:SER:124:O
+0	vdw	A:PHE:128:CB	A:SER:124:O
+0	vdw	A:LEU:125:C	A:PHE:128:N
+0	vdw	A:LEU:125:O	A:PHE:128:N
+0	vdw	A:LEU:125:O	A:PHE:128:CB
+0	vdw	A:PHE:128:CB	A:VAL:10:CG2
+0	vdw	A:LEU:125:CA	A:VAL:121:O
+0	vdw	A:LEU:125:N	A:VAL:121:O
+0	vdw	A:LEU:125:CG	A:VAL:121:O
+0	vdw	A:ALA:123:C	A:LEU:125:N
+0	vdw	A:ALA:123:O	A:LEU:125:N
+0	vdw	A:HIS:122:C	A:LEU:125:N
+0	vdw	A:HIS:122:O	A:LEU:125:N
+0	vdw	A:ALA:13:CB	A:ASN:9:O
+0	vdw	C:ALA:12:O	C:TRP:14:N
+0	vdw	C:ALA:12:O	C:GLY:15:CA
+0	vdw	C:ALA:12:O	C:GLY:15:C
+0	vdw	C:ALA:12:O	C:LYS:16:N
+0	vdw	C:ALA:12:O	C:GLY:15:N
+0	vdw	C:ALA:12:O	C:LYS:16:CA
+0	vdw	C:ALA:13:N	C:LYS:11:C
+0	vdw	C:ALA:13:N	C:LYS:11:O
+0	vdw	C:ALA:12:C	C:TRP:14:N
+0	vdw	C:ALA:12:N	C:VAL:10:C
+0	vdw	C:ALA:12:N	C:VAL:10:O
+0	vdw	C:ALA:13:N	C:VAL:10:O
+0	vdw	C:TRP:14:N	C:VAL:10:O
+0	vdw	C:GLY:15:N	C:LYS:11:O
+0	vdw	C:GLY:15:CA	C:LYS:11:O
+0	vdw	C:PHE:128:CG	C:VAL:10:CG1
+0	vdw	C:PHE:128:CD2	C:VAL:10:CG1
+0	vdw	C:PHE:128:CB	C:VAL:10:CG2
+0	vdw	C:TRP:14:CB	C:VAL:10:O
+0	vdw	C:MET:76:CE	C:SER:131:CB
+0	vdw	A:LEU:2:CD1	A:PHE:128:CA
+0	vdw	A:LEU:2:CD1	A:LYS:127:CG
+0	vdw	A:LYS:7:O	A:VAL:10:N
+0	vdw	A:ASP:6:O	A:VAL:10:N
+0	vdw	A:ASP:6:O	A:VAL:10:CB
+0	vdw	A:ASP:6:O	A:VAL:10:CG2
+0	vdw	A:THR:8:C	A:VAL:10:N
+0	vdw	A:ASN:9:C	A:LYS:11:N
+0	vdw	A:ALA:12:N	A:ASN:9:C
+0	vdw	A:ALA:12:N	A:ASN:9:O
+0	vdw	A:ALA:13:N	A:ASN:9:O
+0	vdw	A:ALA:12:N	A:VAL:10:C
+0	vdw	A:ALA:13:N	A:VAL:10:C
+0	vdw	A:ALA:13:N	A:LYS:11:C
+0	vdw	A:LYS:11:N	A:THR:8:O
+0	vdw	A:LYS:11:C	A:THR:8:O
+0	vdw	A:ALA:12:N	A:THR:8:O
+0	vdw	C:LEU:2:CD1	C:VAL:73:CG2
+0	vdw	C:VAL:70:O	C:VAL:73:CB
+0	vdw	C:VAL:70:O	C:VAL:73:CG1
+0	vdw	C:MET:76:CG	C:VAL:73:O
+0	vdw	C:ASP:75:N	C:VAL:73:O
+0	vdw	A:LYS:7:CG	A:SER:3:O
+0	vdw	A:LYS:7:CE	A:SER:3:O
+0	vdw	A:LYS:7:CB	A:PRO:4:O
+0	vdw	A:LEU:2:C	A:LYS:7:CE
+0	vdw	A:LEU:2:O	A:LYS:7:CE
+0	vdw	A:LYS:11:CB	A:LYS:7:O
+0	vdw	A:LYS:7:CA	A:PRO:4:O
+0	vdw	A:LYS:11:N	A:LYS:7:O
+0	vdw	A:ASN:9:N	A:LYS:7:C
+0	vdw	A:ASN:9:N	A:LYS:7:O
+0	vdw	A:ALA:12:CB	A:THR:8:O
+0	vdw	A:ASP:74:CG	A:LYS:7:NZ
+0	vdw	A:ASP:74:OD1	A:LYS:7:NZ
+0	vdw	B:ASN:80:N	B:LEU:78:O
+0	vdw	B:ASN:80:N	B:HIS:77:C
+0	vdw	B:ASN:80:N	B:HIS:77:O
+0	vdw	B:ASN:80:N	B:LEU:78:C
+0	vdw	B:ASN:80:CA	B:HIS:77:O
+0	vdw	B:ASP:79:N	B:HIS:77:C
+0	vdw	B:ASP:79:N	B:HIS:77:O
+0	vdw	D:PRO:5:O	D:SER:9:N
+0	vdw	D:PRO:5:O	D:SER:9:CB
+0	vdw	D:LYS:8:N	D:PRO:5:O
+0	vdw	D:GLU:7:N	D:PRO:5:O
+0	vdw	D:GLU:7:C	D:SER:9:N
+0	vdw	D:GLU:7:O	D:SER:9:N
+0	vdw	D:LYS:8:N	D:THR:4:O
+0	vdw	D:LYS:8:N	D:PRO:5:C
+0	vdw	D:GLU:7:N	D:THR:4:O
+0	vdw	D:GLU:7:CA	D:THR:4:O
+0	vdw	D:GLU:7:CB	D:THR:4:O
+0	vdw	D:GLU:7:N	D:PRO:5:C
+0	vdw	D:GLU:7:OE2	D:LEU:3:CA
+0	vdw	D:GLU:7:OE2	D:LEU:3:C
+0	vdw	D:GLU:7:OE2	D:THR:4:N
+0	vdw	D:LEU:3:O	D:PRO:5:N
+0	vdw	B:HIS:143:NE2	B:LYS:82:CE
+0	vdw	B:HIS:143:CG	B:LYS:82:CE
+0	vdw	B:HIS:143:CE1	B:LYS:82:CE
+0	vdw	B:HIS:143:CD2	B:LYS:82:CE
+0	vdw	B:ASN:80:C	B:HIS:77:O
+0	vdw	B:HIS:77:O	B:LEU:81:N
+0	vdw	B:ASN:80:C	B:LYS:82:N
+0	vdw	B:LEU:75:O	B:LEU:78:CG
+0	vdw	B:GLY:74:O	B:HIS:77:C
+0	vdw	B:HIS:77:N	B:LEU:75:C
+0	vdw	B:HIS:77:N	B:LEU:75:O
+0	vdw	D:ALA:10:N	D:GLU:7:C
+0	vdw	D:ALA:10:N	D:GLU:7:O
+0	vdw	D:ALA:10:CA	D:GLU:7:O
+0	vdw	D:ALA:10:CB	D:GLU:7:O
+0	vdw	D:GLU:7:CB	D:LEU:3:CB
+0	vdw	D:GLU:7:N	D:THR:4:OG1
+0	vdw	D:GLU:7:CB	D:THR:4:OG1
+0	vdw	D:GLU:7:CG	D:THR:4:OG1
+0	vdw	D:GLU:7:OE2	D:LYS:132:CD
+0	vdw	D:GLU:7:CD	D:THR:4:OG1
+0	vdw	B:ALA:140:N	B:GLY:136:O
+0	vdw	B:ALA:138:N	B:GLY:136:O
+0	vdw	B:ASN:139:N	B:GLY:136:O
+0	vdw	B:ASN:139:CB	B:GLY:136:O
+0	vdw	B:ALA:138:C	B:ALA:140:N
+0	vdw	B:ALA:140:CA	B:GLY:136:O
+0	vdw	B:ALA:140:CB	B:GLY:136:O
+0	vdw	B:ALA:140:N	B:VAL:137:O
+0	vdw	B:ALA:138:O	B:ALA:140:N
+0	vdw	B:GLY:136:C	B:LEU:81:CD1
+0	vdw	B:GLY:136:CA	B:VAL:133:O
+0	vdw	B:GLY:74:O	B:LEU:81:CD2
+0	vdw	B:LEU:75:CA	B:SER:72:O
+0	vdw	B:LEU:75:CB	B:SER:72:O
+0	vdw	B:LEU:75:CG	B:SER:72:O
+0	vdw	B:LEU:75:CD1	B:TRP:15:CG
+0	vdw	B:LEU:75:CD1	B:TRP:15:CD1
+0	vdw	B:LEU:75:CD1	B:TRP:15:CD2
+0	vdw	B:LEU:75:CD1	B:TRP:15:CE2
+0	vdw	B:GLY:16:N	B:THR:12:O
+0	vdw	B:THR:12:O	B:TRP:15:N
+0	vdw	B:GLY:16:N	B:LEU:14:C
+0	vdw	B:GLY:16:N	B:LEU:14:O
+0	vdw	B:LYS:17:N	B:TRP:15:C
+0	vdw	B:TRP:15:C	B:VAL:18:N
+0	vdw	B:GLY:16:C	B:VAL:18:N
+0	vdw	D:THR:123:O	D:VAL:126:CA
+0	vdw	D:THR:123:OG1	D:VAL:126:CG2
+0	vdw	D:ALA:129:CB	D:PRO:125:O
+0	vdw	D:ALA:129:CB	D:VAL:126:O
+0	vdw	D:ALA:129:N	D:PRO:125:O
+0	vdw	D:ALA:129:N	D:VAL:126:O
+0	vdw	D:ALA:129:CA	D:VAL:126:O
+0	vdw	D:GLN:127:N	D:PRO:125:C
+0	vdw	D:ALA:128:N	D:PRO:125:O
+0	vdw	D:ALA:128:N	D:VAL:126:O
+0	vdw	D:ALA:128:CA	D:PRO:125:O
+0	vdw	D:ALA:128:CB	D:PRO:125:O
+0	vdw	D:ALA:128:O	D:LYS:132:CG
+0	vdw	D:ALA:129:N	D:GLN:127:O
+0	vdw	D:GLU:7:OE1	D:LYS:132:CE
+0	vdw	B:ALA:135:O	B:ASN:139:CG
+0	vdw	B:ALA:135:O	B:ASN:139:OD1
+0	vdw	B:ASN:139:C	B:LEU:141:N
+0	vdw	B:ALA:135:O	B:ALA:138:N
+0	vdw	B:ALA:135:O	B:ASN:139:N
+0	vdw	B:ALA:135:O	B:ASN:139:CB
+0	vdw	B:ALA:138:N	B:GLY:136:C
+0	vdw	B:ALA:135:O	B:ALA:138:CB
+0	vdw	B:ASN:139:N	B:VAL:137:O
+0	vdw	B:ALA:138:N	B:VAL:134:O
+0	vdw	B:ASN:139:N	B:VAL:137:C
+0	vdw	B:GLY:136:C	B:VAL:133:O
+0	vdw	B:VAL:133:O	B:VAL:137:N
+0	vdw	B:VAL:133:O	B:VAL:137:CG2
+0	vdw	B:VAL:133:O	B:VAL:137:CB
+0	vdw	B:LEU:75:CD2	B:VAL:133:CG1
+0	vdw	B:LEU:110:CD2	B:PHE:71:CZ
+0	vdw	B:LEU:14:C	B:LYS:17:N
+0	vdw	B:LEU:14:O	B:LYS:17:N
+0	vdw	B:LEU:14:O	B:LYS:17:CA
+0	vdw	B:LEU:14:O	B:LYS:17:C
+0	vdw	B:LEU:14:O	B:LYS:17:CB
+0	vdw	B:LEU:14:O	B:VAL:18:CG2
+0	vdw	B:LYS:17:N	B:TRP:15:O
+0	vdw	D:GLU:121:C	D:THR:123:N
+0	vdw	D:GLU:121:O	D:THR:123:N
+0	vdw	D:GLU:121:O	D:THR:123:CG2
+0	vdw	D:THR:123:C	D:VAL:126:N
+0	vdw	D:THR:123:O	D:VAL:126:N
+0	vdw	D:THR:123:O	D:VAL:126:CB
+0	vdw	D:GLN:127:N	D:THR:123:O
+0	vdw	D:GLN:127:CB	D:THR:123:O
+0	vdw	D:PRO:125:CD	D:THR:123:C
+0	vdw	D:THR:123:OG1	D:VAL:126:N
+0	vdw	C:ARG:31:NH1	D:THR:123:C
+0	vdw	D:PRO:125:N	D:THR:123:C
+0	vdw	D:PRO:125:N	D:THR:123:O
+0	vdw	D:PRO:124:C	D:VAL:126:N
+0	vdw	D:PRO:124:O	D:VAL:126:N
+0	vdw	D:ALA:128:N	D:VAL:126:C
+0	vdw	C:ARG:31:NH1	D:GLN:127:CB
+0	vdw	D:GLN:127:N	D:PRO:124:O
+0	vdw	D:GLN:127:CA	D:PRO:124:O
+0	vdw	D:GLN:127:CB	D:PRO:124:O
+0	vdw	D:ALA:128:N	D:PRO:124:O
+0	vdw	D:ALA:129:N	D:VAL:126:C
+0	vdw	D:ALA:129:N	D:GLN:127:C
+0	vdw	C:SER:35:OG	D:ALA:128:CA
+0	vdw	C:ARG:31:O	C:SER:35:OG
+0	vdw	C:PRO:37:CD	C:SER:35:O
+0	vdw	B:ALA:138:CB	B:VAL:134:O
+0	vdw	B:GLY:107:CA	B:VAL:134:CB
+0	vdw	B:PHE:118:CE1	B:VAL:18:CG2
+0	vdw	B:PHE:118:CZ	B:VAL:18:CG2
+0	vdw	B:LYS:17:CB	B:PHE:118:CE2
+0	vdw	B:LYS:17:CB	B:PHE:118:CZ
+0	vdw	D:LYS:120:C	D:PHE:122:N
+0	vdw	D:LYS:120:O	D:PHE:122:N
+0	vdw	D:LYS:120:O	D:THR:123:CG2
+0	vdw	C:ARG:31:CZ	D:PHE:122:O
+0	vdw	C:ARG:31:NH2	D:PHE:122:O
+0	vdw	C:ARG:31:NH1	D:PHE:122:O
+0	vdw	C:ARG:31:CZ	C:GLU:27:OE1
+0	vdw	C:ARG:31:NH2	C:GLU:27:OE1
+0	vdw	C:ARG:31:NH1	D:GLN:127:OE1
+0	vdw	C:ARG:31:CD	D:GLN:127:OE1
+0	vdw	C:ARG:31:CB	D:GLN:127:OE1
+0	vdw	C:ARG:31:CG	D:GLN:127:OE1
+0	vdw	C:SER:35:OG	D:GLN:127:CG
+0	vdw	C:SER:35:OG	D:GLN:127:CD
+0	vdw	C:ARG:31:O	C:SER:35:CB
+0	vdw	B:ARG:104:CD	B:GLU:101:OE1
+0	vdw	B:ARG:104:CD	B:GLU:101:CD
+0	vdw	B:ARG:104:CA	B:GLU:101:O
+0	vdw	B:ARG:104:CB	B:GLU:101:O
+0	vdw	B:ARG:104:C	B:GLY:107:N
+0	vdw	B:ARG:104:O	B:GLY:107:N
+0	vdw	B:ARG:104:O	B:GLY:107:CA
+0	vdw	B:ARG:104:O	B:GLY:107:C
+0	vdw	B:ARG:104:O	B:ASN:108:N
+0	vdw	B:ARG:104:O	B:ASN:108:CB
+0	vdw	B:GLY:107:N	B:LEU:105:O
+0	vdw	B:ARG:104:C	B:LEU:106:N
+0	vdw	B:ARG:104:O	B:LEU:106:N
+0	vdw	B:ASN:102:O	B:LEU:105:N
+0	vdw	B:LEU:105:N	B:PHE:103:O
+0	vdw	B:GLY:107:N	B:PHE:103:O
+0	vdw	B:GLY:107:N	B:LEU:105:C
+0	vdw	B:GLU:101:O	B:LEU:105:N
+0	vdw	B:LEU:105:N	B:PHE:103:C
+0	vdw	B:GLY:107:O	B:LEU:110:N
+0	vdw	B:GLY:107:O	B:LEU:110:CB
+0	vdw	B:GLY:107:O	B:VAL:111:N
+0	vdw	B:GLY:107:C	B:VAL:109:N
+0	vdw	B:GLY:107:O	B:VAL:109:N
+0	vdw	B:ASN:108:C	B:LEU:110:N
+0	vdw	B:ASN:108:O	B:LEU:110:N
+0	vdw	B:ASN:108:N	B:LEU:106:C
+0	vdw	B:ASN:108:N	B:LEU:106:O
+0	vdw	B:LEU:106:O	B:LEU:110:N
+0	vdw	B:LEU:110:O	B:VAL:113:C
+0	vdw	B:LEU:110:O	B:VAL:113:CB
+0	vdw	B:LEU:110:O	B:LEU:114:N
+0	vdw	B:LEU:110:O	B:LEU:114:CB
+0	vdw	B:LEU:110:C	B:VAL:113:N
+0	vdw	B:LEU:110:O	B:VAL:113:N
+0	vdw	B:VAL:109:C	B:VAL:111:N
+0	vdw	B:VAL:109:O	B:VAL:111:N
+0	vdw	B:LEU:110:O	B:VAL:113:CA
+0	vdw	B:LEU:110:O	B:LEU:114:CG
+0	vdw	B:LEU:106:O	B:LEU:110:CA
+0	vdw	B:LEU:106:O	B:LEU:110:CB
+0	vdw	B:HIS:117:CB	B:VAL:113:O
+0	vdw	B:HIS:117:ND1	B:VAL:113:O
+0	vdw	B:HIS:116:CB	B:VAL:113:O
+0	vdw	B:HIS:117:N	B:VAL:113:O
+0	vdw	C:ALA:111:CB	C:THR:108:O
+0	vdw	C:ARG:31:CD	C:THR:108:OG1
+0	vdw	C:CYS:104:O	C:THR:108:N
+0	vdw	C:CYS:104:O	C:THR:108:OG1
+0	vdw	C:CYS:104:O	C:THR:108:CB
+0	vdw	C:LEU:105:C	C:THR:108:N
+0	vdw	C:LEU:105:O	C:THR:108:N
+0	vdw	C:ALA:28:CA	C:THR:108:OG1
+0	vdw	C:CYS:104:O	C:LEU:106:N
+0	vdw	C:ALA:28:CB	C:THR:108:OG1
+0	vdw	C:ARG:31:NE	C:GLU:27:CG
+0	vdw	C:ARG:31:NE	C:GLU:27:CD
+0	vdw	C:ARG:31:NE	C:GLU:27:OE1
+0	vdw	C:CYS:104:N	C:LEU:100:O
+0	vdw	C:CYS:104:SG	C:LEU:100:O
+0	vdw	C:HIS:103:C	C:LEU:105:N
+0	vdw	C:HIS:103:C	C:LEU:106:N
+0	vdw	C:CYS:104:N	C:LEU:101:O
+0	vdw	C:CYS:104:N	C:SER:102:O
+0	vdw	C:CYS:104:CA	C:LEU:101:O
+0	vdw	C:CYS:104:CB	C:LEU:101:O
+0	vdw	C:ALA:28:O	C:CYS:104:CB
+0	vdw	C:CYS:104:N	C:LEU:101:C
+0	vdw	C:CYS:104:N	C:SER:102:C
+0	vdw	C:CYS:104:SG	C:MET:32:CB
+0	vdw	C:CYS:104:SG	C:PHE:36:CE1
+0	vdw	C:ARG:31:C	C:CYS:104:SG
+0	vdw	C:CYS:104:SG	C:MET:32:N
+0	vdw	C:CYS:104:SG	C:MET:32:CA
+0	vdw	C:LEU:100:C	C:SER:102:N
+0	vdw	C:LEU:100:O	C:SER:102:N
+0	vdw	C:HIS:103:N	C:LEU:100:O
+0	vdw	C:ASN:97:O	C:LEU:100:CA
+0	vdw	C:LEU:100:CG	C:VAL:96:O
+0	vdw	C:LEU:100:N	C:PHE:98:C
+0	vdw	C:LEU:100:N	C:PHE:98:O
+0	vdw	C:LEU:100:CD1	C:THR:39:CG2
+0	vdw	C:ASN:97:C	C:LEU:100:N
+0	vdw	C:ASN:97:O	C:LEU:100:N
+0	vdw	C:ASN:97:O	C:LEU:100:CB
+0	vdw	C:ASP:94:OD2	C:VAL:96:CB
+0	vdw	C:ASP:94:OD2	C:VAL:96:CG2
+0	vdw	C:PHE:98:N	C:VAL:96:C
+0	vdw	C:PHE:98:N	C:VAL:96:O
+0	vdw	B:GLU:101:CD	C:VAL:96:CG1
+0	vdw	C:ASP:94:OD2	C:VAL:96:CG1
+0	vdw	B:LEU:105:O	B:VAL:109:N
+0	vdw	B:LEU:105:O	B:VAL:109:CG2
+0	vdw	B:ASN:108:N	B:LEU:105:O
+0	vdw	B:ASN:108:O	B:VAL:111:N
+0	vdw	B:LEU:106:O	B:VAL:109:N
+0	vdw	B:CYS:112:C	B:VAL:109:O
+0	vdw	B:CYS:112:CB	B:VAL:109:O
+0	vdw	B:VAL:109:O	B:VAL:113:N
+0	vdw	A:HIS:122:CE1	B:CYS:112:CB
+0	vdw	B:VAL:109:O	B:VAL:113:CG2
+0	vdw	B:VAL:109:O	B:VAL:113:CB
+0	vdw	B:CYS:112:C	B:LEU:114:N
+0	vdw	B:LEU:106:O	B:VAL:109:C
+0	vdw	B:CYS:112:O	B:HIS:116:CB
+0	vdw	C:HIS:112:N	C:THR:108:O
+0	vdw	C:HIS:112:CB	C:THR:108:O
+0	vdw	C:HIS:112:ND1	C:THR:108:O
+0	vdw	C:HIS:112:CG	C:TYR:24:CE2
+0	vdw	C:HIS:112:CD2	C:TYR:24:CE2
+0	vdw	C:HIS:112:CB	C:TYR:24:CZ
+0	vdw	C:HIS:112:CB	C:TYR:24:OH
+0	vdw	C:HIS:112:CG	C:TYR:24:CZ
+0	vdw	C:HIS:112:CG	C:TYR:24:OH
+0	vdw	C:HIS:112:CD2	C:TYR:24:CZ
+0	vdw	C:HIS:112:CD2	C:TYR:24:OH
+0	vdw	C:LEU:105:O	C:LEU:109:N
+0	vdw	C:LEU:105:O	C:THR:108:CB
+0	vdw	C:LEU:105:C	C:SER:102:O
+0	vdw	C:LEU:105:O	C:LEU:109:CG
+0	vdw	C:CYS:104:C	C:LEU:101:O
+0	vdw	C:LEU:101:O	C:LEU:105:N
+0	vdw	C:LEU:101:O	C:LEU:105:CB
+0	vdw	C:LEU:105:N	C:SER:102:O
+0	vdw	C:LEU:105:CA	C:SER:102:O
+0	vdw	C:LEU:105:CB	C:SER:102:O
+0	vdw	C:LEU:106:N	C:SER:102:O
+0	vdw	C:CYS:104:C	C:LEU:106:N
+0	vdw	C:HIS:103:N	C:LEU:101:O
+0	vdw	C:LEU:105:N	C:SER:102:C
+0	vdw	C:LYS:99:O	C:SER:102:N
+0	vdw	C:LYS:99:O	C:SER:102:CB
+0	vdw	C:HIS:103:N	C:LYS:99:O
+0	vdw	C:HIS:103:N	C:LEU:101:C
+0	vdw	C:LEU:101:N	C:PHE:98:O
+0	vdw	C:LEU:101:N	C:LYS:99:C
+0	vdw	C:PHE:98:O	C:SER:102:N
+0	vdw	C:LYS:99:C	C:SER:102:N
+0	vdw	C:PHE:98:O	C:SER:102:CA
+0	vdw	C:PHE:98:O	C:SER:102:CB
+0	vdw	C:ASN:97:O	C:LEU:101:N
+0	vdw	C:ASN:97:C	C:LYS:99:N
+0	vdw	C:ASN:97:O	C:LYS:99:N
+0	vdw	C:LYS:99:N	C:VAL:96:O
+0	vdw	C:ASN:97:N	C:PRO:95:C
+0	vdw	C:ASN:97:N	C:PRO:95:O
+0	vdw	C:ASP:94:C	C:VAL:96:N
+0	vdw	C:ASP:94:O	C:VAL:96:N
+0	vdw	C:PHE:98:CD2	C:PRO:95:O
+0	vdw	C:PHE:98:N	C:PRO:95:O
+0	vdw	C:ASP:94:OD2	C:VAL:96:N
+0	vdw	A:ASP:126:OD2	B:TYR:35:CE1
+0	vdw	B:TYR:35:CE1	C:ARG:141:NH1
+0	vdw	A:ASP:126:CG	B:TYR:35:OH
+0	vdw	A:ASP:126:OD2	B:TYR:35:OH
+0	vdw	B:TYR:35:CE2	B:VAL:109:CG2
+0	vdw	A:HIS:122:CG	A:PHE:117:CE2
+0	vdw	A:HIS:122:ND1	A:PHE:117:CE2
+0	vdw	A:HIS:122:ND1	B:ARG:30:CD
+0	vdw	A:HIS:122:ND1	B:ARG:30:NH1
+0	vdw	A:PHE:117:CB	B:HIS:116:CD2
+0	vdw	A:PHE:117:O	B:ARG:30:CZ
+0	vdw	A:PHE:117:O	B:ARG:30:NH1
+0	vdw	A:PHE:117:O	B:ARG:30:NH2
+0	vdw	A:PHE:117:CD2	B:ARG:30:NH1
+0	vdw	A:PHE:117:CE2	B:ARG:30:NH1
+0	vdw	A:PRO:114:O	B:HIS:116:CE1
+0	vdw	A:PRO:114:O	B:HIS:116:NE2
+0	vdw	A:PRO:114:C	B:HIS:116:NE2
+0	vdw	A:GLU:116:N	A:PRO:114:O
+0	vdw	C:LEU:109:CD2	C:VAL:17:CG2
+0	vdw	C:PHE:98:O	C:SER:102:OG
+0	vdw	C:PHE:98:CB	C:SER:133:CB
+0	vdw	C:PHE:98:CB	C:SER:133:OG
+0	vdw	C:PHE:98:CB	C:PRO:95:O
+0	vdw	A:ASP:126:CG	C:ARG:141:NH1
+0	vdw	A:ASP:126:OD2	C:ARG:141:CZ
+0	vdw	A:ASP:126:OD2	C:ARG:141:NH1
+0	vdw	A:ASP:126:OD2	C:ARG:141:NH2
+0	vdw	B:VAL:34:O	C:ARG:141:NH1
+0	vdw	B:VAL:34:CG1	C:ARG:141:NH1
+0	vdw	B:TYR:35:CD1	C:ARG:141:NH1
+0	vdw	A:ASP:126:CB	A:HIS:122:O
+0	vdw	A:HIS:122:O	A:SER:124:N
+0	vdw	A:ALA:123:O	A:ASP:126:CB
+0	vdw	A:ALA:123:N	A:VAL:121:C
+0	vdw	A:HIS:122:N	A:THR:118:O
+0	vdw	A:HIS:122:CB	A:THR:118:O
+0	vdw	A:ALA:123:N	A:VAL:121:O
+0	vdw	A:HIS:122:N	A:PRO:119:O
+0	vdw	A:HIS:122:CB	A:PRO:119:O
+0	vdw	A:ALA:123:N	A:PRO:119:O
+0	vdw	A:ALA:120:C	A:HIS:122:N
+0	vdw	A:ALA:120:O	A:HIS:122:N
+0	vdw	A:ALA:120:O	A:ALA:123:N
+0	vdw	A:HIS:122:CB	A:PHE:117:CE2
+0	vdw	A:HIS:122:CB	B:ARG:30:NH1
+0	vdw	A:GLU:116:C	A:THR:118:N
+0	vdw	A:GLU:116:O	A:THR:118:N
+0	vdw	A:THR:118:O	A:VAL:121:N
+0	vdw	A:THR:118:O	A:VAL:121:CB
+0	vdw	A:ALA:120:N	A:THR:118:O
+0	vdw	A:ALA:115:C	A:PHE:117:N
+0	vdw	A:GLU:116:N	A:PRO:114:C
+0	vdw	C:GLY:15:C	C:VAL:17:N
+0	vdw	C:GLY:15:O	C:VAL:17:N
+0	vdw	C:GLY:18:N	C:LYS:16:C
+0	vdw	C:TRP:14:C	C:VAL:17:N
+0	vdw	C:TRP:14:O	C:VAL:17:N
+0	vdw	C:TRP:14:O	C:VAL:17:CA
+0	vdw	C:TRP:14:O	C:VAL:17:CB
+0	vdw	C:TYR:24:CD1	C:VAL:17:CG2
+0	vdw	C:PHE:128:CE2	C:VAL:132:CG2
+0	vdw	C:LEU:129:O	C:VAL:132:CB
+0	vdw	C:LEU:129:O	C:VAL:132:N
+0	vdw	C:LEU:129:O	C:SER:133:N
+0	vdw	C:LEU:129:O	C:SER:133:CA
+0	vdw	C:LEU:129:O	C:SER:133:CB
+0	vdw	C:LEU:129:O	C:SER:133:OG
+0	vdw	C:THR:134:N	C:VAL:132:C
+0	vdw	C:THR:134:N	C:VAL:132:O
+0	vdw	C:VAL:132:O	C:VAL:135:CB
+0	vdw	C:SER:131:C	C:SER:133:N
+0	vdw	C:SER:131:O	C:SER:133:N
+0	vdw	C:SER:131:O	C:THR:134:N
+0	vdw	C:LEU:136:CB	C:VAL:132:O
+0	vdw	C:LEU:136:CG	C:VAL:132:O
+0	vdw	C:VAL:132:C	C:VAL:135:N
+0	vdw	C:VAL:132:O	C:VAL:135:N
+0	vdw	C:VAL:132:O	C:VAL:135:CA
+0	vdw	C:SER:133:C	C:VAL:135:N
+0	vdw	C:LEU:136:N	C:VAL:132:O
+0	vdw	C:SER:133:O	C:THR:137:OG1
+0	vdw	C:THR:134:O	C:THR:137:OG1
+0	vdw	C:SER:133:O	C:VAL:135:N
+0	vdw	C:LEU:136:N	C:SER:133:O
+0	vdw	C:SER:133:O	C:THR:137:N
+0	vdw	C:SER:133:O	C:THR:137:CB
+0	vdw	C:LEU:136:N	C:THR:134:C
+0	vdw	C:LEU:136:N	C:THR:134:O
+0	vdw	C:THR:134:O	C:THR:137:N
+0	vdw	C:SER:138:OG	C:THR:134:O
+0	vdw	C:THR:134:O	C:THR:137:C
+0	vdw	C:SER:138:N	C:THR:134:O
+0	vdw	C:SER:133:O	C:THR:137:CG2
+0	vdw	C:SER:138:CA	C:THR:134:O
+0	vdw	A:ALA:123:O	A:LYS:127:CB
+0	vdw	A:LYS:127:CD	C:ARG:141:OXT
+0	vdw	A:ASP:6:OD2	A:LYS:127:CD
+0	vdw	A:SER:124:N	A:VAL:121:O
+0	vdw	A:SER:124:CA	A:VAL:121:O
+0	vdw	A:SER:124:C	A:VAL:121:O
+0	vdw	A:ASP:6:OD1	A:SER:124:CA
+0	vdw	A:ALA:120:O	A:SER:124:N
+0	vdw	A:SER:124:N	A:VAL:121:C
+0	vdw	A:HIS:122:C	A:SER:124:N
+0	vdw	A:SER:124:CB	A:VAL:121:O
+0	vdw	A:ASN:9:CB	A:SER:124:CB
+0	vdw	A:ASN:9:CB	A:SER:124:OG
+0	vdw	A:ASN:9:ND2	A:SER:124:OG
+0	vdw	A:ALA:120:O	A:SER:124:CB
+0	vdw	A:ALA:120:O	A:SER:124:OG
+0	vdw	A:THR:118:O	A:VAL:121:CA
+0	vdw	A:THR:118:OG1	A:VAL:121:N
+0	vdw	A:THR:118:OG1	A:VAL:121:CB
+0	vdw	A:THR:118:OG1	A:VAL:121:CG2
+0	vdw	A:GLU:116:O	A:VAL:121:CB
+0	vdw	A:GLU:116:O	A:VAL:121:CG1
+0	vdw	A:GLU:116:O	A:VAL:121:CG2
+0	vdw	A:PRO:119:C	A:VAL:121:N
+0	vdw	A:PRO:119:O	A:VAL:121:N
+0	vdw	C:LYS:16:N	C:TRP:14:C
+0	vdw	C:LYS:16:N	C:TRP:14:O
+0	vdw	C:GLY:15:O	C:VAL:17:C
+0	vdw	C:GLY:15:O	C:GLY:18:N
+0	vdw	C:GLY:15:O	C:GLY:18:CA
+0	vdw	C:TRP:14:CG	C:VAL:70:CG2
+0	vdw	C:GLY:18:N	C:TRP:14:O
+0	vdw	C:PHE:128:CZ	C:VAL:70:CG2
+0	vdw	C:LEU:66:O	C:VAL:70:CB
+0	vdw	C:LEU:66:O	C:VAL:70:CG2
+0	vdw	C:THR:67:O	C:VAL:70:CB
+0	vdw	C:PHE:128:CE1	C:VAL:132:CG2
+0	vdw	C:PHE:128:CZ	C:VAL:132:CG2
+0	vdw	C:MET:76:SD	C:VAL:132:CG2
+0	vdw	C:SER:131:O	C:VAL:135:CG2
+0	vdw	C:SER:131:O	C:VAL:135:N
+0	vdw	C:SER:131:O	C:THR:134:CA
+0	vdw	C:SER:138:OG	C:VAL:135:O
+0	vdw	A:LYS:127:CE	A:VAL:1:O
+0	vdw	A:ASP:6:OD2	A:LYS:127:CE
+0	vdw	A:SER:3:N	A:VAL:1:C
+0	vdw	A:SER:3:N	A:VAL:1:O
+0	vdw	A:LYS:127:NZ	A:VAL:1:O
+0	vdw	A:LYS:127:CE	C:ARG:141:OXT
+0	vdw	A:ASP:6:CA	A:SER:3:O
+0	vdw	A:ASP:6:CB	A:SER:3:O
+0	vdw	A:ASP:6:CG	A:SER:3:OG
+0	vdw	A:ASP:6:OD2	A:SER:3:CB
+0	vdw	A:ASP:6:OD2	A:SER:3:OG
+0	vdw	A:ASP:6:CA	A:SER:124:OG
+0	vdw	A:ASP:6:CG	A:SER:124:OG
+0	vdw	A:ASP:6:OD1	A:SER:124:CB
+0	vdw	A:ASP:6:OD1	A:SER:124:OG
+0	vdw	A:ASP:6:OD2	A:LYS:127:NZ
+0	vdw	A:ASN:9:N	A:ASP:6:C
+0	vdw	A:ASN:9:N	A:ASP:6:O
+0	vdw	A:ASN:9:CB	A:ASP:6:O
+0	vdw	A:ASN:9:CA	A:ASP:6:O
+0	vdw	A:ASP:6:C	A:THR:8:N
+0	vdw	A:ASP:6:O	A:THR:8:N
+0	vdw	A:ALA:5:O	A:ASN:9:N
+0	vdw	A:ALA:5:O	A:ASN:9:CB
+0	vdw	A:ALA:5:O	A:ASN:9:CG
+0	vdw	A:ALA:5:O	A:ASN:9:ND2
+0	vdw	C:ALA:69:C	C:ALA:71:N
+0	vdw	C:ALA:69:O	C:ALA:71:N
+0	vdw	C:ALA:71:N	C:THR:67:O
+0	vdw	C:HIS:72:N	C:VAL:70:C
+0	vdw	C:HIS:72:N	C:VAL:70:O
+0	vdw	C:VAL:70:O	C:VAL:73:N
+0	vdw	C:ALA:71:N	C:ASN:68:O
+0	vdw	C:ALA:69:O	C:VAL:73:CA
+0	vdw	C:ALA:69:O	C:MET:76:CG
+0	vdw	C:MET:76:CG	C:VAL:73:CA
+0	vdw	C:ALA:69:O	C:HIS:72:N
+0	vdw	C:ALA:69:O	C:HIS:72:CA
+0	vdw	C:ALA:69:O	C:HIS:72:C
+0	vdw	C:ALA:69:O	C:VAL:73:N
+0	vdw	C:ASN:68:C	C:VAL:70:N
+0	vdw	C:THR:67:O	C:VAL:70:N
+0	vdw	C:ALA:69:C	C:LEU:66:O
+0	vdw	C:LEU:66:O	C:VAL:70:N
+0	vdw	C:HIS:72:O	C:MET:76:N
+0	vdw	C:HIS:72:O	C:MET:76:CG
+0	vdw	C:ASP:75:O	C:PRO:77:N
+0	vdw	A:ASP:6:OD2	A:LEU:2:CA
+0	vdw	A:ASP:6:OD2	A:LEU:2:C
+0	vdw	A:ASP:6:OD2	A:SER:3:N
+0	vdw	A:ASP:6:N	A:SER:3:C
+0	vdw	A:ASP:6:N	A:SER:3:O
+0	vdw	A:LYS:7:N	A:SER:3:O
+0	vdw	A:ASP:6:N	A:PRO:4:C
+0	vdw	A:ASP:6:N	A:PRO:4:O
+0	vdw	A:LYS:7:N	A:PRO:4:C
+0	vdw	A:LYS:7:N	A:PRO:4:O
+0	vdw	A:ALA:5:C	A:LYS:7:N
+0	vdw	A:ALA:5:O	A:LYS:7:N
+0	vdw	A:ASP:6:N	A:SER:3:OG
+0	vdw	A:ALA:5:N	A:SER:3:C
+0	vdw	A:ALA:5:N	A:SER:3:O
+0	vdw	A:ASP:6:C	A:SER:3:O
+0	vdw	A:PRO:4:O	A:THR:8:N
+0	vdw	A:ALA:5:C	A:THR:8:N
+0	vdw	A:ALA:5:O	A:THR:8:N
+0	vdw	A:PRO:4:O	A:THR:8:CB
+0	vdw	A:PRO:4:O	A:THR:8:OG1
+0	vdw	A:ALA:5:O	A:THR:8:CA
+0	vdw	A:ALA:5:O	A:THR:8:CB
+0	vdw	A:ALA:5:O	A:ASN:9:CA
+0	vdw	C:ALA:71:C	C:VAL:73:N
+0	vdw	C:ASP:74:N	C:HIS:72:C
+0	vdw	C:ASN:68:O	C:HIS:72:N
+0	vdw	C:ASN:68:O	C:HIS:72:CA
+0	vdw	C:ASP:74:N	C:HIS:72:O
+0	vdw	C:ASP:75:N	C:HIS:72:O
+0	vdw	C:ASP:75:CA	C:HIS:72:O
+0	vdw	C:ASP:75:C	C:HIS:72:O
+0	vdw	C:ASP:75:N	C:VAL:73:C
+0	vdw	C:ASP:75:C	C:PRO:77:N
+0	vdw	C:ASP:75:C	C:PRO:77:CD
+0	vdw	B:ASN:80:OD1	B:GLY:83:CA
+0	vdw	B:ASN:80:OD1	B:GLY:83:N
+0	vdw	B:GLY:74:O	B:HIS:77:CA
+0	vdw	B:GLY:74:O	B:HIS:77:CB
+0	vdw	B:ASP:73:O	B:HIS:77:ND1
+0	vdw	B:ALA:76:CB	B:ASP:73:O
+0	vdw	B:GLY:83:N	B:LEU:81:C
+0	vdw	B:GLY:83:N	B:LEU:81:O
+0	vdw	B:LEU:81:C	B:THR:84:N
+0	vdw	B:LEU:81:O	B:THR:84:N
+0	vdw	B:LEU:81:O	B:THR:84:CB
+0	vdw	B:ASN:80:O	B:LYS:82:N
+0	vdw	B:LYS:82:C	B:THR:84:N
+0	vdw	B:LYS:82:O	B:THR:84:N
+0	vdw	B:ASN:80:O	B:GLY:83:N
+0	vdw	B:ALA:140:CB	B:LEU:81:C
+0	vdw	B:ALA:140:CB	B:LEU:81:O
+0	vdw	B:ALA:140:CB	B:LYS:82:CA
+0	vdw	B:LEU:81:O	B:PHE:85:N
+0	vdw	B:LYS:82:O	B:PHE:85:N
+0	vdw	B:ALA:86:N	B:LYS:82:O
+0	vdw	B:ALA:86:CA	B:LYS:82:O
+0	vdw	B:LEU:81:O	B:PHE:85:CD1
+0	vdw	B:LEU:81:O	B:THR:84:CA
+0	vdw	B:LEU:81:O	B:PHE:85:CA
+0	vdw	B:LEU:81:O	B:PHE:85:CB
+0	vdw	B:ALA:86:CB	B:LYS:82:O
+0	vdw	B:ASN:80:O	B:THR:84:N
+0	vdw	B:ASN:80:O	B:THR:84:CB
+0	vdw	B:ASN:80:O	B:THR:84:OG1
+0	vdw	B:HIS:77:CB	B:THR:84:OG1
+0	vdw	B:HIS:77:CG	B:THR:84:OG1
+0	vdw	B:GLY:74:C	B:HIS:77:N
+0	vdw	B:GLY:74:O	B:HIS:77:N
+0	vdw	B:ALA:76:N	B:GLY:74:C
+0	vdw	B:ALA:76:N	B:GLY:74:O
+0	vdw	B:GLY:74:CA	B:PHE:71:O
+0	vdw	B:ALA:76:N	B:ASP:73:O
+0	vdw	B:ASP:73:O	B:LEU:75:N
+0	vdw	B:HIS:143:C	B:TYR:145:N
+0	vdw	B:ALA:140:O	B:HIS:143:N
+0	vdw	B:ALA:140:O	B:HIS:143:CB
+0	vdw	B:ASN:139:O	B:HIS:143:N
+0	vdw	B:HIS:143:N	B:LEU:141:C
+0	vdw	B:ASN:139:O	B:HIS:143:CA
+0	vdw	B:ASN:139:O	B:HIS:143:CB
+0	vdw	B:ALA:140:CA	B:VAL:137:O
+0	vdw	B:ALA:140:C	B:VAL:137:O
+0	vdw	B:ALA:140:CB	B:VAL:137:O
+0	vdw	B:ALA:70:O	B:PHE:85:CZ
+0	vdw	B:GLY:74:CA	B:PHE:85:CZ
+0	vdw	B:GLY:74:N	B:PHE:71:C
+0	vdw	B:GLY:74:N	B:PHE:71:O
+0	vdw	B:GLY:74:N	B:SER:72:C
+0	vdw	B:GLY:74:N	B:SER:72:O
+0	vdw	B:ALA:70:O	B:GLY:74:N
+0	vdw	B:LEU:75:N	B:PHE:71:O
+0	vdw	B:LEU:75:N	B:SER:72:C
+0	vdw	B:LEU:75:N	B:SER:72:O
+0	vdw	B:ASP:73:N	B:PHE:71:C
+0	vdw	B:ASP:73:N	B:PHE:71:O
+0	vdw	B:GLY:69:O	B:SER:72:CA
+0	vdw	B:LEU:68:O	B:PHE:71:C
+0	vdw	B:LEU:68:O	B:SER:72:CA
+0	vdw	B:ASP:73:C	B:LEU:75:N
+0	vdw	B:SER:72:OG	B:TRP:15:NE1
+0	vdw	B:SER:72:CB	B:TRP:15:NE1
+0	vdw	B:ALA:142:O	B:TYR:145:N
+0	vdw	B:ALA:142:O	B:TYR:145:CA
+0	vdw	B:ALA:142:O	B:TYR:145:CB
+0	vdw	B:ALA:142:O	B:TYR:145:CD2
+0	vdw	B:ALA:142:O	B:LYS:144:N
+0	vdw	B:ALA:142:N	B:ASN:139:O
+0	vdw	B:ALA:142:CA	B:ASN:139:O
+0	vdw	B:ALA:142:C	B:ASN:139:O
+0	vdw	B:ASN:139:O	B:LEU:141:N
+0	vdw	B:ALA:138:O	B:ALA:142:N
+0	vdw	B:ALA:138:O	B:ALA:142:CA
+0	vdw	B:ALA:138:O	B:ALA:142:CB
+0	vdw	B:ALA:142:CB	B:PRO:100:CB
+0	vdw	B:ALA:140:C	B:ALA:142:N
+0	vdw	B:ALA:140:O	B:ALA:142:N
+0	vdw	B:ALA:142:CA	B:TYR:145:CD2
+0	vdw	B:ALA:142:C	B:TYR:145:CD2
+0	vdw	B:LEU:141:C	B:SER:89:CB
+0	vdw	B:LEU:141:C	B:SER:89:OG
+0	vdw	B:ALA:142:C	B:LYS:144:N
+0	vdw	B:LEU:141:N	B:VAL:137:O
+0	vdw	B:ALA:138:O	B:LEU:141:N
+0	vdw	B:LEU:141:CB	B:VAL:137:O
+0	vdw	B:PHE:71:CB	B:VAL:67:O
+0	vdw	B:LEU:68:C	B:PHE:71:CB
+0	vdw	B:LEU:68:O	B:PHE:71:CB
+0	vdw	B:PHE:71:CD2	B:TRP:15:CZ2
+0	vdw	B:PHE:71:CD2	B:TRP:15:CH2
+0	vdw	B:PHE:71:CE2	B:TRP:15:CH2
+0	vdw	B:LEU:110:CD2	B:PHE:71:CE2
+0	vdw	B:LEU:68:CD1	B:TRP:15:CZ2
+0	vdw	B:LEU:68:CD1	B:TRP:15:CH2
+0	vdw	B:TRP:15:O	B:VAL:18:N
+0	vdw	B:TRP:15:O	B:VAL:18:CA
+0	vdw	B:TRP:15:O	B:VAL:18:CB
+0	vdw	B:VAL:18:C	B:VAL:20:N
+0	vdw	B:VAL:18:O	B:VAL:20:N
+0	vdw	D:PRO:125:CD	D:THR:123:CB
+0	vdw	D:PRO:125:CD	D:THR:123:OG1
+0	vdw	D:ALA:128:CB	D:PRO:124:O
+0	vdw	C:LEU:34:C	D:ALA:128:CB
+0	vdw	C:LEU:34:O	D:ALA:128:CB
+0	vdw	C:LEU:34:C	C:PHE:36:N
+0	vdw	C:ARG:31:O	C:SER:35:N
+0	vdw	C:ARG:31:O	C:SER:35:CA
+0	vdw	C:MET:32:O	C:SER:35:N
+0	vdw	C:PHE:33:C	C:SER:35:N
+0	vdw	C:PRO:37:CD	C:SER:35:C
+0	vdw	C:MET:32:O	C:PHE:36:N
+0	vdw	B:PRO:100:CD	C:THR:38:CB
+0	vdw	B:PHE:103:CD2	B:PRO:100:CA
+0	vdw	B:PHE:103:CD2	B:PRO:100:CB
+0	vdw	B:PHE:103:CE2	B:PRO:100:CA
+0	vdw	B:PRO:100:CG	B:TYR:145:CE1
+0	vdw	B:PHE:103:CA	B:PRO:100:O
+0	vdw	B:PHE:103:CB	B:PRO:100:O
+0	vdw	B:PHE:103:CG	B:PRO:100:O
+0	vdw	B:PHE:103:CD2	B:PRO:100:O
+0	vdw	B:LEU:141:CB	B:PHE:103:CD2
+0	vdw	B:ASN:19:O	B:VAL:23:CB
+0	vdw	C:ARG:31:CG	D:PRO:124:CG
+0	vdw	C:ARG:31:CG	D:PRO:124:CB
+0	vdw	C:ARG:31:N	C:GLU:27:O
+0	vdw	C:ARG:31:CA	C:GLU:27:O
+0	vdw	C:ARG:31:CB	C:GLU:27:O
+0	vdw	C:ARG:31:CG	C:GLU:27:O
+0	vdw	C:ALA:28:C	C:ARG:31:N
+0	vdw	C:ALA:28:O	C:ARG:31:N
+0	vdw	C:ALA:28:O	C:ARG:31:CA
+0	vdw	C:ALA:28:O	C:ARG:31:CB
+0	vdw	C:LEU:34:CD1	D:PRO:124:CB
+0	vdw	C:ARG:31:N	C:LEU:29:C
+0	vdw	C:ARG:31:N	C:LEU:29:O
+0	vdw	C:ALA:28:O	C:MET:32:N
+0	vdw	C:ARG:31:C	C:PHE:33:N
+0	vdw	C:GLU:30:C	C:MET:32:N
+0	vdw	C:GLU:30:O	C:MET:32:N
+0	vdw	C:LEU:29:C	C:MET:32:N
+0	vdw	C:LEU:29:O	C:MET:32:N
+0	vdw	C:LEU:29:O	C:MET:32:CA
+0	vdw	C:ARG:31:O	C:LEU:34:N
+0	vdw	C:MET:32:O	C:PHE:36:CA
+0	vdw	C:MET:32:O	C:PHE:36:C
+0	vdw	C:MET:32:O	C:PHE:36:CB
+0	vdw	C:MET:32:O	C:PHE:36:O
+0	vdw	C:MET:32:O	C:THR:39:OG1
+0	vdw	C:LEU:29:O	C:MET:32:C
+0	vdw	C:PHE:36:C	C:THR:38:N
+0	vdw	C:LEU:34:N	C:MET:32:C
+0	vdw	C:LEU:34:N	C:MET:32:O
+0	vdw	C:PHE:36:O	C:THR:39:CG2
+0	vdw	C:PHE:36:O	C:THR:39:N
+0	vdw	C:PHE:36:O	C:THR:39:CA
+0	vdw	C:PHE:36:O	C:THR:39:CB
+0	vdw	C:PHE:36:O	C:THR:39:OG1
+0	vdw	C:PHE:36:O	C:THR:38:N
+0	vdw	B:ASP:99:OD2	B:GLU:101:N
+0	vdw	B:ASN:102:N	B:PRO:100:C
+0	vdw	B:ASP:99:C	B:GLU:101:N
+0	vdw	B:ASP:99:O	B:GLU:101:N
+0	vdw	B:ASN:102:N	B:PRO:100:O
+0	vdw	B:PHE:103:N	B:PRO:100:O
+0	vdw	B:ARG:104:N	B:PRO:100:O
+0	vdw	B:GLU:101:C	B:PHE:103:N
+0	vdw	B:GLU:101:O	B:PHE:103:N
+0	vdw	B:ARG:104:N	B:GLU:101:O
+0	vdw	B:ARG:104:N	B:ASN:102:C
+0	vdw	B:LEU:106:N	B:PHE:103:C
+0	vdw	B:ARG:104:N	B:ASN:102:O
+0	vdw	B:GLU:101:O	B:LEU:105:CG
+0	vdw	B:ASN:102:N	B:ASP:99:O
+0	vdw	B:ASN:102:O	B:LEU:105:C
+0	vdw	B:ASN:102:O	B:LEU:106:N
+0	vdw	B:ASN:102:O	B:LEU:106:CB
+0	vdw	B:LEU:106:N	B:PHE:103:O
+0	vdw	B:ASN:102:O	B:LEU:105:CB
+0	vdw	B:ALA:27:CB	B:VAL:23:O
+0	vdw	B:HIS:117:NE2	B:VAL:23:CG2
+0	vdw	B:GLU:22:OE1	B:HIS:117:CD2
+0	vdw	B:GLU:22:OE1	B:HIS:117:NE2
+0	vdw	B:GLU:22:CD	B:HIS:117:CE1
+0	vdw	B:GLU:22:CD	B:HIS:117:NE2
+0	vdw	B:ASN:19:O	B:VAL:23:CG2
+0	vdw	C:GLU:27:CD	C:THR:108:CG2
+0	vdw	C:GLU:27:OE1	C:THR:108:CG2
+0	vdw	C:GLU:27:CB	C:TYR:24:O
+0	vdw	C:GLU:23:O	C:GLU:27:CB
+0	vdw	C:ALA:28:N	C:TYR:24:O
+0	vdw	C:ALA:26:C	C:ALA:28:N
+0	vdw	C:ALA:26:O	C:ALA:28:N
+0	vdw	C:GLU:27:C	C:LEU:29:N
+0	vdw	C:GLU:27:O	C:LEU:29:N
+0	vdw	C:GLU:27:O	C:GLU:30:N
+0	vdw	C:ALA:28:N	C:GLY:25:O
+0	vdw	C:GLU:27:O	C:GLU:30:CA
+0	vdw	C:GLU:27:O	C:GLU:30:CB
+0	vdw	C:GLU:27:O	C:GLU:30:C
+0	vdw	C:ALA:28:O	C:MET:32:CB
+0	vdw	C:ALA:28:C	C:GLU:30:N
+0	vdw	C:ALA:28:O	C:GLU:30:N
+0	vdw	C:LEU:101:CA	C:MET:32:SD
+0	vdw	C:LEU:101:CB	C:MET:32:SD
+0	vdw	C:LEU:29:O	C:MET:32:CB
+0	vdw	C:MET:32:CG	C:THR:39:OG1
+0	vdw	C:ASN:97:OD1	C:THR:39:CG2
+0	vdw	C:ASN:97:CB	C:ASP:94:O
+0	vdw	C:ASN:97:ND2	C:ASP:94:CB
+0	vdw	C:ASN:97:CG	C:ASP:94:O
+0	vdw	C:ASN:97:ND2	C:ASP:94:C
+0	vdw	C:ASN:97:ND2	C:ASP:94:O
+0	vdw	B:ASP:99:OD1	C:ASN:97:ND2
+0	vdw	C:ASN:97:ND2	C:TYR:42:CE2
+0	vdw	C:ASN:97:ND2	C:TYR:42:OH
+0	vdw	B:GLU:101:CG	C:ASP:94:CG
+0	vdw	B:GLU:101:CG	C:ASP:94:OD1
+0	vdw	B:GLU:101:CG	C:ASP:94:OD2
+0	vdw	B:TRP:37:NE1	C:ASP:94:OD1
+0	vdw	B:ASP:99:OD1	C:ASP:94:CB
+0	vdw	C:ASP:94:CB	C:TYR:42:OH
+0	vdw	B:LEU:105:CB	B:LEU:31:CD1
+0	vdw	B:ARG:30:CB	B:VAL:109:CG1
+0	vdw	B:ALA:27:O	B:VAL:109:CG1
+0	vdw	B:ARG:30:NE	B:GLU:26:CD
+0	vdw	B:ARG:30:CZ	B:GLU:26:CD
+0	vdw	B:ARG:30:NH2	B:GLU:26:CD
+0	vdw	C:HIS:112:CE1	C:TYR:24:CE2
+0	vdw	C:HIS:112:NE2	C:TYR:24:CE2
+0	vdw	C:HIS:20:CB	C:TYR:24:CE2
+0	vdw	C:GLU:27:CD	C:HIS:112:CE1
+0	vdw	C:GLU:27:OE1	C:HIS:112:CE1
+0	vdw	C:GLU:27:OE2	C:HIS:112:CE1
+0	vdw	C:GLU:27:OE2	C:HIS:112:NE2
+0	vdw	C:HIS:20:O	C:TYR:24:CD2
+0	vdw	C:THR:108:CG2	C:TYR:24:O
+0	vdw	C:THR:108:CG2	C:TYR:24:CB
+0	vdw	C:ALA:26:N	C:TYR:24:C
+0	vdw	C:ALA:21:O	C:TYR:24:CA
+0	vdw	C:GLU:27:N	C:TYR:24:C
+0	vdw	C:ALA:28:CB	C:TYR:24:O
+0	vdw	C:ALA:26:N	C:TYR:24:O
+0	vdw	C:ALA:28:CB	C:GLY:25:O
+0	vdw	C:ALA:28:CB	C:LEU:105:CD1
+0	vdw	C:GLU:27:N	C:TYR:24:O
+0	vdw	C:ASN:97:N	C:ASP:94:O
+0	vdw	C:PHE:98:CD2	C:PRO:95:CA
+0	vdw	B:TRP:37:NE1	C:PRO:95:CD
+0	vdw	B:TRP:37:CE2	C:PRO:95:CD
+0	vdw	B:TRP:37:CZ2	C:PRO:95:CD
+0	vdw	C:PRO:95:N	C:VAL:93:C
+0	vdw	C:PRO:95:N	C:VAL:93:O
+0	vdw	C:PRO:95:CD	C:VAL:93:O
+0	vdw	C:ASP:94:CA	C:TYR:42:OH
+0	vdw	B:TRP:37:CZ2	B:TYR:35:CD1
+0	vdw	B:LEU:31:O	B:TYR:35:N
+0	vdw	B:LEU:31:O	B:TYR:35:CA
+0	vdw	B:LEU:31:O	B:TYR:35:CB
+0	vdw	B:TYR:35:N	B:VAL:33:C
+0	vdw	B:ARG:30:O	B:VAL:34:CB
+0	vdw	B:ARG:30:O	B:VAL:34:CG2
+0	vdw	B:ARG:30:O	B:VAL:34:N
+0	vdw	B:ARG:30:O	B:LEU:32:N
+0	vdw	B:ARG:30:O	B:VAL:33:N
+0	vdw	B:ARG:30:O	B:VAL:33:CA
+0	vdw	B:ARG:30:O	B:VAL:33:C
+0	vdw	B:ARG:30:CB	B:GLU:26:O
+0	vdw	B:ARG:30:CG	B:GLU:26:O
+0	vdw	A:THR:118:C	B:ARG:30:NH1
+0	vdw	A:THR:118:C	B:ARG:30:NH2
+0	vdw	A:PRO:119:CD	B:ARG:30:NH2
+0	vdw	C:HIS:20:CD2	C:VAL:17:O
+0	vdw	C:HIS:20:CB	C:TYR:24:CE1
+0	vdw	C:HIS:20:CB	C:TYR:24:CZ
+0	vdw	C:HIS:20:CG	C:TYR:24:OH
+0	vdw	C:HIS:20:CB	C:VAL:17:O
+0	vdw	C:HIS:20:CG	C:VAL:17:O
+0	vdw	C:TYR:24:CD1	C:VAL:17:CG1
+0	vdw	C:HIS:20:O	C:TYR:24:CB
+0	vdw	C:ALA:21:O	C:TYR:24:CB
+0	vdw	C:HIS:20:O	C:TYR:24:CG
+0	vdw	C:LEU:136:CD1	C:PHE:98:CE1
+0	vdw	C:PHE:98:CD2	C:THR:137:CG2
+0	vdw	C:PHE:98:CE2	C:THR:137:CG2
+0	vdw	B:TRP:37:CE3	C:TYR:140:CD1
+0	vdw	B:TRP:37:CD2	C:TYR:140:CD1
+0	vdw	B:TRP:37:CH2	B:TYR:35:CD1
+0	vdw	B:TRP:37:CE3	B:TYR:35:C
+0	vdw	B:VAL:34:O	C:ARG:141:CD
+0	vdw	B:PRO:36:CD	B:VAL:34:C
+0	vdw	B:PRO:36:CD	B:VAL:34:O
+0	vdw	A:ALA:123:CB	A:PRO:119:O
+0	vdw	A:ALA:120:O	A:ALA:123:CB
+0	vdw	B:LEU:32:C	B:VAL:34:N
+0	vdw	A:ALA:120:N	A:THR:118:C
+0	vdw	A:PRO:119:CG	B:MET:55:CG
+0	vdw	A:PRO:119:CG	B:MET:55:SD
+0	vdw	C:ALA:19:N	C:VAL:17:C
+0	vdw	C:ALA:19:N	C:VAL:17:O
+0	vdw	C:HIS:20:N	C:VAL:17:O
+0	vdw	C:GLY:18:C	C:HIS:20:N
+0	vdw	C:GLY:18:O	C:HIS:20:N
+0	vdw	C:ALA:21:N	C:GLY:18:O
+0	vdw	C:ALA:21:CB	C:GLY:18:O
+0	vdw	C:ALA:21:N	C:VAL:17:CG1
+0	vdw	C:ALA:21:CA	C:VAL:17:CG1
+0	vdw	C:ALA:21:CB	C:VAL:17:CG1
+0	vdw	C:LEU:66:CB	C:TRP:14:CZ2
+0	vdw	C:THR:67:OG1	C:TRP:14:CE2
+0	vdw	C:LEU:66:CG	C:VAL:62:O
+0	vdw	C:ALA:63:O	C:LEU:66:CB
+0	vdw	C:LEU:136:CD2	C:LEU:83:CB
+0	vdw	C:LEU:136:C	C:SER:138:N
+0	vdw	C:THR:137:N	C:VAL:135:C
+0	vdw	C:THR:137:N	C:VAL:135:O
+0	vdw	C:THR:137:CA	C:TYR:140:CD2
+0	vdw	C:LEU:136:O	C:TYR:140:CE2
+0	vdw	C:THR:137:CA	C:TYR:140:CE2
+0	vdw	C:THR:137:O	C:TYR:140:N
+0	vdw	C:THR:137:O	C:TYR:140:CB
+0	vdw	C:LYS:139:N	C:THR:137:C
+0	vdw	C:LYS:139:N	C:THR:137:O
+0	vdw	C:SER:138:C	C:TYR:140:N
+0	vdw	C:THR:137:C	C:TYR:140:CD2
+0	vdw	C:THR:137:O	C:TYR:140:CD2
+0	vdw	C:ARG:141:N	C:LYS:139:C
+0	vdw	C:ARG:141:N	C:LYS:139:O
+0	vdw	A:LYS:127:NZ	C:ARG:141:C
+0	vdw	A:LYS:127:NZ	C:ARG:141:OXT
+0	vdw	B:PRO:36:CG	C:ARG:141:CB
+0	vdw	B:PRO:36:CD	C:ARG:141:CB
+0	vdw	C:THR:67:CA	C:TRP:14:NE1
+0	vdw	C:THR:67:OG1	C:TRP:14:NE1
+0	vdw	C:ALA:65:O	C:THR:67:N
+0	vdw	C:ALA:69:N	C:THR:67:C
+0	vdw	C:ASP:64:C	C:THR:67:N
+0	vdw	C:ASP:64:O	C:THR:67:N
+0	vdw	C:ALA:65:C	C:THR:67:N
+0	vdw	C:ASP:64:O	C:THR:67:CA
+0	vdw	C:ASP:64:O	C:THR:67:C
+0	vdw	C:ALA:63:O	C:THR:67:N
+0	vdw	C:ALA:63:O	C:THR:67:OG1
+0	vdw	C:ALA:65:O	C:ASN:68:N
+0	vdw	C:ALA:65:O	C:ALA:69:CB
+0	vdw	C:ASN:68:N	C:LEU:66:C
+0	vdw	C:ASN:68:N	C:LEU:66:O
+0	vdw	C:ALA:69:CB	C:LEU:66:O
+0	vdw	C:ALA:65:O	C:ASN:68:CA
+0	vdw	C:ALA:65:O	C:ASN:68:C
+0	vdw	C:ALA:65:O	C:ALA:69:N
+0	vdw	C:ALA:69:N	C:LEU:66:C
+0	vdw	C:ALA:69:N	C:LEU:66:O
+0	vdw	C:ALA:69:CA	C:LEU:66:O
+0	vdw	C:ASP:64:C	C:LEU:66:N
+0	vdw	C:ASP:64:O	C:LEU:66:N
+0	vdw	C:ASN:68:N	C:ASP:64:O
+0	vdw	C:ALA:65:C	C:ASN:68:N
+0	vdw	C:ALA:65:O	C:ASN:68:CB
+0	vdw	C:LEU:66:N	C:VAL:62:O
+0	vdw	C:ALA:63:C	C:LEU:66:N
+0	vdw	C:ALA:63:O	C:LEU:66:N
+0	vdw	C:ALA:63:O	C:LEU:66:CA
+0	vdw	C:LEU:80:CG	C:MET:76:O
+0	vdw	C:LEU:80:CB	C:MET:76:O
+0	vdw	C:PRO:77:CA	C:VAL:135:CG1
+0	vdw	C:SER:138:CB	C:VAL:135:C
+0	vdw	C:SER:138:CB	C:VAL:135:O
+0	vdw	C:SER:84:CB	C:VAL:135:O
+0	vdw	C:SER:84:OG	C:VAL:135:O
+0	vdw	C:SER:138:N	C:VAL:135:C
+0	vdw	C:SER:138:N	C:VAL:135:O
+0	vdw	A:LYS:127:NZ	C:ARG:141:O
+0	vdw	C:ALA:69:N	C:THR:67:O
+0	vdw	C:ASN:68:O	C:HIS:72:CB
+0	vdw	C:ASN:68:O	C:HIS:72:CG
+0	vdw	C:ASN:68:O	C:HIS:72:CD2
+0	vdw	C:ALA:79:CB	C:ASN:68:ND2
+0	vdw	C:ASN:78:N	C:MET:76:C
+0	vdw	C:ASN:78:N	C:MET:76:O
+0	vdw	C:ALA:79:N	C:MET:76:O
+0	vdw	C:ALA:79:N	C:PRO:77:C
+0	vdw	C:LEU:80:N	C:MET:76:O
+0	vdw	C:PRO:77:O	C:SER:81:N
+0	vdw	C:PRO:77:O	C:SER:81:CA
+0	vdw	C:PRO:77:O	C:SER:81:CB
+0	vdw	A:ALA:5:N	A:SER:3:OG
+0	vdw	C:ALA:79:CB	C:HIS:72:CB
+0	vdw	C:ASN:68:OD1	C:HIS:72:CD2
+0	vdw	C:ALA:79:N	C:ASP:75:O
+0	vdw	B:GLY:83:C	B:PHE:85:N
+0	vdw	B:GLY:83:O	B:PHE:85:N
+0	vdw	B:ALA:86:C	B:LEU:88:N
+0	vdw	B:ALA:86:C	B:SER:89:N
+0	vdw	B:ALA:86:N	B:THR:84:C
+0	vdw	B:ASP:73:CB	B:GLY:69:O
+0	vdw	B:ASP:73:CG	B:GLY:69:O
+0	vdw	B:LYS:144:N	B:SER:89:OG
+0	vdw	B:LYS:144:CA	B:SER:89:OG
+0	vdw	B:LYS:144:CB	B:SER:89:CB
+0	vdw	B:LYS:144:CB	B:SER:89:OG
+0	vdw	B:GLU:90:CG	B:LYS:144:CB
+0	vdw	B:PHE:85:O	B:SER:89:CB
+0	vdw	B:LEU:141:O	B:SER:89:CA
+0	vdw	B:LEU:141:O	B:SER:89:CB
+0	vdw	B:LEU:141:O	B:SER:89:OG
+0	vdw	B:ALA:86:O	B:SER:89:CB
+0	vdw	B:LEU:88:N	B:PHE:85:O
+0	vdw	B:LEU:88:CA	B:PHE:85:O
+0	vdw	B:PHE:85:O	B:SER:89:N
+0	vdw	B:PHE:85:C	B:THR:87:N
+0	vdw	B:PHE:85:O	B:THR:87:N
+0	vdw	B:ALA:70:C	B:SER:72:N
+0	vdw	B:ALA:70:O	B:SER:72:N
+0	vdw	B:ALA:70:O	B:ASP:73:N
+0	vdw	B:ALA:70:CA	B:VAL:67:O
+0	vdw	B:ALA:70:O	B:ASP:73:C
+0	vdw	B:ALA:70:O	B:ASP:73:CB
+0	vdw	B:GLY:69:O	B:SER:72:N
+0	vdw	B:GLY:69:O	B:SER:72:CB
+0	vdw	B:ASP:73:N	B:GLY:69:O
+0	vdw	B:LEU:68:O	B:SER:72:N
+0	vdw	B:LEU:68:O	B:SER:72:CB
+0	vdw	B:ASP:73:OD2	B:GLY:69:O
+0	vdw	B:HIS:146:OXT	C:PRO:37:CB
+0	vdw	B:HIS:146:OXT	C:LYS:40:NZ
+0	vdw	B:HIS:146:C	C:PRO:37:CB
+0	vdw	B:HIS:146:N	B:LYS:144:O
+0	vdw	B:HIS:146:C	C:LYS:40:NZ
+0	vdw	B:HIS:146:O	C:LYS:40:NZ
+0	vdw	B:LEU:141:O	B:TYR:145:CD2
+0	vdw	B:CYS:93:SG	B:TYR:145:CA
+0	vdw	B:CYS:93:CB	B:TYR:145:CG
+0	vdw	B:CYS:93:SG	B:TYR:145:CG
+0	vdw	B:CYS:93:CB	B:TYR:145:CD2
+0	vdw	B:LEU:141:O	B:TYR:145:CE2
+0	vdw	B:SER:89:O	B:TYR:145:CE2
+0	vdw	B:CYS:93:CB	B:TYR:145:CE2
+0	vdw	B:LEU:141:CB	B:PHE:103:CE2
+0	vdw	B:LEU:141:CD2	B:LEU:88:CB
+0	vdw	B:PHE:71:N	B:VAL:67:O
+0	vdw	B:GLY:69:N	B:VAL:67:C
+0	vdw	B:GLY:69:N	B:VAL:67:O
+0	vdw	B:LEU:68:C	B:PHE:71:N
+0	vdw	B:LEU:68:O	B:PHE:71:N
+0	vdw	B:LEU:68:O	B:PHE:71:CA
+0	vdw	B:ALA:70:N	B:VAL:67:O
+0	vdw	B:GLY:69:C	B:PHE:71:N
+0	vdw	B:GLY:69:O	B:PHE:71:N
+0	vdw	B:ALA:70:CB	B:VAL:67:O
+0	vdw	B:ALA:70:N	B:LEU:68:C
+0	vdw	B:GLY:69:N	B:LYS:65:O
+0	vdw	B:GLY:64:O	B:LEU:68:CA
+0	vdw	C:GLU:30:O	C:LEU:34:N
+0	vdw	C:GLU:30:O	C:LEU:34:CG
+0	vdw	C:PHE:33:O	C:PRO:37:CA
+0	vdw	C:LYS:40:CE	C:PHE:33:O
+0	vdw	C:PRO:37:C	C:THR:39:N
+0	vdw	C:PRO:37:O	C:THR:39:N
+0	vdw	C:LYS:40:N	C:PRO:37:O
+0	vdw	C:LYS:40:CB	C:PRO:37:O
+0	vdw	C:LYS:40:CD	C:PRO:37:O
+0	vdw	C:LYS:40:CG	C:PRO:37:O
+0	vdw	B:TYR:145:CE1	B:VAL:98:O
+0	vdw	B:PRO:100:CD	B:TYR:145:CE1
+0	vdw	B:TYR:145:CE1	C:THR:41:CG2
+0	vdw	B:CYS:93:CB	B:TYR:145:CD1
+0	vdw	B:CYS:93:SG	B:TYR:145:CD1
+0	vdw	B:CYS:93:CA	B:TYR:145:CE1
+0	vdw	B:CYS:93:CB	B:TYR:145:CE1
+0	vdw	B:PRO:100:CD	B:VAL:98:O
+0	vdw	B:TYR:145:CZ	B:VAL:98:O
+0	vdw	B:TYR:145:OH	B:VAL:98:O
+0	vdw	B:PHE:103:CE2	B:TYR:145:OH
+0	vdw	B:PRO:100:N	B:VAL:98:O
+0	vdw	B:TYR:145:OH	B:VAL:98:C
+0	vdw	B:HIS:92:C	B:TYR:145:CZ
+0	vdw	B:HIS:92:C	B:TYR:145:OH
+0	vdw	B:HIS:92:O	B:TYR:145:OH
+0	vdw	B:CYS:93:N	B:TYR:145:CZ
+0	vdw	B:HIS:92:CB	B:TYR:145:OH
+0	vdw	B:CYS:93:CA	B:TYR:145:CZ
+0	vdw	B:CYS:93:CB	B:TYR:145:CZ
+0	vdw	B:HIS:92:CD2	B:PHE:103:CE1
+0	vdw	B:HIS:92:CD2	B:PHE:103:CZ
+0	vdw	B:GLY:64:O	B:LEU:68:N
+0	vdw	B:GLY:64:O	B:LEU:68:CB
+0	vdw	B:LEU:68:CD1	B:VAL:20:CG1
+0	vdw	B:LEU:68:N	B:LYS:66:C
+0	vdw	B:GLU:22:N	B:VAL:20:C
+0	vdw	B:GLU:22:N	B:VAL:20:O
+0	vdw	B:GLY:24:N	B:VAL:20:O
+0	vdw	B:GLY:24:CA	B:VAL:20:O
+0	vdw	B:ASN:19:C	B:ASP:21:N
+0	vdw	B:ASN:19:O	B:ASP:21:N
+0	vdw	B:ASN:19:O	B:GLU:22:N
+0	vdw	B:ASN:19:CG	B:GLU:22:N
+0	vdw	B:ASN:19:OD1	B:ASP:21:N
+0	vdw	B:ASN:19:OD1	B:GLU:22:N
+0	vdw	B:ASN:19:O	B:GLU:22:CB
+0	vdw	B:ASN:19:CG	B:GLU:22:CB
+0	vdw	B:ASN:19:OD1	B:ASP:21:CB
+0	vdw	C:GLU:30:OE1	C:HIS:50:CD2
+0	vdw	C:GLU:30:OE1	C:HIS:50:NE2
+0	vdw	C:ALA:26:O	C:GLU:30:CB
+0	vdw	C:GLU:30:CD	C:HIS:50:CD2
+0	vdw	C:GLU:30:CD	C:HIS:50:NE2
+0	vdw	C:GLU:30:OE2	C:HIS:50:CD2
+0	vdw	C:GLU:30:CD	C:HIS:50:CG
+0	vdw	C:GLU:30:OE2	C:HIS:50:CB
+0	vdw	C:GLU:30:OE2	C:HIS:50:CG
+0	vdw	C:GLU:30:O	C:PHE:33:N
+0	vdw	C:LEU:29:O	C:PHE:33:N
+0	vdw	C:LEU:29:O	C:PHE:33:CB
+0	vdw	C:LEU:29:O	C:PHE:33:CG
+0	vdw	C:PHE:33:CD1	C:THR:39:OG1
+0	vdw	C:LYS:40:CG	C:PHE:33:CD1
+0	vdw	C:LYS:40:N	C:THR:38:C
+0	vdw	C:LYS:40:N	C:THR:38:O
+0	vdw	C:THR:39:C	C:THR:41:N
+0	vdw	C:THR:38:O	C:THR:41:CB
+0	vdw	C:THR:38:O	C:THR:41:OG1
+0	vdw	C:THR:38:O	C:THR:41:CG2
+0	vdw	C:THR:38:O	C:THR:41:N
+0	vdw	B:PRO:100:N	B:VAL:98:C
+0	vdw	B:ASN:102:CB	B:ASP:99:O
+0	vdw	B:ASN:102:CG	B:ASP:99:O
+0	vdw	B:ASN:102:ND2	B:ASP:99:O
+0	vdw	B:ASP:99:CA	C:THR:41:OG1
+0	vdw	B:ALA:27:N	B:GLY:24:O
+0	vdw	B:GLY:24:O	B:LEU:28:N
+0	vdw	B:GLY:24:C	B:GLY:64:CA
+0	vdw	B:GLY:24:O	B:GLY:64:CA
+0	vdw	B:GLU:26:N	B:GLY:24:C
+0	vdw	B:GLU:26:N	B:GLY:24:O
+0	vdw	B:GLY:24:O	B:LEU:28:CB
+0	vdw	B:GLY:24:C	B:GLY:64:C
+0	vdw	B:GLU:22:O	B:GLY:24:N
+0	vdw	B:GLU:22:C	B:GLY:24:N
+0	vdw	B:GLU:22:O	B:GLU:26:N
+0	vdw	B:GLU:22:O	B:GLU:26:CB
+0	vdw	B:GLU:26:N	B:VAL:23:O
+0	vdw	B:GLU:22:O	B:GLY:25:N
+0	vdw	B:GLU:22:O	B:GLY:25:CA
+0	vdw	B:GLY:25:N	B:VAL:23:C
+0	vdw	B:ASP:21:O	B:GLY:24:N
+0	vdw	B:ASN:19:O	B:VAL:23:N
+0	vdw	B:ASP:21:C	B:VAL:23:N
+0	vdw	B:GLY:24:CA	B:GLY:64:C
+0	vdw	B:GLY:24:CA	B:GLY:64:O
+0	vdw	B:ASN:19:CB	B:GLU:22:CB
+0	vdw	B:ASN:19:ND2	B:GLU:22:CB
+0	vdw	C:ALA:26:C	C:LEU:29:N
+0	vdw	C:ALA:26:O	C:LEU:29:N
+0	vdw	C:ALA:26:O	C:LEU:29:CA
+0	vdw	C:ALA:26:O	C:LEU:29:CB
+0	vdw	C:ALA:26:O	C:GLU:30:N
+0	vdw	C:GLU:27:N	C:GLY:25:C
+0	vdw	C:GLU:27:N	C:GLY:25:O
+0	vdw	C:LEU:29:O	C:PHE:33:CE2
+0	vdw	C:LEU:29:C	C:PHE:33:CD2
+0	vdw	C:LEU:29:O	C:PHE:33:CD2
+0	vdw	C:PHE:33:CE1	C:PHE:43:CD1
+0	vdw	C:PHE:33:CE1	C:PHE:43:CE1
+0	vdw	C:THR:39:O	C:TYR:42:CD2
+0	vdw	C:THR:39:O	C:TYR:42:N
+0	vdw	C:PHE:43:CD1	C:THR:39:O
+0	vdw	C:THR:39:O	C:THR:41:N
+0	vdw	B:ASP:99:OD1	C:TYR:42:CE2
+0	vdw	B:ASP:99:OD1	C:TYR:42:CZ
+0	vdw	B:ASP:99:OD1	C:TYR:42:OH
+0	vdw	C:TYR:42:CE1	C:VAL:93:CA
+0	vdw	C:ASP:94:N	C:TYR:42:CZ
+0	vdw	C:ASP:94:N	C:TYR:42:OH
+0	vdw	B:ASP:99:CB	C:TYR:42:CZ
+0	vdw	B:ASP:99:CB	C:TYR:42:OH
+0	vdw	B:ASP:99:CG	C:TYR:42:OH
+0	vdw	B:ASN:102:OD1	B:THR:38:CG2
+0	vdw	B:ASN:102:ND2	B:PHE:41:CE1
+0	vdw	B:THR:38:CG2	B:TYR:35:O
+0	vdw	B:THR:38:CB	B:TYR:35:O
+0	vdw	B:LEU:28:O	B:LEU:31:N
+0	vdw	B:LEU:28:O	B:LEU:31:CA
+0	vdw	B:LEU:28:O	B:LEU:31:CB
+0	vdw	B:ALA:27:O	B:LEU:31:N
+0	vdw	B:LEU:28:C	B:LEU:31:N
+0	vdw	B:ALA:27:O	B:LEU:31:CA
+0	vdw	B:ALA:27:O	B:LEU:31:CB
+0	vdw	B:LEU:28:O	B:LEU:32:N
+0	vdw	B:ARG:30:N	B:LEU:28:O
+0	vdw	B:GLY:29:C	B:LEU:31:N
+0	vdw	B:GLY:29:O	B:LEU:31:N
+0	vdw	B:ALA:27:N	B:GLY:25:O
+0	vdw	B:GLY:25:O	B:GLY:29:N
+0	vdw	B:GLY:25:O	B:GLY:29:CA
+0	vdw	B:GLU:26:C	B:LEU:28:N
+0	vdw	B:GLU:26:O	B:GLY:29:N
+0	vdw	B:ALA:27:C	B:GLY:29:N
+0	vdw	B:ALA:27:O	B:GLY:29:N
+0	vdw	B:ALA:27:N	B:GLY:25:C
+0	vdw	B:ARG:30:N	B:GLU:26:O
+0	vdw	B:ALA:27:C	B:ARG:30:N
+0	vdw	B:ALA:27:O	B:ARG:30:N
+0	vdw	B:ARG:30:N	B:LEU:28:C
+0	vdw	B:GLY:29:CA	B:MET:55:SD
+0	vdw	B:GLY:29:CA	B:VAL:54:CG1
+0	vdw	B:ALA:27:N	B:VAL:23:O
+0	vdw	B:ALA:27:CA	B:VAL:23:O
+0	vdw	C:GLU:23:CB	C:HIS:20:O
+0	vdw	C:GLU:23:C	C:GLY:25:N
+0	vdw	C:ALA:26:N	C:GLU:23:O
+0	vdw	C:GLU:23:CA	C:HIS:20:O
+0	vdw	C:GLU:23:C	C:HIS:20:O
+0	vdw	C:HIS:20:O	C:TYR:24:N
+0	vdw	C:ALA:21:O	C:TYR:24:N
+0	vdw	C:GLY:22:C	C:TYR:24:N
+0	vdw	C:GLY:22:O	C:TYR:24:N
+0	vdw	C:GLU:23:O	C:GLU:27:N
+0	vdw	C:GLY:25:O	C:LEU:29:CG
+0	vdw	C:GLY:25:C	C:GLY:59:CA
+0	vdw	C:ALA:26:N	C:GLY:59:CA
+0	vdw	C:GLY:25:O	C:LEU:29:N
+0	vdw	C:HIS:58:CD2	C:LEU:29:CD1
+0	vdw	C:GLY:59:N	C:LEU:29:CD1
+0	vdw	C:GLY:59:CA	C:LEU:29:CD1
+0	vdw	C:TYR:140:OH	C:VAL:93:N
+0	vdw	C:TYR:140:OH	C:VAL:93:C
+0	vdw	C:TYR:140:OH	C:VAL:93:O
+0	vdw	C:LEU:91:O	C:VAL:93:N
+0	vdw	C:TYR:140:CE1	C:VAL:93:O
+0	vdw	C:TYR:140:CZ	C:VAL:93:O
+0	vdw	C:LEU:91:C	C:VAL:93:N
+0	vdw	C:ARG:92:O	C:ASP:94:N
+0	vdw	B:ARG:40:CD	C:ARG:92:O
+0	vdw	B:ARG:40:NE	C:ARG:92:O
+0	vdw	B:THR:38:N	B:TYR:35:O
+0	vdw	B:THR:38:CA	B:TYR:35:O
+0	vdw	B:PRO:36:C	B:THR:38:N
+0	vdw	B:GLN:39:N	B:TRP:37:C
+0	vdw	B:PRO:36:O	B:THR:38:N
+0	vdw	B:TRP:37:CA	C:ARG:92:CG
+0	vdw	B:LEU:31:O	B:TYR:35:C
+0	vdw	B:LEU:31:O	B:TYR:35:O
+0	vdw	B:LEU:31:O	B:THR:38:OG1
+0	vdw	B:THR:38:OG1	B:TYR:35:O
+0	vdw	B:LEU:31:O	B:VAL:33:N
+0	vdw	B:LEU:32:CA	B:THR:38:OG1
+0	vdw	B:LEU:32:CD1	B:THR:38:OG1
+0	vdw	B:ARG:30:C	B:LEU:32:N
+0	vdw	B:ARG:30:C	B:VAL:33:N
+0	vdw	B:LEU:31:C	B:VAL:33:N
+0	vdw	B:GLY:29:C	B:LEU:32:N
+0	vdw	B:GLY:29:O	B:LEU:32:N
+0	vdw	B:GLY:29:O	B:LEU:32:CA
+0	vdw	B:GLY:29:O	B:LEU:32:C
+0	vdw	B:GLY:29:O	B:VAL:33:N
+0	vdw	B:GLY:29:C	B:MET:55:SD
+0	vdw	B:GLY:29:O	B:VAL:33:CG2
+0	vdw	B:GLY:29:O	B:VAL:54:CG1
+0	vdw	B:GLY:29:O	B:LEU:32:CB
+0	vdw	B:MET:55:CG	B:PRO:51:O
+0	vdw	C:GLY:22:N	C:HIS:20:C
+0	vdw	C:GLY:22:N	C:HIS:20:O
+0	vdw	C:GLY:22:C	C:HIS:20:O
+0	vdw	C:GLU:23:N	C:HIS:20:O
+0	vdw	C:ALA:21:C	C:GLU:23:N
+0	vdw	C:ALA:21:O	C:GLU:23:N
+0	vdw	C:ALA:21:C	C:ALA:63:CB
+0	vdw	C:ALA:21:O	C:ALA:63:CB
+0	vdw	C:ALA:63:CB	C:GLY:22:N
+0	vdw	C:ALA:21:O	C:GLY:25:N
+0	vdw	C:GLY:22:O	C:GLY:25:N
+0	vdw	C:ALA:26:N	C:GLY:22:O
+0	vdw	C:GLY:59:O	C:VAL:62:CA
+0	vdw	C:GLY:59:O	C:VAL:62:CB
+0	vdw	C:ALA:63:N	C:GLY:59:O
+0	vdw	C:ALA:63:CA	C:GLY:59:O
+0	vdw	C:ALA:63:CB	C:GLY:59:O
+0	vdw	C:GLY:59:O	C:LYS:61:N
+0	vdw	C:GLY:59:O	C:VAL:62:N
+0	vdw	C:HIS:58:O	C:VAL:62:CB
+0	vdw	C:HIS:58:O	C:VAL:62:CG2
+0	vdw	C:HIS:58:NE2	C:VAL:62:CG2
+0	vdw	C:HIS:87:CD2	C:LEU:91:CD1
+0	vdw	C:HIS:87:NE2	C:LEU:91:CD1
+0	vdw	C:HIS:87:CG	C:LEU:83:O
+0	vdw	C:HIS:87:CB	C:TYR:140:OH
+0	vdw	C:ALA:88:N	C:TYR:140:CE2
+0	vdw	C:ALA:88:CA	C:TYR:140:CE2
+0	vdw	C:HIS:87:C	C:TYR:140:CE2
+0	vdw	C:HIS:87:C	C:TYR:140:CZ
+0	vdw	B:TRP:37:N	B:TYR:35:C
+0	vdw	B:TRP:37:N	B:TYR:35:O
+0	vdw	B:LEU:32:O	B:PRO:36:CA
+0	vdw	B:GLY:29:O	B:VAL:33:CB
+0	vdw	B:GLN:39:NE2	B:LEU:32:O
+0	vdw	C:ALA:19:C	C:ALA:21:N
+0	vdw	C:ALA:19:O	C:ALA:21:N
+0	vdw	C:ASP:64:N	C:VAL:62:C
+0	vdw	C:ASP:64:N	C:VAL:62:O
+0	vdw	C:ALA:63:O	C:THR:67:CB
+0	vdw	C:ALA:63:N	C:LYS:60:O
+0	vdw	C:ASP:64:N	C:LYS:60:O
+0	vdw	C:ALA:63:C	C:ALA:65:N
+0	vdw	C:ALA:63:O	C:ALA:65:N
+0	vdw	C:ALA:63:N	C:LYS:61:C
+0	vdw	C:ALA:63:N	C:LYS:61:O
+0	vdw	C:ASP:64:N	C:LYS:61:O
+0	vdw	C:ALA:65:CB	C:VAL:62:O
+0	vdw	C:ALA:65:N	C:VAL:62:C
+0	vdw	C:ALA:65:N	C:VAL:62:O
+0	vdw	C:ALA:65:CA	C:VAL:62:O
+0	vdw	C:ALA:65:CB	C:LYS:61:O
+0	vdw	C:ALA:65:CB	C:LEU:83:CD1
+0	vdw	C:HIS:87:ND1	C:LEU:83:O
+0	vdw	C:HIS:87:CB	C:LEU:83:O
+0	vdw	C:ASP:85:N	C:LEU:83:O
+0	vdw	C:LEU:83:O	C:LEU:86:CA
+0	vdw	C:LEU:83:O	C:LEU:86:CB
+0	vdw	C:HIS:87:N	C:LEU:83:O
+0	vdw	C:LEU:83:O	C:LEU:86:N
+0	vdw	C:ALA:88:CA	C:TYR:140:CD2
+0	vdw	C:ALA:88:CB	C:TYR:140:CD2
+0	vdw	C:ALA:88:CB	C:LYS:139:C
+0	vdw	C:ALA:88:CB	C:LYS:139:O
+0	vdw	C:ALA:88:CB	C:TYR:140:CA
+0	vdw	C:ALA:88:CB	C:LYS:139:CB
+0	vdw	C:ALA:88:N	C:ASP:85:O
+0	vdw	C:ALA:88:N	C:LEU:86:C
+0	vdw	C:ALA:88:N	C:LEU:86:O
+0	vdw	C:HIS:89:CE1	C:LYS:139:O
+0	vdw	B:PRO:36:CG	C:TYR:140:O
+0	vdw	C:ASP:64:O	C:THR:67:CB
+0	vdw	C:ASN:68:CB	C:ASP:64:O
+0	vdw	C:ALA:65:N	C:LYS:61:O
+0	vdw	C:LEU:80:O	C:LEU:83:C
+0	vdw	C:LEU:80:O	C:LEU:83:CB
+0	vdw	C:LEU:80:O	C:SER:84:N
+0	vdw	C:LEU:80:O	C:SER:84:OG
+0	vdw	C:ASP:85:N	C:LEU:83:C
+0	vdw	C:LEU:80:O	C:LEU:83:N
+0	vdw	C:LEU:80:O	C:LEU:83:CA
+0	vdw	C:LEU:83:C	C:LEU:86:N
+0	vdw	C:ALA:82:N	C:LEU:80:O
+0	vdw	C:LYS:139:CD	C:SER:84:CB
+0	vdw	C:SER:81:C	C:SER:84:N
+0	vdw	C:SER:81:O	C:SER:84:N
+0	vdw	C:SER:81:O	C:SER:84:CA
+0	vdw	C:ASP:85:N	C:SER:81:O
+0	vdw	C:LEU:86:N	C:SER:84:C
+0	vdw	C:LEU:86:N	C:SER:84:O
+0	vdw	C:ALA:82:O	C:ASP:85:N
+0	vdw	C:ALA:88:N	C:SER:84:O
+0	vdw	C:ALA:88:CA	C:SER:84:O
+0	vdw	C:ALA:88:CB	C:SER:84:O
+0	vdw	C:ALA:82:C	C:SER:84:N
+0	vdw	C:ALA:82:C	C:ASP:85:N
+0	vdw	C:HIS:87:N	C:SER:84:O
+0	vdw	C:ASP:85:OD1	C:LYS:139:CD
+0	vdw	C:ASN:68:OD1	C:HIS:72:NE2
+0	vdw	C:ALA:79:O	C:ASN:68:ND2
+0	vdw	C:ALA:79:C	C:SER:81:N
+0	vdw	C:ASN:78:C	C:LEU:80:N
+0	vdw	C:ASN:78:O	C:LEU:80:N
+0	vdw	C:ASN:78:O	C:SER:81:N
+0	vdw	C:ALA:82:N	C:LEU:80:C
+0	vdw	C:LYS:139:NZ	C:SER:81:O
+0	vdw	C:LYS:139:NZ	C:SER:81:OG
+0	vdw	C:ASP:85:OD1	C:LYS:139:NZ
+0	vdw	C:ASP:85:CB	C:SER:81:O
+0	vdw	C:ASP:85:CG	C:SER:81:O
+0	vdw	C:LEU:83:N	C:SER:81:C
+0	vdw	C:LEU:83:N	C:SER:81:O
+0	vdw	C:ASN:78:C	C:SER:81:CB
+0	vdw	C:ASN:78:O	C:SER:81:CB
+0	vdw	B:ALA:86:O	B:GLU:90:N
+0	vdw	B:ALA:86:O	B:GLU:90:CG
+0	vdw	B:ALA:86:O	B:LEU:88:N
+0	vdw	B:ALA:86:O	B:SER:89:N
+0	vdw	B:GLU:90:N	B:THR:87:O
+0	vdw	B:GLU:90:N	B:LEU:88:C
+0	vdw	B:GLU:90:CA	B:THR:87:O
+0	vdw	B:GLU:90:CB	B:THR:87:O
+0	vdw	B:LEU:91:N	B:THR:87:O
+0	vdw	B:LEU:88:C	B:LEU:91:N
+0	vdw	B:GLU:90:C	B:HIS:92:N
+0	vdw	B:LEU:91:N	B:SER:89:C
+0	vdw	B:LEU:91:N	B:SER:89:O
+0	vdw	B:GLU:90:N	B:LEU:88:O
+0	vdw	B:LEU:88:O	B:LEU:91:N
+0	vdw	B:SER:89:N	B:THR:87:C
+0	vdw	B:SER:89:N	B:THR:87:O
+0	vdw	B:HIS:92:ND1	B:LEU:88:C
+0	vdw	B:LEU:91:CB	B:THR:87:O
+0	vdw	B:CYS:93:CA	B:GLU:90:O
+0	vdw	B:CYS:93:C	B:GLU:90:O
+0	vdw	B:CYS:93:CB	B:SER:89:O
+0	vdw	B:CYS:93:CB	B:GLU:90:O
+0	vdw	B:CYS:93:C	B:LYS:95:N
+0	vdw	B:HIS:92:N	B:SER:89:C
+0	vdw	B:HIS:92:N	B:SER:89:O
+0	vdw	B:HIS:92:CA	B:SER:89:O
+0	vdw	B:HIS:92:CB	B:SER:89:O
+0	vdw	B:CYS:93:N	B:SER:89:O
+0	vdw	B:GLU:90:O	B:HIS:92:N
+0	vdw	B:CYS:93:N	B:GLU:90:O
+0	vdw	B:HIS:92:N	B:LEU:88:O
+0	vdw	B:HIS:92:CB	B:LEU:88:O
+0	vdw	B:HIS:92:C	B:SER:89:O
+0	vdw	B:CYS:93:N	B:LEU:91:C
+0	vdw	B:CYS:93:N	B:LEU:91:O
+0	vdw	B:ASP:94:N	B:GLU:90:O
+0	vdw	B:ASP:94:CA	B:GLU:90:O
+0	vdw	B:ASP:94:CB	B:GLU:90:O
+0	vdw	B:HIS:92:ND1	B:LEU:88:O
+0	vdw	B:HIS:92:CG	B:LEU:88:O
+0	vdw	B:LEU:88:O	B:LEU:91:CB
+0	vdw	B:ALA:70:N	B:LYS:66:O
+0	vdw	B:GLY:69:CA	B:LYS:65:O
+0	vdw	B:CYS:93:O	B:HIS:97:ND1
+0	vdw	B:CYS:93:O	B:LYS:95:N
+0	vdw	B:HIS:92:O	B:VAL:98:N
+0	vdw	B:HIS:92:O	B:LEU:96:C
+0	vdw	B:HIS:92:O	B:HIS:97:N
+0	vdw	B:HIS:92:O	B:HIS:97:CA
+0	vdw	B:ASP:94:N	B:HIS:92:C
+0	vdw	B:HIS:92:CD2	B:LEU:96:CD1
+0	vdw	B:HIS:63:O	B:VAL:67:N
+0	vdw	B:HIS:63:O	B:VAL:67:CB
+0	vdw	B:HIS:63:O	B:VAL:67:CG2
+0	vdw	B:HIS:63:O	B:LYS:65:N
+0	vdw	B:HIS:63:O	B:LYS:66:N
+0	vdw	B:GLY:64:O	B:VAL:67:N
+0	vdw	B:LYS:65:C	B:VAL:67:N
+0	vdw	B:HIS:63:CD2	B:VAL:67:CG2
+0	vdw	B:HIS:63:O	B:LYS:66:CB
+0	vdw	B:HIS:63:O	B:LYS:66:CA
+0	vdw	B:HIS:63:O	B:LYS:66:C
+0	vdw	B:HIS:63:CE1	B:VAL:67:CG2
+0	vdw	B:HIS:63:NE2	B:VAL:67:CG2
+0	vdw	B:GLY:64:C	B:LYS:66:N
+0	vdw	B:GLY:64:O	B:LYS:66:N
+0	vdw	B:HIS:63:C	B:LYS:65:N
+0	vdw	B:ALA:62:O	B:LYS:65:N
+0	vdw	B:ALA:62:O	B:LYS:66:N
+0	vdw	B:LYS:61:O	B:LYS:65:N
+0	vdw	B:ALA:62:C	B:LYS:65:N
+0	vdw	B:ASP:21:OD1	B:LYS:65:CB
+0	vdw	B:ASP:21:OD1	B:LYS:65:CG
+0	vdw	B:LYS:61:O	B:LYS:65:CB
+0	vdw	C:HIS:50:C	C:SER:52:N
+0	vdw	C:GLY:51:N	C:SER:49:O
+0	vdw	C:LEU:48:CD2	C:PHE:33:CD2
+0	vdw	C:LEU:48:CD1	C:LYS:40:CG
+0	vdw	C:LEU:48:CD1	C:LYS:40:CB
+0	vdw	C:LEU:48:CD2	C:PHE:46:CB
+0	vdw	C:LYS:40:C	C:TYR:42:N
+0	vdw	C:LYS:40:C	C:PHE:43:N
+0	vdw	C:LYS:40:O	C:TYR:42:N
+0	vdw	C:LYS:40:O	C:PHE:43:N
+0	vdw	C:LYS:40:O	C:PHE:43:C
+0	vdw	B:HIS:97:C	C:THR:41:CB
+0	vdw	B:HIS:97:O	C:THR:41:CB
+0	vdw	B:HIS:97:CB	C:THR:41:O
+0	vdw	C:PRO:44:CD	C:THR:41:O
+0	vdw	B:HIS:97:O	B:PHE:41:CE2
+0	vdw	B:PHE:41:CE2	B:VAL:98:CA
+0	vdw	B:PHE:41:CZ	B:VAL:98:CA
+0	vdw	B:LEU:96:O	B:VAL:98:N
+0	vdw	B:LEU:96:C	B:VAL:98:N
+0	vdw	B:HIS:63:CD2	B:LEU:28:CD2
+0	vdw	B:GLY:64:N	B:LEU:28:CD2
+0	vdw	B:HIS:63:CB	B:LEU:28:CD2
+0	vdw	B:LEU:28:CD2	B:VAL:60:O
+0	vdw	B:HIS:63:CD2	B:PHE:42:CE2
+0	vdw	B:HIS:63:C	B:VAL:60:O
+0	vdw	B:GLY:64:N	B:VAL:60:O
+0	vdw	B:GLY:64:N	B:LYS:61:O
+0	vdw	B:ALA:62:C	B:GLY:64:N
+0	vdw	B:GLY:64:CA	B:VAL:60:O
+0	vdw	B:GLY:64:CA	B:LYS:61:O
+0	vdw	B:ALA:62:O	B:GLY:64:N
+0	vdw	B:ASP:21:O	B:GLY:25:N
+0	vdw	C:LEU:48:CD2	C:PHE:33:CE2
+0	vdw	C:PHE:33:CZ	C:PHE:43:CD1
+0	vdw	C:PHE:33:CZ	C:PHE:43:CE1
+0	vdw	C:PHE:43:CD2	C:PHE:46:CE1
+0	vdw	C:PHE:43:CD2	C:PHE:46:CZ
+0	vdw	C:PHE:43:CD2	C:PHE:46:CD1
+0	vdw	C:PRO:44:CD	C:TYR:42:C
+0	vdw	C:PHE:43:N	C:THR:41:C
+0	vdw	C:PHE:43:N	C:THR:41:O
+0	vdw	B:ARG:40:CZ	C:TYR:42:CD1
+0	vdw	B:ARG:40:NH2	C:TYR:42:CD1
+0	vdw	B:PHE:41:CE2	B:VAL:98:CG2
+0	vdw	B:PHE:41:CD1	B:THR:38:O
+0	vdw	B:PHE:42:CD1	B:THR:38:O
+0	vdw	B:PHE:42:CE1	B:THR:38:O
+0	vdw	B:LEU:32:CD1	B:PHE:42:CD1
+0	vdw	C:ALA:26:CB	C:LYS:56:CA
+0	vdw	C:GLY:59:N	C:VAL:55:O
+0	vdw	C:GLY:59:N	C:LYS:56:O
+0	vdw	C:GLY:59:CA	C:VAL:55:O
+0	vdw	C:GLY:59:CA	C:LYS:56:O
+0	vdw	C:LYS:56:O	C:LYS:60:N
+0	vdw	C:LYS:56:O	C:LYS:60:CB
+0	vdw	C:GLY:57:N	C:VAL:55:C
+0	vdw	C:GLY:57:N	C:VAL:55:O
+0	vdw	C:HIS:58:N	C:VAL:55:C
+0	vdw	C:HIS:58:N	C:VAL:55:O
+0	vdw	C:HIS:58:N	C:LYS:56:O
+0	vdw	C:GLY:57:C	C:GLY:59:N
+0	vdw	C:GLN:54:O	C:HIS:58:CB
+0	vdw	B:ARG:40:NH2	C:LEU:91:O
+0	vdw	B:ARG:40:NE	C:LEU:91:O
+0	vdw	B:ARG:40:CZ	C:LEU:91:O
+0	vdw	B:ARG:40:CG	B:TRP:37:O
+0	vdw	B:ARG:40:CD	B:TRP:37:O
+0	vdw	B:ARG:40:N	B:TRP:37:O
+0	vdw	B:ARG:40:CB	B:TRP:37:O
+0	vdw	B:ARG:40:N	B:THR:38:C
+0	vdw	B:GLN:39:N	B:TRP:37:O
+0	vdw	B:ARG:40:N	B:THR:38:O
+0	vdw	B:GLN:39:C	B:PHE:41:N
+0	vdw	B:GLN:39:N	B:PRO:36:O
+0	vdw	B:GLN:39:CA	B:PRO:36:O
+0	vdw	B:GLN:39:CB	B:PRO:36:O
+0	vdw	B:GLN:39:CG	B:PRO:36:O
+0	vdw	B:GLY:56:N	B:VAL:54:C
+0	vdw	B:GLY:56:N	B:VAL:54:O
+0	vdw	B:PRO:51:O	B:VAL:54:CA
+0	vdw	B:PRO:51:O	B:VAL:54:C
+0	vdw	B:ASN:57:CB	B:VAL:54:O
+0	vdw	B:ASN:57:N	B:VAL:54:O
+0	vdw	B:ASP:52:O	B:MET:55:N
+0	vdw	B:ASP:52:O	B:GLY:56:N
+0	vdw	B:ASN:57:N	B:MET:55:C
+0	vdw	B:ALA:53:C	B:MET:55:N
+0	vdw	B:ALA:53:O	B:MET:55:N
+0	vdw	B:ALA:53:O	B:GLY:56:N
+0	vdw	C:GLY:59:C	C:LYS:61:N
+0	vdw	C:HIS:58:C	C:LYS:60:N
+0	vdw	C:HIS:58:O	C:LYS:60:N
+0	vdw	C:HIS:58:C	C:LYS:61:N
+0	vdw	C:HIS:58:O	C:LYS:61:N
+0	vdw	C:GLY:57:O	C:LYS:60:N
+0	vdw	C:GLY:57:O	C:LYS:60:CA
+0	vdw	C:GLY:57:O	C:LYS:60:CB
+0	vdw	C:GLY:57:O	C:LYS:61:N
+0	vdw	C:HIS:58:O	C:VAL:62:N
+0	vdw	C:HIS:58:O	C:LYS:61:CA
+0	vdw	C:HIS:58:O	C:LYS:61:CB
+0	vdw	C:GLN:54:O	C:HIS:58:CA
+0	vdw	C:LEU:86:CG	C:LEU:91:CD1
+0	vdw	C:LEU:86:O	C:LEU:91:N
+0	vdw	C:LEU:86:O	C:LEU:91:CG
+0	vdw	C:ARG:92:N	C:HIS:87:O
+0	vdw	C:ARG:92:CA	C:HIS:87:O
+0	vdw	C:ALA:88:C	C:ARG:92:CG
+0	vdw	C:ALA:88:O	C:ARG:92:CG
+0	vdw	C:ARG:92:N	C:LYS:90:C
+0	vdw	B:TRP:37:O	C:ARG:92:CB
+0	vdw	B:ARG:40:CB	C:ARG:92:CB
+0	vdw	B:THR:50:O	B:VAL:54:CB
+0	vdw	B:THR:50:O	B:VAL:54:CG2
+0	vdw	B:PRO:51:O	B:VAL:54:CB
+0	vdw	B:ASP:52:N	B:THR:50:O
+0	vdw	B:ALA:53:CA	B:THR:50:O
+0	vdw	B:ALA:53:CB	B:THR:50:O
+0	vdw	B:THR:50:O	B:VAL:54:N
+0	vdw	B:PRO:51:O	B:VAL:54:N
+0	vdw	B:ALA:53:N	B:THR:50:O
+0	vdw	B:ALA:53:N	B:PRO:51:C
+0	vdw	B:ALA:53:N	B:PRO:51:O
+0	vdw	B:MET:55:N	B:PRO:51:O
+0	vdw	B:MET:55:CA	B:PRO:51:O
+0	vdw	B:MET:55:CB	B:PRO:51:O
+0	vdw	B:LEU:48:O	B:VAL:54:CG2
+0	vdw	B:ASP:52:C	B:VAL:54:N
+0	vdw	B:ASP:52:O	B:VAL:54:N
+0	vdw	C:ASP:64:OD1	C:LYS:60:O
+0	vdw	C:ASP:64:CB	C:LYS:60:O
+0	vdw	C:ASP:64:CG	C:LYS:60:O
+0	vdw	C:ASP:64:OD2	C:LYS:60:O
+0	vdw	C:LYS:60:C	C:VAL:62:N
+0	vdw	C:LYS:60:O	C:VAL:62:N
+0	vdw	C:ASP:85:O	C:HIS:87:N
+0	vdw	C:HIS:87:C	C:HIS:89:N
+0	vdw	C:ALA:82:O	C:LEU:86:CA
+0	vdw	C:ALA:82:O	C:LEU:86:CB
+0	vdw	C:ASP:85:C	C:HIS:87:N
+0	vdw	C:LEU:86:O	C:LYS:90:N
+0	vdw	C:LEU:86:O	C:LYS:90:CB
+0	vdw	C:ARG:92:N	C:HIS:87:C
+0	vdw	C:LEU:86:O	C:LYS:90:CA
+0	vdw	C:ASP:85:O	C:HIS:89:N
+0	vdw	C:ASP:85:O	C:HIS:89:CA
+0	vdw	C:ASP:85:O	C:HIS:89:CB
+0	vdw	C:ASP:85:O	C:HIS:89:CD2
+0	vdw	C:ALA:88:C	C:LYS:90:N
+0	vdw	C:ALA:88:O	C:ARG:92:NE
+0	vdw	B:ASP:52:N	B:THR:50:C
+0	vdw	B:ALA:53:CB	B:THR:50:OG1
+0	vdw	B:ALA:53:N	B:THR:50:C
+0	vdw	B:ALA:53:N	B:THR:50:OG1
+0	vdw	B:LEU:48:C	B:THR:50:N
+0	vdw	B:LEU:48:O	B:THR:50:N
+0	vdw	C:ALA:82:O	C:ASP:85:CA
+0	vdw	C:ALA:82:O	C:ASP:85:CB
+0	vdw	C:ALA:82:O	C:LEU:86:N
+0	vdw	B:LEU:91:O	B:LYS:95:N
+0	vdw	B:ASP:94:C	B:HIS:97:CE1
+0	vdw	B:LEU:91:O	B:LYS:95:CA
+0	vdw	B:LEU:91:O	B:LEU:96:N
+0	vdw	B:LEU:91:O	B:LYS:95:CB
+0	vdw	B:LEU:91:O	B:LEU:96:CG
+0	vdw	B:LEU:91:CD2	B:LEU:96:CD1
+0	vdw	C:ASP:47:OD2	C:SER:49:OG
+0	vdw	C:ASP:47:OD1	C:SER:49:CB
+0	vdw	C:ASP:47:CG	C:SER:49:OG
+0	vdw	C:ASP:47:OD1	C:SER:49:OG
+0	vdw	B:ASP:94:O	B:HIS:97:CE1
+0	vdw	B:HIS:97:NE2	B:LYS:95:C
+0	vdw	B:HIS:97:NE2	B:LYS:95:O
+0	vdw	B:HIS:97:N	B:LYS:95:C
+0	vdw	B:ALA:62:O	B:LYS:65:CG
+0	vdw	C:HIS:50:O	C:SER:52:N
+0	vdw	C:SER:49:O	C:SER:52:N
+0	vdw	C:SER:49:O	C:SER:52:CA
+0	vdw	C:SER:49:O	C:SER:52:CB
+0	vdw	C:ASP:47:C	C:SER:49:N
+0	vdw	C:ASP:47:C	C:SER:52:CB
+0	vdw	C:ASP:47:O	C:SER:52:CB
+0	vdw	C:ASP:47:OD1	C:SER:49:N
+0	vdw	C:LEU:48:N	C:PHE:46:O
+0	vdw	C:PHE:43:O	C:PHE:46:CB
+0	vdw	C:HIS:45:N	C:PHE:43:O
+0	vdw	C:PHE:43:O	C:PHE:46:N
+0	vdw	B:HIS:97:CG	C:PRO:44:CB
+0	vdw	B:HIS:97:CD2	C:PRO:44:CB
+0	vdw	C:HIS:45:N	C:PHE:43:C
+0	vdw	B:HIS:97:CE1	C:PRO:44:CB
+0	vdw	B:HIS:97:NE2	C:PRO:44:CB
+0	vdw	B:HIS:97:CD2	B:LYS:95:C
+0	vdw	B:HIS:97:CD2	B:LYS:95:O
+0	vdw	B:PHE:42:CE2	B:PHE:45:CE1
+0	vdw	B:HIS:63:CB	B:LYS:59:O
+0	vdw	B:HIS:63:CB	B:PHE:45:CE1
+0	vdw	B:ALA:62:N	B:LYS:59:O
+0	vdw	B:HIS:63:N	B:LYS:59:O
+0	vdw	B:HIS:63:CA	B:LYS:59:O
+0	vdw	B:ALA:62:N	B:VAL:60:O
+0	vdw	B:HIS:63:N	B:VAL:60:O
+0	vdw	B:HIS:63:CA	B:VAL:60:O
+0	vdw	B:HIS:63:N	B:LYS:61:O
+0	vdw	B:HIS:63:N	B:LYS:61:C
+0	vdw	B:LYS:59:O	B:LYS:61:N
+0	vdw	B:ALA:62:N	B:VAL:60:C
+0	vdw	B:HIS:63:N	B:VAL:60:C
+0	vdw	B:ALA:62:CB	B:LYS:59:O
+0	vdw	B:ALA:62:N	B:PRO:58:O
+0	vdw	B:ASN:57:O	B:LYS:61:CB
+0	vdw	B:LYS:61:CB	B:PRO:58:O
+0	vdw	C:ALA:53:N	C:GLY:51:O
+0	vdw	C:LYS:56:CG	C:SER:52:O
+0	vdw	C:SER:52:O	C:VAL:55:N
+0	vdw	C:SER:52:OG	C:VAL:55:N
+0	vdw	C:ALA:53:C	C:VAL:55:N
+0	vdw	C:LYS:56:N	C:SER:52:O
+0	vdw	C:ALA:53:C	C:LYS:56:N
+0	vdw	C:ALA:53:O	C:VAL:55:N
+0	vdw	C:GLN:54:N	C:SER:52:C
+0	vdw	C:GLN:54:N	C:SER:52:O
+0	vdw	C:GLN:54:N	C:SER:52:OG
+0	vdw	C:GLN:54:CB	C:SER:52:OG
+0	vdw	C:ASP:47:C	C:SER:52:OG
+0	vdw	C:ASP:47:O	C:SER:52:OG
+0	vdw	C:GLN:54:CB	C:PHE:46:CD1
+0	vdw	C:PRO:44:CD	C:TYR:42:O
+0	vdw	C:HIS:45:CE1	C:PHE:43:CA
+0	vdw	C:HIS:45:ND1	C:PHE:43:CA
+0	vdw	B:GLN:39:O	B:PHE:41:N
+0	vdw	B:GLU:43:N	B:PHE:41:C
+0	vdw	B:PHE:42:CD2	B:PHE:45:CD1
+0	vdw	B:PHE:42:CD2	B:PHE:45:CE1
+0	vdw	B:GLN:39:O	B:PHE:42:N
+0	vdw	B:GLN:39:O	B:PHE:42:CA
+0	vdw	B:PHE:42:CD2	B:PHE:45:CZ
+0	vdw	B:LYS:59:C	B:PHE:45:CD1
+0	vdw	B:PHE:45:CD1	B:VAL:60:CG2
+0	vdw	B:LYS:59:C	B:PHE:45:CE1
+0	vdw	B:LYS:59:CB	B:PHE:45:CD1
+0	vdw	B:LYS:59:O	B:PHE:45:CE1
+0	vdw	B:LYS:59:C	B:LYS:61:N
+0	vdw	B:ASN:57:O	B:VAL:60:N
+0	vdw	B:ASN:57:O	B:VAL:60:CA
+0	vdw	B:ASN:57:O	B:VAL:60:CB
+0	vdw	B:ASN:57:O	B:LYS:61:N
+0	vdw	B:ASN:57:CB	B:VAL:60:CG2
+0	vdw	B:ASN:57:OD1	B:VAL:60:N
+0	vdw	B:PRO:58:C	B:VAL:60:N
+0	vdw	B:ASN:57:CG	B:VAL:60:CG2
+0	vdw	B:ASN:57:O	B:LYS:61:CG
+0	vdw	B:ASN:57:C	B:LYS:59:N
+0	vdw	B:ASN:57:O	B:LYS:59:N
+0	vdw	C:ALA:53:O	C:LYS:56:CB
+0	vdw	C:LYS:56:CB	C:SER:52:O
+0	vdw	C:ALA:53:O	C:LYS:56:N
+0	vdw	C:ALA:53:O	C:GLY:57:N
+0	vdw	C:ALA:53:O	C:GLY:57:CA
+0	vdw	C:GLN:54:C	C:LYS:56:N
+0	vdw	C:HIS:58:N	C:LYS:56:C
+0	vdw	C:GLN:54:C	C:GLY:57:N
+0	vdw	C:GLN:54:O	C:GLY:57:N
+0	vdw	C:GLN:54:O	C:GLY:57:CA
+0	vdw	C:GLN:54:O	C:HIS:58:N
+0	vdw	C:GLN:54:O	C:PHE:46:CE1
+0	vdw	B:ARG:40:C	B:PHE:42:N
+0	vdw	B:ARG:40:O	B:PHE:42:N
+0	vdw	B:LEU:48:CD2	B:VAL:60:CG2
+0	vdw	B:ALA:53:O	B:ASN:57:CB
+0	vdw	B:GLY:56:O	B:PRO:58:CD
+0	vdw	B:GLY:56:O	B:PRO:58:N
+0	vdw	C:GLY:57:O	C:LYS:61:CG
+0	vdw	B:GLY:46:C	B:LEU:48:N
+0	vdw	B:GLY:46:O	B:LEU:48:N
+0	vdw	B:ALA:53:O	B:GLY:56:C
+0	vdw	B:ALA:53:O	B:ASN:57:N
+0	vdw	B:ALA:53:O	B:ASN:57:CA
+0	vdw	B:ASN:57:ND2	B:ASP:47:O
+0	vdw	C:LEU:86:CD1	C:LYS:90:CD
+0	vdw	B:ASP:47:OD2	B:SER:49:N
+0	vdw	B:ASP:47:OD2	B:SER:49:CB
+0	vdw	B:ASP:47:C	B:SER:49:N
+0	vdw	B:ASP:47:OD2	B:SER:49:OG
+0	vdw	C:ASP:47:N	C:GLN:54:CD
+0	vdw	C:ASP:47:N	C:GLN:54:OE1
+0	vdw	C:ASP:47:CA	C:GLN:54:OE1
+0	vdw	C:ASP:47:CB	C:GLN:54:OE1
+0	vdw	B:ALA:62:CB	B:PRO:58:O
+0	vdw	C:GLN:54:CD	C:PHE:46:CA
+0	vdw	C:GLN:54:OE1	C:PHE:46:CA
+0	vdw	C:GLN:54:OE1	C:PHE:46:C
+0	vdw	C:PHE:46:N	C:PRO:44:C
+0	vdw	B:LYS:59:CB	B:PHE:45:CG
+0	vdw	B:ASN:57:OD1	B:LYS:59:N
+0	vdw	B:ASN:57:OD1	B:LYS:59:CA
+0	vdw	B:ASN:57:OD1	B:LYS:59:CB
+0	vdw	B:ASN:57:CG	B:LYS:59:N
+0	vdw	B:PHE:42:C	B:SER:44:N
+0	vdw	B:PHE:42:O	B:SER:44:N
+0	vdw	B:PHE:42:O	B:PHE:45:N
+0	vdw	B:PHE:42:O	B:PHE:45:CA
+0	vdw	B:PHE:42:O	B:PHE:45:CB
+0	vdw	B:GLU:43:C	B:PHE:45:N
+0	vdw	B:GLU:43:O	B:PHE:45:N
+0	vdw	B:ASN:57:CG	B:PHE:45:O
+0	vdw	B:ASN:57:ND2	B:PHE:45:O
+0	vdw	B:GLY:46:N	B:SER:44:C
+0	vdw	B:GLY:46:N	B:SER:44:O
diff --git a/examples/pdbs/3eiy.pdb b/graphein/examples/pdbs/3eiy.pdb
similarity index 100%
rename from examples/pdbs/3eiy.pdb
rename to graphein/examples/pdbs/3eiy.pdb
diff --git a/examples/pdbs/4hhb.pdb b/graphein/examples/pdbs/4hhb.pdb
similarity index 100%
rename from examples/pdbs/4hhb.pdb
rename to graphein/examples/pdbs/4hhb.pdb
diff --git a/graphein/ppi/features/node_features.py b/graphein/ppi/features/node_features.py
index d13af843..d43ff238 100644
--- a/graphein/ppi/features/node_features.py
+++ b/graphein/ppi/features/node_features.py
@@ -1,11 +1,14 @@
 """Functions for adding nodes features to a PPI Graph"""
+import networkx as nx
+from bioservices import HGNC, UniProt
+
 # %%
 # Graphein
 # Author: Ramon Vinas, Arian Jamasb <arian@jamasb.io>
 # License: MIT
 # Project Website: https://github.com/a-r-j/graphein
 # Code Repository: https://github.com/a-r-j/graphein
-import networkx as nx
+from graphein.utils import import_message
 
 
 def add_sequence_to_nodes(n, d):
@@ -14,8 +17,6 @@ def add_sequence_to_nodes(n, d):
     :param n: Graph node.
     :param d: Graph attribute dictionary.
     """
-    from bioservices import HGNC, UniProt
-
     h = HGNC(verbose=False)
     u = UniProt(verbose=False)
 
@@ -27,7 +28,7 @@ def add_sequence_to_nodes(n, d):
     # Todo mapping with bioservices to support other protein IDs?
 
     for id in d["uniprot_ids"]:
-        d[f"sequence_{id}"] = u.get_fasta_sequence(id)
+        d[f"sequence"] = u.get_fasta_sequence(id)
 
 
 if __name__ == "__main__":
diff --git a/graphein/protein/__init__.py b/graphein/protein/__init__.py
index e9b2a010..0efdf572 100644
--- a/graphein/protein/__init__.py
+++ b/graphein/protein/__init__.py
@@ -1,1 +1,14 @@
 """Protein graph construction module."""
+from .config import *
+from .edges import *
+from .features import *
+from .graphs import *
+from .resi_atoms import *
+from .utils import *
+from .visualisation import plot_protein_structure_graph
+
+try:
+    from .meshes import *
+    from .visualisation import plot_pointcloud
+except ImportError:
+    pass
diff --git a/graphein/protein/config.py b/graphein/protein/config.py
index 7f3783ff..c9381268 100644
--- a/graphein/protein/config.py
+++ b/graphein/protein/config.py
@@ -11,10 +11,14 @@
 
 from pydantic import BaseModel
 
-from graphein.protein.edges.intramolecular import peptide_bonds
+from graphein.protein.edges.distance import add_peptide_bonds
 from graphein.protein.features.nodes.amino_acid import meiler_embedding
 
 
+class DSSPConfig(BaseModel):
+    executable: str = "mkdssp"
+
+
 class GetContactsConfig(BaseModel):
     """Config object for parameters relating to running GetContacts"""
 
@@ -37,24 +41,23 @@ class ProteinGraphConfig(BaseModel):
     )  # Also suggest to avoid hard-coding paths if possible!
     verbose: bool = True
     exclude_waters: bool = True
-    covalent_bonds: bool = True
-    include_ss: bool = True
-    include_ligand: bool = False
-    graph_constructor: Optional[str] = None
     verbose: bool = True
     deprotonate: bool = False
-    long_interaction_threshold: Optional[int] = None
+
+    # Graph construction functions
     protein_df_processing_functions: Optional[List[Callable]] = None
-    edge_construction_functions: List[Union[Callable, str]] = [peptide_bonds]
+    edge_construction_functions: List[Union[Callable, str]] = [
+        add_peptide_bonds
+    ]
     node_metadata_functions: Optional[List[Union[Callable, str]]] = [
         meiler_embedding
     ]
     edge_metadata_functions: Optional[List[Union[Callable, str]]] = None
     graph_metadata_functions: Optional[List[Callable]] = None
-    get_contacts_config: Optional[GetContactsConfig] = GetContactsConfig()
 
-    class Config:
-        arbitrary_types_allowed: bool = True
+    # External Dependency configs
+    get_contacts_config: Optional[GetContactsConfig] = None
+    dssp_config: Optional[DSSPConfig] = None
 
 
 class ProteinMeshConfig(BaseModel):
diff --git a/graphein/protein/edges/__init__.py b/graphein/protein/edges/__init__.py
index e69de29b..c8fb6518 100644
--- a/graphein/protein/edges/__init__.py
+++ b/graphein/protein/edges/__init__.py
@@ -0,0 +1,3 @@
+from .atomic import *
+from .distance import *
+from .intramolecular import *
diff --git a/graphein/protein/edges/atomic.py b/graphein/protein/edges/atomic.py
index 1499cf01..5d80ad8e 100644
--- a/graphein/protein/edges/atomic.py
+++ b/graphein/protein/edges/atomic.py
@@ -5,21 +5,23 @@
 # License: MIT
 # Project Website: https://github.com/a-r-j/graphein
 # Code Repository: https://github.com/a-r-j/graphein
+from typing import Any, Dict
+
 import networkx as nx
 import numpy as np
 import pandas as pd
 
 from graphein.protein.edges.distance import compute_distmat
 from graphein.protein.resi_atoms import (
+    BOND_LENGTHS,
+    BOND_ORDERS,
     COVALENT_RADII,
     DEFAULT_BOND_STATE,
     RESIDUE_ATOM_BOND_STATE,
 )
 
-# TODO BOND ORDER - currently we make no distinction between single, double and aromatic bonds
 # Todo dealing with metals
 # Todo There are other check and balances that can be implemented from here: https://www.daylight.com/meetings/mug01/Sayle/m4xbondage.html
-# Todo detect aromaticity
 
 
 def assign_bond_states_to_dataframe(df: pd.DataFrame) -> pd.DataFrame:
@@ -101,6 +103,7 @@ def add_atomic_edges(G: nx.Graph) -> nx.Graph:
     # Get node IDs from non NaN entries in the thresholded distance matrix and add the edge to the graph
     inds = zip(*np.where(~np.isnan(t_distmat)))
     for i in inds:
+        length = t_distmat[i[0]][i[1]]
         node_1 = G.graph["pdb_df"]["node_id"][i[0]]
         node_2 = G.graph["pdb_df"]["node_id"][i[1]]
         chain_1 = G.graph["pdb_df"]["chain_id"][i[0]]
@@ -116,9 +119,180 @@ def add_atomic_edges(G: nx.Graph) -> nx.Graph:
 
         if G.has_edge(node_1, node_2):
             G.edges[node_1, node_2]["kind"].add("covalent")
+            G.edges[node_1, node_2]["bond_length"] = length
         else:
-            G.add_edge(node_1, node_2, kind={"covalent"})
+            G.add_edge(node_1, node_2, kind={"covalent"}, bond_length=length)
 
     # Todo checking degree against MAX_NEIGHBOURS
 
     return G
+
+
+def add_ring_status(G: nx.Graph) -> nx.Graph:
+    """
+    Identifies rings in the atomic graph. Assigns the edge attribute "RING" to edges in the ring. We do not distinguish
+    between aromatic and non aromatic rings.
+    :param G: Atom-level protein structure graph to add ring edge types to
+    :return: Atom-level protein structure graph with added RING edge attribute
+    """
+    cycles = nx.cycle_basis(
+        G
+    )  # Produces a list of lists containing nodes in each cycle
+    # Iterate over cycles, check for an edge between the nodes - if there is one, add a "RING" attribute
+    for cycle in cycles:
+        [
+            G.edges[x, y]["kind"].add("RING")
+            for i, x in enumerate(cycle)
+            for j, y in enumerate(cycle)
+            if G.has_edge(x, y)
+            if i != j
+        ]
+
+    return G
+
+
+def add_bond_order(G: nx.Graph) -> nx.Graph:
+    """
+    Assign bond orders to the covalent bond edges between atoms on the basis of bond length. Values are taken from:
+    Automatic Assignment of Chemical Connectivity to Organic Molecules in the CambridgeStructural Database.
+    Jon C. Baber and Edward E. Hodgkin*
+    :param G: Atomic-level protein graph with covalent edges.
+    :return: Atomic-level protein graph with covalent edges annotated with putative bond order.
+    """
+    for u, v, a in G.edges(data=True):
+        atom_a = G.nodes[u]["element_symbol"]
+        atom_b = G.nodes[v]["element_symbol"]
+
+        # Assign bonds with hydrogens to 1
+        if atom_a == "H" or atom_b == "H":
+            G.edges[u, v]["kind"].add("SINGLE")
+        # If not, we need to identify the bond type from the bond length
+        else:
+            query = f"{atom_a}-{atom_b}"
+            # We need this try block as the dictionary keys may be X-Y, whereas the query we construct may be Y-X
+            try:
+                identify_bond_type_from_mapping(G, u, v, a, query)
+            except:
+                query = f"{atom_b}-{atom_a}"
+                identify_bond_type_from_mapping(G, u, v, a, query)
+    return G
+
+
+def identify_bond_type_from_mapping(
+    G: nx.Graph, u: str, v: str, a: Dict[str, Any], query: str
+):
+    """
+    Compares the bond length between two atoms in the graph, and the relevant experimental value by performing a lookup
+    against the watershed values in:
+    Automatic Assignment of Chemical Connectivity to Organic Molecules in the Cambridge
+    Structural Database. Jon C. Baber and Edward E. Hodgkin*
+    Bond orders are assigned in the order triple < double < single (e.g. if a bond is shorter than the triple bond
+    watershed (w_dt) then it is assigned as a triple bond. Similarly, if a bond is longer than this but shorter than the
+    double bond watershed, it is assigned double bond status.
+    :param G: nx.Graph of atom-protein structure with atomic edges added
+    :param u: node 1 in edge
+    :param v: node 2 in edge
+    :param a: edge data
+    :param query: "ELEMENTX-ELEMENTY" to perform lookup with (E.g. C-O, N-N)
+    :return: Graph with atomic edge bond order assigned
+    """
+    # Perform lookup of allowable bond orders for the given atom pair
+    allowable_order = BOND_ORDERS[query]
+    # If max souble, compare the length to the double watershed distance, w_sd, else assign single
+    if len(allowable_order) == 2:
+        if a["bond_length"] < BOND_LENGTHS[query]["w_sd"]:
+            G.edges[u, v]["kind"].add("DOUBLE")
+        else:
+            G.edges[u, v]["kind"].add("SINGLE")
+    else:
+        # If max triple, compare the length to the triple watershed distance, w_dt, then double, else assign single
+        if a["bond_length"] < BOND_LENGTHS[query]["w_dt"]:
+            G.edges[u, v]["kind"].add("TRIPLE")
+        elif a["bond_length"] < BOND_LENGTHS[query]["w_sd"]:
+            G.edges[u, v]["kind"].add("DOUBLE")
+        else:
+            G.edges[u, v]["kind"].add("SINGLE")
+    return G
+
+
+# The codeblock below was used in an initial pass at solving the bond order assignment problem based on hybridisation state.
+# We instead use a simpler method of construction based on bond lengths, but I am loathe to remove this code as it may prove useful later
+"""
+def cosinus(x0, x1, x2):
+    e0 = x0 - x1
+    e1 = x2 - x1
+    e0 = e0 / np.linalg.norm(e0)
+    e1 = e1 / np.linalg.norm(e1)
+    cosinus = np.dot(e0, e1)
+    angle = np.arccos(cosinus)
+
+    return 180 - np.degrees(angle)
+
+
+def dihedral(x0, x1, x2, x3):
+    b0 = -1.0 * (x1 - x0)
+    b1 = x2 - x1
+    b2 = x3 - x2
+
+    b0xb1 = np.cross(b0, b1)
+    b1xb2 = np.cross(b2, b1)
+
+    b0xb1_x_b1xb2 = np.cross(b0xb1, b1xb2)
+
+    y = np.dot(b0xb1_x_b1xb2, b1) * (1.0 / np.linalg.norm(b1))
+    x = np.dot(b0xb1, b1xb2)
+
+    grad = 180 - np.degrees(np.arctan2(y, x))
+    return grad
+
+
+def assign_bond_orders(G: nx.Graph) -> nx.Graph:
+
+    bond_angles: Dict[str, float] = {}
+    for n, d in G.nodes(data=True):
+        neighbours = list(G.neighbors(n))
+
+        if len(neighbours) == 1:
+            G.edges[n, neighbours[0]]["kind"].add("SINGLE")
+            bond_angles[n] = 0.0
+        elif len(neighbours) == 2:
+            cos_angle = cosinus(
+                G.nodes[n]["coords"],
+                G.nodes[neighbours[0]]["coords"],
+                G.nodes[neighbours[1]]["coords"],
+            )
+            bond_angles[n] = cos_angle
+        elif len(neighbours) == 3:
+            dihed = dihedral(
+                G.nodes[n]["coords"],
+                G.nodes[neighbours[0]]["coords"],
+                G.nodes[neighbours[1]]["coords"],
+                G.nodes[neighbours[2]]["coords"],
+            )
+            bond_angles[n] = dihed
+
+    print(bond_angles)
+
+    # Assign Bond angles to dataframe
+    G.graph["pdb_df"]["bond_angles"] = G.graph["pdb_df"]["node_id"].map(
+        bond_angles
+    )
+    print(G.graph["pdb_df"].to_string())
+
+    # Assign Hybridisation state from Bond Angles
+    hybridisation_state = {
+        n: "sp"
+        if d > 155
+        else "sp2"
+        if d > 115
+        else "sp3"
+        if d <= 115
+        else "UNK"
+        for n, d in bond_angles.items()
+    }
+    G.graph["pdb_df"]["bond_angles"] = G.graph["pdb_df"]["node_id"].map(
+        hybridisation_state
+    )
+
+    return G
+"""
diff --git a/graphein/protein/edges/distance.py b/graphein/protein/edges/distance.py
index c1137162..1200a98b 100644
--- a/graphein/protein/edges/distance.py
+++ b/graphein/protein/edges/distance.py
@@ -58,6 +58,59 @@ def compute_distmat(pdb_df: pd.DataFrame) -> pd.DataFrame:
     return eucl_dists
 
 
+def add_peptide_bonds(G: nx.Graph) -> nx.Graph:
+    """
+    Adds peptide backbone to residues in each chain
+    :param G: networkx protein graph
+    :return G; networkx protein graph with added peptide bonds
+    """
+    # for i (n, d) in G.nodes(data=True):
+
+    # First we get all adjacent residues
+    # for i, (n, d) in enumerate(G.nodes(data=True)):
+
+    # Iterate over every chain
+    for chain_id in G.graph["chain_ids"]:
+
+        # Find chain residues
+        chain_residues = [
+            (n, v) for n, v in G.nodes(data=True) if v["chain_id"] == chain_id
+        ]
+
+        # Iterate over every residue in chain
+        for i, residue in enumerate(chain_residues):
+            # Checks not at chain terminus - is this versatile enough?
+            if i == len(chain_residues) - 1:
+                continue
+            # Asserts residues are on the same chain
+            cond_1 = (
+                residue[1]["chain_id"] == chain_residues[i + 1][1]["chain_id"]
+            )
+            # Asserts residue numbers are adjacent
+            cond_2 = (
+                abs(
+                    residue[1]["residue_number"]
+                    - chain_residues[i + 1][1]["residue_number"]
+                )
+                == 1
+            )
+
+            # If this checks out, we add a peptide bond
+            if (cond_1) and (cond_2):
+                # Adds "peptide bond" between current residue and the next
+                if G.has_edge(i, i + 1):
+                    G.edges[i, i + 1]["kind"].add("peptide_bond")
+                else:
+                    G.add_edge(
+                        residue[0],
+                        chain_residues[i + 1][0],
+                        kind={"peptide_bond"},
+                    )
+            else:
+                continue
+    return G
+
+
 def add_hydrophobic_interactions(
     G: nx.Graph, rgroup_df: Optional[pd.DataFrame] = None
 ):
@@ -329,17 +382,17 @@ def add_distance_threshold(
     :param threshold: Distance in angstroms, below which two nodes are connected
     :return: Graph with distance-based edges added
     """
-    dist_mat = compute_distmat(G.graph["raw_pdb_df"])
+    dist_mat = compute_distmat(G.graph["pdb_df"])
     interacting_nodes = get_interacting_atoms(threshold, distmat=dist_mat)
     interacting_nodes = zip(interacting_nodes[0], interacting_nodes[1])
 
-    for (a1, a2) in interacting_nodes:
-        n1 = G.graph["raw_pdb_df"].loc[a1, "node_id"]
-        n2 = G.graph["raw_pdb_df"].loc[a2, "node_id"]
-        n1_chain = G.graph["raw_pdb_df"].loc[a1, "chain_id"]
-        n2_chain = G.graph["raw_pdb_df"].loc[a2, "chain_id"]
-        n1_position = G.graph["raw_pdb_df"].loc[a1, "residue_number"]
-        n2_position = G.graph["raw_pdb_df"].loc[a2, "residue_number"]
+    for a1, a2 in interacting_nodes:
+        n1 = G.graph["pdb_df"].loc[a1, "node_id"]
+        n2 = G.graph["pdb_df"].loc[a2, "node_id"]
+        n1_chain = G.graph["pdb_df"].loc[a1, "chain_id"]
+        n2_chain = G.graph["pdb_df"].loc[a2, "chain_id"]
+        n1_position = G.graph["pdb_df"].loc[a1, "residue_number"]
+        n2_position = G.graph["pdb_df"].loc[a2, "residue_number"]
 
         condition_1 = n1_chain != n2_chain
         condition_2 = (
@@ -379,7 +432,7 @@ def add_k_nn_edges(
     If ‘auto’, then True is used for mode=’connectivity’ and False for mode=’distance’.
     :return: Graph with knn-based edges added
     """
-    dist_mat = compute_distmat(G.graph["raw_pdb_df"])
+    dist_mat = compute_distmat(G.graph["pdb_df"])
 
     nn = kneighbors_graph(
         X=dist_mat,
@@ -390,29 +443,38 @@ def add_k_nn_edges(
         include_self=include_self,
     )
 
-    outgoing = np.repeat(np.array(range(len(G.graph["pdb_id"]))), k)
+    # Create iterable of node indices
+    outgoing = np.repeat(np.array(range(len(G.graph["pdb_df"]))), k)
     incoming = nn.indices
+    interacting_nodes = zip(outgoing, incoming)
+
+    for a1, a2 in interacting_nodes:
+        # Get nodes IDs from indices
+        n1 = G.graph["pdb_df"].loc[a1, "node_id"]
+        n2 = G.graph["pdb_df"].loc[a2, "node_id"]
 
-    interacting_nodes = zip(outgoing, incoming, nn.data)
+        # Get chains
+        n1_chain = G.graph["pdb_df"].loc[a1, "chain_id"]
+        n2_chain = G.graph["pdb_df"].loc[a2, "chain_id"]
 
-    for (a1, a2, data) in interacting_nodes:
-        n1 = G.graph["raw_pdb_df"].loc[a1, "node_id"]
-        n2 = G.graph["raw_pdb_df"].loc[a2, "node_id"]
-        n1_chain = G.graph["raw_pdb_df"].loc[a1, "chain_id"]
-        n2_chain = G.graph["raw_pdb_df"].loc[a2, "chain_id"]
-        n1_position = G.graph["raw_pdb_df"].loc[a1, "residue_number"]
-        n2_position = G.graph["raw_pdb_df"].loc[a2, "residue_number"]
+        # Get sequence position
+        n1_position = G.graph["pdb_df"].loc[a1, "residue_number"]
+        n2_position = G.graph["pdb_df"].loc[a2, "residue_number"]
 
+        # Check residues are not on same chain
         condition_1 = n1_chain != n2_chain
+        # Check residues are separated by long_interaction_threshold
         condition_2 = (
             abs(n1_position - n2_position) > long_interaction_threshold
         )
 
+        # If not on same chain add edge or
+        # If on same chain and separation is sufficient add edge
         if condition_1 or (condition_2 and not condition_1):
             if G.has_edge(n1, n2):
-                G.edges[n1, n2]["kind"].add("distance_threshold")
+                G.edges[n1, n2]["kind"].add("k_nn")
             else:
-                G.add_edge(n1, n2, kind={"distance_threshold"})
+                G.add_edge(n1, n2, kind={"k_nn"})
 
 
 def get_ring_atoms(dataframe: pd.DataFrame, aa: str) -> pd.DataFrame:
diff --git a/graphein/protein/edges/intramolecular.py b/graphein/protein/edges/intramolecular.py
index a1d83c18..d0a78cf0 100644
--- a/graphein/protein/edges/intramolecular.py
+++ b/graphein/protein/edges/intramolecular.py
@@ -26,11 +26,7 @@ def peptide_bonds(G: nx.Graph) -> nx.Graph:
     :param G: networkx protein graph
     :return: networkx protein graph with added peptide bonds
     """
-    # for i (n, d) in G.nodes(data=True):
-
-    # First we get all adjacent residues
-    # for i, (n, d) in enumerate(G.nodes(data=True)):
-
+    log.debug("Adding peptide bonds to graph")
     # Iterate over every chain
     for chain_id in G.graph["chain_ids"]:
 
@@ -58,8 +54,8 @@ def peptide_bonds(G: nx.Graph) -> nx.Graph:
             )
 
             # If this checks out, we add a peptide bond
-            if (cond_1) and (cond_2):
-                # Adds "peptide bond" between current residue and the next
+            if cond_1 and cond_2:
+                # Adds "peptide_bond" between current residue and the next
                 if G.has_edge(i, i + 1):
                     G.edges[i, i + 1]["kind"].add("peptide_bond")
                 else:
@@ -140,7 +136,9 @@ def run_get_contacts(
     command += f"--structure {pdb_file} "
     command += f'--output {(config.contacts_dir / (pdb_id + "_contacts.tsv")).as_posix()} '
     command += "--itypes all"  # --sele "protein"'
+
     log.info(f"Running GetContacts with command: {command}")
+
     subprocess.run(command, shell=True)
 
     # Check it all checks out
@@ -157,6 +155,8 @@ def read_contacts_file(
     :param contacts_file: file name of contacts file
     :return: Pandas Dataframe of edge list
     """
+    log.debug(f"Parsing GetContacts output file at: {contacts_file}")
+
     contacts_file = open(contacts_file, "r").readlines()
     contacts = []
 
@@ -194,8 +194,17 @@ def add_contacts_edge(G: nx.Graph, interaction_type: str) -> nx.Graph:
     :type interaction_type: str
     :return G: nx.Graph
     """
-    # Load contacts df
+    log.debug(f"Adding {interaction_type} edges to graph")
+
+    if "contacts_df" not in G.graph:
+        log.info("No 'contacts_df' found in G.graph. Running GetContacts.")
+
+        G.graph["contacts_df"] = get_contacts_df(
+            G.graph["config"].get_contacts_config, G.graph["pdb_id"]
+        )
+
     contacts = G.graph["contacts_df"]
+
     # Select specific interaction type
     interactions = contacts.loc[
         contacts["interaction_type"] == interaction_type
diff --git a/graphein/protein/features/__init__.py b/graphein/protein/features/__init__.py
index e69de29b..5b394fc4 100644
--- a/graphein/protein/features/__init__.py
+++ b/graphein/protein/features/__init__.py
@@ -0,0 +1,6 @@
+from .data import *
+from .graph import *
+from .nodes import *
+from .pretrained_models import *
+from .sequence import *
+from .utils import *
diff --git a/graphein/protein/features/data/__init__.py b/graphein/protein/features/data/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/graphein/protein/features/graph/__init__.py b/graphein/protein/features/graph/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/graphein/protein/features/nodes/__init__.py b/graphein/protein/features/nodes/__init__.py
index e69de29b..91e32eaa 100644
--- a/graphein/protein/features/nodes/__init__.py
+++ b/graphein/protein/features/nodes/__init__.py
@@ -0,0 +1,2 @@
+from .amino_acid import *
+from .dssp import *
diff --git a/graphein/protein/features/nodes/aaindex.py b/graphein/protein/features/nodes/aaindex.py
new file mode 100644
index 00000000..4152e1ec
--- /dev/null
+++ b/graphein/protein/features/nodes/aaindex.py
@@ -0,0 +1,56 @@
+from typing import Dict, Tuple
+
+import networkx as nx
+
+from graphein.utils import import_message, protein_letters_3to1_all_caps
+
+try:
+    from pyaaisc import Aaindex
+except ImportError:
+    import_message(
+        submodule="graphein.protein.features.nodes.aaindex",
+        package="pyaaisc",
+        pip_install=True,
+    )
+
+
+def fetch_AAIndex(accession: str) -> Tuple[str, Dict[str, float]]:
+    """
+    Fetches AAindex1 dictionary from an accession code. The dictionary maps one-letter AA codes to float values
+
+    :param accession: Aaindex1 accession code
+    :return: tuple of record titel(str) and dictionary of AA:value mappings
+    """
+    # Initialise AAindex object and get data
+    aaindex = Aaindex()
+    record = aaindex.get(accession)
+
+    return record.title, record.index_data
+
+
+def aaindex1(G: nx.Graph, accession: str) -> nx.Graph:
+    """Adds AAIndex1 datavalues for a given accession as node features.
+    :param G: nx.Graph protein structure graphein to featurise
+    :param accession: AAIndex1 accession code for values to use
+    :return: Protein Structure graph with AAindex1 node features added
+    """
+
+    title, index_data = fetch_AAIndex(accession)
+
+    # TODO: change to allow for a list of all accession numbers?
+    G.graph["aaindex1"] = accession + ": " + title
+
+    if G.graph["config"].granularity == "atom":
+        raise NameError(
+            "AAIndex features cannot be added to atom granularity graph"
+        )
+
+    for n in G.nodes:
+        residue = n.split(":")[1]
+        residue = protein_letters_3to1_all_caps(residue)
+
+        aaindex = index_data[residue]
+
+        G.nodes[n][f"aaindex1_{accession}"] = aaindex
+
+    return G
diff --git a/graphein/protein/features/nodes/amino_acid.py b/graphein/protein/features/nodes/amino_acid.py
index 573a68ea..c8a2f72e 100644
--- a/graphein/protein/features/nodes/amino_acid.py
+++ b/graphein/protein/features/nodes/amino_acid.py
@@ -5,11 +5,14 @@
 # Project Website: https://github.com/a-r-j/graphein
 # Code Repository: https://github.com/a-r-j/graphein
 
+import logging
 from functools import lru_cache
 from pathlib import Path
 
 import pandas as pd
 
+log = logging.getLogger(__name__)
+
 
 @lru_cache()
 def load_expasy_scales() -> pd.DataFrame:
@@ -21,6 +24,9 @@ def load_expasy_scales() -> pd.DataFrame:
     The function is LRU-cached in memory for fast access
     on each function call.
     """
+    log.debug(
+        f"Reading Expasy protein scales from: {Path(__file__).parent / 'amino_acid_properties.csv'}"
+    )
     df = pd.read_csv(
         Path(__file__).parent / "amino_acid_properties.csv", index_col=0
     )
@@ -37,6 +43,9 @@ def load_meiler_embeddings() -> pd.DataFrame:
     The function is LRU-cached in memory for fast access
     on each function call.
     """
+    log.debug(
+        f"Reading meiler embeddings from: {Path(__file__).parent / 'meiler_embeddings.csv'}"
+    )
     df = pd.read_csv(
         Path(__file__).parent / "meiler_embeddings.csv", index_col=0
     )
@@ -70,7 +79,3 @@ def meiler_embedding(n, d) -> pd.Series:
     df = load_meiler_embeddings()
     amino_acid = d["residue_name"]
     return df[amino_acid]
-
-
-def load_esm_embedding_residue(n, d) -> pd.Series:
-    raise NotImplementedError
diff --git a/graphein/protein/features/nodes/dssp.py b/graphein/protein/features/nodes/dssp.py
index 819beb72..8fd993a1 100644
--- a/graphein/protein/features/nodes/dssp.py
+++ b/graphein/protein/features/nodes/dssp.py
@@ -1,16 +1,28 @@
+"""Featurization functions for graph nodes using DSSP predicted features."""
+# Graphein
+# Author: Arian Jamasb <arian@jamasb.io>, Charlie Harris
+# License: MIT
+# Project Website: https://github.com/a-r-j/graphein
+# Code Repository: https://github.com/a-r-j/graphein
+from __future__ import annotations
+
+import os
 from typing import Any, Dict, Optional
 
 import networkx as nx
 import pandas as pd
+from Bio.Data.IUPACData import protein_letters_1to3
 from Bio.PDB.DSSP import dssp_dict_from_pdb_file, residue_max_acc
 
+from graphein.protein.utils import download_pdb
+
 DSSP_COLS = [
     "chain",
     "resnum",
     "icode",
     "aa",
     "ss",
-    "exposure_rsa",
+    "asa",
     "phi",
     "psi",
     "dssp_index",
@@ -24,16 +36,23 @@
     "O_NH_2_energy",
 ]
 
+DSSP_SS = ["H", "B", "E", "G", "I", "T", "S"]
+
 
 def parse_dssp_df(dssp: Dict[str, Any]) -> pd.DataFrame:
-    # Parse DSSP output to DataFrame
+    """
+    Parse DSSP output to DataFrame
+
+    :param dssp: Dictionary containing DSSP output
+    :return: pd.Dataframe containing parsed DSSP output
+    """
     appender = []
     for k in dssp[1]:
         to_append = []
         y = dssp[0][k]
         chain = k[0]
         residue = k[1]
-        het = residue[0]
+        # het = residue[0]
         resnum = residue[1]
         icode = residue[2]
         to_append.extend([chain, resnum, icode])
@@ -43,26 +62,188 @@ def parse_dssp_df(dssp: Dict[str, Any]) -> pd.DataFrame:
     return pd.DataFrame.from_records(appender, columns=DSSP_COLS)
 
 
-def add_dssp_df(G: nx.Graph) -> nx.Graph:
-    raise NotImplementedError
+def process_dssp_df(df: pd.DataFrame) -> pd.DataFrame:
+    """
+    Processes a DSSP DataFrame to make indexes align with node IDs
+    :param df: pd.Dataframe containing the parsed output from DSSP.
+    :return: pd.Dataframe with node IDs
+    """
 
+    # Convert 1 letter aa code to 3 letter
+    amino_acids = df["aa"].tolist()
 
-def process_dssp_df(df: pd.DataFrame) -> pd.DataFrame:
-    raise NotImplementedError
+    for i, amino_acid in enumerate(amino_acids):
+        amino_acids[i] = protein_letters_1to3[amino_acid].upper()
+    df["aa"] = amino_acids
+
+    # Construct node IDs
+    node_ids = []
+
+    for i, row in df.iterrows():
+        node_id = row["chain"] + ":" + row["aa"] + ":" + str(row["resnum"])
+        node_ids.append(node_id)
+    df["node_id"] = node_ids
+
+    df.set_index("node_id", inplace=True)
+
+    return df
+
+
+def add_dssp_df(G: nx.Graph, dssp_config: Optional[DSSPConfig]) -> nx.Graph:
+    """
+    Construct DSSP dataframe and add as graph level variable to protein graph
+    :param G: Input protein graph
+    :param dssp_config: DSSPConfig object. Specifies which executable to run.
+    Located in graphein.protein.config
+    :return: Protein graph with DSSP dataframe added
+    """
+
+    config = G.graph["config"]
+    pdb_id = G.graph["pdb_id"]
+
+    # TODO - Check for DSSP installation
+
+    # Check for existence of pdb file. If not, download it.
+    if not os.path.isfile(config.pdb_dir / pdb_id):
+        pdb_file = download_pdb(config, pdb_id)
+    else:
+        pdb_file = config.pdb_dir + pdb_id + ".pdb"
+
+    # Extract DSSP executable
+    executable = dssp_config.executable
+
+    if config.verbose:
+        print(f"Using DSSP executable '{executable}'")
+
+    # Run DSSP
+    dssp_dict = dssp_dict_from_pdb_file(pdb_file, DSSP=executable)
+    dssp_dict = parse_dssp_df(dssp_dict)
+    dssp_dict = process_dssp_df(dssp_dict)
+
+    if config.verbose:
+        print(dssp_dict)
+
+    # Assign DSSP Dict
+    G.graph["dssp_df"] = dssp_dict
+
+    return G
+
+
+def add_dssp_feature(G: nx.Graph, feature: str) -> nx.Graph:
+    """
+    Adds add_dssp_feature specified amino acid feature as calculated
+    by DSSP to every node in a protein graph
+    :param G: Protein structure graph to add dssp feature to
+    :param feature: string specifying name of DSSP feature to add:
+    "chain",
+    "resnum",
+    "icode",
+    "aa",
+    "ss",
+    "asa",
+    "phi",
+    "psi",
+    "dssp_index",
+    "NH_O_1_relidx",
+    "NH_O_1_energy",
+    "O_NH_1_relidx",
+    "O_NH_1_energy",
+    "NH_O_2_relidx",
+    "NH_O_2_energy",
+    "O_NH_2_relidx",
+    "O_NH_2_energy",
+
+    These names parse_dssp_df accessible in the DSSP_COLS list
+    :return: Protein structure graph with DSSP feature added to nodes
+    """
+    if "dssp_df" not in G.graph:
+        G = add_dssp_df(G, G.graph["config"].dssp_config)
+
+    config = G.graph["config"]
+    dssp_df = G.graph["dssp_df"]
+
+    # Change to not allow for atom granuarlity?
+    if config.granularity == "atom":
+        raise NameError(
+            f"DSSP residue features ({feature}) \
+            cannot be added to atom granularity graph"
+        )
 
+        # TODO confirm below is not needed and remove
+        """
+        # If granularity is atom, apply residue feature to every atom
+        for n in G.nodes():
+            residue = n.split(":")
+            residue = residue[0] + ":" + residue[1] + ":" + residue[2]
 
-def add_dssp_features(G: nx.Graph) -> nx.Graph:
-    if G.graph["pdb_code"] is not None:
-        raise NotImplementedError
-        # d = dssp_dict_from_pdb_file(pdb_code + ".pdb") # Todo fix paths
-    elif G.graph["file_path"] is not None:
-        d = dssp_dict_from_pdb_file(G.graph["file_path"])
+            G.nodes[n][feature] = dssp_df.loc[residue, feature]
+        """
 
-    dssp_df = parse_dssp_df(d)
-    dssp_df = process_dssp_df(d)
+    else:
+        nx.set_node_attributes(G, dict(dssp_df[feature]), feature)
+
+    if config.verbose:
+        print("Added " + feature + " features to graph nodes")
 
-    # Assign features
-    G.graph["dssp_secondary_structure"] = dssp_df["ss"]
-    G.graph["dssp_exposure_rsa"] = dssp_df["exposure_rsa"]
-    G.graph["dssp_exposure_asa"] = dssp_df["exposure_asa"]
     return G
+
+
+def rsa(G: nx.Graph) -> nx.Graph:
+    """
+    Adds RSA (relative solvent accessibility) of each residue in protein graph
+    as calculated by DSSP.
+
+    :param G: Input protein graph
+    :return: Protein graph with rsa values added
+    """
+
+    # Calculate RSA
+    dssp_df = G.graph["dssp_df"]
+    dssp_df["max_acc"] = dssp_df["aa"].map(residue_max_acc["Sander"].get)
+    dssp_df[["asa", "max_acc"]] = dssp_df[["asa", "max_acc"]].astype(float)
+    dssp_df["rsa"] = dssp_df["asa"] / dssp_df["max_acc"]
+
+    G.graph["dssp_df"] = dssp_df
+
+    return add_dssp_feature(G, "rsa")
+
+
+def asa(G: nx.Graph) -> nx.Graph:
+    """
+    Adds ASA of each residue in protein graph as calculated by DSSP.
+
+    :param G: Input protein graph
+    :return: Protein graph with asa values added
+    """
+    return add_dssp_feature(G, "asa")
+
+
+def phi(G: nx.Graph) -> nx.Graph:
+    """
+    Adds phi-angles of each residue in protein graph as calculated by DSSP.
+
+    :param G: Input protein graph
+    :return: Protein graph with phi-angles values added
+    """
+    return add_dssp_feature(G, "phi")
+
+
+def psi(G: nx.Graph) -> nx.Graph:
+    """
+    Adds psi-angles of each residue in protein graph as calculated by DSSP.
+
+    :param G: Input protein graph
+    :return: Protein graph with psi-angles values added
+    """
+    return add_dssp_feature(G, "psi")
+
+
+def secondary_structure(G: nx.Graph) -> nx.Graph:
+    """
+    Adds secondary structure of each residue in protein graph
+    as calculated by DSSP in the form of a string
+
+    :param G: Input protein graph
+    :return: Protein graph with secondary structure added
+    """
+    return add_dssp_feature(G, "ss")
diff --git a/graphein/protein/features/pretrained_models/__init__.py b/graphein/protein/features/pretrained_models/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/graphein/protein/features/sequence/__init__.py b/graphein/protein/features/sequence/__init__.py
index e69de29b..c1127d67 100644
--- a/graphein/protein/features/sequence/__init__.py
+++ b/graphein/protein/features/sequence/__init__.py
@@ -0,0 +1,4 @@
+from .embeddings import *
+from .propy import *
+from .sequence import *
+from .utils import *
diff --git a/graphein/protein/features/sequence/embeddings.py b/graphein/protein/features/sequence/embeddings.py
index e7f7dbb9..b58ff40a 100644
--- a/graphein/protein/features/sequence/embeddings.py
+++ b/graphein/protein/features/sequence/embeddings.py
@@ -1,3 +1,5 @@
+from __future__ import annotations
+
 import os
 from functools import lru_cache, partial
 from pathlib import Path
@@ -7,18 +9,81 @@
 
 from graphein.protein.features.sequence.utils import (
     compute_feature_over_chains,
+    subset_by_node_feature_value,
 )
+from graphein.utils import import_message
+
+try:
+    import biovec
+except ImportError:
+    import_message(
+        submodule="graphein.protein.features.sequence.embeddings",
+        package="biovec",
+        pip_install=True,
+    )
 
 
 @lru_cache()
-def _load_esm_model():
-    import torch
+def _load_esm_model(model_name: str = "esm1b_t33_650M_UR50S"):
+    """
+    Loads pre-trained FAIR ESM model from torch hub.
+
+    Sources:
+    Biological Structure and Function Emerge from Scaling Unsupervised Learning to 250 Million Protein Sequences (2019)
+    Rives, Alexander and Meier, Joshua and Sercu, Tom and Goyal, Siddharth and Lin, Zeming and Liu, Jason and Guo,
+    Demi and Ott, Myle and Zitnick, C. Lawrence and Ma, Jerry and Fergus, Rob
+
+    Transformer protein language models are unsupervised structure learners 2020
+    Rao, Roshan M and Meier, Joshua and Sercu, Tom and Ovchinnikov, Sergey and Rives, Alexander
+
+    Pre-trained models:
+    Full Name layers params Dataset Embedding Dim Model URL
+    ESM-1b esm1b_t33_650M_UR50S 33 650M UR50/S 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt
+    ESM1-main esm1_t34_670M_UR50S34 670M UR50/S 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt
+    esm1_t34_670M_UR50D 34 670M UR50/D 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50D.pt
+    esm1_t34_670M_UR100 34 670M UR100 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR100.pt
+    esm1_t12_85M_UR50S 12 85M UR50/S 768 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t12_85M_UR50S.pt
+    esm1_t6_43M_UR50S 6 43M UR50/S 768 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t6_43M_UR50S.pt
+    :param model_name: Name of pre-trained model to load
+    :return: loaded pre-trained model
+    """
 
-    return torch.hub.load("facebookresearch/esm", "esm1b_t33_650M_UR50S")
+    return torch.hub.load("facebookresearch/esm", model_name)
 
 
-def compute_esm_embedding(sequence: str, representation: str):
-    model, alphabet = _load_esm_model()
+def compute_esm_embedding(
+    sequence: str,
+    representation: str,
+    model_name: str = "esm1b_t33_650M_UR50S",
+    output_layer: int = 33,
+) -> np.ndarray:
+    """
+    Computes sequence embedding using Pre-trained ESM model from FAIR
+
+    Sources:
+    Biological Structure and Function Emerge from Scaling Unsupervised Learning to 250 Million Protein Sequences (2019)
+    Rives, Alexander and Meier, Joshua and Sercu, Tom and Goyal, Siddharth and Lin, Zeming and Liu, Jason and Guo,
+    Demi and Ott, Myle and Zitnick, C. Lawrence and Ma, Jerry and Fergus, Rob
+
+    Transformer protein language models are unsupervised structure learners 2020
+    Rao, Roshan M and Meier, Joshua and Sercu, Tom and Ovchinnikov, Sergey and Rives, Alexander
+
+    Pre-trained models:
+    Full Name layers params Dataset Embedding Dim Model URL
+    ESM-1b esm1b_t33_650M_UR50S 33 650M UR50/S 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt
+    ESM1-main esm1_t34_670M_UR50S 34 670M UR50/S 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt
+    esm1_t34_670M_UR50D 34 670M UR50/D 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50D.pt
+    esm1_t34_670M_UR100 34 670M UR100 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR100.pt
+    esm1_t12_85M_UR50S 12 85M UR50/S 768 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t12_85M_UR50S.pt
+    esm1_t6_43M_UR50S 6 43M UR50/S 768 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t6_43M_UR50S.pt
+
+    :param sequence: Protein sequence to embed (str)
+    :param representation: Type of embedding to extract. "residue: or "sequence". Sequence-level embeddings are averaged residue embeddings
+    :param model_name: Name of pre-trained model to use
+    :param output_layer: integer indicating which layer the output should be taken from
+    :return: embedding (np.ndarray)
+    """
+    model, alphabet = _load_esm_model(model_name)
     batch_converter = alphabet.get_batch_converter()
 
     data = [
@@ -28,11 +93,16 @@ def compute_esm_embedding(sequence: str, representation: str):
 
     # Extract per-residue representations (on CPU)
     with torch.no_grad():
-        results = model(batch_tokens, repr_layers=[33], return_contacts=True)
-    token_representations = results["representations"][33]
+        results = model(
+            batch_tokens, repr_layers=[output_layer], return_contacts=True
+        )
+    token_representations = results["representations"][output_layer]
 
     if representation == "residue":
         return token_representations.numpy()
+
+    # Generate per-sequence representations via averaging
+    # NOTE: token 0 is always a beginning-of-sequence token, so the first residue is token 1.
     elif representation == "sequence":
         sequence_representations = []
         for i, (_, seq) in enumerate(data):
@@ -47,20 +117,55 @@ def esm_residue_embedding(
     model_name: str = "esm1b_t33_650M_UR50S",
     output_layer: int = 33,
 ) -> nx.Graph:
-    for c in G.graph["chain_id"]:
+    """
+    Computes ESM residue embeddings from a protein sequence and adds the to the graph.
+
+    Sources:
+    Biological Structure and Function Emerge from Scaling Unsupervised Learning to 250 Million Protein Sequences (2019)
+    Rives, Alexander and Meier, Joshua and Sercu, Tom and Goyal, Siddharth and Lin, Zeming and Liu, Jason and Guo,
+    Demi and Ott, Myle and Zitnick, C. Lawrence and Ma, Jerry and Fergus, Rob
+
+    Transformer protein language models are unsupervised structure learners 2020
+    Rao, Roshan M and Meier, Joshua and Sercu, Tom and Ovchinnikov, Sergey and Rives, Alexander
+
+    Pre-trained models:
+    Full Name layers params Dataset Embedding Dim Model URL
+    ESM-1b esm1b_t33_650M_UR50S 33 650M UR50/S 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt
+    ESM1-main esm1_t34_670M_UR50S 34 670M UR50/S 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt
+    esm1_t34_670M_UR50D 34 670M UR50/D 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50D.pt
+    esm1_t34_670M_UR100 34 670M UR100 1280 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR100.pt
+    esm1_t12_85M_UR50S 12 85M UR50/S 768 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t12_85M_UR50S.pt
+    esm1_t6_43M_UR50S 6 43M UR50/S 768 https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t6_43M_UR50S.pt
+
+    :param G: nx.Graph to add esm embedding to
+    :param model_name: Name of pre-trained model to use
+    :param output_layer: index of output layer in pre-trained model
+    :return: nx.Graph with esm embedding feature added to nodes
+    """
+
+    for chain in G.graph["chain_ids"]:
         embedding = compute_esm_embedding(
-            G.graph[f"sequence_{c}"],
+            G.graph[f"sequence_{chain}"],
             representation="residue",
             model_name=model_name,
             output_layer=output_layer,
         )
-        # Todo complete residue assignment over subgraph
-        for i, n, d in enumerate(G.nodes(data=True)):
-            n["esm_embedding"] = embedding[i]
+        # remove start and end tokens from per-token residue embeddings
+        embedding = embedding[0, 1:-1]
+        subgraph = subset_by_node_feature_value(G, "chain_id", chain)
+
+        for i, (n, d) in enumerate(subgraph.nodes(data=True)):
+            G.nodes[n]["esm_embedding"] = embedding[i]
+
     return G
 
 
 def esm_sequence_embedding(G: nx.Graph) -> nx.Graph:
+    """
+    Computes ESM sequence embedding feature over chains in a graph
+    :param G: nx.Graph protein structure graph
+    :return: nx.Graphein protein structure graphein with esm embedding features added eg. G.graph["esm_embedding_A"]
+    """
     func = partial(compute_esm_embedding, representation="sequence")
     G = compute_feature_over_chains(G, func, feature_name="esm_embedding")
 
@@ -74,7 +179,6 @@ def _load_biovec_model():
     Source: ProtVec: A Continuous Distributed Representation of Biological Sequences
     Paper: http://arxiv.org/pdf/1503.05140v1.pdf
     """
-    import biovec
 
     return biovec.models.load_protvec(
         os.fspath(
@@ -86,6 +190,14 @@ def _load_biovec_model():
 
 
 def biovec_sequence_embedding(G: nx.Graph) -> nx.Graph:
+    """
+    Adds BioVec sequence embedding feature to the graph. Computed over chains
+
+    Source: ProtVec: A Continuous Distributed Representation of Biological Sequences
+    Paper: http://arxiv.org/pdf/1503.05140v1.pdf
+    :param G: nx.Graph protein structure graph
+    :return: nx.Graph protein structure graph with biovec embedding added. e.g. G.graph["biovec_embedding_A"]
+    """
     pv = _load_biovec_model()
     func = pv.to_vecs
     G = compute_feature_over_chains(G, func, feature_name="biovec_embedding")
diff --git a/graphein/protein/features/sequence/sequence.py b/graphein/protein/features/sequence/sequence.py
index 2aca9a73..75464e9f 100644
--- a/graphein/protein/features/sequence/sequence.py
+++ b/graphein/protein/features/sequence/sequence.py
@@ -6,11 +6,14 @@
 # License: MIT
 # Project Website: https://github.com/a-r-j/graphein
 # Code Repository: https://github.com/a-r-j/graphein
+from __future__ import annotations
+
 from functools import partial
 
 import networkx as nx
 from Bio import SeqUtils
 from multipledispatch import dispatch
+from networkx import Graph
 
 from graphein.protein.features.sequence.utils import (
     aggregate_feature_over_chains,
@@ -27,8 +30,8 @@ def molecular_weight(protein: str, seq_type: str = "protein"):
     return func(protein)
 
 
-@dispatch(nx.Graph, str)
-def molecular_weight(protein: nx.Graph, seq_type: str = "protein"):
+@dispatch(nx.Graph, seq_type=str)
+def molecular_weight(protein, seq_type: str = "protein"):
     func = partial(SeqUtils.molecular_weight, seq_type=seq_type)
 
     G = compute_feature_over_chains(
diff --git a/graphein/protein/features/sequence/utils.py b/graphein/protein/features/sequence/utils.py
index d1b9e3bc..65ea9fab 100644
--- a/graphein/protein/features/sequence/utils.py
+++ b/graphein/protein/features/sequence/utils.py
@@ -1,4 +1,4 @@
-from typing import Callable, List, Optional
+from typing import Any, Callable, List
 
 import networkx as nx
 import numpy as np
@@ -7,6 +7,13 @@
 def compute_feature_over_chains(
     G: nx.Graph, func: Callable, feature_name: str
 ) -> nx.Graph:
+    """
+    Computes a sequence featurisation function over the chains in a graph
+    :param G: nx.Graph protein structure graph to featurise
+    :param func: Sequence featurisation function
+    :param feature_name: name of added feature
+    :return: Graph with added features of the form G.graph[f"{feature_name}_{chain_id}"]
+    """
     for c in G.graph["chain_ids"]:
         G.graph[f"{feature_name}_{c}"] = func(G.graph[f"sequence_{c}"])
         """
@@ -25,6 +32,13 @@ def compute_feature_over_chains(
 def aggregate_feature_over_chains(
     G: nx.Graph, feature_name: str, aggregation_type: str
 ) -> nx.Graph:
+    """
+    Performs aggregation of a given feature over chains in a graph to produce an aggregated value
+    :param G: nx.Graph protein structure graph
+    :param feature_name: Name of feature to aggregate
+    :param aggregation_type: Type of aggregation to perform (min/max/mean/sum)
+    :return: Graph with new aggregated feature
+    """
 
     if aggregation_type == "max":
         func = np.max
@@ -40,10 +54,35 @@ def aggregate_feature_over_chains(
         )
 
     G.graph[f"{feature_name}_{aggregation_type}"] = func(
-        [G.graph[f"{feature_name}_{c}"]] for c in G.graph["chain_ids"]
+        [G.graph[f"{feature_name}_{c}"] for c in G.graph["chain_ids"]]
     )
     return G
 
 
 def sequence_to_ngram(sequence: str, N: int) -> List[str]:
+    """
+    Chops a sequence into overlapping N-grams (substrings of length N)
+    :param sequence: str Sequence to convert to N-garm
+    :param N: Length ofN-grams (int)
+    :return: List of n-grams
+    """
     return [sequence[i : i + N] for i in range(len(sequence) - N + 1)]
+
+
+def subset_by_node_feature_value(
+    G: nx.Graph, feature_name: str, feature_value: Any
+) -> nx.Graph:
+    """
+    Extracts a subgraph from a protein structure graph based on nodes with a certain feature value
+    :param G: nx.Graph protein structure graph to extract a subgraph from
+    :param feature_name: Name of feature to base subgraph extraction from
+    :param feature_value: Value of feature to select
+    :return: Subgraph of G based on nodes with a given feature value
+    """
+    node_list = []
+    for n, d in G.nodes(data=True):
+
+        if d[feature_name] == feature_value:
+            node_list.append(n)
+
+    return G.subgraph(node_list)
diff --git a/graphein/protein/graphs.py b/graphein/protein/graphs.py
index 0fd2afdc..6acd8c45 100644
--- a/graphein/protein/graphs.py
+++ b/graphein/protein/graphs.py
@@ -1,7 +1,7 @@
 """Functions for working with Protein Structure Graphs"""
 # %%
 # Graphein
-# Author: Arian Jamasb <arian@jamasb.io>, Eric Ma
+# Author: Arian Jamasb <arian@jamasb.io>, Eric Ma, Charlie Harris
 # License: MIT
 # Project Website: https://github.com/a-r-j/graphein
 # Code Repository: https://github.com/a-r-j/graphein
@@ -16,7 +16,11 @@
 from Bio.PDB.Polypeptide import three_to_one
 from biopandas.pdb import PandasPdb
 
-from graphein.protein.config import ProteinGraphConfig
+from graphein.protein.config import (
+    DSSPConfig,
+    GetContactsConfig,
+    ProteinGraphConfig,
+)
 from graphein.protein.edges.distance import compute_distmat
 from graphein.protein.edges.intramolecular import get_contacts_df
 from graphein.protein.resi_atoms import BACKBONE_ATOMS
@@ -105,6 +109,10 @@ def convert_structure_to_centroids(df: pd.DataFrame) -> pd.DataFrame:
     :param df: Pandas Dataframe config protein structure to convert into a dataframe of centroid positions
     :return: pd.Dataframe with atoms/residues positiions converted into centroid positions
     """
+    log.debug(
+        "Converting dataframe to centroids. This averages XYZ coords of the atoms in a residue"
+    )
+
     centroids = calculate_centroid_positions(df)
     df = df.loc[df["atom_name"] == "CA"].reset_index(drop=True)
     df["x_coord"] = centroids["x_coord"]
@@ -278,22 +286,15 @@ def select_chains(
     :param chain_selection:
     :param verbose: Print dataframe
     :type verbose: bool
-    :return
+    :return Protein structure dataframe containing only entries in the chain selection
     """
     if chain_selection != "all":
-        # chains = [
-        #    protein_df.loc[protein_df["chain_id"] == chain]
-        #    for chain in chain_selection
-        # ]
         protein_df = filter_dataframe(
-            protein_df, list(chain_selection), boolean=True
+            protein_df,
+            by_column="chain_id",
+            list_of_values=list(chain_selection),
+            boolean=True,
         )
-    # else:
-    # chains = [
-    #    protein_df.loc[protein_df["chain_id"] == chain]
-    #    for chain in protein_df["chain_id"].unique()
-    # ]
-    # protein_df = pd.concat([c for c in chains])
 
     return protein_df
 
@@ -341,6 +342,7 @@ def add_nodes_to_graph(
     b_factor = protein_df["b_factor"]
     atom_type = protein_df["atom_name"]
     nodes = protein_df["node_id"]
+    element_symbol = protein_df["element_symbol"]
     G.add_nodes_from(nodes)
 
     # Set intrinsic node attributes
@@ -350,6 +352,9 @@ def add_nodes_to_graph(
         G, dict(zip(nodes, residue_number)), "residue_number"
     )
     nx.set_node_attributes(G, dict(zip(nodes, atom_type)), "atom_type")
+    nx.set_node_attributes(
+        G, dict(zip(nodes, element_symbol)), "element_symbol"
+    )
     nx.set_node_attributes(G, dict(zip(nodes, coords)), "coords")
     nx.set_node_attributes(G, dict(zip(nodes, b_factor)), "b_factor")
 
@@ -387,15 +392,12 @@ def compute_edges(
     funcs: List[Callable],
     get_contacts_config: Optional[GetContactsConfig] = None,
 ) -> nx.Graph:
-    """Compute edges."""
-    # TODO: move to edge computation
-    if get_contacts_config is not None:
-        G.graph["contacts_df"] = get_contacts_df(
-            get_contacts_config, G.graph["pdb_id"]
-        )
-
-    G.graph["atomic_dist_mat"] = compute_distmat(G.graph["raw_pdb_df"])
-    G.graph["dist_mat"] = compute_distmat(G.graph["pdb_df"])
+    # This control flow prevents unnecessary computation of the distance matrices
+    if "config" in G.graph:
+        if G.graph["config"].granularity == "atom":
+            G.graph["atomic_dist_mat"] = compute_distmat(G.graph["raw_pdb_df"])
+        else:
+            G.graph["dist_mat"] = compute_distmat(G.graph["pdb_df"])
 
     for func in funcs:
         func(G)
@@ -422,6 +424,7 @@ def construct_graph(
     :param config: ProteinGraphConfig object. If None, defaults to config in graphein.protein.config
     :param pdb_path: Path to pdb_file to build graph from
     :param pdb_code: 4-character PDB accession pdb_code to build graph from
+    :param chain_selection: String of polypeptide chains to include in graph. E.g "ABDF" or "all"
     :param df_processing_funcs: List of dataframe processing functions
     :param edge_construction_funcs: List of edge construction functions
     :param edge_annotation_funcs: List of edge annotation functions
@@ -484,6 +487,10 @@ def construct_graph(
     )
     # Add nodes to graph
     g = add_nodes_to_graph(g)
+
+    # Add config to graph
+    g.graph["config"] = config
+
     # Annotate additional node metadata
     if config.node_metadata_functions is not None:
         g = annotate_node_metadata(g, config.node_metadata_functions)
@@ -503,9 +510,6 @@ def construct_graph(
     if config.edge_metadata_functions is not None:
         g = annotate_edge_metadata(g, config.edge_metadata_functions)
 
-    # Add config to graph
-    g.graph["config"] = config
-
     return g
 
 
@@ -513,37 +517,39 @@ def construct_graph(
     from functools import partial
 
     import graphein.protein.features.sequence.propy
-    from graphein.protein.edges.atomic import add_atomic_edges
+    from graphein.protein.edges.atomic import (
+        add_atomic_edges,
+        add_bond_order,
+        add_ring_status,
+    )
     from graphein.protein.edges.distance import (
         add_delaunay_triangulation,
         add_hydrogen_bond_interactions,
         add_k_nn_edges,
+        add_peptide_bonds,
     )
-    from graphein.protein.edges.intramolecular import (
-        peptide_bonds,
-        salt_bridge,
-    )
-    from graphein.protein.features.nodes.amino_acid import (
-        expasy_protein_scale,
-        meiler_embedding,
-    )
-    from graphein.protein.features.sequence.embeddings import (
-        biovec_sequence_embedding,
-        esm_sequence_embedding,
-    )
+    from graphein.protein.edges.intramolecular import salt_bridge
     from graphein.protein.features.sequence.sequence import molecular_weight
 
     configs = {
-        "granularity": "atom",
+        "granularity": "CA",
         "keep_hets": False,
         "insertions": False,
         "verbose": False,
+        "get_contacts_config": GetContactsConfig(),
+        "dssp_config": DSSPConfig(),
+        "graph_metadata_functions": [molecular_weight],
     }
     config = ProteinGraphConfig(**configs)
-    config.edge_construction_functions = [add_atomic_edges]
+    config.edge_construction_functions = [
+        partial(add_k_nn_edges, k=3, long_interaction_threshold=0)
+    ]
     # Test High-level API
-    g = construct_graph(config=config, pdb_path="../../examples/pdbs/3eiy.pdb")
-    print(nx.info(g))
+    g = construct_graph(
+        config=config,
+        pdb_path="../examples/pdbs/3eiy.pdb",
+    )
+
     """
     # Test Low-level API
     raw_df = read_pdb_to_dataframe(
diff --git a/graphein/protein/meshes.py b/graphein/protein/meshes.py
index f4051a6d..728e4e90 100644
--- a/graphein/protein/meshes.py
+++ b/graphein/protein/meshes.py
@@ -10,9 +10,18 @@
 import logging
 from typing import List, NamedTuple, Optional, Tuple
 
-from pytorch3d.structures import Meshes
-
 from graphein.protein.config import ProteinMeshConfig
+from graphein.utils import import_message
+
+try:
+    from pytorch3d.structures import Meshes
+except ImportError:
+    import_message(
+        submodule="graphein.protein.meshes",
+        package="pytorch3d",
+        conda_channel="pytorch3d",
+    )
+
 
 log = logging.getLogger(__name__)
 
diff --git a/graphein/protein/resi_atoms.py b/graphein/protein/resi_atoms.py
index 93f84768..9601623a 100644
--- a/graphein/protein/resi_atoms.py
+++ b/graphein/protein/resi_atoms.py
@@ -1507,3 +1507,96 @@
         "NH2": "Nres",
     },
 }
+
+# Contains idealised single, double and triple bond lengths (i_s, i_d, i_t) and watersheds (w_sd, w_dt),
+# below which a bond is probably double/triple (e.g. triple < double < single)
+# Taken from: Automatic Assignment of Chemical Connectivity to Organic Molecules in the Cambridge Structural Database
+# Jon C. Baber and Edward E. Hodgkin*
+# J. Chem. Inf. Comput. Sci. 1992, 32. 401-406
+BOND_LENGTHS: Dict[str, Dict[str, float]] = {
+    "As-N": {"i_s": 1.86, "i_d": 1.835, "w_sd": 1.845},
+    "As-O": {"i_s": 1.71, "i_d": 1.66, "w_sd": 1.68},
+    "As-S": {"i_s": 2.28, "i_d": 2.08, "w_sd": 2.15},
+    "C-C": {
+        "i_s": 1.49,
+        "i_d": 1.31,
+        "i_t": 1.18,
+        "w_sd": 1.38,
+        "w_dt": 1.21,
+    },
+    "C-N": {"i_s": 1.42, "i_d": 1.32, "i_t": 1.14, "w_sd": 1.34, "w_dt": 1.20},
+    "C-O": {
+        "i_s": 1.41,
+        "i_d": 1.22,
+        "w_sd": 1.28,
+    },
+    "C-S": {
+        "i_s": 1.78,
+        "i_d": 1.68,
+        "w_sd": 1.70,
+    },
+    "C-Te": {
+        "i_s": 2.20,
+        "i_d": 1.80,
+        "w_sd": 2.10,
+    },
+    "N-N": {
+        "i_s": 1.40,
+        "i_d": 1.22,
+        "w_sd": 1.32,
+    },
+    "N-O": {
+        "i_s": 1.39,
+        "i_d": 1.22,
+        "w_sd": 1.25,
+    },
+    "N-P": {
+        "i_s": 1.69,
+        "i_d": 1.59,
+        "w_sd": 1.62,
+    },
+    "N-S": {
+        "i_s": 1.66,
+        "i_d": 1.54,
+        "w_sd": 1.58,
+    },
+    "N-Se": {
+        "i_s": 1.83,
+        "i_d": 1.79,
+        "w_sd": 1.80,
+    },
+    "O-P": {
+        "i_s": 1.60,
+        "i_d": 1.48,
+        "w_sd": 1.52,
+    },
+    "O-S": {
+        "i_s": 1.58,
+        "i_d": 1.45,
+        "w_sd": 1.54,
+    },
+    "P-P": {
+        "i_s": 2.23,
+        "i_d": 2.04,
+        "w_sd": 2.06,
+    },
+}
+
+BOND_ORDERS: Dict = {
+    "As-N": [1, 2],
+    "As-O": [1, 2],
+    "As-S": [1, 2],
+    "C-C": [1, 2, 3],
+    "C-N": [1, 2, 3],
+    "C-O": [1, 2],
+    "C-S": [1, 2],
+    "C-Te": [1, 2],
+    "N-N": [1, 2],
+    "N-O": [1, 2],
+    "N-P": [1, 2],
+    "N-S": [1, 2],
+    "N-Se": [1, 2],
+    "O-P": [1, 2],
+    "O-S": [1, 2],
+    "P-P": [1, 2],
+}
diff --git a/graphein/protein/utils.py b/graphein/protein/utils.py
index 5a9fdc76..caf68bcf 100644
--- a/graphein/protein/utils.py
+++ b/graphein/protein/utils.py
@@ -1,11 +1,13 @@
 """Provides utility functions for use across Graphein"""
+import os
+from pathlib import Path
+
 # Graphein
 # Author: Arian Jamasb <arian@jamasb.io>
 # License: MIT
 # Project Website: https://github.com/a-r-j/graphein
 # Code Repository: https://github.com/a-r-j/graphein
-import os
-from pathlib import Path
+from typing import Any, List
 
 import pandas as pd
 from Bio.PDB import PDBList
@@ -50,13 +52,21 @@ def get_protein_name_from_filename(pdb_path: str) -> str:
 
 
 def filter_dataframe(
-    dataframe: pd.DataFrame, by_column, list_of_values, boolean
+    dataframe: pd.DataFrame,
+    by_column: str,
+    list_of_values: List[Any],
+    boolean: bool,
 ):
     """
     Filter function for dataframe.
     Filters the [dataframe] such that the [by_column] values have to be
     in the [list_of_values] list if boolean == True, or not in the list
     if boolean == False
+
+    :param dataframe: pd.DataFrame to filter
+    :param by_column: str denoting by_column of dataframe to filter
+    :param list_of_values: List of values to filter with
+    :param bool: indicates whether to keep or exclude matching list_of_values. True -> in list, false -> not in list
     """
     df = dataframe.copy()
     df = df[df[by_column].isin(list_of_values) == boolean]
diff --git a/graphein/protein/visualisation.py b/graphein/protein/visualisation.py
index 05841ae2..aa8fe2da 100644
--- a/graphein/protein/visualisation.py
+++ b/graphein/protein/visualisation.py
@@ -14,18 +14,26 @@
 import networkx as nx
 import numpy as np
 from mpl_toolkits.mplot3d import Axes3D
-from pytorch3d.ops import sample_points_from_meshes
 
+from graphein.utils import import_message
 
-def plot_pointcloud(mesh: Meshes, title: str = "") -> None:
+try:
+    from pytorch3d.ops import sample_points_from_meshes
+except ImportError:
+    import_message(
+        submodule="graphein.protein.visualisation",
+        package="pytorch3d",
+        conda_channel="pytorch3d",
+    )
+
+
+def plot_pointcloud(mesh: Meshes, title: str = "") -> Axes3D:
     """
     Plots pytorch3d Meshes object as pointcloud
     :param mesh: Meshes object to plot
     :param title: Title of plot
     :return:
     """
-    # TODO: Meshes needs to be imported
-    # TODO: Add return annotation to docstring
     # Sample points uniformly from the surface of the mesh.
     points = sample_points_from_meshes(mesh, 5000)
     x, y, z = points.clone().detach().cpu().squeeze().unbind(1)
@@ -37,7 +45,7 @@ def plot_pointcloud(mesh: Meshes, title: str = "") -> None:
     ax.set_zlabel("y")
     ax.set_title(title)
     ax.view_init(190, 30)
-    plt.show()
+    return ax
 
 
 def colour_nodes(
@@ -47,7 +55,8 @@ def colour_nodes(
     Computes node colours based on "degree", "seq_position" or node attributes
     :param G: Graph to compute node colours for
     :param colour_map:  Colourmap to use.
-    :param colour_by: Manner in which to colour nodes. If node_types "degree" or "seq_position", this must correspond to a node feature
+    :param colour_by: Manner in which to colour nodes.
+    If node_types "degree" or "seq_position", this must correspond to a node feature
     :return: List of node colours
     """
     # get number of nodes
@@ -101,6 +110,7 @@ def colour_edges(
 def plot_protein_structure_graph(
     G: nx.Graph,
     angle: int,
+    plot_title: Optional[str] = None,
     figsize: Tuple[int, int] = (10, 7),
     node_alpha: float = 0.7,
     node_size_min: float = 20.0,
@@ -119,6 +129,7 @@ def plot_protein_structure_graph(
     Plots protein structure graph in Axes3D.
     :param G:  nx.Graph Protein Structure graph to plot
     :param angle:  View angle
+    :param plot_title: Title of plot
     :param figsize: Size of figure
     :param node_alpha: Controls node transparency
     :param node_size_min: Specifies node minimum size
@@ -134,6 +145,7 @@ def plot_protein_structure_graph(
     :param out_format: Fileformat to use for plot
     :return:
     """
+
     # Get Node Attributes
     pos = nx.get_node_attributes(G, "coords")
 
@@ -163,7 +175,7 @@ def plot_protein_structure_graph(
                 yi,
                 zi,
                 color=node_colors[i],
-                s=node_size_min + node_size_multiplier * g.degree[key],
+                s=node_size_min + node_size_multiplier * G.degree[key],
                 edgecolors="k",
                 alpha=node_alpha,
             )
@@ -173,7 +185,7 @@ def plot_protein_structure_graph(
 
         # Loop on the list of edges to get the x,y,z, coordinates of the connected nodes
         # Those two points are the extrema of the line to be plotted
-        for i, j in enumerate(g.edges()):
+        for i, j in enumerate(G.edges()):
             x = np.array((pos[j[0]][0], pos[j[1]][0]))
             y = np.array((pos[j[0]][1], pos[j[1]][1]))
             z = np.array((pos[j[0]][2], pos[j[1]][2]))
@@ -181,6 +193,8 @@ def plot_protein_structure_graph(
             # Plot the connecting lines
             ax.plot(x, y, z, c=edge_colors[i], alpha=edge_alpha)
 
+    # Set title
+    ax.set_title(plot_title)
     # Set the initial view
     ax.view_init(30, angle)
     # Hide the axes
@@ -195,28 +209,16 @@ def plot_protein_structure_graph(
 if __name__ == "__main__":
     # TODO: Move the block here into tests.
     from graphein.protein.config import ProteinGraphConfig
-    from graphein.protein.edges.atomic import add_atomic_edges
-    from graphein.protein.edges.distance import (
-        add_aromatic_sulphur_interactions,
-        add_delaunay_triangulation,
-        add_disulfide_interactions,
-        add_hydrophobic_interactions,
-        add_ionic_interactions,
-    )
-    from graphein.protein.edges.intramolecular import (
-        hydrogen_bond,
-        peptide_bonds,
-        salt_bridge,
+    from graphein.protein.edges.atomic import (
+        add_atomic_edges,
+        add_bond_order,
+        add_ring_status,
     )
     from graphein.protein.features.nodes.amino_acid import (
         expasy_protein_scale,
         meiler_embedding,
     )
     from graphein.protein.graphs import construct_graph
-    from graphein.protein.meshes import (
-        convert_verts_and_face_to_mesh,
-        create_mesh,
-    )
 
     # Test Point cloud plotting
     # v, f, a = create_mesh(pdb_code="3eiy")
@@ -232,7 +234,11 @@ def plot_protein_structure_graph(
     }
 
     config = ProteinGraphConfig(**configs)
-    config.edge_construction_functions = [add_atomic_edges]
+    config.edge_construction_functions = [
+        add_atomic_edges,
+        add_ring_status,
+        add_bond_order,
+    ]
 
     config.node_metadata_functions = [meiler_embedding, expasy_protein_scale]
     # g = construct_graph(config=config, pdb_path="../../examples/pdbs/1a1e.pdb", pdb_code="1a1e")
@@ -241,16 +247,12 @@ def plot_protein_structure_graph(
         config=config, pdb_path="../../examples/pdbs/1a1e.pdb", pdb_code="1a1e"
     )
     print(nx.info(g))
-    # print(g.graph["pdb_df"].to_string())
-
-    # print(g.nodes(data=True))
-    # print(g.nodes(data=True))
 
     p = plot_protein_structure_graph(
         g,
         30,
         (10, 7),
-        colour_nodes_by="atom_type",
+        colour_nodes_by="element_symbol",
         colour_edges_by="kind",
         label_node_ids=False,
     )
diff --git a/graphein/utils.py b/graphein/utils.py
index 8e0df795..35fbaab2 100644
--- a/graphein/utils.py
+++ b/graphein/utils.py
@@ -1,17 +1,20 @@
 """Utilities for working with graph objects"""
-
 # Graphein
 # Author: Arian Jamasb <arian@jamasb.io>, Eric Ma
 # License: MIT
 # Project Website: https://github.com/a-r-j/graphein
 # Code Repository: https://github.com/a-r-j/graphein
+from __future__ import annotations
 
+import os
+import sys
 from typing import Any, Callable, Iterable, List
 
 import networkx as nx
 import numpy as np
 import pandas as pd
 import xarray as xr
+from Bio.Data.IUPACData import protein_letters_3to1
 
 
 def onek_encoding_unk(
@@ -68,12 +71,25 @@ def annotate_node_metadata(G: nx.Graph, funcs: List[Callable]) -> nx.Graph:
     :param funcs: List of node metadata annotation functions
     :return: Graph with node metadata added
     """
+
     for func in funcs:
         for n, d in G.nodes(data=True):
             func(n, d)
     return G
 
 
+def annotate_node_features(G: nx.Graph, funcs: List[Callable]) -> nx.Graph:
+    """
+    Annotates nodes with features data. Note: passes whole graph to function.
+    :param G: Graph to add node features to
+    :param funcs: List of node feature annotation functions
+    :return: Graph with node features added
+    """
+    for func in funcs:
+        func(G)
+    return G
+
+
 def compute_edges(G: nx.Graph, funcs: List[Callable]) -> nx.Graph:
     """
     Computes edges for an Graph from a list of edge construction functions
@@ -258,3 +274,62 @@ def generate_adjacency_tensor(
     if return_array:
         return da.data
     return da
+
+
+def protein_letters_3to1_all_caps(amino_acid: str) -> str:
+    """
+    Converts capitalised 3 letter amino acid code to single letter.
+
+    Not provided in default biopython.
+    """
+
+    amino_acid = amino_acid[0] + amino_acid[1:].lower()
+
+    one_letter_code = protein_letters_3to1[amino_acid]
+
+    return one_letter_code
+
+
+def import_message(
+    submodule: str,
+    package: str,
+    conda_channel: str = None,
+    pip_install: bool = False,
+):
+    """
+    Return warning if package is not found.
+    Generic message for indicating to the user when a function relies on an
+    optional module / package that is not currently installed. Includes
+    installation instructions. Typically used in conjunction without optional featurisation libraries
+    :param submodule: graphein submodule that needs an external dependency.
+    :param package: External package this submodule relies on.
+    :param conda_channel: Conda channel package can be installed from,
+        if at all.
+    :param pip_install: Whether package can be installed via pip.
+    """
+    is_conda = os.path.exists(os.path.join(sys.prefix, "conda-meta"))
+    installable = True
+    if is_conda:
+        if conda_channel is None:
+            installable = False
+            installation = f"{package} cannot be installed via conda"
+        else:
+            installation = f"conda install -c {conda_channel} {package}"
+    else:
+        if pip_install:
+            installation = f"pip install {package}"
+        else:
+            installable = False
+            installation = f"{package} cannot be installed via pip"
+
+    print(
+        f"To use the Graphein submodule {submodule}, you need to install "
+        f"{package}."
+    )
+    print()
+    if installable:
+        print("To do so, use the following command:")
+        print()
+        print(f"    {installation}")
+    else:
+        print(f"{installation}")
diff --git a/notebooks/atom_graph_tutorial.ipynb b/notebooks/atom_graph_tutorial.ipynb
new file mode 100644
index 00000000..9bfebd95
--- /dev/null
+++ b/notebooks/atom_graph_tutorial.ipynb
@@ -0,0 +1,171 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "%matplotlib widget\n",
+    "import logging\n",
+    "logging.basicConfig(level=\"INFO\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Graphein - Atom Graph Tutorial\n",
+    "\n",
+    "In this notebook, we'll run through residue-level graph construction in Graphein. We start by discsussing the config, the high-level API and spend the bulk of the tutorial running through the low-level API"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.config import ProteinGraphConfig\n",
+    "\n",
+    "config = ProteinGraphConfig()\n",
+    "config.dict()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Let's run through the config:\n",
+    "\n",
+    "* `granularity`: specifies the granularity of the graph (i.e. what should the nodes be). Possible values are: atom identifiers (e.g. `\"CA\"` for $\\alpha$ carbon, `\"CB\"` for $\\beta$ carbon), `\"centroid\"` to use residue centroids (under the hood, this is the same as \"CA\", but we use the average x,y,z coordinates for the atoms in the residue) or `\"atom\"` for atom-level construction. This is discussed here.\n",
+    "* `keep_hets`: this is a boolean specifying whether or not to keep heteroatoms present in the .pdb file. Heteroatoms are typically non-protein atoms (waters, metal ions, ligands) but can sometimes contain non-standard or modified residues.\n",
+    "* `insertions`: boolean specifying whether or not to keep insertions in the PDB file\n",
+    "* `pdb_dir` optional path to a folder in which to save pdb files. Otherwise, `/tmp/` will be used\n",
+    "* `verbose`: bool controlling amount of info printed\n",
+    "* `exclude_waters`: not implemented\n",
+    "* `deprotonate`: bool indicating whether or not to remove Hydrogen atoms\n",
+    "* `protein_df_processing_functions`: list of functions with which to process the PDB dataframe. Discussed in the low-level API.\n",
+    "* `edge_construction_functions`: list of functions to compute edges with\n",
+    "* `node_metadata_functions`: list of functions to annotate nodes with\n",
+    "* `edge_metadata_functions`: list of functions to annotate edges with\n",
+    "* `graph_meta_functions`: list of functions to annotate graph with\n",
+    "* `get_contacts_config`: A separate config object if using GetContacts edge construction functions"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.edges.atomic import add_atomic_edges\n",
+    "params_to_change = {\"granularity\": \"atom\", \"edge_construction_functions\": [add_atomic_edges]}\n",
+    "\n",
+    "config = ProteinGraphConfig(**params_to_change)\n",
+    "config.dict()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## High-level API\n",
+    "Graphein features a high-level API which should be applicable for most simple graph constructions. This can be used on either a .pdb file (so you can run whatever pre-processing you wish), or we can provide a PDB accession code and retrieve a structure from the PDB itself. If a path is provided, it takes precedence over the PDB code.\n",
+    "\n",
+    "To use it we do as follows:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.graphs import construct_graph\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "g = construct_graph(config=config, pdb_path=\"../examples/pdbs/3eiy.pdb\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.visualisation import plot_protein_structure_graph\n",
+    "\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"element_symbol\", label_node_ids=False, node_size_min=2, node_alpha=0.5)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "As you can see, all the bond types are the same. In order to add bond order assignment, we need to pass the `add_bond_order` function to the list of edge functions. We do the same for assigning ring status with `add_ring_status`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.edges.atomic import add_atomic_edges, add_bond_order, add_ring_status\n",
+    "params_to_change = {\"granularity\": \"atom\", \"edge_construction_functions\": [add_atomic_edges, add_bond_order, add_ring_status]}\n",
+    "\n",
+    "config = ProteinGraphConfig(**params_to_change)\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"element_symbol\", label_node_ids=False, node_size_min=2, node_alpha=0.5)\n",
+    "\n",
+    "# Print some edges to verify\n",
+    "for i, (u, v, a) in enumerate(g.edges(data=True)):\n",
+    "    if i % 30 == 0:\n",
+    "        print(u, v, a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We can also include some of the distance-based functions we used in the residue graph construction. Here we add the residue-level delaunay triangulation to the graph."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.edges.distance import add_delaunay_triangulation\n",
+    "params_to_change = {\"granularity\": \"atom\", \"edge_construction_functions\": [add_atomic_edges, add_bond_order, add_delaunay_triangulation]}\n",
+    "\n",
+    "config = ProteinGraphConfig(**params_to_change)\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"element_symbol\", label_node_ids=False, node_size_min=2, node_alpha=0.5)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "graphein_dev",
+   "language": "python",
+   "name": "graphein_dev"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.9"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/notebooks/protein_mesh_tutorial.ipynb b/notebooks/protein_mesh_tutorial.ipynb
new file mode 100644
index 00000000..cad260e7
--- /dev/null
+++ b/notebooks/protein_mesh_tutorial.ipynb
@@ -0,0 +1,150 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "%matplotlib widget\n",
+    "import logging\n",
+    "logging.basicConfig(level=\"INFO\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Creating Protein Meshes in Graphein\n",
+    "\n",
+    "Graphein provides functionality to create meshes of protein surfaces. The mesh computation is handled under the hood by PyMol to produce `.obj` files, which are handled by many geometric analysis libraries (such as PyTorch3D). We'll create a few protein meshes, convert them to PyTorch3D objects and visualises them. Again, there is a high-level and low-level API for convenience.\n",
+    "\n",
+    "## High-level API\n",
+    "### Config\n",
+    "Again, we use a config object to manage global configurations.\n",
+    "\n",
+    "* `pymol_command_line_options`: String of additional pymol command line options when launching. A full list can be found [here](https://www.pymolwiki.org/index.php/Command_Line_Options). The default options, `\"-cKq\"`, do:\n",
+    "   * `c`: launch in command-line only mode for batch processing\n",
+    "   * `K`: keep alive: when running without a GUI, don't quit after the input\n",
+    "            is exhausted\n",
+    "    * `q`: supress startup message \n",
+    "    \n",
+    "* `pymol_commands` : List of string pymol commands to execute. You can use these to configure the exact mesh you wish to construct. A reference to these can be found [here](https://pymol.org/pymol-command-ref.html)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.config import ProteinMeshConfig\n",
+    "config = ProteinMeshConfig()\n",
+    "config.dict()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Building a mesh"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Let's build a mesh!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.meshes import create_mesh\n",
+    "\n",
+    "verts, faces, aux = create_mesh(pdb_code=\"3eiy\", config=config)\n",
+    "print(verts, faces, aux)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "In order to visualise these tensors containing vertices, faces and aux data, we convert them into a PyTorch3D `Mesh` object"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.meshes import convert_verts_and_face_to_mesh\n",
+    "m = convert_verts_and_face_to_mesh(verts, faces)\n",
+    "\n",
+    "from graphein.protein.visualisation import plot_pointcloud\n",
+    "plot_pointcloud(m, title=\"my first mesh\")\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Let's see what happens if we play around with some of the parameters and make a smoother mesh"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "pymol_commands = {\"pymol_commands\": [\"hide cartoon\",\n",
+    "                                     \"set solvent_radius, 4\",\n",
+    "                                     \"alter all, vdw=4\",\n",
+    "                                     \"sort\",\n",
+    "                                     \"set surface_quality, 1\",\n",
+    "                                     \"show surface\"]}\n",
+    "\n",
+    "config = ProteinMeshConfig(**pymol_commands)\n",
+    "\n",
+    "verts, faces, aux = create_mesh(pdb_code=\"3eiy\", config=config)\n",
+    "\n",
+    "m = convert_verts_and_face_to_mesh(verts, faces)\n",
+    "\n",
+    "plot_pointcloud(m, title=\"my second mesh\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "graphein_dev",
+   "language": "python",
+   "name": "graphein_dev"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.9"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/notebooks/residue_graphs.ipynb b/notebooks/residue_graphs.ipynb
new file mode 100644
index 00000000..2c2290a4
--- /dev/null
+++ b/notebooks/residue_graphs.ipynb
@@ -0,0 +1,642 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "%matplotlib widget\n",
+    "import logging\n",
+    "import matplotlib.pyplot as plt\n",
+    "logging.basicConfig(level=\"INFO\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Graphein - Residue Graph Tutorial\n",
+    "\n",
+    "In this notebook, we'll run through residue-level graph construction in Graphein. We start by discsussing the config, the high-level API and spend the bulk of the tutorial running through the low-level API"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Config\n",
+    "Graphein is designed for processing datasets of protein structures into graphs. We rely on a global config object to store various parameters in the high-level API. We use `pydantic` for the config object and provide sane defaults."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.config import ProteinGraphConfig\n",
+    "\n",
+    "config = ProteinGraphConfig()\n",
+    "config.dict()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Let's run through the config:\n",
+    "\n",
+    "* `granularity`: specifies the granularity of the graph (i.e. what should the nodes be). Possible values are: atom identifiers (e.g. `\"CA\"` for $\\alpha$ carbon, `\"CB\"` for $\\beta$ carbon), `\"centroid\"` to use residue centroids (under the hood, this is the same as \"CA\", but we use the average x,y,z coordinates for the atoms in the residue) or \"atom\" for atom-level construction. This is discussed in another notebook.\n",
+    "* `keep_hets`: this is a boolean specifying whether or not to keep heteroatoms present in the .pdb file. Heteroatoms are typically non-protein atoms (waters, metal ions, ligands) but can sometimes contain non-standard or modified residues.\n",
+    "* `insertions`: boolean specifying whether or not to keep insertions in the PDB file\n",
+    "* `pdb_dir` optional path to a folder in which to save pdb files. Otherwise, `/tmp/` will be used\n",
+    "* `verbose`: bool controlling amount of info printed\n",
+    "* `exclude_waters`: not implemented\n",
+    "* `deprotonate`: bool indicating whether or not to remove Hydrogen atoms\n",
+    "* `protein_df_processing_functions`: list of functions with which to process the PDB dataframe. Discussed in the low-level API.\n",
+    "* `edge_construction_functions`: list of functions to compute edges with\n",
+    "* `node_metadata_functions`: list of functions to annotate nodes with\n",
+    "* `edge_metadata_functions`: list of functions to annotate edges with\n",
+    "* `graph_meta_functions`: list of functions to annotate graph with\n",
+    "* `get_contacts_config`: A separate config object if using GetContacts edge construction functions"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "If you wish, you can construct an entirely fresh configuration. Or, if we wish to change only some of these parameters, we can pass a dictionary containing our modifications:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "params_to_change = {\"granularity\": \"centroids\"}\n",
+    "\n",
+    "config = ProteinGraphConfig(**params_to_change)\n",
+    "config.dict()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## High-level API\n",
+    "Graphein features a high-level API which should be applicable for most simple graph constructions. This can be used on either a .pdb file (so you can run whatever pre-processing you wish), or we can provide a PDB accession code and retrieve a structure from the PDB itself. If a path is provided, it takes precedence over the PDB code.\n",
+    "\n",
+    "To use it we do as follows:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.graphs import construct_graph\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "g = construct_graph(config=config, pdb_path=\"../graphein/examples/pdbs/3eiy.pdb\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Let's check out the results with the in-built visualisation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.visualisation import plot_protein_structure_graph\n",
+    "\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"degree\", label_node_ids=False)\n",
+    "plt.suptitle(\"Peptide backbone graph. Nodes coloured by degree.\")\n",
+    "p.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Cool! So let's look at what we've got here:\n",
+    "\n",
+    "We've plotted the graph, positioning nodes according to their x,y,z coordinates and coloured them by their degree. As we can see all the nodes are yellow except the two corresponding to the terminal residues. Why is this? Because we've only computed the peptide-bond edges. Now, we probably want more so let's look at how to do that!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Edge Functions\n",
+    "Graphein is implemented in a functional fashion. In this case, this means in order to compute edges, we pass a list of edge construction functions to the construction. We have supplied a number of edge computation functions. These are located in:\n",
+    "* `graphein.protein.edges.distance`\n",
+    "* `graphein.protein.edges.intramolecular`(these rely on an installation of GetContacts, an optional dependency) and a separate get_contacts_config\n",
+    "* `graphein.protein.edges.atomic` (these are used in atomic-level graphs and we discuss these in another notebook)\n",
+    "\n",
+    "However, edge functions are simple functions that take in an `nx.Graph` and return an `nx.Graph` with added edges. This means users can easily define their own to suit their purposes! Let's take a closer look at some of the in-built functions before defining our own.\n",
+    "\n",
+    "#### Built-in Edge Functions"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.edges.distance import add_hydrogen_bond_interactions, add_peptide_bonds\n",
+    "\n",
+    "new_edge_funcs = {\"edge_construction_functions\": [add_peptide_bonds, add_hydrogen_bond_interactions]}\n",
+    "config = ProteinGraphConfig(**new_edge_funcs)\n",
+    "\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"degree\", label_node_ids=False)\n",
+    "plt.suptitle(\"Protein graph with peptide backbone and H-Bonds. \\n Nodes coloured by degree. Edges coloured by type.\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Great! So what if we try __a bunch__ of them"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.edges.distance import (add_peptide_bonds,\n",
+    "                                             add_hydrogen_bond_interactions,\n",
+    "                                             add_disulfide_interactions,\n",
+    "                                             add_ionic_interactions,\n",
+    "                                             add_aromatic_interactions,\n",
+    "                                             add_aromatic_sulphur_interactions,\n",
+    "                                             add_cation_pi_interactions\n",
+    "                                            )\n",
+    "\n",
+    "new_edge_funcs = {\"edge_construction_functions\": [add_peptide_bonds,\n",
+    "                                                  add_hydrogen_bond_interactions,\n",
+    "                                                  add_disulfide_interactions,\n",
+    "                                                  add_ionic_interactions,\n",
+    "                                                  add_aromatic_sulphur_interactions,\n",
+    "                                                  add_cation_pi_interactions]\n",
+    "                 }\n",
+    "\n",
+    "config = ProteinGraphConfig(**new_edge_funcs)\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"degree\", label_node_ids=False)\n",
+    "plt.suptitle(\"Protein graph with: peptide backbone, H-Bonds, \\n Disulphide, ionic, aromatic, aromatic-sulphur and cation-pi interactions. \\n  Nodes coloured by degree, edges by type\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Cool! So we've added a bunch on distance-based computations of intramolecular edges to our graph! We have a few more distance based edge functions that we can visualise. Let's check them out!\n",
+    "\n",
+    "* `graphein.protein.edges.distance.add_delaunay_triangulation`: Adds edges based on the delaunay triangulation\n",
+    "* `graphein.protein.edges.distance.add_k_nn_edges`: Adds edges based on K Nearest neighbours\n",
+    "* `graphein.protein.edges.distance.add_distance_threshold`: Adds edges based on distance cutoff in Angstroms\n",
+    "\n",
+    "First up, the Delaunay triangulation:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.edges.distance import add_delaunay_triangulation\n",
+    "\n",
+    "new_edge_funcs = {\"edge_construction_functions\": [add_delaunay_triangulation]}\n",
+    "config = ProteinGraphConfig(**new_edge_funcs)\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "nrp = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"degree\", label_node_ids=False)\n",
+    "plt.suptitle(\"Protein graph created by the Delaunay trinagulation of the structure. \\n Nodes coloured by degree.\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Next, let's consider the last two edge construction functions `add_k_nn_edges` and`add_distance_threshold`. These two functions take additional parameters. We can manage this with partial functions. These functions also feature a `long_interaction_threshold` parameter which specifies the minimum number of residues in the sequence between two residues in order to add an edge. This is because we may not be so interested in residues close together in the sequence being close together in the graph."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from functools import partial\n",
+    "from graphein.protein.edges.distance import add_distance_threshold\n",
+    "\n",
+    "new_edge_funcs = {\"edge_construction_functions\": [partial(add_distance_threshold, long_interaction_threshold=5, threshold=10.)]}\n",
+    "config = ProteinGraphConfig(**new_edge_funcs)\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"degree\", label_node_ids=False)\n",
+    "plt.suptitle(\"Protein graph created by thresholding distance between nodes. \\n Nodes must be <10A apart and at least 5 positions apart \\n Nodes coloured by degree.\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from functools import partial\n",
+    "from graphein.protein.edges.distance import add_k_nn_edges\n",
+    "\n",
+    "new_edge_funcs = {\"edge_construction_functions\": [partial(add_k_nn_edges, k=3, long_interaction_threshold=0)]}\n",
+    "config = ProteinGraphConfig(**new_edge_funcs)\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"degree\", label_node_ids=False)\n",
+    "plt.suptitle(\"Protein graph created from K-NN of each node. Nodes coloured by degree.\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Defining your own edge functions\n",
+    "Now, let's turn our attention to defining our own edge construction functions. These must take in a `nx.Graph` and return a `nx.Graph`. You can use these custom functions together with all the in-built edge functions as before. If you come up with something cool, consider making a pull-request and sharing it with the community!\n",
+    "\n",
+    "Here, as an example, we define an arbitrary function that creates an edge between all histidine residues in the graph."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import networkx as nx\n",
+    "\n",
+    "def add_histidine_histidine_edges(G: nx.Graph) -> nx.Graph:\n",
+    "    # Iterate over nodes to identify histidines\n",
+    "    histidines = [n for n, d in G.nodes(data=True) if d[\"residue_name\"] == \"HIS\"]\n",
+    "\n",
+    "    # Iterate over histidines and create a bond between them\n",
+    "    [G.add_edge(x, y, kind=\"histidine\") for i, x in enumerate(histidines) for j, y in enumerate(histidines) if i!=j]\n",
+    "    \n",
+    "    return G    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "new_edge_funcs = {\"edge_construction_functions\": [add_histidine_histidine_edges]}\n",
+    "config = ProteinGraphConfig(**new_edge_funcs)\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"degree\", label_node_ids=False)\n",
+    "plt.suptitle(\"Protein graph created using a user-defined function that connects all Histidines.\")\n",
+    "\n",
+    "# Let's check this worked:\n",
+    "for u, v, a in g.edges(data=True):\n",
+    "    print(u, v, a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Features & Metadata\n",
+    "`Graphein` is designed to facilitate geometric deep learning on protein structures and so we have a bunch of feature and metadata annotation functions. These operate on three levels:\n",
+    "* node-level annotation\n",
+    "* graph-level annotation\n",
+    "* edge-level annotation\n",
+    "\n",
+    "These behave very similarly to the edge construction functions we just looked at. You simply pass a list of functions that take the right sort of arguments and return the right types. \n",
+    "\n",
+    "* graph-level annotation takes in a `nx.Graph` and returns an `nx.Graph` (just like before!).\n",
+    "* node-level annotation takes in a node, data tuple from `G.nodes(data=True)` and returns a `pd.Series`\n",
+    "* edge-level annotation in node_u, node_v, data tuple from `G.edges(data=True)` and returns "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Built-in Graph Annotation Functions\n",
+    "These are found in `graphein.protein.features.sequence` and `graphein.protein.features.graph`. We make a slight distinction between those functions that operate on the protein sequence for cleaner organisation. N.B. we've mentioned the `chain_selection` parameter briefly - if you include multiple chains in your graph, then will be multiple sequences associated with it. These are accessed as such: `G.graph[f\"sequence_{CHAIN_ID}\"]` and features computed from sequence are accessed as: `G.graph[f\"{FEATURE_NAME}_{CHAIN_ID}]`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.features.sequence.sequence import molecular_weight\n",
+    "\n",
+    "new_graph_annotation_funcs = {\"graph_metadata_functions\": [molecular_weight]}\n",
+    "config = ProteinGraphConfig(**new_graph_annotation_funcs)\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "print(\"Sequence:\", g.graph[\"sequence_A\"])\n",
+    "print(\"MW:\", g.graph[\"molecular_weight_A\"])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We also provide some utilities for adding graph-level features in the form of sequence embeddings from various pre-trained language models. Let's check them out!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Warning! This cell may crash a binder notebook as the pre-trained model download is rather large!\n",
+    "from graphein.protein.features.sequence.embeddings import esm_sequence_embedding, biovec_sequence_embedding\n",
+    "\n",
+    "new_graph_annotation_funcs = {\"graph_metadata_functions\": [esm_sequence_embedding, biovec_sequence_embedding]}\n",
+    "config = ProteinGraphConfig(**new_graph_annotation_funcs)\n",
+    "\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "print(\"ESM:\", g.graph[\"esm_embedding_A\"])\n",
+    "print(\"biovec:\", g.graph[\"biovec_embedding_A\"])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Writing your own graph-level annotation function.\n",
+    "We provide a couple of useful functions for dealing with multiple chains robustly, namely `compute_feature_over_chains` and `aggregate_feature_over_chains`. This takes an input (`nx.Graph`), your function: (`Callable`), and feature_name (`str`). Your function must operate on a sequence (`str`) to use this utility.\n",
+    "\n",
+    "`aggregate_feature_over_chains` can be used to perform aggregation `{\"min\", \"max\", \"sum\" , \"mean\"}` of chain-specific features. It takes: an `nx.Graph`, a feature name (`str`) and and aggregation type (`str`)\n",
+    "\n",
+    "If you don't want to operate on the sequnce, you don't need to use these!\n",
+    "\n",
+    "Let's use this to construct a graph-level feature that operates on the sequence. This feature is an integer equal to the number of histidines in the chain."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.features.sequence.utils import compute_feature_over_chains, aggregate_feature_over_chains\n",
+    "\n",
+    "# Define our graph-level function that operates on sequences\n",
+    "def histidine_count_feature(G: nx.Graph) -> nx.Graph:\n",
+    "\n",
+    "    # Define our feature function that operates on a sequence\n",
+    "    def count_histidines(sequence: str) -> int:\n",
+    "         return sequence.count(\"H\")\n",
+    "        \n",
+    "    # Compute the feature over the chains in the graph\n",
+    "    G = compute_feature_over_chains(G, func=count_histidines, feature_name=\"histidine_count\")\n",
+    "    \n",
+    "    # Aggregate the feature over the chains\n",
+    "    G = aggregate_feature_over_chains(G, feature_name=\"histidine_count\", aggregation_type=\"mean\")\n",
+    "    return G\n",
+    "\n",
+    "\n",
+    "new_graph_annotation_funcs = {\"graph_metadata_functions\": [histidine_count_feature]}\n",
+    "config = ProteinGraphConfig(**new_graph_annotation_funcs)\n",
+    "\n",
+    "# Test our new feature\n",
+    "g = construct_graph(config=config, pdb_code=\"3eiy\")\n",
+    "print(g.graph[\"histidine_count_A\"])\n",
+    "\n",
+    "# And now on a multi-chain graph\n",
+    "g = construct_graph(config=config, pdb_code=\"9API\", chain_selection=\"all\")\n",
+    "print(\"Chain A Hists:\", g.graph[\"histidine_count_A\"])\n",
+    "print(\"Chain B Hists:\", g.graph[\"histidine_count_B\"])\n",
+    "print(\"Chain B Seq:\", g.graph[\"sequence_B\"])\n",
+    "print(\"Aggregated HIS count:\", g.graph[\"histidine_count_mean\"])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Node-level features\n",
+    "Similarly, we provide some in-built functions for computing node-level features\n",
+    "\n",
+    "#### TODO Complete\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Low-Level API\n",
+    "\n",
+    "Graphein also features a low-level API if you want to get down into the gritty details of the construction. Essentially, every step of the construction is a function that you can tweak/alter the sequencing of as you please. This is __very__ flexible if not unnecessary for most applications\n",
+    "\n",
+    "### Pre-Processing\n",
+    "All graphs begin as `pd.DataFrame` representations of the .PDB file. These are handled by PandasPDB. There is a convenience function here `process_dataframe`, to which you can pass a list of dataframe processing functions. These are similar to the edge construction and annotation functions described above except they take in a `pd.DataFrame` and return a `pd.DataFrame`. We'll start by reimplementing the construction we've been using above."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.graphs import read_pdb_to_dataframe, process_dataframe, deprotonate_structure, convert_structure_to_centroids, subset_structure_to_atom_type, filter_hetatms, remove_insertions\n",
+    "\n",
+    "processing_funcs = [deprotonate_structure, convert_structure_to_centroids, remove_insertions]\n",
+    "\n",
+    "\n",
+    "pdb_code = \"3eiy\"\n",
+    "# Read dataframe from PDB\n",
+    "raw_df = read_pdb_to_dataframe(pdb_code=pdb_code)\n",
+    "\n",
+    "# Apply processing functions\n",
+    "df = process_dataframe(raw_df, atom_df_processing_funcs = processing_funcs)\n",
+    "df.head()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We can define our own processing functions. Here we define a function that removes odd numbered residues from the dataframe. We'll use this again later."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pandas as pd\n",
+    "\n",
+    "def remove_odd_resis(df: pd.DataFrame) -> pd.DataFrame:\n",
+    "    return df.loc[df.index % 2 == 0]\n",
+    "\n",
+    "remove_odd_resis(df).head()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Building the Graph\n",
+    "First we initialise the graph with the metadata. We then use this to add the nodes"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.graphs import initialise_graph_with_metadata, add_nodes_to_graph\n",
+    "\n",
+    "g = initialise_graph_with_metadata(protein_df=df, # from above cell\n",
+    "                                   raw_pdb_df=raw_df.df[\"ATOM\"], # Store this for traceability\n",
+    "                                   pdb_id = pdb_code, #and again\n",
+    "                                   granularity = \"centroid\" # Store this so we know what kind of graph we have\n",
+    "                                  )\n",
+    "\n",
+    "g = add_nodes_to_graph(g)\n",
+    "print(g.nodes)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Next, we add edges to the graph:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.graphs import compute_edges\n",
+    "g = compute_edges(g, get_contacts_config=None, funcs=[add_peptide_bonds, add_hydrogen_bond_interactions])\n",
+    "print(g.edges)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Let's check it out!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "p = plot_protein_structure_graph(G=g, angle=0, colour_edges_by=\"kind\", colour_nodes_by=\"degree\", label_node_ids=False)\n",
+    "plt.suptitle(\"Protein graph created using low-level API. Shows peptide bond back bond and H-Bonds\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Just as we expected! From here we can apply any number of graph, node or edge metadata annotation functions that we may wish to. The advantage here is that we are not tied to the sequencing in the high-level API of:\n",
+    "\n",
+    "(annotate node metadata -> compute edges -> annotate graph metadata -> annotate edge metadata). \n",
+    "\n",
+    "This means, if we want, we can define graph annotation functions that utilise edge metadata that would otherwise not be possible. E.g. here we annotate bonds containing histidines with a 1. We then define a graph feature that looks for these bonds, sums the residue numbers involved and sums them."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from graphein.protein.graphs import annotate_node_metadata, annotate_graph_metadata, annotate_edge_metadata\n",
+    "\n",
+    "# Define edge feature that assigns hist_status = 1 to any bond involving a histidine\n",
+    "def bond_has_histidine_edge_feature(u, v, d):\n",
+    "    if \"HIS\" in u or \"HIS\" in v:\n",
+    "        d[\"hist_status\"] = 1\n",
+    "    else:\n",
+    "        d[\"hist_status\"] = 0\n",
+    "        \n",
+    "# Annotate the edge metadata\n",
+    "g = annotate_edge_metadata(g, [bond_has_histidine_edge_feature])\n",
+    "\n",
+    "# Check it out\n",
+    "for u, v, d in g.edges(data=True):\n",
+    "    if d[\"hist_status\"] == 1:\n",
+    "        print(u, v, d)\n",
+    "\n",
+    "# Annotate graph-level feature that depends on histidine_status edge feature. This adds the sum of the residue numbers involved in hist_status bonds\n",
+    "def sum_hist_status_bond_residue_nums(G: nx.Graph) -> nx.Graph:\n",
+    "    to_add = []\n",
+    "    \n",
+    "    for u, v, a in G.edges(data=True):\n",
+    "        if a[\"hist_status\"] == 1:\n",
+    "            to_add.append(G.nodes[u][\"residue_number\"])\n",
+    "            to_add.append(G.nodes[v][\"residue_number\"])\n",
+    "            \n",
+    "    total = sum(to_add)\n",
+    "        \n",
+    "    G.graph[\"hist_bond_total_residue_number\"] = total\n",
+    "    return G\n",
+    "                    \n",
+    "                          \n",
+    "g = annotate_graph_metadata(g, [sum_hist_status_bond_residue_nums])\n",
+    "print(\"Graph-level hist feature:\", g.graph[\"hist_bond_total_residue_number\"]) "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "_fin_"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "graphein_dev",
+   "language": "python",
+   "name": "graphein_dev"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.9"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/ubuntu_environment.yml b/ubuntu_environment.yml
deleted file mode 100644
index cb93dcdd..00000000
--- a/ubuntu_environment.yml
+++ /dev/null
@@ -1,139 +0,0 @@
-name: graphein
-channels:
-  - salilab
-  - rdkit
-  - anaconda
-  - pytorch
-  - pytorch3d
-  - defaults
-  - conda-forge
-  - dglteam
-dependencies:
-  - _libgcc_mutex=0.1=main
-  - backcall=0.1.0=py37_0
-  - biopython=1.76=py37h7b6447c_0
-  - blas=1.0=mkl
-  - boost=1.72.0=py37h9de70de_0
-  - boost-cpp=1.72.0=h8e57a91_0
-  - bzip2=1.0.8=h7b6447c_0
-  - ca-certificates=2020.1.1=0
-  - cairo=1.16.0=hcf35c78_1003
-  - certifi=2020.4.5.1=py37_0
-  - cpuonly
-  - curl=7.61.0=h84994c4_0
-  - decorator=4.4.2=py_0
-  - dgl=0.4.3
-  - expat=2.2.6=he6710b0_0
-  - fontconfig=2.13.1=h86ecdb6_1001
-  - freetype=2.9.1=h8a8886c_1
-  - fvcore=0.1.dev200325=py_0
-  - glib=2.63.1=h5a9c865_0
-  - hdf4=4.2.13=h3ca952b_2
-  - hdf5=1.10.4=hb1b8bf9_0
-  - icu=64.2=he1b5a44_1
-  - intel-openmp=2020.0=166
-  - ipython=7.13.0=py37h5ca1d4c_0
-  - ipython_genutils=0.2.0=py37_0
-  - jedi=0.17.0=py37_0
-  - joblib=0.14.1=py_0
-  - jpeg=9c=h14c3975_1001
-  - libcurl=7.61.0=h1ad7b7a_0
-  - libedit=3.1.20181209=hc058e9b_0
-  - libffi=3.2.1=hd88cf55_4
-  - libgcc-ng=9.1.0=hdf63c60_0
-  - libgfortran-ng=7.3.0=hdf63c60_0
-  - libnetcdf=4.6.2=hbdf4f91_1001
-  - libpng=1.6.37=hbc83047_0
-  - libssh2=1.8.0=h9cfc8f7_4
-  - libstdcxx-ng=9.1.0=hdf63c60_0
-  - libtiff=4.1.0=h2733197_0
-  - libuuid=2.32.1=h14c3975_1000
-  - libxcb=1.13=h1bed415_1
-  - libxml2=2.9.9=hea5a465_1
-  - mkl=2020.0=166
-  - mkl-service=2.3.0=py37he904b0f_0
-  - mkl_fft=1.0.15=py37ha843d7b_0
-  - mkl_random=1.1.0=py37hd6b4f25_0
-  - ncurses=6.2=he6710b0_1
-  - ninja=1.9.0=py37hfd86e86_0
-  - numpy-base=1.18.1=py37hde5b4d6_1
-  - olefile=0.46=py37_0
-  - openssl=1.0.2u=h7b6447c_0
-  - parso=0.7.0=py_0
-  - pcre=8.43=he6710b0_0
-  - pexpect=4.8.0=py37_0
-  - pickleshare=0.7.5=py37_0
-  - pillow=7.0.0=py37hb39fc2d_0
-  - pip=20.0.2=py37_1
-  - pixman=0.38.0=h7b6447c_0
-  - portalocker=1.5.2=py37_0
-  - prompt-toolkit=3.0.4=py_0
-  - prompt_toolkit=3.0.4=0
-  - ptyprocess=0.6.0=py37_0
-  - pycairo=1.19.0=py37h2a1e443_0
-  - pygments=2.6.1=py_0
-  - python=3.7.0=h6e4f718_3
-  - python-dateutil=2.8.1=py_0
-  - python_abi=3.7=1_cp37m
-  - pytz=2019.3=py_0
-  - pyyaml=5.3.1=py37h7b6447c_0
-  - rdkit=2020.03.1=py37hdd87690_1
-  - readline=7.0=h7b6447c_5
-  - scikit-learn=0.22.1=py37hd81dba3_0
-  - scipy=1.4.1=py37h0b6359f_0
-  - setuptools=46.1.3=py37_0
-  - six=1.14.0=py37_0
-  - sqlite=3.31.1=h62c20be_1
-  - tabulate=0.8.3=py37_0
-  - termcolor=1.1.0=py37_1
-  - tk=8.6.10=hed695b0_0
-  - pytorch=1.5.0
-  - torchvision=0.6.0
-  - tqdm=4.45.0=py_0
-  - traitlets=4.3.3=py37_0
-  - vmd-python=3.0.6
-  - wcwidth=0.1.9=py_0
-  - wheel=0.34.2=py37_0
-  - xorg-kbproto=1.0.7=h14c3975_1002
-  - xorg-libice=1.0.10=h516909a_0
-  - xorg-libsm=1.2.3=h84519dc_1000
-  - xorg-libx11=1.6.9=h516909a_0
-  - xorg-libxext=1.3.4=h516909a_0
-  - xorg-libxrender=0.9.10=h516909a_1002
-  - xorg-renderproto=0.11.1=h14c3975_1002
-  - xorg-xextproto=7.3.0=h14c3975_1002
-  - xorg-xproto=7.0.31=h14c3975_1007
-  - xz=5.2.5=h7b6447c_0
-  - yacs=0.1.6=py_0
-  - yaml=0.1.7=had09818_2
-  - zlib=1.2.11=h7b6447c_3
-  - zstd=1.3.7=h0b5b093_0
-  - pip:
-    - bio==0.1.0
-    - biopandas==0.2.5
-    - chardet==3.0.4
-    - cycler==0.10.0
-    - docopt==0.6.2
-    - dgllife==0.2.3
-    - idna==2.9
-    - ipymol==0.5
-    - kiwisolver==1.2.0
-    - markdown==2.6.8
-    - matplotlib==3.2.1
-    - networkx==2.4
-    - numpy==1.18.1
-    - pandas==1.0.1
-    - pipreqs==0.4.10
-    - pyparsing==2.4.7
-    - pytorch3d==0.2.0
-    - requests==2.23.0
-    - torch-cluster==1.5.4
-    - torch-geometric==1.5.0
-    - https://s3.eu-central-1.amazonaws.com/pytorch-geometric.com/whl/torch-1.5.0/torch_scatter-latest%2Bcpu-cp37-cp37m-linux_x86_64.whl
-    - https://s3.eu-central-1.amazonaws.com/pytorch-geometric.com/whl/torch-1.5.0/torch_sparse-latest%2Bcpu-cp37-cp37m-linux_x86_64.whl
-    - torch-spline-conv==1.2.0
-    - urllib3==1.25.8
-    - vmd==0.1.1
-    - yarg==0.1.9
-prefix: /home/arj39/anaconda3/envs/graphein
-


Test patch:
diff --git a/tests/ppi/__init__.py b/tests/ppi/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/ppi/test_graphs.py b/tests/ppi/test_graphs.py
new file mode 100644
index 00000000..624d55f0
--- /dev/null
+++ b/tests/ppi/test_graphs.py
@@ -0,0 +1,48 @@
+import networkx as nx
+
+from graphein.ppi.config import PPIGraphConfig
+from graphein.ppi.edges import add_biogrid_edges, add_string_edges
+from graphein.ppi.features.node_features import add_sequence_to_nodes
+from graphein.ppi.graphs import compute_ppi_graph
+
+PROTEIN_LIST = [
+    "CDC42",
+    "CDK1",
+    "KIF23",
+    "PLK1",
+    "RAC2",
+    "RACGAP1",
+    "RHOA",
+    "RHOB",
+]
+
+
+# Test Graph Construction
+def test_construct_graph():
+    config = PPIGraphConfig()
+
+    g = compute_ppi_graph(
+        protein_list=PROTEIN_LIST,
+        edge_construction_funcs=[add_biogrid_edges, add_string_edges],
+        node_annotation_funcs=[add_sequence_to_nodes],
+        config=config,
+    )
+
+    print(nx.info(g))
+
+    # Check nodes and edges
+    assert len(g.nodes()) == 8
+    assert len(g.edges()) == 22
+
+    # Check edge types are from string/biogrid
+    # Check nodes are in our list
+    for u, v, d in g.edges(data=True):
+        assert d["kind"].issubset(set(["string", "biogrid"]))
+        assert u in PROTEIN_LIST
+        assert v in PROTEIN_LIST
+
+    # Check sequence is defined if UniProt ID found
+    for n, d in g.nodes(data=True):
+        assert d["protein_id"] in PROTEIN_LIST
+        if d["uniprot_ids"] is not None:
+            assert d["sequence"] is not None
diff --git a/tests/protein/__init__.py b/tests/protein/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/protein/edges/__init__.py b/tests/protein/edges/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/protein/edges/test_distance.py b/tests/protein/edges/test_distance.py
new file mode 100644
index 00000000..d84e51e3
--- /dev/null
+++ b/tests/protein/edges/test_distance.py
@@ -0,0 +1,167 @@
+"""Functions for working with Protein Structure Graphs. Based on tests written by Eric Ma in PIN Library"""
+# %%
+# Graphein
+# Author: Arian Jamasb <arian@jamasb.io>, Eric Ma, Charlie Harris
+# License: MIT
+# Project Website: https://github.com/a-r-j/graphein
+# Code Repository: https://github.com/a-r-j/graphein
+from pathlib import Path
+
+import pytest
+
+from graphein.protein.edges.distance import (
+    get_edges_by_bond_type,
+    get_ring_atoms,
+    get_ring_centroids,
+)
+from graphein.protein.graphs import construct_graph, read_pdb_to_dataframe
+from graphein.protein.resi_atoms import (
+    AROMATIC_RESIS,
+    BOND_TYPES,
+    CATION_RESIS,
+    HYDROPHOBIC_RESIS,
+    NEG_AA,
+    PI_RESIS,
+    POS_AA,
+    RESI_NAMES,
+    SULPHUR_RESIS,
+)
+
+DATA_PATH = Path(__file__).resolve().parent.parent / "test_data" / "4hhb.pdb"
+
+
+def generate_graph():
+    """Generate PDB network.
+    This is a helper function.
+    """
+    return construct_graph(pdb_path=str(DATA_PATH))
+
+
+@pytest.fixture(scope="module")
+def net():
+    """Generate proteingraph from 2VUI.pdb."""
+    return generate_graph()
+
+
+@pytest.fixture()
+def pdb_df():
+    """Generate pdb_df from 2VIU.pdb."""
+    return read_pdb_to_dataframe(DATA_PATH)
+
+
+def test_nodes_are_strings(net):
+    """
+    Checks to make sure that the nodes are a string.
+    For expediency, checks only 1/4 of the nodes.
+    """
+    for n in net.nodes():
+        assert isinstance(n, str)
+
+
+def test_add_hydrophobic_interactions(net):
+    """Test the function add_hydrophobic_interactions_."""
+    resis = get_edges_by_bond_type(net, "hydrophobic")
+    for (r1, r2) in resis:
+        assert net.nodes[r1]["residue_name"] in HYDROPHOBIC_RESIS
+        assert net.nodes[r2]["residue_name"] in HYDROPHOBIC_RESIS
+
+
+def test_add_disulfide_interactions(net):
+    """Test the function add_disulfide_interactions_."""
+    resis = get_edges_by_bond_type(net, "disulfide")
+
+    for (r1, r2) in resis:
+        assert net.nodes[r1]["residue_name"] == "CYS"
+        assert net.nodes[r2]["residue_name"] == "CYS"
+
+
+@pytest.mark.skip(reason="Not yet implemented.")
+def test_delaunay_triangulation(net):
+    """
+    Test delaunay triangulation.
+    I am including this test here that always passes because I don't know how
+    best to test it. The code in pin.py uses scipy's delaunay triangulation.
+    """
+    pass
+
+
+@pytest.mark.skip(reason="Implementation needs to be checked.")
+def test_add_hydrogen_bond_interactions(net):
+    """Test that the addition of hydrogen bond interactions works correctly."""
+    pass
+
+
+def test_add_aromatic_interactions(net):
+    """
+    Tests the function add_aromatic_interactions_.
+    The test checks that each residue in an aromatic interaction
+    is one of the aromatic residues.
+    """
+    resis = get_edges_by_bond_type(net, "aromatic")
+    for n1, n2 in resis:
+        assert net.nodes[n1]["residue_name"] in AROMATIC_RESIS
+        assert net.nodes[n2]["residue_name"] in AROMATIC_RESIS
+
+
+def test_add_aromatic_sulphur_interactions(net):
+    """Tests the function add_aromatic_sulphur_interactions_."""
+    resis = get_edges_by_bond_type(net, "aromatic_sulphur")
+    for n1, n2 in resis:
+        condition1 = (
+            net.nodes[n1]["residue_name"] in SULPHUR_RESIS
+            and net.nodes[n2]["residue_name"] in AROMATIC_RESIS
+        )
+
+        condition2 = (
+            net.nodes[n2]["residue_name"] in SULPHUR_RESIS
+            and net.nodes[n1]["residue_name"] in AROMATIC_RESIS
+        )
+
+        assert condition1 or condition2
+
+
+def test_add_ionic_interactions(net):
+    """
+    Tests the function add_ionic_interactions_.
+    This test checks that residues involved in ionic interactions
+    are indeed oppositely-charged.
+    Another test is needed to make sure that ionic interactions
+    are not missed.
+    """
+    resis = get_edges_by_bond_type(net, "ionic")
+    for n1, n2 in resis:
+        resi1 = net.nodes[n1]["residue_name"]
+        resi2 = net.nodes[n2]["residue_name"]
+
+        condition1 = resi1 in POS_AA and resi2 in NEG_AA
+        condition2 = resi2 in POS_AA and resi1 in NEG_AA
+
+        assert condition1 or condition2
+
+
+@pytest.mark.skip(reason="Not yet implemented.")
+def test_get_ring_centroids(pdb_df):
+    """Test the function get_ring_centroids."""
+    print(pdb_df)
+    ring_atom_TYR = get_ring_atoms(pdb_df, "TYR")
+    assert len(ring_atom_TYR) == 32
+    centroid_TYR = get_ring_centroids(ring_atom_TYR)
+    assert len(centroid_TYR) == 16
+
+    ring_atom_PHE = get_ring_atoms(pdb_df, "PHE")
+    assert len(ring_atom_PHE) == 36
+    centroid_PHE = get_ring_centroids(ring_atom_PHE)
+    assert len(centroid_PHE) == 18
+
+
+def test_add_cation_pi_interactions(net):
+    """Tests the function add_cation_pi_interactions."""
+    resis = get_edges_by_bond_type(net, "cation_pi")
+    for n1, n2 in resis:
+        resi1 = net.nodes[n1]["residue_name"]
+        resi2 = net.nodes[n2]["residue_name"]
+
+        condition1 = resi1 in CATION_RESIS and resi2 in PI_RESIS
+        condition2 = resi2 in CATION_RESIS and resi1 in PI_RESIS
+
+        assert condition1 or condition2
diff --git a/tests/protein/nodes/__init__.py b/tests/protein/nodes/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/protein/nodes/features/__init__.py b/tests/protein/nodes/features/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/protein/test_graphs.py b/tests/protein/test_graphs.py
index e4895ab3..9486fcbb 100644
--- a/tests/protein/test_graphs.py
+++ b/tests/protein/test_graphs.py
@@ -1,12 +1,77 @@
 """Tests for graphein.protein.graphs"""
 
+from functools import partial
 from pathlib import Path
 
 import networkx as nx
+import pytest
 
-from graphein.protein.graphs import construct_graph
+from graphein.protein.config import ProteinGraphConfig
+from graphein.protein.edges.distance import (
+    add_aromatic_interactions,
+    add_aromatic_sulphur_interactions,
+    add_cation_pi_interactions,
+    add_delaunay_triangulation,
+    add_distance_threshold,
+    add_disulfide_interactions,
+    add_hydrogen_bond_interactions,
+    add_hydrophobic_interactions,
+    add_ionic_interactions,
+    add_k_nn_edges,
+    add_peptide_bonds,
+)
+from graphein.protein.features.nodes.aaindex import aaindex1
+from graphein.protein.features.nodes.amino_acid import (
+    expasy_protein_scale,
+    meiler_embedding,
+)
+from graphein.protein.features.nodes.dssp import (
+    asa,
+    phi,
+    psi,
+    rsa,
+    secondary_structure,
+)
+from graphein.protein.features.sequence.embeddings import (
+    biovec_sequence_embedding,
+    esm_residue_embedding,
+    esm_sequence_embedding,
+)
+from graphein.protein.features.sequence.sequence import molecular_weight
+from graphein.protein.graphs import construct_graph, read_pdb_to_dataframe
 
+DATA_PATH = Path(__file__).resolve().parent / "test_data" / "4hhb.pdb"
 
+
+def generate_graph():
+    """Generate PDB network.
+    This is a helper function.
+    """
+    return construct_graph(pdb_path=str(DATA_PATH))
+
+
+@pytest.fixture(scope="module")
+def net():
+    """Generate proteingraph from 2VUI.pdb."""
+    return generate_graph()
+
+
+@pytest.fixture()
+def pdb_df():
+    """Generate pdb_df from 2VIU.pdb."""
+    return read_pdb_to_dataframe(DATA_PATH)
+
+
+def test_nodes_are_strings(net):
+    """
+    Checks to make sure that the nodes are a string.
+    For expediency, checks only 1/4 of the nodes.
+    """
+    for n in net.nodes():
+        assert isinstance(n, str)
+
+
+# Example-based Graph Construction test
 def test_construct_graph():
     """Example-based test that graph construction works correctly.
 
@@ -24,3 +89,151 @@ def test_construct_graph():
         if d["kind"] == {"peptide_bond"}
     ]
     assert len(peptide_bond_edges) == 570
+
+
+def test_chain_selection():
+    """Example-based test that chain selection works correctly.
+
+    Uses 4hhb PDB file as an example test case.
+    """
+    file_path = Path(__file__).parent / "test_data/4hhb.pdb"
+    G = construct_graph(pdb_path=str(file_path))
+
+    # Check default construction contains all chains
+    assert G.graph["chain_ids"] == ["A", "B", "C", "D"]
+    # Check nodes contain residues from chains
+    for n, d in G.nodes(data=True):
+        assert d["chain_id"] in ["A", "B", "C", "D"]
+
+    # Check graph contains only chain selection
+    G = construct_graph(pdb_path=str(file_path), chain_selection="AD")
+    assert G.graph["chain_ids"] == ["A", "D"]
+    # Check nodes only contain residues from chain selection
+    for n, d in G.nodes(data=True):
+        assert d["chain_id"] in ["A", "D"]
+
+
+# Edge construction tests
+# Removed - testing with GetContacts as a dependency is not a priority right now
+"""
+def test_intramolecular_edges():
+    Example-based test that intramolecualr edge construction using GetContacts works correctly.
+
+    Uses 4hhb PDB file as an example test case.
+
+    file_path = Path(__file__).parent / "test_data/4hhb.pdb"
+
+    edge_functions = {
+        "edge_construction_functions": [
+            hydrogen_bond,
+            hydrophobic,
+            peptide_bonds,
+            pi_cation,
+            pi_stacking,
+            salt_bridge,
+            t_stacking,
+            van_der_waals,
+        ]
+    }
+    config = ProteinGraphConfig(**edge_functions)
+    G = construct_graph(pdb_path=str(file_path), config=config)
+    # Todo complete
+"""
+
+
+def test_distance_edges():
+    """Example-based test that distance-based edge construction works correctly
+
+    Uses 4hhb PDB file as an example test case.
+    """
+    file_path = Path(__file__).parent / "test_data/4hhb.pdb"
+
+    edge_functions = {
+        "edge_construction_functions": [
+            partial(add_k_nn_edges, k=5, long_interaction_threshold=10),
+            add_hydrophobic_interactions,
+            # add_aromatic_interactions, # Todo removed for now as ring centroids require precomputing
+            add_aromatic_sulphur_interactions,
+            add_delaunay_triangulation,
+            add_cation_pi_interactions,
+            add_peptide_bonds,
+            add_hydrogen_bond_interactions,
+            add_disulfide_interactions,
+            add_ionic_interactions,
+            partial(
+                add_distance_threshold,
+                threshold=12,
+                long_interaction_threshold=10,
+            ),
+        ]
+    }
+    config = ProteinGraphConfig(**edge_functions)
+    G = construct_graph(pdb_path=str(file_path), config=config)
+    # Todo complete
+
+
+# Featurisation tests
+def test_node_features():
+    # Todo this test requires attention
+    # Tests node featurisers for a residue graph:
+    # Amino acid features, ESM embedding, DSSP features, aaindex features
+
+    file_path = Path(__file__).parent / "test_data/4hhb.pdb"
+
+    node_feature_functions = {
+        "node_metadata_functions": [
+            expasy_protein_scale,  # Todo we need to refactor node data assingment flow
+            meiler_embedding,
+            # rsa,
+            # asa,
+            # phi,
+            # psi,
+            # secondary_structure,
+            # partial(aaindex1, accession="FAUJ880111"),
+        ]
+    }
+    config = ProteinGraphConfig(**node_feature_functions)
+    G = construct_graph(pdb_path=str(file_path), config=config)
+
+    # Check for existence of features
+    for n, d in G.nodes(data=True):
+        # assert "meiler_embedding" in d # Todo these functions return pd.Series, rather than adding to the node
+        # assert expasy_protein_scale in d
+        # assert "rsa" in d
+        # assert "asa" in d
+        # assert "phi" in d
+        # assert "psi" in d
+        # assert "secondary_structure" in d
+        continue
+
+
+@pytest.mark.skip(reason="Pretrained model download is large.")
+def test_sequence_features():
+    # Tests sequence featurisers for a residue graph:
+    # ESM and BioVec embeddings, propy and sequence descriptors
+    file_path = Path(__file__).parent / "test_data/4hhb.pdb"
+
+    sequence_feature_functions = {
+        "graph_metadata_functions": [
+            esm_sequence_embedding,
+            esm_residue_embedding,
+            biovec_sequence_embedding,
+            molecular_weight,
+        ]
+    }
+    config = ProteinGraphConfig(**sequence_feature_functions)
+    G = construct_graph(pdb_path=str(file_path), config=config)
+
+    # Check for existence on sequence-based features as node-level features
+    for n, d in G.nodes(data=True):
+        # Todo this can probably be improved.
+        # This only checks for the existence and shape of the esm_embedding for each node
+        assert "esm_embedding" in d
+        assert len(d["esm_embedding"]) == 1280
+
+    # Check for existence of sequence-based features as Graph-level features
+    for chain in G.graph["chain_ids"]:
+        assert f"sequence_{chain}" in G.graph
+        assert f"esm_embedding_{chain}" in G.graph
+        assert f"biovec_embedding_{chain}" in G.graph
+        assert f"molecular_weight_{chain}" in G.graph
diff --git a/tests/rna/__init__.py b/tests/rna/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/rna/test_graphs.py b/tests/rna/test_graphs.py
new file mode 100644
index 00000000..2d0a3a54
--- /dev/null
+++ b/tests/rna/test_graphs.py
@@ -0,0 +1,58 @@
+import pytest
+from hypothesis import given
+from hypothesis.strategies import text
+
+from graphein.rna.edges import (
+    add_all_dotbracket_edges,
+    add_base_pairing_interactions,
+    add_phosphodiester_bonds,
+)
+from graphein.rna.graphs import (
+    RNA_BASES,
+    SUPPORTED_DOTBRACKET_NOTATION,
+    construct_rna_graph,
+)
+
+TEST_SEQUENCE = "UUGGAGUACACAACCUGUACACUCUUUC"
+TEST_DOTBRACKET = "..(((((..(((...)))..)))))..."
+
+
+def test_construct_rna_graph():
+    g = construct_rna_graph(
+        dotbracket=TEST_DOTBRACKET,
+        sequence=TEST_SEQUENCE,
+        edge_construction_funcs=[
+            add_base_pairing_interactions,
+            add_phosphodiester_bonds,
+        ],
+    )
+
+    h = construct_rna_graph(
+        dotbracket=TEST_DOTBRACKET,
+        sequence=TEST_SEQUENCE,
+        edge_construction_funcs=[add_all_dotbracket_edges],
+    )
+
+    assert g.edges() == h.edges()
+    assert g.nodes() == h.nodes()
+
+    # Check number of nodes and edges
+    assert len(g.nodes()) == len(TEST_SEQUENCE)
+    assert len(g.nodes()) == len(TEST_DOTBRACKET)
+
+    # Check node features are in alphabet
+    for n, d in g.nodes(data=True):
+        assert d["dotbracket_symbol"] in SUPPORTED_DOTBRACKET_NOTATION
+        assert d["nucleotide"] in RNA_BASES
+
+    # Count edges for each type
+    phosphodiesters = 0
+    bp = 0
+    for u, v, d in g.edges(data=True):
+        if d["attr"] == "phosphodiester_bond":
+            phosphodiesters += 1
+        elif d["attr"] == "base_pairing":
+            bp += 1
+
+    assert phosphodiesters == len(TEST_SEQUENCE) - 1
+    assert bp == TEST_DOTBRACKET.count("(")