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

Issue:
chain_selection returns KeyError: 'residue_name'
Hi Arian, I'm sorry for the frequent opening of threads! 

I want to do chain selection of PDB [2VVI](https://www.rcsb.org/structure/2vvi), which has chains A, B, C and D.

`g = construct_graph(config=config, pdb_code='2VVI', chain_selection="A")`

However, it returns a KeyError: 'residue_name':

```
DEBUG:graphein.protein.graphs:Deprotonating protein. This removes H atoms from the pdb_df dataframe
DEBUG:graphein.protein.graphs:Detected 217 total nodes
INFO:graphein.protein.edges.distance:Found 411 hbond interactions.
INFO:graphein.protein.edges.distance:Found 42 hbond interactions.
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
[<ipython-input-22-68026463de79>](https://localhost:8080/#) in <module>()
----> 1 g = construct_graph(config=config, pdb_code='2VVI', chain_selection="A")

3 frames
[/usr/local/lib/python3.7/dist-packages/graphein/protein/edges/distance.py](https://localhost:8080/#) in <listcomp>(.0)
    154     """
    155     # Check for existence of at least two Cysteine residues
--> 156     residues = [d["residue_name"] for _, d in G.nodes(data=True)]
    157     if residues.count("CYS") < 2:
    158         log.debug(

KeyError: 'residue_name'
```

Any idea how to resolve this error?
Thanks!
Baselines notebook not rendering correctly in docs
**Describe the bug**
https://graphein.ai/notebooks/pscdb_baselines.html

Notebook not rendering. Likely built docs in an environment without torch geometric (and associated dependencies like `torch_scatter`)

#130 
chain_selection returns KeyError: 'residue_name'
Hi Arian, I'm sorry for the frequent opening of threads! 

I want to do chain selection of PDB [2VVI](https://www.rcsb.org/structure/2vvi), which has chains A, B, C and D.

`g = construct_graph(config=config, pdb_code='2VVI', chain_selection="A")`

However, it returns a KeyError: 'residue_name':

```
DEBUG:graphein.protein.graphs:Deprotonating protein. This removes H atoms from the pdb_df dataframe
DEBUG:graphein.protein.graphs:Detected 217 total nodes
INFO:graphein.protein.edges.distance:Found 411 hbond interactions.
INFO:graphein.protein.edges.distance:Found 42 hbond interactions.
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
[<ipython-input-22-68026463de79>](https://localhost:8080/#) in <module>()
----> 1 g = construct_graph(config=config, pdb_code='2VVI', chain_selection="A")

3 frames
[/usr/local/lib/python3.7/dist-packages/graphein/protein/edges/distance.py](https://localhost:8080/#) in <listcomp>(.0)
    154     """
    155     # Check for existence of at least two Cysteine residues
--> 156     residues = [d["residue_name"] for _, d in G.nodes(data=True)]
    157     if residues.count("CYS") < 2:
    158         log.debug(

KeyError: 'residue_name'
```

Any idea how to resolve this error?
Thanks!
Cannot pickle after calling graphein.protein.subgraphs.extract_subgraph_from_chains()
Hi Arian, I am trying the [graphein.protein.subgraphs.extract_subgraph_from_chains()](https://graphein.ai/modules/graphein.protein.html#graphein.protein.subgraphs.extract_subgraph_from_chains) you suggested. 

After that, I want to pickle the graph.

Originally, pickling with the original graph worked fine: 

```
# config
new_funcs = {"keep_hets": False,
             "edge_construction_functions": [add_peptide_bonds,
                                              add_hydrogen_bond_interactions,
                                              add_disulfide_interactions,
                                              add_ionic_interactions,
                                              add_aromatic_interactions,
                                              add_aromatic_sulphur_interactions,
                                              add_cation_pi_interactions],
            }

config = ProteinGraphConfig(**new_funcs)

# construct graph
g = construct_graph(config=config, pdb_code='2vvi', chain_selection="all")

# Dump graph
with open("2vvi.p", 'wb') as f:
    pickle.dump(g, f)
```

However, when the [graphein.protein.subgraphs.extract_subgraph_from_chains()](https://graphein.ai/modules/graphein.protein.html#graphein.protein.subgraphs.extract_subgraph_from_chains) was called, the pickling of both the original graph and the subgraph became not to work.

```
# config
new_funcs = {"keep_hets": False,
             "edge_construction_functions": [add_peptide_bonds,
                                              add_hydrogen_bond_interactions,
                                              add_disulfide_interactions,
                                              add_ionic_interactions,
                                              add_aromatic_interactions,
                                              add_aromatic_sulphur_interactions,
                                              add_cation_pi_interactions],
            }

config = ProteinGraphConfig(**new_funcs)

# construct graph
g = construct_graph(config=config, pdb_code='2vvi', chain_selection="all")
s_g = extract_subgraph_from_chains(g, "A")

# Dump graph
with open("2vvi.p", 'wb') as f:
    pickle.dump(g, f)
```
```
DEBUG:graphein.protein.graphs:Deprotonating protein. This removes H atoms from the pdb_df dataframe
DEBUG:graphein.protein.graphs:Detected 877 total nodes
INFO:graphein.protein.edges.distance:Found 411 hbond interactions.
INFO:graphein.protein.edges.distance:Found 42 hbond interactions.
INFO:graphein.protein.edges.distance:Found 12 disulfide interactions.
INFO:graphein.protein.edges.distance:Found 955 ionic interactions.
INFO:graphein.protein.edges.distance:Found: 180 aromatic-aromatic interactions
DEBUG:graphein.protein.subgraphs:Found 217 nodes in the chain subgraph.
DEBUG:graphein.protein.subgraphs:Creating subgraph from nodes: ['A:ALA:69', 'A:ALA:160', 'A:ASP:77', 'A:GLY:31', 'A:LYS:138', 'A:ALA:127', 'A:TYR:147', 'A:ILE:157', 'A:LYS:185', 'A:PHE:23', 'A:VAL:148', 'A:ASN:116', 'A:LEU:162', 'A:HIS:217', 'A:GLU:197', 'A:ALA:214', 'A:PHE:79', 'A:SER:39', 'A:ILE:100', 'A:GLN:38', 'A:LEU:163', 'A:PHE:95', 'A:GLU:212', 'A:ASP:55', 'A:TRP:89', 'A:MET:8', 'A:SER:218', 'A:SER:2', 'A:GLY:86', 'A:TYR:211', 'A:LYS:145', 'A:HIS:121', 'A:LYS:5', 'A:LYS:37', 'A:GLY:98', 'A:ASN:11', 'A:LEU:186', 'A:GLY:151', 'A:PHE:114', 'A:PRO:130', 'A:GLU:140', 'A:CYS:171', 'A:PHE:34', 'A:LYS:9', 'A:MET:14', 'A:ALA:3', 'A:PRO:33', 'A:ASN:105', 'A:ASP:26', 'A:ARG:149', 'A:LYS:203', 'A:ILE:56', 'A:PHE:61', 'A:GLU:35', 'A:LEU:137', 'A:TYR:177', 'A:GLU:96', 'A:ARG:170', 'A:LEU:220', 'A:GLY:122', 'A:PRO:72', 'A:ASN:124', 'A:VAL:152', 'A:HIS:201', 'A:THR:30', 'A:LEU:161', 'A:VAL:215', 'A:PHE:83', 'A:LEU:210', 'A:VAL:18', 'A:THR:58', 'A:ASP:112', 'A:ASN:206', 'A:GLU:15', 'A:ASN:128', 'A:ASP:73', 'A:PHE:120', 'A:THR:113', 'A:TYR:189', 'A:PRO:187', 'A:TYR:87', 'A:GLY:99', 'A:TYR:115', 'A:GLN:81', 'A:PRO:84', 'A:ARG:13', 'A:ASP:41', 'A:PRO:51', 'A:HIS:194', 'A:ASP:97', 'A:HIS:190', 'A:ALA:60', 'A:ILE:107', 'A:MET:146', 'A:LEU:12', 'A:LEU:199', 'A:ASP:156', 'A:TYR:205', 'A:CYS:195', 'A:MET:159', 'A:PHE:52', 'A:ASN:17', 'A:GLY:27', 'A:ARG:66', 'A:HIS:213', 'A:ILE:196', 'A:VAL:67', 'A:ASN:65', 'A:ASP:172', 'A:GLY:20', 'A:LYS:182', 'A:GLU:181', 'A:ASP:150', 'A:THR:59', 'A:GLU:90', 'A:GLU:144', 'A:PHE:54', 'A:PHE:125', 'A:TYR:71', 'A:ALA:167', 'A:LYS:32', 'A:GLU:43', 'A:SER:88', 'A:GLY:111', 'A:HIS:21', 'A:ASP:106', 'A:GLY:36', 'A:MET:132', 'A:ASP:202', 'A:ILE:102', 'A:VAL:192', 'A:ARG:119', 'A:VAL:131', 'A:THR:94', 'A:TRP:139', 'A:GLY:16', 'A:SER:92', 'A:TYR:169', 'A:GLY:165', 'A:MET:109', 'A:THR:108', 'A:ASP:204', 'A:GLY:48', 'A:TYR:78', 'A:ARG:174', 'A:GLU:46', 'A:VAL:184', 'A:SER:82', 'A:GLY:183', 'A:PRO:126', 'A:HIS:168', 'A:LYS:134', 'A:SER:142', 'A:ARG:104', 'A:LEU:93', 'A:ARG:91', 'A:ASP:7', 'A:VAL:24', 'A:LYS:180', 'A:THR:143', 'A:GLY:219', 'A:ALA:53', 'A:THR:136', 'A:PRO:221', 'A:LYS:207', 'A:GLU:70', 'A:LYS:80', 'A:THR:158', 'A:HIS:22', 'A:LEU:191', 'A:LEU:153', 'A:SER:173', 'A:VAL:118', 'A:SER:200', 'A:ILE:10', 'A:CYS:101', 'A:MET:40', 'A:ASP:28', 'A:GLN:133', 'A:LYS:209', 'A:GLY:129', 'A:ALA:216', 'A:ALA:179', 'A:LEU:50', 'A:GLY:188', 'A:LYS:85', 'A:GLN:76', 'A:THR:176', 'A:VAL:44', 'A:PHE:68', 'A:LYS:135', 'A:GLY:155', 'A:LEU:42', 'A:ALA:103', 'A:THR:154', 'A:ILE:4', 'A:VAL:123', 'A:LYS:45', 'A:ILE:75', 'A:GLU:164', 'A:ILE:198', 'A:PRO:49', 'A:VAL:208', 'A:LYS:117', 'A:ASN:19', 'A:GLY:47', 'A:ILE:25', 'A:ASN:166', 'A:LYS:178', 'A:THR:175', 'A:PRO:6', 'A:GLU:110', 'A:PRO:141', 'A:LEU:57', 'A:GLY:29', 'A:ASP:193', 'A:HIS:74'].
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
[<ipython-input-34-e37cc3cc13f7>](https://localhost:8080/#) in <module>()
     18 # Dump graph
     19 with open(pdb + ".p", 'wb') as f:
---> 20     pickle.dump(g, f)

TypeError: can't pickle generator objects
```

Do you know why [graphein.protein.subgraphs.extract_subgraph_from_chains()](https://graphein.ai/modules/graphein.protein.html#graphein.protein.subgraphs.extract_subgraph_from_chains) changed the behavior of pickle?

Thanks again!


Discussion / hints:
Hi @johnnytam100, no worries!

Could you please share the config? It looks like the trouble is occurring when you’re assigning the disulphide bonds. The key error says there is a node that doesn’t have a `residue_name` In the graph. Potentially, we’re not filtering out some unwanted HETATMS/Ligands properly which implies a potential bug. Are you including heteroatoms intentionally?

If you can share the config I can take a closer look this afternoon.


Also, could you please share the version of Graphein you’re using? `pip list` Should do the trick.

I just tried the following in a colab notebook and it seems to work as expected so I may be wrong about hetatms/ligands/waters causing the problem.

```python
from graphein.protein.graphs import construct_graph
from graphein.protein.edges.distance import add_disulfide_interactions, add_hydrogen_bond_interactions
from graphein.protein.config import ProteinGraphConfig

config = ProteinGraphConfig(
    edge_construction_functions=[add_disulfide_interactions, add_hydrogen_bond_interactions],
     keep_hets=True,
     insertions=True,
     exclude_waters = False,
     )

g = construct_graph(pdb_code="2vvi", chain_selection="A", config=config)
```

```
DEBUG:graphein.protein.graphs:Deprotonating protein. This removes H atoms from the pdb_df dataframe
DEBUG:graphein.protein.graphs:Detected 217 total nodes
INFO:graphein.protein.edges.distance:Found 12 disulfide interactions.
INFO:graphein.protein.edges.distance:Found 411 hbond interactions.
INFO:graphein.protein.edges.distance:Found 42 hbond interactions.
```

My graphein version is `graphein                      1.2.0`

And I have tested your code, which worked! Then I found something strange, if you swap the positions of `add_disulfide_interactions` and `add_hydrogen_bond_interactions`, like this

```
from graphein.protein.graphs import construct_graph
from graphein.protein.edges.distance import add_disulfide_interactions, add_hydrogen_bond_interactions
from graphein.protein.config import ProteinGraphConfig

config = ProteinGraphConfig(
    edge_construction_functions=[add_hydrogen_bond_interactions, add_disulfide_interactions],
     keep_hets=True,
     insertions=True,
     exclude_waters = False,
     )

g = construct_graph(pdb_code="2vvi", chain_selection="A", config=config)
```
```
DEBUG:graphein.protein.graphs:Deprotonating protein. This removes H atoms from the pdb_df dataframe
DEBUG:graphein.protein.graphs:Detected 217 total nodes
INFO:graphein.protein.edges.distance:Found 411 hbond interactions.
INFO:graphein.protein.edges.distance:Found 42 hbond interactions.
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
[<ipython-input-60-1e0f5c8e3c7b>](https://localhost:8080/#) in <module>()
     10      )
     11 
---> 12 g = construct_graph(pdb_code="2vvi", chain_selection="A", config=config)

3 frames
[/usr/local/lib/python3.7/dist-packages/graphein/protein/edges/distance.py](https://localhost:8080/#) in <listcomp>(.0)
    154     """
    155     # Check for existence of at least two Cysteine residues
--> 156     residues = [d["residue_name"] for _, d in G.nodes(data=True)]
    157     if residues.count("CYS") < 2:
    158         log.debug(

KeyError: 'residue_name'
```


My original config was

```
new_funcs = {"keep_hets": False,
             "edge_construction_functions": [add_peptide_bonds,
                                              add_hydrogen_bond_interactions,
                                              add_disulfide_interactions,
                                              add_ionic_interactions,
                                              add_aromatic_interactions,
                                              add_aromatic_sulphur_interactions,
                                              add_cation_pi_interactions],
            }

config = ProteinGraphConfig(**new_funcs)

# construct graph
g = construct_graph(config=config, pdb_code='2vvi', chain_selection="A")
```

Swapping only "add_hydrogen_bond_interactions" and "add_disulfide_interactions" didn't work.
Then I wonder what order of these arguments should work..
Huh, that is a bug. I’ll check it out
Ah, I see what’s going on. The hydrogen bonds are looking at the unfiltered dataframe and adding in new nodes from the other chains. These nodes don’t have any metadata attached because they weren’t added in the earlier steps where we add information to nodes and so we get the error.

This is definitely a bug and I’ll figure out a fix. What I would recommend you do for now is to not use the `chain_selection=“A”` Parameter but instead  use `chain_selection=“all”`. You can then use [`graphein.protein.subgraphs.extract_subgraph_from_chains()`](https://graphein.ai/modules/graphein.protein.html#graphein.protein.subgraphs.extract_subgraph_from_chains) to select the chains. 

[Tutorial notebook here](https://graphein.ai/notebooks/subgraphing_tutorial.html#Subgraphing-based-on-Chains)

Good catch btw! Thanks for flagging this :)

Hi @johnnytam100, no worries!

Could you please share the config? It looks like the trouble is occurring when you’re assigning the disulphide bonds. The key error says there is a node that doesn’t have a `residue_name` In the graph. Potentially, we’re not filtering out some unwanted HETATMS/Ligands properly which implies a potential bug. Are you including heteroatoms intentionally?

If you can share the config I can take a closer look this afternoon.


Also, could you please share the version of Graphein you’re using? `pip list` Should do the trick.

I just tried the following in a colab notebook and it seems to work as expected so I may be wrong about hetatms/ligands/waters causing the problem.

```python
from graphein.protein.graphs import construct_graph
from graphein.protein.edges.distance import add_disulfide_interactions, add_hydrogen_bond_interactions
from graphein.protein.config import ProteinGraphConfig

config = ProteinGraphConfig(
    edge_construction_functions=[add_disulfide_interactions, add_hydrogen_bond_interactions],
     keep_hets=True,
     insertions=True,
     exclude_waters = False,
     )

g = construct_graph(pdb_code="2vvi", chain_selection="A", config=config)
```

```
DEBUG:graphein.protein.graphs:Deprotonating protein. This removes H atoms from the pdb_df dataframe
DEBUG:graphein.protein.graphs:Detected 217 total nodes
INFO:graphein.protein.edges.distance:Found 12 disulfide interactions.
INFO:graphein.protein.edges.distance:Found 411 hbond interactions.
INFO:graphein.protein.edges.distance:Found 42 hbond interactions.
```

My graphein version is `graphein                      1.2.0`

And I have tested your code, which worked! Then I found something strange, if you swap the positions of `add_disulfide_interactions` and `add_hydrogen_bond_interactions`, like this

```
from graphein.protein.graphs import construct_graph
from graphein.protein.edges.distance import add_disulfide_interactions, add_hydrogen_bond_interactions
from graphein.protein.config import ProteinGraphConfig

config = ProteinGraphConfig(
    edge_construction_functions=[add_hydrogen_bond_interactions, add_disulfide_interactions],
     keep_hets=True,
     insertions=True,
     exclude_waters = False,
     )

g = construct_graph(pdb_code="2vvi", chain_selection="A", config=config)
```
```
DEBUG:graphein.protein.graphs:Deprotonating protein. This removes H atoms from the pdb_df dataframe
DEBUG:graphein.protein.graphs:Detected 217 total nodes
INFO:graphein.protein.edges.distance:Found 411 hbond interactions.
INFO:graphein.protein.edges.distance:Found 42 hbond interactions.
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
[<ipython-input-60-1e0f5c8e3c7b>](https://localhost:8080/#) in <module>()
     10      )
     11 
---> 12 g = construct_graph(pdb_code="2vvi", chain_selection="A", config=config)

3 frames
[/usr/local/lib/python3.7/dist-packages/graphein/protein/edges/distance.py](https://localhost:8080/#) in <listcomp>(.0)
    154     """
    155     # Check for existence of at least two Cysteine residues
--> 156     residues = [d["residue_name"] for _, d in G.nodes(data=True)]
    157     if residues.count("CYS") < 2:
    158         log.debug(

KeyError: 'residue_name'
```


My original config was

```
new_funcs = {"keep_hets": False,
             "edge_construction_functions": [add_peptide_bonds,
                                              add_hydrogen_bond_interactions,
                                              add_disulfide_interactions,
                                              add_ionic_interactions,
                                              add_aromatic_interactions,
                                              add_aromatic_sulphur_interactions,
                                              add_cation_pi_interactions],
            }

config = ProteinGraphConfig(**new_funcs)

# construct graph
g = construct_graph(config=config, pdb_code='2vvi', chain_selection="A")
```

Swapping only "add_hydrogen_bond_interactions" and "add_disulfide_interactions" didn't work.
Then I wonder what order of these arguments should work..
Huh, that is a bug. I’ll check it out
Ah, I see what’s going on. The hydrogen bonds are looking at the unfiltered dataframe and adding in new nodes from the other chains. These nodes don’t have any metadata attached because they weren’t added in the earlier steps where we add information to nodes and so we get the error.

This is definitely a bug and I’ll figure out a fix. What I would recommend you do for now is to not use the `chain_selection=“A”` Parameter but instead  use `chain_selection=“all”`. You can then use [`graphein.protein.subgraphs.extract_subgraph_from_chains()`](https://graphein.ai/modules/graphein.protein.html#graphein.protein.subgraphs.extract_subgraph_from_chains) to select the chains. 

[Tutorial notebook here](https://graphein.ai/notebooks/subgraphing_tutorial.html#Subgraphing-based-on-Chains)

Good catch btw! Thanks for flagging this :)
Hmm, I think I see what’s going on.

Could you try changing some combinations of the parameters in `extract_subgraph_from_chains` - particularly `update_coords=False`
Hi Arian, thanks again for the suggestions!
With `update_coords=False`, the pickle was successful.
But then seems the pickled subgraphs have some problems when fit into the [machine learning model](https://graphein.ai/notebooks/pscdb_baselines.html) .
That I got an error:
`RuntimeError: The expanded size of the tensor (1574) must match the existing size (904) at non-singleton dimension 0.  Target sizes: [1574, 8].  Tensor sizes: [904, 1]`
May I know what does `update_coords=False` do? 
Perfect!

So, `update_coords` recomputes the the coordinate array in `g.graph["coords"]`. Since we are taking a subgraph, we need to remove some of the coordinates from the original. The problem is [this line](https://github.com/a-r-j/graphein/blob/c0b252f34faabce1c9592b8e734c54db809caa04/graphein/protein/subgraphs.py#L64) which is a generator comprehension (which causes the pickling to fail). It's an easy fix to switch this to a list comprehension and I will do this today.

To fix your problem in the meantime, I think you can do something like:

```python
g.graph["coords"] = np.array([
    d["coords"] for d in g.nodes(data=True)]
)
```

After loading the pickle


Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 127aa766..8881c77c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,10 @@
-### 1.2.1 - UNRELEASED
+### 1.2.1 - 16/3/21
 
 * [Feature] - #124 adds support for vector features associated protein protein geometry. #120 #122
 * [Feature] - #124 adds visualisation of vector features in 3D graph plots.
 * [Feature] - #121 adds functions for saving graph data to PDB files.
+* [Bugfix] - #136 changes generator comprehension when updating coordinates in subgraphs to list comprehension to allow pickling
+* [Bugfix] - #136 fixes bug in edge construction functions using chain selections where nodes from unselected chains would be added to the graph.
 
 #### Breaking Changes
 
diff --git a/datasets/pscdb/process_data.ipynb b/datasets/pscdb/process_data.ipynb
index f7f63946..b8961313 100644
--- a/datasets/pscdb/process_data.ipynb
+++ b/datasets/pscdb/process_data.ipynb
@@ -1,1894 +1,1897 @@
 {
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "'Here, we scrape PSCDB (protein Structural Change Database http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/index.html'"
-      ]
-     },
-     "execution_count": 1,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "\"\"\"Here, we scrape PSCDB (protein Structural Change Database http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/index.html\"\"\""
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {},
-   "outputs": [
-    {
-     "ename": "ModuleNotFoundError",
-     "evalue": "No module named 'rdkit'",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-2-e641122ac6ca>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mrdkit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mBio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPDB\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'rdkit'"
-     ]
-    }
-   ],
-   "source": [
-    "import pandas as pd\n",
-    "import rdkit\n",
-    "from Bio.PDB import *"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "     index  PSCID                      Protein Name Free form Bound form  \\\n",
-      "0        0   CD.1  HYPOTHETICAL OXIDOREDUCTASE YIAK   1nxu_AB    1s20_AB   \n",
-      "1        1   CD.2                  ADENYLATE KINASE    4ake_A     2eck_A   \n",
-      "2        2   CD.3                       GLUCOKINASE   1q18_AB    1sz2_AB   \n",
-      "3        3   CD.4                       LACTOFERRIN    1lfh_A     1lfi_A   \n",
-      "4        4   CD.5               ELONGATION FACTOR 2    1n0v_D     1n0u_A   \n",
-      "..     ...    ...                               ...       ...        ...   \n",
-      "903     99  B.100   325AA LONG HYPOTHETICAL PROTEIN   2dec_AB    2df8_AB   \n",
-      "904    100  B.101                         LIPOCALIN    3bu9_A     3bu1_A   \n",
-      "905    101  B.102      AECTYLCITRULLINE DEACETYLASE   2f8h_AA    2f7v_AA   \n",
-      "906    102  B.103                 LIPOYLTRANSFERASE    2qht_A     2qhv_A   \n",
-      "907    103  B.104      RIBOSE 5-PHOSPHATE ISOMERASE   1uj4_AA    1uj5_AA   \n",
-      "\n",
-      "         Ligands  Classification(?)            motion_type  \n",
-      "0    2xNAD,2xTLA             200004  coupled_domain_motion  \n",
-      "1        ADP,AMP             200003  coupled_domain_motion  \n",
-      "2          2xBGC             200003  coupled_domain_motion  \n",
-      "3     2xCU,2xNAG             110103  coupled_domain_motion  \n",
-      "4            SO1             110002  coupled_domain_motion  \n",
-      "..           ...                ...                    ...  \n",
-      "903        2xF1P                 10           other_motion  \n",
-      "904          HSM                 10           other_motion  \n",
-      "905         2xCO                 10           other_motion  \n",
-      "906          OC9                 10           other_motion  \n",
-      "907        2x5RP                 10           other_motion  \n",
-      "\n",
-      "[908 rows x 8 columns]\n"
-     ]
-    }
-   ],
-   "source": [
-    "coupled_domain_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/cd.html\", header=0)[0]\n",
-    "coupled_domain_motion['motion_type'] = 'coupled_domain_motion'\n",
-    "\n",
-    "independent_domain_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/id.html\", header=0)[0]\n",
-    "independent_domain_motion['motion_type'] = 'independent_domain_motion'\n",
-    "\n",
-    "coupled_local_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/cl.html\", header=0)[0]\n",
-    "coupled_local_motion['motion_type'] = 'coupled_local_motion'\n",
-    "\n",
-    "independent_local_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/il.html\", header=0)[0]\n",
-    "independent_local_motion['motion_type'] = 'independent_local_motion'\n",
-    "\n",
-    "burying_ligand_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/b.html\", header=0)[0]\n",
-    "burying_ligand_motion['motion_type'] = 'burying_ligand_motion'\n",
-    "\n",
-    "no_significant_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/n.html\", header=0)[0]\n",
-    "no_significant_motion['motion_type'] = 'no_significant_motion'\n",
-    "\n",
-    "other_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/b.html\", header=0)[0]\n",
-    "other_motion['motion_type'] = 'other_motion'\n",
-    "\n",
-    "structural_rearrangement_data = pd.concat([coupled_domain_motion, independent_domain_motion,\n",
-    "                                           coupled_local_motion, independent_local_motion,\n",
-    "                                           burying_ligand_motion, no_significant_motion, other_motion]).reset_index()\n",
-    "print(structural_rearrangement_data)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 32,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "     level_0  index  PSCID                      Protein Name Free form  \\\n",
-      "0          0      0   CD.1  HYPOTHETICAL OXIDOREDUCTASE YIAK   1nxu_AB   \n",
-      "1          1      1   CD.2                  ADENYLATE KINASE    4ake_A   \n",
-      "2          2      2   CD.3                       GLUCOKINASE   1q18_AB   \n",
-      "3          3      3   CD.4                       LACTOFERRIN    1lfh_A   \n",
-      "4          4      4   CD.5               ELONGATION FACTOR 2    1n0v_D   \n",
-      "..       ...    ...    ...                               ...       ...   \n",
-      "900      903     99  B.100   325AA LONG HYPOTHETICAL PROTEIN   2dec_AB   \n",
-      "901      904    100  B.101                         LIPOCALIN    3bu9_A   \n",
-      "902      905    101  B.102      AECTYLCITRULLINE DEACETYLASE   2f8h_AA   \n",
-      "903      906    102  B.103                 LIPOYLTRANSFERASE    2qht_A   \n",
-      "904      907    103  B.104      RIBOSE 5-PHOSPHATE ISOMERASE   1uj4_AA   \n",
-      "\n",
-      "    Bound form      Ligands  Classification(?)            motion_type  \\\n",
-      "0      1s20_AB  2xNAD,2xTLA             200004  coupled_domain_motion   \n",
-      "1       2eck_A      ADP,AMP             200003  coupled_domain_motion   \n",
-      "2      1sz2_AB        2xBGC             200003  coupled_domain_motion   \n",
-      "3       1lfi_A   2xCU,2xNAG             110103  coupled_domain_motion   \n",
-      "4       1n0u_A          SO1             110002  coupled_domain_motion   \n",
-      "..         ...          ...                ...                    ...   \n",
-      "900    2df8_AB        2xF1P                 10           other_motion   \n",
-      "901     3bu1_A          HSM                 10           other_motion   \n",
-      "902    2f7v_AA         2xCO                 10           other_motion   \n",
-      "903     2qhv_A          OC9                 10           other_motion   \n",
-      "904    1uj5_AA        2x5RP                 10           other_motion   \n",
-      "\n",
-      "    Free PDB Free Chains Bound PDB Bound Chains  \n",
-      "0       1nxu          AB      1s20           AB  \n",
-      "1       4ake           A      2eck            A  \n",
-      "2       1q18          AB      1sz2           AB  \n",
-      "3       1lfh           A      1lfi            A  \n",
-      "4       1n0v           D      1n0u            A  \n",
-      "..       ...         ...       ...          ...  \n",
-      "900     2dec          AB      2df8           AB  \n",
-      "901     3bu9           A      3bu1            A  \n",
-      "902     2f8h          AA      2f7v           AA  \n",
-      "903     2qht           A      2qhv            A  \n",
-      "904     1uj4          AA      1uj5           AA  \n",
-      "\n",
-      "[891 rows x 13 columns]\n"
-     ]
-    }
-   ],
-   "source": [
-    "# Split into chains\n",
-    "free_structures = structural_rearrangement_data['Free form'].str.split('_', expand=True)\n",
-    "bound_structures = structural_rearrangement_data['Bound form'].str.split('_', expand=True)\n",
-    "\n",
-    "# Add columns\n",
-    "structural_rearrangement_data['Free PDB'] = free_structures[0]\n",
-    "structural_rearrangement_data['Free Chains'] = free_structures[1]\n",
-    "structural_rearrangement_data['Bound PDB'] = bound_structures[0]\n",
-    "structural_rearrangement_data['Bound Chains'] = bound_structures[1]\n",
-    "\n",
-    "# Drop obsolete structures\n",
-    "obsolete = ['1m80', '1cmw', '1g40', '2ihi', '1hl0', '2gkq', '2glb', '2g2j', '2dpo', '2h98', '2gu9', '2bg1', '1q4o', '1il5', '3cey', '1yks']\n",
-    "\n",
-    "structural_rearrangement_data = structural_rearrangement_data.loc[~structural_rearrangement_data['Free PDB'].isin(obsolete)]\n",
-    "structural_rearrangement_data = structural_rearrangement_data.loc[~structural_rearrangement_data['Bound PDB'].isin(obsolete)]\n",
-    "\n",
-    "print(structural_rearrangement_data)\n",
-    "#structural_rearrangement_data.reset_index(inplace=True)\n",
-    "structural_rearrangement_data.to_csv('structural_rearrangement_data.csv')"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Download PDBs"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 29,
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Downloading PDB structure '1nxu'...\n",
-      "Downloading PDB structure '4ake'...\n",
-      "Downloading PDB structure '1q18'...\n",
-      "Downloading PDB structure '1lfh'...\n",
-      "Downloading PDB structure '1n0v'...\n",
-      "Downloading PDB structure '5csc'...\n",
-      "Downloading PDB structure '2p0m'...\n",
-      "Downloading PDB structure '3cze'...\n",
-      "Downloading PDB structure '2bjb'...\n",
-      "Downloading PDB structure '2ex0'...\n",
-      "Downloading PDB structure '1oen'...\n",
-      "Downloading PDB structure '2car'...\n",
-      "Downloading PDB structure '2pry'...\n",
-      "Downloading PDB structure '1d2r'...\n",
-      "Downloading PDB structure '2gg4'...\n",
-      "Downloading PDB structure '1gqz'...\n",
-      "Downloading PDB structure '1qzt'...\n",
-      "Downloading PDB structure '1pn2'...\n",
-      "Downloading PDB structure '2nrb'...\n",
-      "Downloading PDB structure '1t8p'...\n",
-      "Downloading PDB structure '1vh3'...\n",
-      "Downloading PDB structure '2gca'...\n",
-      "Downloading PDB structure '1yz5'...\n",
-      "Downloading PDB structure '1y2q'...\n",
-      "Downloading PDB structure '2e2n'...\n",
-      "Downloading PDB structure '1sjs'...\n",
-      "Downloading PDB structure '1xk7'...\n",
-      "Downloading PDB structure '2f7m'...\n",
-      "Downloading PDB structure '2znd'...\n",
-      "Downloading PDB structure '1x0a'...\n",
-      "Downloading PDB structure '1oid'...\n",
-      "Downloading PDB structure '3d8r'...\n",
-      "Downloading PDB structure '1zty'...\n",
-      "Downloading PDB structure '1z15'...\n",
-      "Downloading PDB structure '1l5t'...\n",
-      "Downloading PDB structure '2ghb'...\n",
-      "Downloading PDB structure '2uvg'...\n",
-      "Downloading PDB structure '2c00'...\n",
-      "Downloading PDB structure '1zkb'...\n",
-      "Downloading PDB structure '1ex6'...\n",
-      "Downloading PDB structure '3c6q'...\n",
-      "Downloading PDB structure '2q5r'...\n",
-      "Downloading PDB structure '1lio'...\n",
-      "Downloading PDB structure '2h98'...\n",
-      "Downloading PDB structure '1xgd'...\n",
-      "Downloading PDB structure '2brw'...\n",
-      "Downloading PDB structure '1jej'...\n",
-      "Downloading PDB structure '2cgk'...\n",
-      "Downloading PDB structure '1a48'...\n",
-      "Downloading PDB structure '2qrj'...\n",
-      "Downloading PDB structure '2ous'...\n",
-      "Downloading PDB structure '1fwl'...\n",
-      "Downloading PDB structure '1yhk'...\n",
-      "Downloading PDB structure '1eym'...\n",
-      "Downloading PDB structure '1meo'...\n",
-      "Downloading PDB structure '2q50'...\n",
-      "Downloading PDB structure '1yj4'...\n",
-      "Downloading PDB structure '2cbi'...\n",
-      "Downloading PDB structure '1sbq'...\n",
-      "Downloading PDB structure '1g7r'...\n",
-      "Downloading PDB structure '1bbw'...\n",
-      "Downloading PDB structure '1h4v'...\n",
-      "Downloading PDB structure '2olu'...\n",
-      "Downloading PDB structure '2ns7'...\n",
-      "Downloading PDB structure '1o17'...\n",
-      "Downloading PDB structure '1m80'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1z9u'...\n",
-      "Downloading PDB structure '2hni'...\n",
-      "Downloading PDB structure '1e0d'...\n",
-      "Downloading PDB structure '1ynf'...\n",
-      "Downloading PDB structure '1vgt'...\n",
-      "Downloading PDB structure '2nxc'...\n",
-      "Downloading PDB structure '1l7d'...\n",
-      "Downloading PDB structure '2gk7'...\n",
-      "Downloading PDB structure '1fmv'...\n",
-      "Downloading PDB structure '2gt1'...\n",
-      "Downloading PDB structure '1cmw'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2o1p'...\n",
-      "Downloading PDB structure '1w2f'...\n",
-      "Downloading PDB structure '2qmr'...\n",
-      "Downloading PDB structure '2fh4'...\n",
-      "Downloading PDB structure '1smt'...\n",
-      "Downloading PDB structure '1tqd'...\n",
-      "Downloading PDB structure '2pkf'...\n",
-      "Downloading PDB structure '2o5p'...\n",
-      "Downloading PDB structure '3csg'...\n",
-      "Downloading PDB structure '2gf7'...\n",
-      "Downloading PDB structure '2ec5'...\n",
-      "Downloading PDB structure '1j8t'...\n",
-      "Downloading PDB structure '1e4f'...\n",
-      "Downloading PDB structure '2ps3'...\n",
-      "Downloading PDB structure '1gu7'...\n",
-      "Downloading PDB structure '1bet'...\n",
-      "Downloading PDB structure '1r5d'...\n",
-      "Downloading PDB structure '1g40'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2hyg'...\n",
-      "Downloading PDB structure '1eut'...\n",
-      "Downloading PDB structure '1qmt'...\n",
-      "Downloading PDB structure '3eug'...\n",
-      "Downloading PDB structure '1wxx'...\n",
-      "Downloading PDB structure '1fzr'...\n",
-      "Downloading PDB structure '1ogb'...\n",
-      "Downloading PDB structure '1dpg'...\n",
-      "Downloading PDB structure '1r0s'...\n",
-      "Downloading PDB structure '2cfo'...\n",
-      "Downloading PDB structure '2i78'...\n",
-      "Downloading PDB structure '1lr9'...\n",
-      "Downloading PDB structure '1dcl'...\n",
-      "Downloading PDB structure '1jyu'...\n",
-      "Downloading PDB structure '3ezm'...\n",
-      "Downloading PDB structure '2qza'...\n",
-      "Downloading PDB structure '3c3b'...\n",
-      "Downloading PDB structure '2zc2'...\n",
-      "Downloading PDB structure '3deo'...\n",
-      "Downloading PDB structure '2v8i'...\n",
-      "Downloading PDB structure '2vj2'...\n",
-      "Downloading PDB structure '1rki'...\n",
-      "Downloading PDB structure '3b8s'...\n",
-      "Downloading PDB structure '2ddb'...\n",
-      "Downloading PDB structure '1oxs'...\n",
-      "Downloading PDB structure '2j4r'...\n",
-      "Downloading PDB structure '1uk2'...\n",
-      "Downloading PDB structure '2dpy'...\n",
-      "Downloading PDB structure '1g6y'...\n",
-      "Downloading PDB structure '2o1c'...\n",
-      "Downloading PDB structure '1g9u'...\n",
-      "Downloading PDB structure '1rif'...\n",
-      "Downloading PDB structure '2rjc'...\n",
-      "Downloading PDB structure '1uln'...\n",
-      "Downloading PDB structure '1wpo'...\n",
-      "Downloading PDB structure '2qm8'...\n",
-      "Downloading PDB structure '1wd8'...\n",
-      "Downloading PDB structure '1dg3'...\n",
-      "Downloading PDB structure '3enl'...\n",
-      "Downloading PDB structure '1vk3'...\n",
-      "Downloading PDB structure '2g67'...\n",
-      "Downloading PDB structure '3bwb'...\n",
-      "Downloading PDB structure '2cn2'...\n",
-      "Downloading PDB structure '1ywf'...\n",
-      "Downloading PDB structure '2gp7'...\n",
-      "Downloading PDB structure '1kp9'...\n",
-      "Downloading PDB structure '1sqe'...\n",
-      "Downloading PDB structure '1pa1'...\n",
-      "Downloading PDB structure '1so7'...\n",
-      "Downloading PDB structure '2de2'...\n",
-      "Downloading PDB structure '2go1'...\n",
-      "Downloading PDB structure '2e3c'...\n",
-      "Downloading PDB structure '1irm'...\n",
-      "Downloading PDB structure '2vcl'...\n",
-      "Downloading PDB structure '2btz'...\n",
-      "Downloading PDB structure '2osw'...\n",
-      "Downloading PDB structure '1x56'...\n",
-      "Downloading PDB structure '1ofp'...\n",
-      "Downloading PDB structure '2qt8'...\n",
-      "Downloading PDB structure '2q0d'...\n",
-      "Downloading PDB structure '1qme'...\n",
-      "Downloading PDB structure '2zcg'...\n",
-      "Downloading PDB structure '1gyn'...\n",
-      "Downloading PDB structure '1kn9'...\n",
-      "Downloading PDB structure '3b7y'...\n",
-      "Downloading PDB structure '2amj'...\n",
-      "Downloading PDB structure '2dka'...\n",
-      "Downloading PDB structure '2rkt'...\n",
-      "Downloading PDB structure '1fdp'...\n",
-      "Downloading PDB structure '2vxm'...\n",
-      "Downloading PDB structure '1lhp'...\n",
-      "Downloading PDB structure '1xxo'...\n",
-      "Downloading PDB structure '1ufp'...\n",
-      "Downloading PDB structure '1h6o'...\n",
-      "Downloading PDB structure '1pu5'...\n",
-      "Downloading PDB structure '1rlr'...\n",
-      "Downloading PDB structure '1pnz'...\n",
-      "Downloading PDB structure '1bs0'...\n",
-      "Downloading PDB structure '1imf'...\n",
-      "Downloading PDB structure '1sgz'...\n",
-      "Downloading PDB structure '1mss'...\n",
-      "Downloading PDB structure '1n2o'...\n",
-      "Downloading PDB structure '1h7s'...\n",
-      "Downloading PDB structure '2qpq'...\n",
-      "Downloading PDB structure '1aja'...\n",
-      "Downloading PDB structure '1zvw'...\n",
-      "Downloading PDB structure '2ywe'...\n",
-      "Downloading PDB structure '2gyy'...\n",
-      "Downloading PDB structure '2f9t'...\n",
-      "Downloading PDB structure '1k5h'...\n",
-      "Downloading PDB structure '2iyt'...\n",
-      "Downloading PDB structure '2fb9'...\n",
-      "Downloading PDB structure '1xja'...\n",
-      "Downloading PDB structure '1pzt'...\n",
-      "Downloading PDB structure '1b6b'...\n",
-      "Downloading PDB structure '1dqz'...\n",
-      "Downloading PDB structure '1kx9'...\n",
-      "Downloading PDB structure '2z1c'...\n",
-      "Downloading PDB structure '2gu9'...\n",
-      "Downloading PDB structure '1zuh'...\n",
-      "Downloading PDB structure '3seb'...\n",
-      "Downloading PDB structure '2zlb'...\n",
-      "Downloading PDB structure '3bqh'...\n",
-      "Downloading PDB structure '2f4b'...\n",
-      "Downloading PDB structure '1jfv'...\n",
-      "Downloading PDB structure '1nzu'...\n",
-      "Downloading PDB structure '1ww7'...\n",
-      "Downloading PDB structure '1kt9'...\n",
-      "Downloading PDB structure '1nxm'...\n",
-      "Downloading PDB structure '2hv6'...\n",
-      "Downloading PDB structure '2o0k'...\n",
-      "Downloading PDB structure '1bhs'...\n",
-      "Downloading PDB structure '1tib'...\n",
-      "Downloading PDB structure '1gqn'...\n",
-      "Downloading PDB structure '1vjs'...\n",
-      "Downloading PDB structure '1hz6'...\n",
-      "Downloading PDB structure '2gt2'...\n",
-      "Downloading PDB structure '2i4l'...\n",
-      "Downloading PDB structure '2og6'...\n",
-      "Downloading PDB structure '2p52'...\n",
-      "Downloading PDB structure '1l7o'...\n",
-      "Downloading PDB structure '1ey0'...\n",
-      "Downloading PDB structure '1n00'...\n",
-      "Downloading PDB structure '1bsq'...\n",
-      "Downloading PDB structure '1r1c'...\n",
-      "Downloading PDB structure '2z8n'...\n",
-      "Downloading PDB structure '1t2w'...\n",
-      "Downloading PDB structure '2vrk'...\n",
-      "Downloading PDB structure '2b7k'...\n",
-      "Downloading PDB structure '1ujm'...\n",
-      "Downloading PDB structure '2epl'...\n",
-      "Downloading PDB structure '2r4i'...\n",
-      "Downloading PDB structure '1smk'...\n",
-      "Downloading PDB structure '2rda'...\n",
-      "Downloading PDB structure '1qat'...\n",
-      "Downloading PDB structure '1wdp'...\n",
-      "Downloading PDB structure '2j24'...\n",
-      "Downloading PDB structure '3ei7'...\n",
-      "Downloading PDB structure '2zco'...\n",
-      "Downloading PDB structure '1jez'...\n",
-      "Downloading PDB structure '1x0v'...\n",
-      "Downloading PDB structure '1i6w'...\n",
-      "Downloading PDB structure '2ze4'...\n",
-      "Downloading PDB structure '2dps'...\n",
-      "Downloading PDB structure '1rn4'...\n",
-      "Downloading PDB structure '2b4v'...\n",
-      "Downloading PDB structure '2on3'...\n",
-      "Downloading PDB structure '1mqr'...\n",
-      "Downloading PDB structure '1rjf'...\n",
-      "Downloading PDB structure '2c9r'...\n",
-      "Downloading PDB structure '2bgq'...\n",
-      "Downloading PDB structure '1m22'...\n",
-      "Downloading PDB structure '2vf4'...\n",
-      "Downloading PDB structure '1fo8'...\n",
-      "Downloading PDB structure '2q18'...\n",
-      "Downloading PDB structure '1tqi'...\n",
-      "Downloading PDB structure '1jxh'...\n",
-      "Downloading PDB structure '1nsj'...\n",
-      "Downloading PDB structure '2etv'...\n",
-      "Downloading PDB structure '2bce'...\n",
-      "Downloading PDB structure '1rba'...\n",
-      "Downloading PDB structure '1s0g'...\n",
-      "Downloading PDB structure '2ihi'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2f8s'...\n",
-      "Downloading PDB structure '1goh'...\n",
-      "Downloading PDB structure '1yuy'...\n",
-      "Downloading PDB structure '2p7l'...\n",
-      "Downloading PDB structure '1m47'...\n",
-      "Downloading PDB structure '1vde'...\n",
-      "Downloading PDB structure '2qct'...\n",
-      "Downloading PDB structure '1kzh'...\n",
-      "Downloading PDB structure '3bok'...\n",
-      "Downloading PDB structure '1ymy'...\n",
-      "Downloading PDB structure '2e3m'...\n",
-      "Downloading PDB structure '1tws'...\n",
-      "Downloading PDB structure '1f8n'...\n",
-      "Downloading PDB structure '1sry'...\n",
-      "Downloading PDB structure '1jop'...\n",
-      "Downloading PDB structure '1rxt'...\n",
-      "Downloading PDB structure '1u6e'...\n",
-      "Downloading PDB structure '1xyf'...\n",
-      "Downloading PDB structure '3c8v'...\n",
-      "Downloading PDB structure '2dwq'...\n",
-      "Downloading PDB structure '2orx'...\n",
-      "Downloading PDB structure '1lyy'...\n",
-      "Downloading PDB structure '3e59'...\n",
-      "Downloading PDB structure '1zy4'...\n",
-      "Downloading PDB structure '2dh3'...\n",
-      "Downloading PDB structure '1jde'...\n",
-      "Downloading PDB structure '2ofj'...\n",
-      "Downloading PDB structure '2v6f'...\n",
-      "Downloading PDB structure '2bg1'...\n",
-      "Downloading PDB structure '1mw9'...\n",
-      "Downloading PDB structure '1tr9'...\n",
-      "Downloading PDB structure '2imo'...\n",
-      "Downloading PDB structure '1qzq'...\n",
-      "Downloading PDB structure '2zig'...\n",
-      "Downloading PDB structure '2dul'...\n",
-      "Downloading PDB structure '1uzq'...\n",
-      "Downloading PDB structure '2fjy'...\n",
-      "Downloading PDB structure '2f6p'...\n",
-      "Downloading PDB structure '3bgu'...\n",
-      "Downloading PDB structure '2dke'...\n",
-      "Downloading PDB structure '2qfd'...\n",
-      "Downloading PDB structure '2ci3'...\n",
-      "Downloading PDB structure '2jdw'...\n",
-      "Downloading PDB structure '1ivn'...\n",
-      "Downloading PDB structure '1pvw'...\n",
-      "Downloading PDB structure '2pqi'...\n",
-      "Downloading PDB structure '1xe8'...\n",
-      "Downloading PDB structure '2e0k'...\n",
-      "Downloading PDB structure '1a3h'...\n",
-      "Downloading PDB structure '2znb'...\n",
-      "Downloading PDB structure '2pgx'...\n",
-      "Downloading PDB structure '1ds0'...\n",
-      "Downloading PDB structure '1q4o'...\n",
-      "Downloading PDB structure '2fss'...\n",
-      "Downloading PDB structure '1t2u'...\n",
-      "Downloading PDB structure '3c2h'...\n",
-      "Downloading PDB structure '2cz9'...\n",
-      "Downloading PDB structure '2nrt'...\n",
-      "Downloading PDB structure '1br8'...\n",
-      "Downloading PDB structure '1h8n'...\n",
-      "Downloading PDB structure '1h3i'...\n",
-      "Downloading PDB structure '1hka'...\n",
-      "Downloading PDB structure '2f1w'...\n",
-      "Downloading PDB structure '2fz6'...\n",
-      "Downloading PDB structure '1q31'...\n",
-      "Downloading PDB structure '1l0w'...\n",
-      "Downloading PDB structure '1o7v'...\n",
-      "Downloading PDB structure '1pz9'...\n",
-      "Downloading PDB structure '2pyq'...\n",
-      "Downloading PDB structure '1k4k'...\n",
-      "Downloading PDB structure '2q7u'...\n",
-      "Downloading PDB structure '1vsm'...\n",
-      "Downloading PDB structure '1xti'...\n",
-      "Downloading PDB structure '1upl'...\n",
-      "Downloading PDB structure '1a8d'...\n",
-      "Downloading PDB structure '1yjl'...\n",
-      "Downloading PDB structure '2it9'...\n",
-      "Downloading PDB structure '1p92'...\n",
-      "Downloading PDB structure '2gol'...\n",
-      "Downloading PDB structure '3d97'...\n",
-      "Downloading PDB structure '2z7a'...\n",
-      "Downloading PDB structure '1m0z'...\n",
-      "Downloading PDB structure '1x2g'...\n",
-      "Downloading PDB structure '2fsj'...\n",
-      "Downloading PDB structure '1e8y'...\n",
-      "Downloading PDB structure '1ebu'...\n",
-      "Downloading PDB structure '2jkf'...\n",
-      "Downloading PDB structure '1n4d'...\n",
-      "Downloading PDB structure '2gzr'...\n",
-      "Downloading PDB structure '1thf'...\n",
-      "Downloading PDB structure '2oej'...\n",
-      "Downloading PDB structure '2jep'...\n",
-      "Downloading PDB structure '2ik9'...\n",
-      "Downloading PDB structure '2izp'...\n",
-      "Downloading PDB structure '1k0m'...\n",
-      "Downloading PDB structure '2uyr'...\n",
-      "Downloading PDB structure '2plf'...\n",
-      "Downloading PDB structure '2yx6'...\n",
-      "Downloading PDB structure '2rck'...\n",
-      "Downloading PDB structure '3c95'...\n",
-      "Downloading PDB structure '3d5u'...\n",
-      "Downloading PDB structure '2oew'...\n",
-      "Downloading PDB structure '2vns'...\n",
-      "Downloading PDB structure '1od4'...\n",
-      "Downloading PDB structure '1h7b'...\n",
-      "Downloading PDB structure '2qo2'...\n",
-      "Downloading PDB structure '1fcq'...\n",
-      "Downloading PDB structure '1g6l'...\n",
-      "Downloading PDB structure '1pbg'...\n",
-      "Downloading PDB structure '1pgs'...\n",
-      "Downloading PDB structure '1dkl'...\n",
-      "Downloading PDB structure '2pgy'...\n",
-      "Downloading PDB structure '2veg'...\n",
-      "Downloading PDB structure '1rpl'...\n",
-      "Downloading PDB structure '2znv'...\n",
-      "Downloading PDB structure '2ajg'...\n",
-      "Downloading PDB structure '1gxr'...\n",
-      "Downloading PDB structure '1f1s'...\n",
-      "Downloading PDB structure '2d5l'...\n",
-      "Downloading PDB structure '1tvl'...\n",
-      "Downloading PDB structure '3cgz'...\n",
-      "Downloading PDB structure '2qj3'...\n",
-      "Downloading PDB structure '2obl'...\n",
-      "Downloading PDB structure '1uoc'...\n",
-      "Downloading PDB structure '2ddm'...\n",
-      "Downloading PDB structure '2lkf'...\n",
-      "Downloading PDB structure '2qvl'...\n",
-      "Downloading PDB structure '2hp3'...\n",
-      "Downloading PDB structure '2i2w'...\n",
-      "Downloading PDB structure '2d2e'...\n",
-      "Downloading PDB structure '1w16'...\n",
-      "Downloading PDB structure '1obp'...\n",
-      "Downloading PDB structure '1na5'...\n",
-      "Downloading PDB structure '3wrp'...\n",
-      "Downloading PDB structure '2f08'...\n",
-      "Downloading PDB structure '2quk'...\n",
-      "Downloading PDB structure '2acf'...\n",
-      "Downloading PDB structure '2i7h'...\n",
-      "Downloading PDB structure '1ozt'...\n",
-      "Downloading PDB structure '1uu0'...\n",
-      "Downloading PDB structure '1beo'...\n",
-      "Downloading PDB structure '2sbt'...\n",
-      "Downloading PDB structure '1hxj'...\n",
-      "Downloading PDB structure '1gy0'...\n",
-      "Downloading PDB structure '1fqn'...\n",
-      "Downloading PDB structure '2qvk'...\n",
-      "Downloading PDB structure '1x8e'...\n",
-      "Downloading PDB structure '2qbv'...\n",
-      "Downloading PDB structure '2qzp'...\n",
-      "Downloading PDB structure '2c7i'...\n",
-      "Downloading PDB structure '2dg0'...\n",
-      "Downloading PDB structure '2zf3'...\n",
-      "Downloading PDB structure '2box'...\n",
-      "Downloading PDB structure '2av8'...\n",
-      "Downloading PDB structure '1jiq'...\n",
-      "Downloading PDB structure '1psr'...\n",
-      "Downloading PDB structure '2rca'...\n",
-      "Downloading PDB structure '2yrf'...\n",
-      "Downloading PDB structure '1iun'...\n",
-      "Downloading PDB structure '1f2v'...\n",
-      "Downloading PDB structure '2o70'...\n",
-      "Downloading PDB structure '2vb3'...\n",
-      "Downloading PDB structure '1avk'...\n",
-      "Downloading PDB structure '2vw0'...\n",
-      "Downloading PDB structure '1evq'...\n",
-      "Downloading PDB structure '2eaw'...\n",
-      "Downloading PDB structure '1mzl'...\n",
-      "Downloading PDB structure '1o9n'...\n",
-      "Downloading PDB structure '1jx1'...\n",
-      "Downloading PDB structure '2e7i'...\n",
-      "Downloading PDB structure '2oyc'...\n",
-      "Downloading PDB structure '1mdf'...\n",
-      "Downloading PDB structure '1w5r'...\n",
-      "Downloading PDB structure '2zr3'...\n",
-      "Downloading PDB structure '2iqy'...\n",
-      "Downloading PDB structure '2bkb'...\n",
-      "Downloading PDB structure '1vf8'...\n",
-      "Downloading PDB structure '1fhm'...\n",
-      "Downloading PDB structure '1usl'...\n",
-      "Downloading PDB structure '2fyo'...\n",
-      "Downloading PDB structure '2fp8'...\n",
-      "Downloading PDB structure '2g6v'...\n",
-      "Downloading PDB structure '3chi'...\n",
-      "Downloading PDB structure '2byw'...\n",
-      "Downloading PDB structure '2aej'...\n",
-      "Downloading PDB structure '1wac'...\n",
-      "Downloading PDB structure '1ncz'...\n",
-      "Downloading PDB structure '1arl'...\n",
-      "Downloading PDB structure '2f3n'...\n",
-      "Downloading PDB structure '1juk'...\n",
-      "Downloading PDB structure '2bw0'...\n",
-      "Downloading PDB structure '2yyv'...\n",
-      "Downloading PDB structure '2hkl'...\n",
-      "Downloading PDB structure '2oam'...\n",
-      "Downloading PDB structure '1kko'...\n",
-      "Downloading PDB structure '2o6f'...\n",
-      "Downloading PDB structure '1bt2'...\n",
-      "Downloading PDB structure '1lkp'...\n",
-      "Downloading PDB structure '1iad'...\n",
-      "Downloading PDB structure '2p76'...\n",
-      "Downloading PDB structure '2yu2'...\n",
-      "Downloading PDB structure '1l7r'...\n",
-      "Downloading PDB structure '2vzo'...\n",
-      "Downloading PDB structure '1dcd'...\n",
-      "Downloading PDB structure '2e3j'...\n",
-      "Downloading PDB structure '2qev'...\n",
-      "Downloading PDB structure '2vfw'...\n",
-      "Downloading PDB structure '1mkb'...\n",
-      "Downloading PDB structure '1fa8'...\n",
-      "Downloading PDB structure '3c6y'...\n",
-      "Downloading PDB structure '1qam'...\n",
-      "Downloading PDB structure '2veo'...\n",
-      "Downloading PDB structure '2i49'...\n",
-      "Downloading PDB structure '1tee'...\n",
-      "Downloading PDB structure '1hzt'...\n",
-      "Downloading PDB structure '1hl0'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1snz'...\n",
-      "Downloading PDB structure '1iiw'...\n",
-      "Downloading PDB structure '2b3l'...\n",
-      "Downloading PDB structure '2v28'...\n",
-      "Downloading PDB structure '1esc'...\n",
-      "Downloading PDB structure '2cwc'...\n",
-      "Downloading PDB structure '2a0k'...\n",
-      "Downloading PDB structure '2iw2'...\n",
-      "Downloading PDB structure '1ilw'...\n",
-      "Downloading PDB structure '3bbe'...\n",
-      "Downloading PDB structure '1l5n'...\n",
-      "Downloading PDB structure '3bf7'...\n",
-      "Downloading PDB structure '1tzb'...\n",
-      "Downloading PDB structure '1oi2'...\n",
-      "Downloading PDB structure '2dec'...\n",
-      "Downloading PDB structure '3bu9'...\n",
-      "Downloading PDB structure '2f8h'...\n",
-      "Downloading PDB structure '2qht'...\n",
-      "Downloading PDB structure '1uj4'...\n",
-      "Downloading PDB structure '1m14'...\n",
-      "Downloading PDB structure '1mix'...\n",
-      "Downloading PDB structure '1jrk'...\n",
-      "Downloading PDB structure '1w59'...\n",
-      "Downloading PDB structure '1g24'...\n",
-      "Downloading PDB structure '1vz0'...\n",
-      "Downloading PDB structure '2f6l'...\n",
-      "Downloading PDB structure '2idh'...\n",
-      "Downloading PDB structure '3dj1'...\n",
-      "Downloading PDB structure '2hhl'...\n",
-      "Downloading PDB structure '1w90'...\n",
-      "Downloading PDB structure '2j3p'...\n",
-      "Downloading PDB structure '2cua'...\n",
-      "Downloading PDB structure '1u4r'...\n",
-      "Downloading PDB structure '1i4s'...\n",
-      "Downloading PDB structure '1sza'...\n",
-      "Downloading PDB structure '1mmi'...\n",
-      "Downloading PDB structure '1jqq'...\n",
-      "Downloading PDB structure '1gaj'...\n",
-      "Downloading PDB structure '1gnu'...\n",
-      "Downloading PDB structure '5gal'...\n",
-      "Downloading PDB structure '1vll'...\n",
-      "Downloading PDB structure '3bzt'...\n",
-      "Downloading PDB structure '2q04'...\n",
-      "Downloading PDB structure '1il5'...\n",
-      "Downloading PDB structure '1wn2'...\n",
-      "Downloading PDB structure '2gkq'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2d59'...\n",
-      "Downloading PDB structure '1wns'...\n",
-      "Downloading PDB structure '2fcj'...\n",
-      "Downloading PDB structure '1uuj'...\n",
-      "Downloading PDB structure '2hts'...\n",
-      "Downloading PDB structure '1w1h'...\n",
-      "Downloading PDB structure '1yes'...\n",
-      "Downloading PDB structure '2h74'...\n",
-      "Downloading PDB structure '2c3g'...\n",
-      "Downloading PDB structure '2ok3'...\n",
-      "Downloading PDB structure '1m6t'...\n",
-      "Downloading PDB structure '1orb'...\n",
-      "Downloading PDB structure '1u8t'...\n",
-      "Downloading PDB structure '2bl7'...\n",
-      "Downloading PDB structure '2ccq'...\n",
-      "Downloading PDB structure '2pe8'...\n",
-      "Downloading PDB structure '1p9u'...\n",
-      "Downloading PDB structure '2z42'...\n",
-      "Downloading PDB structure '1nk1'...\n",
-      "Downloading PDB structure '2d2q'...\n",
-      "Downloading PDB structure '1l0h'...\n",
-      "Downloading PDB structure '1xze'...\n",
-      "Downloading PDB structure '2h68'...\n",
-      "Downloading PDB structure '2bis'...\n",
-      "Downloading PDB structure '1f46'...\n",
-      "Downloading PDB structure '2c3v'...\n",
-      "Downloading PDB structure '1i3c'...\n",
-      "Downloading PDB structure '1z52'...\n",
-      "Downloading PDB structure '1fil'...\n",
-      "Downloading PDB structure '1gnd'...\n",
-      "Downloading PDB structure '1yft'...\n",
-      "Downloading PDB structure '1ox8'...\n",
-      "Downloading PDB structure '2ecr'...\n",
-      "Downloading PDB structure '1r6k'...\n",
-      "Downloading PDB structure '1p5q'...\n",
-      "Downloading PDB structure '1jwf'...\n",
-      "Downloading PDB structure '2gvl'...\n",
-      "Downloading PDB structure '1k9x'...\n",
-      "Downloading PDB structure '2dcz'...\n",
-      "Downloading PDB structure '1xqv'...\n",
-      "Downloading PDB structure '1slc'...\n",
-      "Downloading PDB structure '2fs5'...\n",
-      "Downloading PDB structure '1yz4'...\n",
-      "Downloading PDB structure '1lwb'...\n",
-      "Downloading PDB structure '2d1z'...\n",
-      "Downloading PDB structure '2ckd'...\n",
-      "Downloading PDB structure '2hvf'...\n",
-      "Downloading PDB structure '1pp3'...\n",
-      "Downloading PDB structure '2bjw'...\n",
-      "Downloading PDB structure '2gty'...\n",
-      "Downloading PDB structure '2q5x'...\n",
-      "Downloading PDB structure '1knl'...\n",
-      "Downloading PDB structure '1lxt'...\n",
-      "Downloading PDB structure '2rad'...\n",
-      "Downloading PDB structure '1oee'...\n",
-      "Downloading PDB structure '1t7n'...\n",
-      "Downloading PDB structure '3c8n'...\n",
-      "Downloading PDB structure '1vhr'...\n",
-      "Downloading PDB structure '2zg2'...\n",
-      "Downloading PDB structure '2gxu'...\n",
-      "Downloading PDB structure '1gcu'...\n",
-      "Downloading PDB structure '1qim'...\n",
-      "Downloading PDB structure '4kiv'...\n",
-      "Downloading PDB structure '3e2j'...\n",
-      "Downloading PDB structure '1gxm'...\n",
-      "Downloading PDB structure '2cbm'...\n",
-      "Downloading PDB structure '2if8'...\n",
-      "Downloading PDB structure '2z2n'...\n",
-      "Downloading PDB structure '1ayf'...\n",
-      "Downloading PDB structure '1fbt'...\n",
-      "Downloading PDB structure '1cz3'...\n",
-      "Downloading PDB structure '1x2j'...\n",
-      "Downloading PDB structure '3dwh'...\n",
-      "Downloading PDB structure '1qpo'...\n",
-      "Downloading PDB structure '2awx'...\n",
-      "Downloading PDB structure '1wgc'...\n",
-      "Downloading PDB structure '2a6c'...\n",
-      "Downloading PDB structure '1b6w'...\n",
-      "Downloading PDB structure '1sqg'...\n",
-      "Downloading PDB structure '1u24'...\n",
-      "Downloading PDB structure '1glh'...\n",
-      "Downloading PDB structure '2huz'...\n",
-      "Downloading PDB structure '1f14'...\n",
-      "Downloading PDB structure '2iru'...\n",
-      "Downloading PDB structure '2h1v'...\n",
-      "Downloading PDB structure '1ew4'...\n",
-      "Downloading PDB structure '1jax'...\n",
-      "Downloading PDB structure '1wcv'...\n",
-      "Downloading PDB structure '1w79'...\n",
-      "Downloading PDB structure '1nh1'...\n",
-      "Downloading PDB structure '3cb6'...\n",
-      "Downloading PDB structure '1gyj'...\n",
-      "Downloading PDB structure '1zgr'...\n",
-      "Downloading PDB structure '1kpc'...\n",
-      "Downloading PDB structure '2byd'...\n",
-      "Downloading PDB structure '1cmb'...\n",
-      "Downloading PDB structure '1h09'...\n",
-      "Downloading PDB structure '3cyp'...\n",
-      "Downloading PDB structure '2nyh'...\n",
-      "Downloading PDB structure '2jfd'...\n",
-      "Downloading PDB structure '1ri5'...\n",
-      "Downloading PDB structure '2ii2'...\n",
-      "Downloading PDB structure '2i6i'...\n",
-      "Downloading PDB structure '1tw7'...\n",
-      "Downloading PDB structure '2atb'...\n",
-      "Downloading PDB structure '1n57'...\n",
-      "Downloading PDB structure '1qsa'...\n",
-      "Downloading PDB structure '1xnh'...\n",
-      "Downloading PDB structure '3cey'...\n",
-      "Downloading PDB structure '2obr'...\n",
-      "Downloading PDB structure '1ppn'...\n",
-      "Downloading PDB structure '1tje'...\n",
-      "Downloading PDB structure '1ah6'...\n",
-      "Downloading PDB structure '2eak'...\n",
-      "Downloading PDB structure '1wny'...\n",
-      "Downloading PDB structure '1f6y'...\n",
-      "Downloading PDB structure '1na8'...\n",
-      "Downloading PDB structure '1ayx'...\n",
-      "Downloading PDB structure '1h8u'...\n",
-      "Downloading PDB structure '1bk7'...\n",
-      "Downloading PDB structure '1k75'...\n",
-      "Downloading PDB structure '2r7f'...\n",
-      "Downloading PDB structure '1c3f'...\n",
-      "Downloading PDB structure '2raf'...\n",
-      "Downloading PDB structure '1w28'...\n",
-      "Downloading PDB structure '1r7i'...\n",
-      "Downloading PDB structure '2hzb'...\n",
-      "Downloading PDB structure '2vfx'...\n",
-      "Downloading PDB structure '3d9i'...\n",
-      "Downloading PDB structure '1j85'...\n",
-      "Downloading PDB structure '4ptd'...\n",
-      "Downloading PDB structure '1twd'...\n",
-      "Downloading PDB structure '1bdj'...\n",
-      "Downloading PDB structure '2f5g'...\n",
-      "Downloading PDB structure '1qjv'...\n",
-      "Downloading PDB structure '2qgq'...\n",
-      "Downloading PDB structure '2vfy'...\n",
-      "Downloading PDB structure '1ww8'...\n",
-      "Downloading PDB structure '3c8h'...\n",
-      "Downloading PDB structure '1r6j'...\n",
-      "Downloading PDB structure '1agj'...\n",
-      "Downloading PDB structure '1v8q'...\n",
-      "Downloading PDB structure '2d05'...\n",
-      "Downloading PDB structure '2r88'...\n",
-      "Downloading PDB structure '2eh1'...\n",
-      "Downloading PDB structure '1gy7'...\n",
-      "Downloading PDB structure '1l8f'...\n",
-      "Downloading PDB structure '2fao'...\n",
-      "Downloading PDB structure '1e9n'...\n",
-      "Downloading PDB structure '4mat'...\n",
-      "Downloading PDB structure '2j16'...\n",
-      "Downloading PDB structure '2hqq'...\n",
-      "Downloading PDB structure '1qj9'...\n",
-      "Downloading PDB structure '1ohd'...\n",
-      "Downloading PDB structure '2fbt'...\n",
-      "Downloading PDB structure '1vz2'...\n",
-      "Downloading PDB structure '3db4'...\n",
-      "Downloading PDB structure '1czt'...\n",
-      "Downloading PDB structure '2rem'...\n",
-      "Downloading PDB structure '1nl3'...\n",
-      "Downloading PDB structure '3c1z'...\n",
-      "Downloading PDB structure '1uyp'...\n",
-      "Downloading PDB structure '1wtj'...\n",
-      "Downloading PDB structure '1xxl'...\n",
-      "Downloading PDB structure '3bi9'...\n",
-      "Downloading PDB structure '1cqz'...\n",
-      "Downloading PDB structure '2hy7'...\n",
-      "Downloading PDB structure '2d0a'...\n",
-      "Downloading PDB structure '2uy2'...\n",
-      "Downloading PDB structure '1uc8'...\n",
-      "Downloading PDB structure '3sqc'...\n",
-      "Downloading PDB structure '2glb'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2pfl'...\n",
-      "Downloading PDB structure '2paw'...\n",
-      "Downloading PDB structure '2q4o'...\n",
-      "Downloading PDB structure '1lf6'...\n",
-      "Downloading PDB structure '1fe4'...\n",
-      "Downloading PDB structure '2ree'...\n",
-      "Downloading PDB structure '2q6z'...\n",
-      "Downloading PDB structure '2egt'...\n",
-      "Downloading PDB structure '1ut9'...\n",
-      "Downloading PDB structure '2gwm'...\n",
-      "Downloading PDB structure '1i7a'...\n",
-      "Downloading PDB structure '1qyo'...\n",
-      "Downloading PDB structure '2f1v'...\n",
-      "Downloading PDB structure '2bkn'...\n",
-      "Downloading PDB structure '1ogm'...\n",
-      "Downloading PDB structure '1f1m'...\n",
-      "Downloading PDB structure '2e4p'...\n",
-      "Downloading PDB structure '1ebb'...\n",
-      "Downloading PDB structure '1o9z'...\n",
-      "Downloading PDB structure '1l0x'...\n",
-      "Downloading PDB structure '2jhj'...\n",
-      "Downloading PDB structure '2cck'...\n",
-      "Downloading PDB structure '3crm'...\n",
-      "Downloading PDB structure '1plu'...\n",
-      "Downloading PDB structure '3eo4'...\n",
-      "Downloading PDB structure '1ll3'...\n",
-      "Downloading PDB structure '1na3'...\n",
-      "Downloading PDB structure '1ltu'...\n",
-      "Downloading PDB structure '3d59'...\n",
-      "Downloading PDB structure '1c3p'...\n",
-      "Downloading PDB structure '1qba'...\n",
-      "Downloading PDB structure '1l7j'...\n",
-      "Downloading PDB structure '2hzr'...\n",
-      "Downloading PDB structure '2e1y'...\n",
-      "Downloading PDB structure '1eg3'...\n",
-      "Downloading PDB structure '2d2r'...\n",
-      "Downloading PDB structure '1bia'...\n",
-      "Downloading PDB structure '2jcp'...\n",
-      "Downloading PDB structure '1b73'...\n",
-      "Downloading PDB structure '1va0'...\n",
-      "Downloading PDB structure '2fv0'...\n",
-      "Downloading PDB structure '1nw8'...\n",
-      "Downloading PDB structure '3b9n'...\n",
-      "Downloading PDB structure '1sgk'...\n",
-      "Downloading PDB structure '1v43'...\n",
-      "Downloading PDB structure '1dqg'...\n",
-      "Downloading PDB structure '2g2j'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2ghr'...\n",
-      "Downloading PDB structure '1xix'...\n",
-      "Downloading PDB structure '2v3j'...\n",
-      "Downloading PDB structure '1yks'...\n",
-      "Downloading PDB structure '1h9s'...\n",
-      "Downloading PDB structure '1edz'...\n",
-      "Downloading PDB structure '2hbj'...\n",
-      "Downloading PDB structure '2j0a'...\n",
-      "Downloading PDB structure '2vx4'...\n",
-      "Downloading PDB structure '3cxu'...\n",
-      "Downloading PDB structure '2g0a'...\n",
-      "Downloading PDB structure '1ty0'...\n",
-      "Downloading PDB structure '1cem'...\n",
-      "Downloading PDB structure '2jfu'...\n",
-      "Downloading PDB structure '1zs7'...\n",
-      "Downloading PDB structure '1kuf'...\n",
-      "Downloading PDB structure '1mpg'...\n",
-      "Downloading PDB structure '1q6h'...\n",
-      "Downloading PDB structure '2yvn'...\n",
-      "Downloading PDB structure '2p0f'...\n",
-      "Downloading PDB structure '3cj1'...\n",
-      "Downloading PDB structure '2bvy'...\n",
-      "Downloading PDB structure '2cb9'...\n",
-      "Downloading PDB structure '2hkn'...\n",
-      "Downloading PDB structure '1w17'...\n",
-      "Downloading PDB structure '1lbq'...\n",
-      "Downloading PDB structure '1wxd'...\n",
-      "Downloading PDB structure '1w9s'...\n",
-      "Downloading PDB structure '153l'...\n",
-      "Downloading PDB structure '2jh1'...\n",
-      "Downloading PDB structure '2e1u'...\n",
-      "Downloading PDB structure '1yd3'...\n",
-      "Downloading PDB structure '1tf5'...\n",
-      "Downloading PDB structure '2ciq'...\n",
-      "Downloading PDB structure '2pgd'...\n",
-      "Downloading PDB structure '1xw3'...\n",
-      "Downloading PDB structure '3csr'...\n",
-      "Downloading PDB structure '1smn'...\n",
-      "Downloading PDB structure '2dpo'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1obs'...\n",
-      "Downloading PDB structure '1wos'...\n",
-      "Downloading PDB structure '2nsg'...\n",
-      "Downloading PDB structure '1auo'...\n",
-      "Downloading PDB structure '2r57'...\n",
-      "Downloading PDB structure '1jly'...\n",
-      "Downloading PDB structure '1i9y'...\n",
-      "Downloading PDB structure '2fma'...\n",
-      "Downloading PDB structure '2r60'...\n",
-      "Downloading PDB structure '1g5r'...\n",
-      "Downloading PDB structure '1jsy'...\n",
-      "Downloading PDB structure '2r11'...\n",
-      "Downloading PDB structure '2g7e'...\n",
-      "Downloading PDB structure '1j23'...\n",
-      "Downloading PDB structure '2o4u'...\n",
-      "Downloading PDB structure '2vl3'...\n",
-      "Downloading PDB structure '3byl'...\n",
-      "Downloading PDB structure '1yqg'...\n",
-      "Downloading PDB structure '2c4k'...\n",
-      "Downloading PDB structure '2qtf'...\n",
-      "Downloading PDB structure '3eua'...\n",
-      "Downloading PDB structure '1hf8'...\n",
-      "Downloading PDB structure '3c7m'...\n",
-      "Downloading PDB structure '2q22'...\n",
-      "Downloading PDB structure '1g0z'...\n",
-      "Downloading PDB structure '2qb0'...\n",
-      "Downloading PDB structure '1s20'...\n",
-      "Downloading PDB structure '2eck'...\n",
-      "Downloading PDB structure '1sz2'...\n",
-      "Downloading PDB structure '1lfi'...\n",
-      "Downloading PDB structure '1n0u'...\n",
-      "Downloading PDB structure '6cts'...\n",
-      "Downloading PDB structure '3czk'...\n",
-      "Downloading PDB structure '2o0d'...\n",
-      "Downloading PDB structure '2ihz'...\n",
-      "Downloading PDB structure '2olr'...\n",
-      "Downloading PDB structure '2j4e'...\n",
-      "Downloading PDB structure '2prz'...\n",
-      "Downloading PDB structure '1m83'...\n",
-      "Downloading PDB structure '2pqc'...\n",
-      "Downloading PDB structure '2gke'...\n",
-      "Downloading PDB structure '2af3'...\n",
-      "Downloading PDB structure '1pn4'...\n",
-      "Downloading PDB structure '1o9l'...\n",
-      "Downloading PDB structure '2h4z'...\n",
-      "Downloading PDB structure '1jbw'...\n",
-      "Downloading PDB structure '1ywt'...\n",
-      "Downloading PDB structure '2hl0'...\n",
-      "Downloading PDB structure '2e2o'...\n",
-      "Downloading PDB structure '1pb1'...\n",
-      "Downloading PDB structure '1xvt'...\n",
-      "Downloading PDB structure '2f8z'...\n",
-      "Downloading PDB structure '2zn9'...\n",
-      "Downloading PDB structure '1vbi'...\n",
-      "Downloading PDB structure '1ho5'...\n",
-      "Downloading PDB structure '3d8n'...\n",
-      "Downloading PDB structure '1zu0'...\n",
-      "Downloading PDB structure '1z17'...\n",
-      "Downloading PDB structure '1lct'...\n",
-      "Downloading PDB structure '2gha'...\n",
-      "Downloading PDB structure '2uvi'...\n",
-      "Downloading PDB structure '2vqd'...\n",
-      "Downloading PDB structure '1jvy'...\n",
-      "Downloading PDB structure '1gky'...\n",
-      "Downloading PDB structure '2jg1'...\n",
-      "Downloading PDB structure '1lii'...\n",
-      "Downloading PDB structure '2h9q'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1ef3'...\n",
-      "Downloading PDB structure '1ojp'...\n",
-      "Downloading PDB structure '1qkj'...\n",
-      "Downloading PDB structure '2uyt'...\n",
-      "Downloading PDB structure '2cnq'...\n",
-      "Downloading PDB structure '2qrl'...\n",
-      "Downloading PDB structure '2ouu'...\n",
-      "Downloading PDB structure '1h72'...\n",
-      "Downloading PDB structure '1yhm'...\n",
-      "Downloading PDB structure '1j4r'...\n",
-      "Downloading PDB structure '1rby'...\n",
-      "Downloading PDB structure '2gcg'...\n",
-      "Downloading PDB structure '1yyr'...\n",
-      "Downloading PDB structure '2j62'...\n",
-      "Downloading PDB structure '1u3g'...\n",
-      "Downloading PDB structure '1g7t'...\n",
-      "Downloading PDB structure '1bbu'...\n",
-      "Downloading PDB structure '1ady'...\n",
-      "Downloading PDB structure '2olv'...\n",
-      "Downloading PDB structure '2ns8'...\n",
-      "Downloading PDB structure '1zxy'...\n",
-      "Downloading PDB structure '1bg0'...\n",
-      "Downloading PDB structure '1s7n'...\n",
-      "Downloading PDB structure '2dth'...\n",
-      "Downloading PDB structure '1eeh'...\n",
-      "Downloading PDB structure '1ynh'...\n",
-      "Downloading PDB structure '1i52'...\n",
-      "Downloading PDB structure '2nxe'...\n",
-      "Downloading PDB structure '1l7e'...\n",
-      "Downloading PDB structure '2gk6'...\n",
-      "Downloading PDB structure '1w9j'...\n",
-      "Downloading PDB structure '2h1f'...\n",
-      "Downloading PDB structure '1taq'...\n",
-      "Downloading PDB structure '2hhp'...\n",
-      "Downloading PDB structure '1w2d'...\n",
-      "Downloading PDB structure '2z5k'...\n",
-      "Downloading PDB structure '1p8x'...\n",
-      "Downloading PDB structure '1r22'...\n",
-      "Downloading PDB structure '1tq6'...\n",
-      "Downloading PDB structure '2pkn'...\n",
-      "Downloading PDB structure '2iah'...\n",
-      "Downloading PDB structure '3csb'...\n",
-      "Downloading PDB structure '2gfa'...\n",
-      "Downloading PDB structure '2ebf'...\n",
-      "Downloading PDB structure '1mmt'...\n",
-      "Downloading PDB structure '1e4g'...\n",
-      "Downloading PDB structure '2ps0'...\n",
-      "Downloading PDB structure '1guf'...\n",
-      "Downloading PDB structure '1btg'...\n",
-      "Downloading PDB structure '1tq9'...\n",
-      "Downloading PDB structure '1rid'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2f5f'...\n",
-      "Downloading PDB structure '1w8n'...\n",
-      "Downloading PDB structure '1dyt'...\n",
-      "Downloading PDB structure '1flz'...\n",
-      "Downloading PDB structure '2cww'...\n",
-      "Downloading PDB structure '1m0d'...\n",
-      "Downloading PDB structure '1w1y'...\n",
-      "Downloading PDB structure '2dpg'...\n",
-      "Downloading PDB structure '1r15'...\n",
-      "Downloading PDB structure '1u8e'...\n",
-      "Downloading PDB structure '1lr8'...\n",
-      "Downloading PDB structure '1mcs'...\n",
-      "Downloading PDB structure '1jyr'...\n",
-      "Downloading PDB structure '1l5b'...\n",
-      "Downloading PDB structure '2qyu'...\n",
-      "Downloading PDB structure '2zgv'...\n",
-      "Downloading PDB structure '3dep'...\n",
-      "Downloading PDB structure '2v8j'...\n",
-      "Downloading PDB structure '3b9d'...\n",
-      "Downloading PDB structure '2epf'...\n",
-      "Downloading PDB structure '1oxu'...\n",
-      "Downloading PDB structure '1t6c'...\n",
-      "Downloading PDB structure '2z3c'...\n",
-      "Downloading PDB structure '1jzr'...\n",
-      "Downloading PDB structure '1jl5'...\n",
-      "Downloading PDB structure '2rhu'...\n",
-      "Downloading PDB structure '1uha'...\n",
-      "Downloading PDB structure '1njt'...\n",
-      "Downloading PDB structure '2qm7'...\n",
-      "Downloading PDB structure '1wd9'...\n",
-      "Downloading PDB structure '1f5n'...\n",
-      "Downloading PDB structure '2one'...\n",
-      "Downloading PDB structure '2hs4'...\n",
-      "Downloading PDB structure '2g25'...\n",
-      "Downloading PDB structure '3bwc'...\n",
-      "Downloading PDB structure '2cn3'...\n",
-      "Downloading PDB structure '2oz5'...\n",
-      "Downloading PDB structure '2gpu'...\n",
-      "Downloading PDB structure '1kph'...\n",
-      "Downloading PDB structure '2zdp'...\n",
-      "Downloading PDB structure '1t48'...\n",
-      "Downloading PDB structure '1vcu'...\n",
-      "Downloading PDB structure '2de3'...\n",
-      "Downloading PDB structure '2nad'...\n",
-      "Downloading PDB structure '2zim'...\n",
-      "Downloading PDB structure '2dy5'...\n",
-      "Downloading PDB structure '2vck'...\n",
-      "Downloading PDB structure '2bu2'...\n",
-      "Downloading PDB structure '2osx'...\n",
-      "Downloading PDB structure '1x55'...\n",
-      "Downloading PDB structure '1of6'...\n",
-      "Downloading PDB structure '3dwr'...\n",
-      "Downloading PDB structure '2q0e'...\n",
-      "Downloading PDB structure '1pyy'...\n",
-      "Downloading PDB structure '2za1'...\n",
-      "Downloading PDB structure '1zen'...\n",
-      "Downloading PDB structure '1b12'...\n",
-      "Downloading PDB structure '2b3d'...\n",
-      "Downloading PDB structure '2dkc'...\n",
-      "Downloading PDB structure '2rkv'...\n",
-      "Downloading PDB structure '1bio'...\n",
-      "Downloading PDB structure '2jcj'...\n",
-      "Downloading PDB structure '1rft'...\n",
-      "Downloading PDB structure '2aq6'...\n",
-      "Downloading PDB structure '2eb8'...\n",
-      "Downloading PDB structure '3bqo'...\n",
-      "Downloading PDB structure '2ag4'...\n",
-      "Downloading PDB structure '2r1r'...\n",
-      "Downloading PDB structure '1kmp'...\n",
-      "Downloading PDB structure '1dj9'...\n",
-      "Downloading PDB structure '1ime'...\n",
-      "Downloading PDB structure '2f3e'...\n",
-      "Downloading PDB structure '1ttj'...\n",
-      "Downloading PDB structure '2a86'...\n",
-      "Downloading PDB structure '1ea6'...\n",
-      "Downloading PDB structure '1elz'...\n",
-      "Downloading PDB structure '2ywf'...\n",
-      "Downloading PDB structure '2gz1'...\n",
-      "Downloading PDB structure '2f9w'...\n",
-      "Downloading PDB structure '1q0q'...\n",
-      "Downloading PDB structure '2iyx'...\n",
-      "Downloading PDB structure '2zdq'...\n",
-      "Downloading PDB structure '2aac'...\n",
-      "Downloading PDB structure '1o0r'...\n",
-      "Downloading PDB structure '1cjw'...\n",
-      "Downloading PDB structure '1dqy'...\n",
-      "Downloading PDB structure '1n8v'...\n",
-      "Downloading PDB structure '2ilb'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1zui'...\n",
-      "Downloading PDB structure '1se3'...\n",
-      "Downloading PDB structure '2cl5'...\n",
-      "Downloading PDB structure '3bqf'...\n",
-      "Downloading PDB structure '2om9'...\n",
-      "Downloading PDB structure '1rxe'...\n",
-      "Downloading PDB structure '3bec'...\n",
-      "Downloading PDB structure '1ww4'...\n",
-      "Downloading PDB structure '1ktg'...\n",
-      "Downloading PDB structure '2ixl'...\n",
-      "Downloading PDB structure '2hv7'...\n",
-      "Downloading PDB structure '2o0j'...\n",
-      "Downloading PDB structure '1i5r'...\n",
-      "Downloading PDB structure '1ein'...\n",
-      "Downloading PDB structure '1l9w'...\n",
-      "Downloading PDB structure '1bli'...\n",
-      "Downloading PDB structure '1k52'...\n",
-      "Downloading PDB structure '1rya'...\n",
-      "Downloading PDB structure '2i4n'...\n",
-      "Downloading PDB structure '2og7'...\n",
-      "Downloading PDB structure '2iom'...\n",
-      "Downloading PDB structure '1l7p'...\n",
-      "Downloading PDB structure '1stb'...\n",
-      "Downloading PDB structure '3brx'...\n",
-      "Downloading PDB structure '2gj5'...\n",
-      "Downloading PDB structure '2z8p'...\n",
-      "Downloading PDB structure '2vrq'...\n",
-      "Downloading PDB structure '2b7j'...\n",
-      "Downloading PDB structure '1y1p'...\n",
-      "Downloading PDB structure '2epn'...\n",
-      "Downloading PDB structure '1juj'...\n",
-      "Downloading PDB structure '1djz'...\n",
-      "Downloading PDB structure '1q6f'...\n",
-      "Downloading PDB structure '2j27'...\n",
-      "Downloading PDB structure '2z1z'...\n",
-      "Downloading PDB structure '2zcq'...\n",
-      "Downloading PDB structure '1k8c'...\n",
-      "Downloading PDB structure '1wpq'...\n",
-      "Downloading PDB structure '1r4z'...\n",
-      "Downloading PDB structure '2ze9'...\n",
-      "Downloading PDB structure '2dpt'...\n",
-      "Downloading PDB structure '2bir'...\n",
-      "Downloading PDB structure '2b51'...\n",
-      "Downloading PDB structure '2oo0'...\n",
-      "Downloading PDB structure '1mqq'...\n",
-      "Downloading PDB structure '2ob2'...\n",
-      "Downloading PDB structure '2c9p'...\n",
-      "Downloading PDB structure '2vdg'...\n",
-      "Downloading PDB structure '1m21'...\n",
-      "Downloading PDB structure '2vf5'...\n",
-      "Downloading PDB structure '1foa'...\n",
-      "Downloading PDB structure '2q1c'...\n",
-      "Downloading PDB structure '1zao'...\n",
-      "Downloading PDB structure '1jxi'...\n",
-      "Downloading PDB structure '1lbm'...\n",
-      "Downloading PDB structure '1akn'...\n",
-      "Downloading PDB structure '9rub'...\n",
-      "Downloading PDB structure '1f31'...\n",
-      "Downloading PDB structure '3cc9'...\n",
-      "Downloading PDB structure '1yvu'...\n",
-      "Downloading PDB structure '1k3i'...\n",
-      "Downloading PDB structure '1yvz'...\n",
-      "Downloading PDB structure '2p7p'...\n",
-      "Downloading PDB structure '1pw6'...\n",
-      "Downloading PDB structure '1ef0'...\n",
-      "Downloading PDB structure '2f48'...\n",
-      "Downloading PDB structure '2ise'...\n",
-      "Downloading PDB structure '2p50'...\n",
-      "Downloading PDB structure '2e3p'...\n",
-      "Downloading PDB structure '1tx2'...\n",
-      "Downloading PDB structure '2sbl'...\n",
-      "Downloading PDB structure '1set'...\n",
-      "Downloading PDB structure '1s4c'...\n",
-      "Downloading PDB structure '2qo0'...\n",
-      "Downloading PDB structure '1v6u'...\n",
-      "Downloading PDB structure '2dby'...\n",
-      "Downloading PDB structure '2orz'...\n",
-      "Downloading PDB structure '1re2'...\n",
-      "Downloading PDB structure '1zyd'...\n",
-      "Downloading PDB structure '1kc7'...\n",
-      "Downloading PDB structure '1fhv'...\n",
-      "Downloading PDB structure '2v6g'...\n",
-      "Downloading PDB structure '2uwy'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1cy0'...\n",
-      "Downloading PDB structure '2oxn'...\n",
-      "Downloading PDB structure '1z2l'...\n",
-      "Downloading PDB structure '1rg2'...\n",
-      "Downloading PDB structure '2zif'...\n",
-      "Downloading PDB structure '2ytz'...\n",
-      "Downloading PDB structure '1uzj'...\n",
-      "Downloading PDB structure '1dqe'...\n",
-      "Downloading PDB structure '2f8d'...\n",
-      "Downloading PDB structure '2d1e'...\n",
-      "Downloading PDB structure '2qfb'...\n",
-      "Downloading PDB structure '2ci6'...\n",
-      "Downloading PDB structure '4jdw'...\n",
-      "Downloading PDB structure '1u8u'...\n",
-      "Downloading PDB structure '1snn'...\n",
-      "Downloading PDB structure '2pqj'...\n",
-      "Downloading PDB structure '2e0n'...\n",
-      "Downloading PDB structure '1qhz'...\n",
-      "Downloading PDB structure '1a8t'...\n",
-      "Downloading PDB structure '2oyr'...\n",
-      "Downloading PDB structure '1gvg'...\n",
-      "Downloading PDB structure '2ojs'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2j6i'...\n",
-      "Downloading PDB structure '1t15'...\n",
-      "Downloading PDB structure '3c2g'...\n",
-      "Downloading PDB structure '2dei'...\n",
-      "Downloading PDB structure '2nrz'...\n",
-      "Downloading PDB structure '1azx'...\n",
-      "Downloading PDB structure '1h8s'...\n",
-      "Downloading PDB structure '1mt6'...\n",
-      "Downloading PDB structure '1rao'...\n",
-      "Downloading PDB structure '2fop'...\n",
-      "Downloading PDB structure '1lvb'...\n",
-      "Downloading PDB structure '1g51'...\n",
-      "Downloading PDB structure '2hrl'...\n",
-      "Downloading PDB structure '1pz7'...\n",
-      "Downloading PDB structure '1k4m'...\n",
-      "Downloading PDB structure '2q7t'...\n",
-      "Downloading PDB structure '1vsf'...\n",
-      "Downloading PDB structure '1xtj'...\n",
-      "Downloading PDB structure '1upk'...\n",
-      "Downloading PDB structure '1fv3'...\n",
-      "Downloading PDB structure '1sdw'...\n",
-      "Downloading PDB structure '1g3y'...\n",
-      "Downloading PDB structure '2gon'...\n",
-      "Downloading PDB structure '2z76'...\n",
-      "Downloading PDB structure '1qyy'...\n",
-      "Downloading PDB structure '1x2h'...\n",
-      "Downloading PDB structure '2fsn'...\n",
-      "Downloading PDB structure '3dbs'...\n",
-      "Downloading PDB structure '1ebf'...\n",
-      "Downloading PDB structure '2jkg'...\n",
-      "Downloading PDB structure '1n4a'...\n",
-      "Downloading PDB structure '2gzs'...\n",
-      "Downloading PDB structure '2a0n'...\n",
-      "Downloading PDB structure '2oek'...\n",
-      "Downloading PDB structure '2jeq'...\n",
-      "Downloading PDB structure '1huj'...\n",
-      "Downloading PDB structure '2j9t'...\n",
-      "Downloading PDB structure '1k0n'...\n",
-      "Downloading PDB structure '2dds'...\n",
-      "Downloading PDB structure '2pmd'...\n",
-      "Downloading PDB structure '3c94'...\n",
-      "Downloading PDB structure '3d5w'...\n",
-      "Downloading PDB structure '3c3o'...\n",
-      "Downloading PDB structure '2vq3'...\n",
-      "Downloading PDB structure '1od2'...\n",
-      "Downloading PDB structure '1h78'...\n",
-      "Downloading PDB structure '2qoq'...\n",
-      "Downloading PDB structure '1fcv'...\n",
-      "Downloading PDB structure '1hvc'...\n",
-      "Downloading PDB structure '4pbg'...\n",
-      "Downloading PDB structure '1pnf'...\n",
-      "Downloading PDB structure '1dkq'...\n",
-      "Downloading PDB structure '1r7y'...\n",
-      "Downloading PDB structure '1nom'...\n",
-      "Downloading PDB structure '2zcc'...\n",
-      "Downloading PDB structure '2ajh'...\n",
-      "Downloading PDB structure '2ce9'...\n",
-      "Downloading PDB structure '1i8q'...\n",
-      "Downloading PDB structure '2eep'...\n",
-      "Downloading PDB structure '1yw1'...\n",
-      "Downloading PDB structure '3cgy'...\n",
-      "Downloading PDB structure '2obm'...\n",
-      "Downloading PDB structure '2ddo'...\n",
-      "Downloading PDB structure '3lkf'...\n",
-      "Downloading PDB structure '2qv7'...\n",
-      "Downloading PDB structure '2hp0'...\n",
-      "Downloading PDB structure '2i22'...\n",
-      "Downloading PDB structure '2d2f'...\n",
-      "Downloading PDB structure '1w15'...\n",
-      "Downloading PDB structure '1pbo'...\n",
-      "Downloading PDB structure '1ido'...\n",
-      "Downloading PDB structure '2oz9'...\n",
-      "Downloading PDB structure '1xwv'...\n",
-      "Downloading PDB structure '2quj'...\n",
-      "Downloading PDB structure '2fav'...\n",
-      "Downloading PDB structure '1spd'...\n",
-      "Downloading PDB structure '1uu2'...\n",
-      "Downloading PDB structure '1lri'...\n",
-      "Downloading PDB structure '1ubn'...\n",
-      "Downloading PDB structure '1v08'...\n",
-      "Downloading PDB structure '1gxz'...\n",
-      "Downloading PDB structure '1xev'...\n",
-      "Downloading PDB structure '2qvm'...\n",
-      "Downloading PDB structure '1x82'...\n",
-      "Downloading PDB structure '2vkl'...\n",
-      "Downloading PDB structure '1ve7'...\n",
-      "Downloading PDB structure '2art'...\n",
-      "Downloading PDB structure '2dso'...\n",
-      "Downloading PDB structure '2zf4'...\n",
-      "Downloading PDB structure '2bo2'...\n",
-      "Downloading PDB structure '1pfr'...\n",
-      "Downloading PDB structure '1nuh'...\n",
-      "Downloading PDB structure '3psr'...\n",
-      "Downloading PDB structure '2rcb'...\n",
-      "Downloading PDB structure '2yvk'...\n",
-      "Downloading PDB structure '1uk9'...\n",
-      "Downloading PDB structure '1i1h'...\n",
-      "Downloading PDB structure '2o74'...\n",
-      "Downloading PDB structure '2vb2'...\n",
-      "Downloading PDB structure '1ui7'...\n",
-      "Downloading PDB structure '2vw1'...\n",
-      "Downloading PDB structure '1qz3'...\n",
-      "Downloading PDB structure '3bgg'...\n",
-      "Downloading PDB structure '1fk1'...\n",
-      "Downloading PDB structure '1ocl'...\n",
-      "Downloading PDB structure '2e7j'...\n",
-      "Downloading PDB structure '2p69'...\n",
-      "Downloading PDB structure '1md9'...\n",
-      "Downloading PDB structure '1w6f'...\n",
-      "Downloading PDB structure '2dq0'...\n",
-      "Downloading PDB structure '2iqx'...\n",
-      "Downloading PDB structure '1za5'...\n",
-      "Downloading PDB structure '1e9l'...\n",
-      "Downloading PDB structure '1t9p'...\n",
-      "Downloading PDB structure '2vvo'...\n",
-      "Downloading PDB structure '2fw3'...\n",
-      "Downloading PDB structure '2fp9'...\n",
-      "Downloading PDB structure '2obc'...\n",
-      "Downloading PDB structure '3cht'...\n",
-      "Downloading PDB structure '2bui'...\n",
-      "Downloading PDB structure '2aef'...\n",
-      "Downloading PDB structure '1hhs'...\n",
-      "Downloading PDB structure '5tnc'...\n",
-      "Downloading PDB structure '1cpx'...\n",
-      "Downloading PDB structure '2f44'...\n",
-      "Downloading PDB structure '1lbl'...\n",
-      "Downloading PDB structure '2cfi'...\n",
-      "Downloading PDB structure '2yzo'...\n",
-      "Downloading PDB structure '1zat'...\n",
-      "Downloading PDB structure '2oa1'...\n",
-      "Downloading PDB structure '1kkr'...\n",
-      "Downloading PDB structure '2o6e'...\n",
-      "Downloading PDB structure '1bug'...\n",
-      "Downloading PDB structure '1dvb'...\n",
-      "Downloading PDB structure '1iaa'...\n",
-      "Downloading PDB structure '2oog'...\n",
-      "Downloading PDB structure '2yu1'...\n",
-      "Downloading PDB structure '1ju4'...\n",
-      "Downloading PDB structure '2vzs'...\n",
-      "Downloading PDB structure '1dxg'...\n",
-      "Downloading PDB structure '2zjf'...\n",
-      "Downloading PDB structure '2qeo'...\n",
-      "Downloading PDB structure '2vg0'...\n",
-      "Downloading PDB structure '1mka'...\n",
-      "Downloading PDB structure '1f9z'...\n",
-      "Downloading PDB structure '1yas'...\n",
-      "Downloading PDB structure '1qaq'...\n",
-      "Downloading PDB structure '2i4c'...\n",
-      "Downloading PDB structure '1ted'...\n",
-      "Downloading PDB structure '1r67'...\n",
-      "Downloading PDB structure '1w8e'...\n",
-      "Downloading PDB structure '1so0'...\n",
-      "Downloading PDB structure '1ii5'...\n",
-      "Downloading PDB structure '2b3h'...\n",
-      "Downloading PDB structure '2v27'...\n",
-      "Downloading PDB structure '1ese'...\n",
-      "Downloading PDB structure '2yzv'...\n",
-      "Downloading PDB structure '2f62'...\n",
-      "Downloading PDB structure '2okn'...\n",
-      "Downloading PDB structure '1im5'...\n",
-      "Downloading PDB structure '3bbh'...\n",
-      "Downloading PDB structure '1l5l'...\n",
-      "Downloading PDB structure '3bf8'...\n",
-      "Downloading PDB structure '1tzc'...\n",
-      "Downloading PDB structure '1uod'...\n",
-      "Downloading PDB structure '2df8'...\n",
-      "Downloading PDB structure '3bu1'...\n",
-      "Downloading PDB structure '2f7v'...\n",
-      "Downloading PDB structure '2qhv'...\n",
-      "Downloading PDB structure '1uj5'...\n",
-      "Downloading PDB structure '2itp'...\n",
-      "Downloading PDB structure '1miz'...\n",
-      "Downloading PDB structure '1k2e'...\n",
-      "Downloading PDB structure '1w5e'...\n",
-      "Downloading PDB structure '1gzf'...\n",
-      "Downloading PDB structure '2ao2'...\n",
-      "Downloading PDB structure '2oei'...\n",
-      "Downloading PDB structure '3diw'...\n",
-      "Downloading PDB structure '1gwm'...\n",
-      "Downloading PDB structure '2uus'...\n",
-      "Downloading PDB structure '1u4m'...\n",
-      "Downloading PDB structure '1rc5'...\n",
-      "Downloading PDB structure '1ok7'...\n",
-      "Downloading PDB structure '1n5z'...\n",
-      "Downloading PDB structure '1g6h'...\n",
-      "Downloading PDB structure '3d32'...\n",
-      "Downloading PDB structure '4gal'...\n",
-      "Downloading PDB structure '1omo'...\n",
-      "Downloading PDB structure '3c03'...\n",
-      "Downloading PDB structure '1apg'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2d3k'...\n",
-      "Downloading PDB structure '2avr'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2d5a'...\n",
-      "Downloading PDB structure '1wn7'...\n",
-      "Downloading PDB structure '2i5r'...\n",
-      "Downloading PDB structure '1fyk'...\n",
-      "Downloading PDB structure '1w1d'...\n",
-      "Downloading PDB structure '3bmy'...\n",
-      "Downloading PDB structure '1tho'...\n",
-      "Downloading PDB structure '2c3h'...\n",
-      "Downloading PDB structure '2oju'...\n",
-      "Downloading PDB structure '1lm3'...\n",
-      "Downloading PDB structure '1dp2'...\n",
-      "Downloading PDB structure '2bl8'...\n",
-      "Downloading PDB structure '2hpl'...\n",
-      "Downloading PDB structure '2peh'...\n",
-      "Downloading PDB structure '2zaa'...\n",
-      "Downloading PDB structure '1gmo'...\n",
-      "Downloading PDB structure '2zpy'...\n",
-      "Downloading PDB structure '2fae'...\n",
-      "Downloading PDB structure '1xzk'...\n",
-      "Downloading PDB structure '2g9a'...\n",
-      "Downloading PDB structure '1y2f'...\n",
-      "Downloading PDB structure '2c3w'...\n",
-      "Downloading PDB structure '1jlk'...\n",
-      "Downloading PDB structure '3c0o'...\n",
-      "Downloading PDB structure '1awi'...\n",
-      "Downloading PDB structure '1lv0'...\n",
-      "Downloading PDB structure '1yfr'...\n",
-      "Downloading PDB structure '1ox9'...\n",
-      "Downloading PDB structure '2ed4'...\n",
-      "Downloading PDB structure '1r6n'...\n",
-      "Downloading PDB structure '1qz2'...\n",
-      "Downloading PDB structure '1jwg'...\n",
-      "Downloading PDB structure '2gvg'...\n",
-      "Downloading PDB structure '1ka2'...\n",
-      "Downloading PDB structure '2qz3'...\n",
-      "Downloading PDB structure '1xrr'...\n",
-      "Downloading PDB structure '1slb'...\n",
-      "Downloading PDB structure '2ft0'...\n",
-      "Downloading PDB structure '1kp4'...\n",
-      "Downloading PDB structure '2d24'...\n",
-      "Downloading PDB structure '2uyq'...\n",
-      "Downloading PDB structure '2hba'...\n",
-      "Downloading PDB structure '2oqn'...\n",
-      "Downloading PDB structure '2c9c'...\n",
-      "Downloading PDB structure '2hyr'...\n",
-      "Downloading PDB structure '2q5y'...\n",
-      "Downloading PDB structure '1mc9'...\n",
-      "Downloading PDB structure '3pmg'...\n",
-      "Downloading PDB structure '3b55'...\n",
-      "Downloading PDB structure '1oek'...\n",
-      "Downloading PDB structure '1ndi'...\n",
-      "Downloading PDB structure '3b4y'...\n",
-      "Downloading PDB structure '1j4x'...\n",
-      "Downloading PDB structure '2zg1'...\n",
-      "Downloading PDB structure '2gxs'...\n",
-      "Downloading PDB structure '1lc3'...\n",
-      "Downloading PDB structure '1zgc'...\n",
-      "Downloading PDB structure '3kiv'...\n",
-      "Downloading PDB structure '3e3z'...\n",
-      "Downloading PDB structure '1gxo'...\n",
-      "Downloading PDB structure '2cbo'...\n",
-      "Downloading PDB structure '2z2p'...\n",
-      "Downloading PDB structure '2bt6'...\n",
-      "Downloading PDB structure '1c80'...\n",
-      "Downloading PDB structure '1d1g'...\n",
-      "Downloading PDB structure '1x2r'...\n",
-      "Downloading PDB structure '3bi7'...\n",
-      "Downloading PDB structure '1qpr'...\n",
-      "Downloading PDB structure '2g2l'...\n",
-      "Downloading PDB structure '2uvo'...\n",
-      "Downloading PDB structure '1a7w'...\n",
-      "Downloading PDB structure '1sqf'...\n",
-      "Downloading PDB structure '1u26'...\n",
-      "Downloading PDB structure '1byh'...\n",
-      "Downloading PDB structure '2o28'...\n",
-      "Downloading PDB structure '1f12'...\n",
-      "Downloading PDB structure '2iry'...\n",
-      "Downloading PDB structure '1c1h'...\n",
-      "Downloading PDB structure '2eff'...\n",
-      "Downloading PDB structure '1jay'...\n",
-      "Downloading PDB structure '2bej'...\n",
-      "Downloading PDB structure '1w8y'...\n",
-      "Downloading PDB structure '2nun'...\n",
-      "Downloading PDB structure '3cb5'...\n",
-      "Downloading PDB structure '1gyx'...\n",
-      "Downloading PDB structure '1zgs'...\n",
-      "Downloading PDB structure '1kpf'...\n",
-      "Downloading PDB structure '2c43'...\n",
-      "Downloading PDB structure '1mjl'...\n",
-      "Downloading PDB structure '2j8g'...\n",
-      "Downloading PDB structure '3cyq'...\n",
-      "Downloading PDB structure '2p8i'...\n",
-      "Downloading PDB structure '2jfk'...\n",
-      "Downloading PDB structure '1ri2'...\n",
-      "Downloading PDB structure '2iic'...\n",
-      "Downloading PDB structure '2i6p'...\n",
-      "Downloading PDB structure '1rv7'...\n",
-      "Downloading PDB structure '2asc'...\n",
-      "Downloading PDB structure '1ons'...\n",
-      "Downloading PDB structure '1sly'...\n",
-      "Downloading PDB structure '1xng'...\n",
-      "Downloading PDB structure '3dbb'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '2obt'...\n",
-      "Downloading PDB structure '4pad'...\n",
-      "Downloading PDB structure '1tkg'...\n",
-      "Downloading PDB structure '1amw'...\n",
-      "Downloading PDB structure '2eal'...\n",
-      "Downloading PDB structure '1wk8'...\n",
-      "Downloading PDB structure '2ogy'...\n",
-      "Downloading PDB structure '1om9'...\n",
-      "Downloading PDB structure '2f6d'...\n",
-      "Downloading PDB structure '2brs'...\n",
-      "Downloading PDB structure '1ucg'...\n",
-      "Downloading PDB structure '1kae'...\n",
-      "Downloading PDB structure '2r7d'...\n",
-      "Downloading PDB structure '1c8y'...\n",
-      "Downloading PDB structure '1w2o'...\n",
-      "Downloading PDB structure '1t02'...\n",
-      "Downloading PDB structure '2o2z'...\n",
-      "Downloading PDB structure '3d9p'...\n",
-      "Downloading PDB structure '1mxi'...\n",
-      "Downloading PDB structure '1gym'...\n",
-      "Downloading PDB structure '1x8c'...\n",
-      "Downloading PDB structure '2a0b'...\n",
-      "Downloading PDB structure '2f4f'...\n",
-      "Downloading PDB structure '2nt9'...\n",
-      "Downloading PDB structure '2vfk'...\n",
-      "Downloading PDB structure '2dvm'...\n",
-      "Downloading PDB structure '3c8d'...\n",
-      "Downloading PDB structure '1oby'...\n",
-      "Downloading PDB structure '1exf'...\n",
-      "Downloading PDB structure '1qgi'...\n",
-      "Downloading PDB structure '2r8a'...\n",
-      "Downloading PDB structure '1gyb'...\n",
-      "Downloading PDB structure '1oa7'...\n",
-      "Downloading PDB structure '2faq'...\n",
-      "Downloading PDB structure '2isi'...\n",
-      "Downloading PDB structure '3mat'...\n",
-      "Downloading PDB structure '2j17'...\n",
-      "Downloading PDB structure '2hw1'...\n",
-      "Downloading PDB structure '1qj8'...\n",
-      "Downloading PDB structure '1ohe'...\n",
-      "Downloading PDB structure '2fc0'...\n",
-      "Downloading PDB structure '1o6g'...\n",
-      "Downloading PDB structure '3db3'...\n",
-      "Downloading PDB structure '1czs'...\n",
-      "Downloading PDB structure '1nkt'...\n",
-      "Downloading PDB structure '3c1y'...\n",
-      "Downloading PDB structure '1w2t'...\n",
-      "Downloading PDB structure '2cwh'...\n",
-      "Downloading PDB structure '2glu'...\n",
-      "Downloading PDB structure '3bib'...\n",
-      "Downloading PDB structure '1ek2'...\n",
-      "Downloading PDB structure '2q6v'...\n",
-      "Downloading PDB structure '2d0c'...\n",
-      "Downloading PDB structure '2uy3'...\n",
-      "Downloading PDB structure '1uc9'...\n",
-      "Downloading PDB structure '2sqc'...\n",
-      "Downloading PDB structure '2p36'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1h16'...\n",
-      "Downloading PDB structure '1efy'...\n",
-      "Downloading PDB structure '2a33'...\n",
-      "Downloading PDB structure '1lf9'...\n",
-      "Downloading PDB structure '1fee'...\n",
-      "Downloading PDB structure '2ref'...\n",
-      "Downloading PDB structure '2q71'...\n",
-      "Downloading PDB structure '2e8e'...\n",
-      "Downloading PDB structure '1rq5'...\n",
-      "Downloading PDB structure '2gwl'...\n",
-      "Downloading PDB structure '1jbz'...\n",
-      "Downloading PDB structure '2f1t'...\n",
-      "Downloading PDB structure '2bko'...\n",
-      "Downloading PDB structure '1ogo'...\n",
-      "Downloading PDB structure '1h2f'...\n",
-      "Downloading PDB structure '1o9w'...\n",
-      "Downloading PDB structure '1l0y'...\n",
-      "Downloading PDB structure '2jhn'...\n",
-      "Downloading PDB structure '2ccj'...\n",
-      "Downloading PDB structure '3crq'...\n",
-      "Downloading PDB structure '2ewe'...\n",
-      "Downloading PDB structure '1ll2'...\n",
-      "Downloading PDB structure '1ltz'...\n",
-      "Downloading PDB structure '3d5e'...\n",
-      "Downloading PDB structure '1c3r'...\n",
-      "Downloading PDB structure '1c7s'...\n",
-      "Downloading PDB structure '1mmu'...\n",
-      "Downloading PDB structure '2hzq'...\n",
-      "Downloading PDB structure '2e20'...\n",
-      "Downloading PDB structure '1eg4'...\n",
-      "Downloading PDB structure '2dtn'...\n",
-      "Downloading PDB structure '1bib'...\n",
-      "Downloading PDB structure '2jcr'...\n",
-      "Downloading PDB structure '1b74'...\n",
-      "Downloading PDB structure '1v9a'...\n",
-      "Downloading PDB structure '2fv1'...\n",
-      "Downloading PDB structure '1nw5'...\n",
-      "Downloading PDB structure '3b9o'...\n",
-      "Downloading PDB structure '1ddt'...\n",
-      "Downloading PDB structure '1vci'...\n",
-      "Downloading PDB structure '1fwu'...\n",
-      "Downloading PDB structure '2rb4'...\n",
-      "Downloading PDB structure '2vdj'...\n",
-      "Downloading PDB structure '1ne9'...\n",
-      "Downloading PDB structure '2v3k'...\n",
-      "Downloading PDB structure '1ymf'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1h9r'...\n",
-      "Downloading PDB structure '1ee9'...\n",
-      "Downloading PDB structure '2hbm'...\n",
-      "Downloading PDB structure '2j0b'...\n",
-      "Downloading PDB structure '2vx7'...\n",
-      "Downloading PDB structure '2cjp'...\n",
-      "Downloading PDB structure '2g09'...\n",
-      "Downloading PDB structure '1ty2'...\n",
-      "Downloading PDB structure '1kwf'...\n",
-      "Downloading PDB structure '2jfv'...\n",
-      "Downloading PDB structure '2cx1'...\n",
-      "Downloading PDB structure '1kug'...\n",
-      "Downloading PDB structure '1pvs'...\n",
-      "Downloading PDB structure '1q6i'...\n",
-      "Downloading PDB structure '2yvp'...\n",
-      "Downloading PDB structure '2p0h'...\n",
-      "Downloading PDB structure '3cja'...\n",
-      "Downloading PDB structure '2bvt'...\n",
-      "Downloading PDB structure '2cbg'...\n",
-      "Downloading PDB structure '2hl3'...\n",
-      "Downloading PDB structure '1w1a'...\n",
-      "Downloading PDB structure '1l8x'...\n",
-      "Downloading PDB structure '2ev9'...\n",
-      "Downloading PDB structure '1w9w'...\n",
-      "Downloading PDB structure '1lsp'...\n",
-      "Downloading PDB structure '2jh7'...\n",
-      "Downloading PDB structure '2e1t'...\n",
-      "Downloading PDB structure '1yd4'...\n",
-      "Downloading PDB structure '1tf2'...\n",
-      "Downloading PDB structure '2cir'...\n",
-      "Downloading PDB structure '1pgn'...\n",
-      "Downloading PDB structure '3cyi'...\n",
-      "Downloading PDB structure '3ct5'...\n",
-      "Downloading PDB structure '1g8t'...\n",
-      "Downloading PDB structure '2ep9'...\n",
-      "Desired structure doesn't exists\n",
-      "Downloading PDB structure '1ifu'...\n",
-      "Downloading PDB structure '1wop'...\n",
-      "Downloading PDB structure '2nsf'...\n",
-      "Downloading PDB structure '1aur'...\n",
-      "Downloading PDB structure '2r5m'...\n",
-      "Downloading PDB structure '1jlx'...\n",
-      "Downloading PDB structure '1i9z'...\n",
-      "Downloading PDB structure '2fk1'...\n",
-      "Downloading PDB structure '2r68'...\n",
-      "Downloading PDB structure '1g5t'...\n",
-      "Downloading PDB structure '1zsh'...\n",
-      "Downloading PDB structure '2g7f'...\n",
-      "Downloading PDB structure '1j25'...\n",
-      "Downloading PDB structure '2o48'...\n",
-      "Downloading PDB structure '2vl2'...\n",
-      "Downloading PDB structure '3byn'...\n",
-      "Downloading PDB structure '2ag8'...\n",
-      "Downloading PDB structure '2qth'...\n",
-      "Downloading PDB structure '1hg2'...\n",
-      "Downloading PDB structure '1u4j'...\n"
-     ]
-    }
-   ],
-   "source": [
-    "pdbl = PDBList()\n",
-    "pdb_list = pd.concat([structural_rearrangement_data['Free PDB'], structural_rearrangement_data['Bound PDB']]).unique()\n",
-    "\n",
-    "pdbl.download_pdb_files(pdb_list, obsolete=False, pdir='pdbs/', file_format='pdb', overwrite=True)\n",
-    "\n",
-    "#Rename PDB files from .ent to .pdb\\n\n",
-    "!cd pdbs/; for f in *.ent; do mv -- \"$f\" \"${f%.ent}.pdb\"; done\n",
-    "# Remove pdb prefix from PDB file names (e.g. pdb20jj.ent -> 20jj.pdb)\\n\",\n",
-    "!cd pdbs/; for x in *; do mv $x `echo $x | cut -c 4-`; done"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 27,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "1541"
-      ]
-     },
-     "execution_count": 27,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Download Ligands"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 19,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "## Make Graphs\n",
-    "import os"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 25,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "Series([], Name: Free PDB, dtype: object)"
-      ]
-     },
-     "execution_count": 25,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "structural_rearrangement_data['Free PDB'].loc[structural_rearrangement_data['Free PDB'].isin(f)]"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 31,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "43     2h98\n",
-       "190    2gu9\n",
-       "283    2bg1\n",
-       "307    1q4o\n",
-       "514    1il5\n",
-       "625    3cey\n",
-       "688    2glb\n",
-       "739    1yks\n",
-       "774    2dpo\n",
-       "Name: Free PDB, dtype: object"
-      ]
-     },
-     "execution_count": 31,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "f = [f[:-4] for f in os.listdir('pdbs')]\n",
-    "structural_rearrangement_data['Free PDB'].loc[~structural_rearrangement_data['Bound PDB'].isin(f)]"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3",
-   "language": "python",
-   "name": "python3"
-  },
-  "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.4"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
+    "cells": [
+        {
+            "cell_type": "code",
+            "execution_count": 1,
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "'Here, we scrape PSCDB (protein Structural Change Database http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/index.html'"
+                        ]
+                    },
+                    "execution_count": 1,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
+            ],
+            "source": [
+                "\"\"\"Here, we scrape PSCDB (protein Structural Change Database http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/index.html\"\"\""
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 2,
+            "metadata": {},
+            "outputs": [
+                {
+                    "ename": "ModuleNotFoundError",
+                    "evalue": "No module named 'rdkit'",
+                    "output_type": "error",
+                    "traceback": [
+                        "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+                        "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
+                        "\u001b[0;32m<ipython-input-2-e641122ac6ca>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mrdkit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mBio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPDB\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'rdkit'"
+                    ]
+                }
+            ],
+            "source": [
+                "import pandas as pd\n",
+                "import rdkit\n",
+                "from Bio.PDB import *"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 3,
+            "metadata": {
+                "scrolled": true
+            },
+            "outputs": [
+                {
+                    "name": "stdout",
+                    "output_type": "stream",
+                    "text": [
+                        "     index  PSCID                      Protein Name Free form Bound form  \\\n",
+                        "0        0   CD.1  HYPOTHETICAL OXIDOREDUCTASE YIAK   1nxu_AB    1s20_AB   \n",
+                        "1        1   CD.2                  ADENYLATE KINASE    4ake_A     2eck_A   \n",
+                        "2        2   CD.3                       GLUCOKINASE   1q18_AB    1sz2_AB   \n",
+                        "3        3   CD.4                       LACTOFERRIN    1lfh_A     1lfi_A   \n",
+                        "4        4   CD.5               ELONGATION FACTOR 2    1n0v_D     1n0u_A   \n",
+                        "..     ...    ...                               ...       ...        ...   \n",
+                        "903     99  B.100   325AA LONG HYPOTHETICAL PROTEIN   2dec_AB    2df8_AB   \n",
+                        "904    100  B.101                         LIPOCALIN    3bu9_A     3bu1_A   \n",
+                        "905    101  B.102      AECTYLCITRULLINE DEACETYLASE   2f8h_AA    2f7v_AA   \n",
+                        "906    102  B.103                 LIPOYLTRANSFERASE    2qht_A     2qhv_A   \n",
+                        "907    103  B.104      RIBOSE 5-PHOSPHATE ISOMERASE   1uj4_AA    1uj5_AA   \n",
+                        "\n",
+                        "         Ligands  Classification(?)            motion_type  \n",
+                        "0    2xNAD,2xTLA             200004  coupled_domain_motion  \n",
+                        "1        ADP,AMP             200003  coupled_domain_motion  \n",
+                        "2          2xBGC             200003  coupled_domain_motion  \n",
+                        "3     2xCU,2xNAG             110103  coupled_domain_motion  \n",
+                        "4            SO1             110002  coupled_domain_motion  \n",
+                        "..           ...                ...                    ...  \n",
+                        "903        2xF1P                 10           other_motion  \n",
+                        "904          HSM                 10           other_motion  \n",
+                        "905         2xCO                 10           other_motion  \n",
+                        "906          OC9                 10           other_motion  \n",
+                        "907        2x5RP                 10           other_motion  \n",
+                        "\n",
+                        "[908 rows x 8 columns]\n"
+                    ]
+                }
+            ],
+            "source": [
+                "coupled_domain_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/cd.html\", header=0)[0]\n",
+                "coupled_domain_motion['motion_type'] = 'coupled_domain_motion'\n",
+                "\n",
+                "independent_domain_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/id.html\", header=0)[0]\n",
+                "independent_domain_motion['motion_type'] = 'independent_domain_motion'\n",
+                "\n",
+                "coupled_local_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/cl.html\", header=0)[0]\n",
+                "coupled_local_motion['motion_type'] = 'coupled_local_motion'\n",
+                "\n",
+                "independent_local_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/il.html\", header=0)[0]\n",
+                "independent_local_motion['motion_type'] = 'independent_local_motion'\n",
+                "\n",
+                "burying_ligand_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/b.html\", header=0)[0]\n",
+                "burying_ligand_motion['motion_type'] = 'burying_ligand_motion'\n",
+                "\n",
+                "no_significant_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/n.html\", header=0)[0]\n",
+                "no_significant_motion['motion_type'] = 'no_significant_motion'\n",
+                "\n",
+                "other_motion = pd.read_html(\"http://idp1.force.cs.is.nagoya-u.ac.jp/pscdb/b.html\", header=0)[0]\n",
+                "other_motion['motion_type'] = 'other_motion'\n",
+                "\n",
+                "structural_rearrangement_data = pd.concat([coupled_domain_motion, independent_domain_motion,\n",
+                "                                           coupled_local_motion, independent_local_motion,\n",
+                "                                           burying_ligand_motion, no_significant_motion, other_motion]).reset_index()\n",
+                "print(structural_rearrangement_data)"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 32,
+            "metadata": {},
+            "outputs": [
+                {
+                    "name": "stdout",
+                    "output_type": "stream",
+                    "text": [
+                        "     level_0  index  PSCID                      Protein Name Free form  \\\n",
+                        "0          0      0   CD.1  HYPOTHETICAL OXIDOREDUCTASE YIAK   1nxu_AB   \n",
+                        "1          1      1   CD.2                  ADENYLATE KINASE    4ake_A   \n",
+                        "2          2      2   CD.3                       GLUCOKINASE   1q18_AB   \n",
+                        "3          3      3   CD.4                       LACTOFERRIN    1lfh_A   \n",
+                        "4          4      4   CD.5               ELONGATION FACTOR 2    1n0v_D   \n",
+                        "..       ...    ...    ...                               ...       ...   \n",
+                        "900      903     99  B.100   325AA LONG HYPOTHETICAL PROTEIN   2dec_AB   \n",
+                        "901      904    100  B.101                         LIPOCALIN    3bu9_A   \n",
+                        "902      905    101  B.102      AECTYLCITRULLINE DEACETYLASE   2f8h_AA   \n",
+                        "903      906    102  B.103                 LIPOYLTRANSFERASE    2qht_A   \n",
+                        "904      907    103  B.104      RIBOSE 5-PHOSPHATE ISOMERASE   1uj4_AA   \n",
+                        "\n",
+                        "    Bound form      Ligands  Classification(?)            motion_type  \\\n",
+                        "0      1s20_AB  2xNAD,2xTLA             200004  coupled_domain_motion   \n",
+                        "1       2eck_A      ADP,AMP             200003  coupled_domain_motion   \n",
+                        "2      1sz2_AB        2xBGC             200003  coupled_domain_motion   \n",
+                        "3       1lfi_A   2xCU,2xNAG             110103  coupled_domain_motion   \n",
+                        "4       1n0u_A          SO1             110002  coupled_domain_motion   \n",
+                        "..         ...          ...                ...                    ...   \n",
+                        "900    2df8_AB        2xF1P                 10           other_motion   \n",
+                        "901     3bu1_A          HSM                 10           other_motion   \n",
+                        "902    2f7v_AA         2xCO                 10           other_motion   \n",
+                        "903     2qhv_A          OC9                 10           other_motion   \n",
+                        "904    1uj5_AA        2x5RP                 10           other_motion   \n",
+                        "\n",
+                        "    Free PDB Free Chains Bound PDB Bound Chains  \n",
+                        "0       1nxu          AB      1s20           AB  \n",
+                        "1       4ake           A      2eck            A  \n",
+                        "2       1q18          AB      1sz2           AB  \n",
+                        "3       1lfh           A      1lfi            A  \n",
+                        "4       1n0v           D      1n0u            A  \n",
+                        "..       ...         ...       ...          ...  \n",
+                        "900     2dec          AB      2df8           AB  \n",
+                        "901     3bu9           A      3bu1            A  \n",
+                        "902     2f8h          AA      2f7v           AA  \n",
+                        "903     2qht           A      2qhv            A  \n",
+                        "904     1uj4          AA      1uj5           AA  \n",
+                        "\n",
+                        "[891 rows x 13 columns]\n"
+                    ]
+                }
+            ],
+            "source": [
+                "# Split into chains\n",
+                "free_structures = structural_rearrangement_data['Free form'].str.split('_', expand=True)\n",
+                "bound_structures = structural_rearrangement_data['Bound form'].str.split('_', expand=True)\n",
+                "\n",
+                "# Add columns\n",
+                "structural_rearrangement_data['Free PDB'] = free_structures[0]\n",
+                "structural_rearrangement_data['Free Chains'] = free_structures[1]\n",
+                "structural_rearrangement_data['Bound PDB'] = bound_structures[0]\n",
+                "structural_rearrangement_data['Bound Chains'] = bound_structures[1]\n",
+                "\n",
+                "# Drop obsolete structures\n",
+                "obsolete = ['1m80', '1cmw', '1g40', '2ihi', '1hl0', '2gkq', '2glb', '2g2j', '2dpo', '2h98', '2gu9', '2bg1', '1q4o', '1il5', '3cey', '1yks']\n",
+                "\n",
+                "structural_rearrangement_data = structural_rearrangement_data.loc[~structural_rearrangement_data['Free PDB'].isin(obsolete)]\n",
+                "structural_rearrangement_data = structural_rearrangement_data.loc[~structural_rearrangement_data['Bound PDB'].isin(obsolete)]\n",
+                "\n",
+                "print(structural_rearrangement_data)\n",
+                "#structural_rearrangement_data.reset_index(inplace=True)\n",
+                "structural_rearrangement_data.to_csv('structural_rearrangement_data.csv')"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# Download PDBs"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 29,
+            "metadata": {
+                "scrolled": true
+            },
+            "outputs": [
+                {
+                    "name": "stdout",
+                    "output_type": "stream",
+                    "text": [
+                        "Downloading PDB structure '1nxu'...\n",
+                        "Downloading PDB structure '4ake'...\n",
+                        "Downloading PDB structure '1q18'...\n",
+                        "Downloading PDB structure '1lfh'...\n",
+                        "Downloading PDB structure '1n0v'...\n",
+                        "Downloading PDB structure '5csc'...\n",
+                        "Downloading PDB structure '2p0m'...\n",
+                        "Downloading PDB structure '3cze'...\n",
+                        "Downloading PDB structure '2bjb'...\n",
+                        "Downloading PDB structure '2ex0'...\n",
+                        "Downloading PDB structure '1oen'...\n",
+                        "Downloading PDB structure '2car'...\n",
+                        "Downloading PDB structure '2pry'...\n",
+                        "Downloading PDB structure '1d2r'...\n",
+                        "Downloading PDB structure '2gg4'...\n",
+                        "Downloading PDB structure '1gqz'...\n",
+                        "Downloading PDB structure '1qzt'...\n",
+                        "Downloading PDB structure '1pn2'...\n",
+                        "Downloading PDB structure '2nrb'...\n",
+                        "Downloading PDB structure '1t8p'...\n",
+                        "Downloading PDB structure '1vh3'...\n",
+                        "Downloading PDB structure '2gca'...\n",
+                        "Downloading PDB structure '1yz5'...\n",
+                        "Downloading PDB structure '1y2q'...\n",
+                        "Downloading PDB structure '2e2n'...\n",
+                        "Downloading PDB structure '1sjs'...\n",
+                        "Downloading PDB structure '1xk7'...\n",
+                        "Downloading PDB structure '2f7m'...\n",
+                        "Downloading PDB structure '2znd'...\n",
+                        "Downloading PDB structure '1x0a'...\n",
+                        "Downloading PDB structure '1oid'...\n",
+                        "Downloading PDB structure '3d8r'...\n",
+                        "Downloading PDB structure '1zty'...\n",
+                        "Downloading PDB structure '1z15'...\n",
+                        "Downloading PDB structure '1l5t'...\n",
+                        "Downloading PDB structure '2ghb'...\n",
+                        "Downloading PDB structure '2uvg'...\n",
+                        "Downloading PDB structure '2c00'...\n",
+                        "Downloading PDB structure '1zkb'...\n",
+                        "Downloading PDB structure '1ex6'...\n",
+                        "Downloading PDB structure '3c6q'...\n",
+                        "Downloading PDB structure '2q5r'...\n",
+                        "Downloading PDB structure '1lio'...\n",
+                        "Downloading PDB structure '2h98'...\n",
+                        "Downloading PDB structure '1xgd'...\n",
+                        "Downloading PDB structure '2brw'...\n",
+                        "Downloading PDB structure '1jej'...\n",
+                        "Downloading PDB structure '2cgk'...\n",
+                        "Downloading PDB structure '1a48'...\n",
+                        "Downloading PDB structure '2qrj'...\n",
+                        "Downloading PDB structure '2ous'...\n",
+                        "Downloading PDB structure '1fwl'...\n",
+                        "Downloading PDB structure '1yhk'...\n",
+                        "Downloading PDB structure '1eym'...\n",
+                        "Downloading PDB structure '1meo'...\n",
+                        "Downloading PDB structure '2q50'...\n",
+                        "Downloading PDB structure '1yj4'...\n",
+                        "Downloading PDB structure '2cbi'...\n",
+                        "Downloading PDB structure '1sbq'...\n",
+                        "Downloading PDB structure '1g7r'...\n",
+                        "Downloading PDB structure '1bbw'...\n",
+                        "Downloading PDB structure '1h4v'...\n",
+                        "Downloading PDB structure '2olu'...\n",
+                        "Downloading PDB structure '2ns7'...\n",
+                        "Downloading PDB structure '1o17'...\n",
+                        "Downloading PDB structure '1m80'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1z9u'...\n",
+                        "Downloading PDB structure '2hni'...\n",
+                        "Downloading PDB structure '1e0d'...\n",
+                        "Downloading PDB structure '1ynf'...\n",
+                        "Downloading PDB structure '1vgt'...\n",
+                        "Downloading PDB structure '2nxc'...\n",
+                        "Downloading PDB structure '1l7d'...\n",
+                        "Downloading PDB structure '2gk7'...\n",
+                        "Downloading PDB structure '1fmv'...\n",
+                        "Downloading PDB structure '2gt1'...\n",
+                        "Downloading PDB structure '1cmw'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2o1p'...\n",
+                        "Downloading PDB structure '1w2f'...\n",
+                        "Downloading PDB structure '2qmr'...\n",
+                        "Downloading PDB structure '2fh4'...\n",
+                        "Downloading PDB structure '1smt'...\n",
+                        "Downloading PDB structure '1tqd'...\n",
+                        "Downloading PDB structure '2pkf'...\n",
+                        "Downloading PDB structure '2o5p'...\n",
+                        "Downloading PDB structure '3csg'...\n",
+                        "Downloading PDB structure '2gf7'...\n",
+                        "Downloading PDB structure '2ec5'...\n",
+                        "Downloading PDB structure '1j8t'...\n",
+                        "Downloading PDB structure '1e4f'...\n",
+                        "Downloading PDB structure '2ps3'...\n",
+                        "Downloading PDB structure '1gu7'...\n",
+                        "Downloading PDB structure '1bet'...\n",
+                        "Downloading PDB structure '1r5d'...\n",
+                        "Downloading PDB structure '1g40'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2hyg'...\n",
+                        "Downloading PDB structure '1eut'...\n",
+                        "Downloading PDB structure '1qmt'...\n",
+                        "Downloading PDB structure '3eug'...\n",
+                        "Downloading PDB structure '1wxx'...\n",
+                        "Downloading PDB structure '1fzr'...\n",
+                        "Downloading PDB structure '1ogb'...\n",
+                        "Downloading PDB structure '1dpg'...\n",
+                        "Downloading PDB structure '1r0s'...\n",
+                        "Downloading PDB structure '2cfo'...\n",
+                        "Downloading PDB structure '2i78'...\n",
+                        "Downloading PDB structure '1lr9'...\n",
+                        "Downloading PDB structure '1dcl'...\n",
+                        "Downloading PDB structure '1jyu'...\n",
+                        "Downloading PDB structure '3ezm'...\n",
+                        "Downloading PDB structure '2qza'...\n",
+                        "Downloading PDB structure '3c3b'...\n",
+                        "Downloading PDB structure '2zc2'...\n",
+                        "Downloading PDB structure '3deo'...\n",
+                        "Downloading PDB structure '2v8i'...\n",
+                        "Downloading PDB structure '2vj2'...\n",
+                        "Downloading PDB structure '1rki'...\n",
+                        "Downloading PDB structure '3b8s'...\n",
+                        "Downloading PDB structure '2ddb'...\n",
+                        "Downloading PDB structure '1oxs'...\n",
+                        "Downloading PDB structure '2j4r'...\n",
+                        "Downloading PDB structure '1uk2'...\n",
+                        "Downloading PDB structure '2dpy'...\n",
+                        "Downloading PDB structure '1g6y'...\n",
+                        "Downloading PDB structure '2o1c'...\n",
+                        "Downloading PDB structure '1g9u'...\n",
+                        "Downloading PDB structure '1rif'...\n",
+                        "Downloading PDB structure '2rjc'...\n",
+                        "Downloading PDB structure '1uln'...\n",
+                        "Downloading PDB structure '1wpo'...\n",
+                        "Downloading PDB structure '2qm8'...\n",
+                        "Downloading PDB structure '1wd8'...\n",
+                        "Downloading PDB structure '1dg3'...\n",
+                        "Downloading PDB structure '3enl'...\n",
+                        "Downloading PDB structure '1vk3'...\n",
+                        "Downloading PDB structure '2g67'...\n",
+                        "Downloading PDB structure '3bwb'...\n",
+                        "Downloading PDB structure '2cn2'...\n",
+                        "Downloading PDB structure '1ywf'...\n",
+                        "Downloading PDB structure '2gp7'...\n",
+                        "Downloading PDB structure '1kp9'...\n",
+                        "Downloading PDB structure '1sqe'...\n",
+                        "Downloading PDB structure '1pa1'...\n",
+                        "Downloading PDB structure '1so7'...\n",
+                        "Downloading PDB structure '2de2'...\n",
+                        "Downloading PDB structure '2go1'...\n",
+                        "Downloading PDB structure '2e3c'...\n",
+                        "Downloading PDB structure '1irm'...\n",
+                        "Downloading PDB structure '2vcl'...\n",
+                        "Downloading PDB structure '2btz'...\n",
+                        "Downloading PDB structure '2osw'...\n",
+                        "Downloading PDB structure '1x56'...\n",
+                        "Downloading PDB structure '1ofp'...\n",
+                        "Downloading PDB structure '2qt8'...\n",
+                        "Downloading PDB structure '2q0d'...\n",
+                        "Downloading PDB structure '1qme'...\n",
+                        "Downloading PDB structure '2zcg'...\n",
+                        "Downloading PDB structure '1gyn'...\n",
+                        "Downloading PDB structure '1kn9'...\n",
+                        "Downloading PDB structure '3b7y'...\n",
+                        "Downloading PDB structure '2amj'...\n",
+                        "Downloading PDB structure '2dka'...\n",
+                        "Downloading PDB structure '2rkt'...\n",
+                        "Downloading PDB structure '1fdp'...\n",
+                        "Downloading PDB structure '2vxm'...\n",
+                        "Downloading PDB structure '1lhp'...\n",
+                        "Downloading PDB structure '1xxo'...\n",
+                        "Downloading PDB structure '1ufp'...\n",
+                        "Downloading PDB structure '1h6o'...\n",
+                        "Downloading PDB structure '1pu5'...\n",
+                        "Downloading PDB structure '1rlr'...\n",
+                        "Downloading PDB structure '1pnz'...\n",
+                        "Downloading PDB structure '1bs0'...\n",
+                        "Downloading PDB structure '1imf'...\n",
+                        "Downloading PDB structure '1sgz'...\n",
+                        "Downloading PDB structure '1mss'...\n",
+                        "Downloading PDB structure '1n2o'...\n",
+                        "Downloading PDB structure '1h7s'...\n",
+                        "Downloading PDB structure '2qpq'...\n",
+                        "Downloading PDB structure '1aja'...\n",
+                        "Downloading PDB structure '1zvw'...\n",
+                        "Downloading PDB structure '2ywe'...\n",
+                        "Downloading PDB structure '2gyy'...\n",
+                        "Downloading PDB structure '2f9t'...\n",
+                        "Downloading PDB structure '1k5h'...\n",
+                        "Downloading PDB structure '2iyt'...\n",
+                        "Downloading PDB structure '2fb9'...\n",
+                        "Downloading PDB structure '1xja'...\n",
+                        "Downloading PDB structure '1pzt'...\n",
+                        "Downloading PDB structure '1b6b'...\n",
+                        "Downloading PDB structure '1dqz'...\n",
+                        "Downloading PDB structure '1kx9'...\n",
+                        "Downloading PDB structure '2z1c'...\n",
+                        "Downloading PDB structure '2gu9'...\n",
+                        "Downloading PDB structure '1zuh'...\n",
+                        "Downloading PDB structure '3seb'...\n",
+                        "Downloading PDB structure '2zlb'...\n",
+                        "Downloading PDB structure '3bqh'...\n",
+                        "Downloading PDB structure '2f4b'...\n",
+                        "Downloading PDB structure '1jfv'...\n",
+                        "Downloading PDB structure '1nzu'...\n",
+                        "Downloading PDB structure '1ww7'...\n",
+                        "Downloading PDB structure '1kt9'...\n",
+                        "Downloading PDB structure '1nxm'...\n",
+                        "Downloading PDB structure '2hv6'...\n",
+                        "Downloading PDB structure '2o0k'...\n",
+                        "Downloading PDB structure '1bhs'...\n",
+                        "Downloading PDB structure '1tib'...\n",
+                        "Downloading PDB structure '1gqn'...\n",
+                        "Downloading PDB structure '1vjs'...\n",
+                        "Downloading PDB structure '1hz6'...\n",
+                        "Downloading PDB structure '2gt2'...\n",
+                        "Downloading PDB structure '2i4l'...\n",
+                        "Downloading PDB structure '2og6'...\n",
+                        "Downloading PDB structure '2p52'...\n",
+                        "Downloading PDB structure '1l7o'...\n",
+                        "Downloading PDB structure '1ey0'...\n",
+                        "Downloading PDB structure '1n00'...\n",
+                        "Downloading PDB structure '1bsq'...\n",
+                        "Downloading PDB structure '1r1c'...\n",
+                        "Downloading PDB structure '2z8n'...\n",
+                        "Downloading PDB structure '1t2w'...\n",
+                        "Downloading PDB structure '2vrk'...\n",
+                        "Downloading PDB structure '2b7k'...\n",
+                        "Downloading PDB structure '1ujm'...\n",
+                        "Downloading PDB structure '2epl'...\n",
+                        "Downloading PDB structure '2r4i'...\n",
+                        "Downloading PDB structure '1smk'...\n",
+                        "Downloading PDB structure '2rda'...\n",
+                        "Downloading PDB structure '1qat'...\n",
+                        "Downloading PDB structure '1wdp'...\n",
+                        "Downloading PDB structure '2j24'...\n",
+                        "Downloading PDB structure '3ei7'...\n",
+                        "Downloading PDB structure '2zco'...\n",
+                        "Downloading PDB structure '1jez'...\n",
+                        "Downloading PDB structure '1x0v'...\n",
+                        "Downloading PDB structure '1i6w'...\n",
+                        "Downloading PDB structure '2ze4'...\n",
+                        "Downloading PDB structure '2dps'...\n",
+                        "Downloading PDB structure '1rn4'...\n",
+                        "Downloading PDB structure '2b4v'...\n",
+                        "Downloading PDB structure '2on3'...\n",
+                        "Downloading PDB structure '1mqr'...\n",
+                        "Downloading PDB structure '1rjf'...\n",
+                        "Downloading PDB structure '2c9r'...\n",
+                        "Downloading PDB structure '2bgq'...\n",
+                        "Downloading PDB structure '1m22'...\n",
+                        "Downloading PDB structure '2vf4'...\n",
+                        "Downloading PDB structure '1fo8'...\n",
+                        "Downloading PDB structure '2q18'...\n",
+                        "Downloading PDB structure '1tqi'...\n",
+                        "Downloading PDB structure '1jxh'...\n",
+                        "Downloading PDB structure '1nsj'...\n",
+                        "Downloading PDB structure '2etv'...\n",
+                        "Downloading PDB structure '2bce'...\n",
+                        "Downloading PDB structure '1rba'...\n",
+                        "Downloading PDB structure '1s0g'...\n",
+                        "Downloading PDB structure '2ihi'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2f8s'...\n",
+                        "Downloading PDB structure '1goh'...\n",
+                        "Downloading PDB structure '1yuy'...\n",
+                        "Downloading PDB structure '2p7l'...\n",
+                        "Downloading PDB structure '1m47'...\n",
+                        "Downloading PDB structure '1vde'...\n",
+                        "Downloading PDB structure '2qct'...\n",
+                        "Downloading PDB structure '1kzh'...\n",
+                        "Downloading PDB structure '3bok'...\n",
+                        "Downloading PDB structure '1ymy'...\n",
+                        "Downloading PDB structure '2e3m'...\n",
+                        "Downloading PDB structure '1tws'...\n",
+                        "Downloading PDB structure '1f8n'...\n",
+                        "Downloading PDB structure '1sry'...\n",
+                        "Downloading PDB structure '1jop'...\n",
+                        "Downloading PDB structure '1rxt'...\n",
+                        "Downloading PDB structure '1u6e'...\n",
+                        "Downloading PDB structure '1xyf'...\n",
+                        "Downloading PDB structure '3c8v'...\n",
+                        "Downloading PDB structure '2dwq'...\n",
+                        "Downloading PDB structure '2orx'...\n",
+                        "Downloading PDB structure '1lyy'...\n",
+                        "Downloading PDB structure '3e59'...\n",
+                        "Downloading PDB structure '1zy4'...\n",
+                        "Downloading PDB structure '2dh3'...\n",
+                        "Downloading PDB structure '1jde'...\n",
+                        "Downloading PDB structure '2ofj'...\n",
+                        "Downloading PDB structure '2v6f'...\n",
+                        "Downloading PDB structure '2bg1'...\n",
+                        "Downloading PDB structure '1mw9'...\n",
+                        "Downloading PDB structure '1tr9'...\n",
+                        "Downloading PDB structure '2imo'...\n",
+                        "Downloading PDB structure '1qzq'...\n",
+                        "Downloading PDB structure '2zig'...\n",
+                        "Downloading PDB structure '2dul'...\n",
+                        "Downloading PDB structure '1uzq'...\n",
+                        "Downloading PDB structure '2fjy'...\n",
+                        "Downloading PDB structure '2f6p'...\n",
+                        "Downloading PDB structure '3bgu'...\n",
+                        "Downloading PDB structure '2dke'...\n",
+                        "Downloading PDB structure '2qfd'...\n",
+                        "Downloading PDB structure '2ci3'...\n",
+                        "Downloading PDB structure '2jdw'...\n",
+                        "Downloading PDB structure '1ivn'...\n",
+                        "Downloading PDB structure '1pvw'...\n",
+                        "Downloading PDB structure '2pqi'...\n",
+                        "Downloading PDB structure '1xe8'...\n",
+                        "Downloading PDB structure '2e0k'...\n",
+                        "Downloading PDB structure '1a3h'...\n",
+                        "Downloading PDB structure '2znb'...\n",
+                        "Downloading PDB structure '2pgx'...\n",
+                        "Downloading PDB structure '1ds0'...\n",
+                        "Downloading PDB structure '1q4o'...\n",
+                        "Downloading PDB structure '2fss'...\n",
+                        "Downloading PDB structure '1t2u'...\n",
+                        "Downloading PDB structure '3c2h'...\n",
+                        "Downloading PDB structure '2cz9'...\n",
+                        "Downloading PDB structure '2nrt'...\n",
+                        "Downloading PDB structure '1br8'...\n",
+                        "Downloading PDB structure '1h8n'...\n",
+                        "Downloading PDB structure '1h3i'...\n",
+                        "Downloading PDB structure '1hka'...\n",
+                        "Downloading PDB structure '2f1w'...\n",
+                        "Downloading PDB structure '2fz6'...\n",
+                        "Downloading PDB structure '1q31'...\n",
+                        "Downloading PDB structure '1l0w'...\n",
+                        "Downloading PDB structure '1o7v'...\n",
+                        "Downloading PDB structure '1pz9'...\n",
+                        "Downloading PDB structure '2pyq'...\n",
+                        "Downloading PDB structure '1k4k'...\n",
+                        "Downloading PDB structure '2q7u'...\n",
+                        "Downloading PDB structure '1vsm'...\n",
+                        "Downloading PDB structure '1xti'...\n",
+                        "Downloading PDB structure '1upl'...\n",
+                        "Downloading PDB structure '1a8d'...\n",
+                        "Downloading PDB structure '1yjl'...\n",
+                        "Downloading PDB structure '2it9'...\n",
+                        "Downloading PDB structure '1p92'...\n",
+                        "Downloading PDB structure '2gol'...\n",
+                        "Downloading PDB structure '3d97'...\n",
+                        "Downloading PDB structure '2z7a'...\n",
+                        "Downloading PDB structure '1m0z'...\n",
+                        "Downloading PDB structure '1x2g'...\n",
+                        "Downloading PDB structure '2fsj'...\n",
+                        "Downloading PDB structure '1e8y'...\n",
+                        "Downloading PDB structure '1ebu'...\n",
+                        "Downloading PDB structure '2jkf'...\n",
+                        "Downloading PDB structure '1n4d'...\n",
+                        "Downloading PDB structure '2gzr'...\n",
+                        "Downloading PDB structure '1thf'...\n",
+                        "Downloading PDB structure '2oej'...\n",
+                        "Downloading PDB structure '2jep'...\n",
+                        "Downloading PDB structure '2ik9'...\n",
+                        "Downloading PDB structure '2izp'...\n",
+                        "Downloading PDB structure '1k0m'...\n",
+                        "Downloading PDB structure '2uyr'...\n",
+                        "Downloading PDB structure '2plf'...\n",
+                        "Downloading PDB structure '2yx6'...\n",
+                        "Downloading PDB structure '2rck'...\n",
+                        "Downloading PDB structure '3c95'...\n",
+                        "Downloading PDB structure '3d5u'...\n",
+                        "Downloading PDB structure '2oew'...\n",
+                        "Downloading PDB structure '2vns'...\n",
+                        "Downloading PDB structure '1od4'...\n",
+                        "Downloading PDB structure '1h7b'...\n",
+                        "Downloading PDB structure '2qo2'...\n",
+                        "Downloading PDB structure '1fcq'...\n",
+                        "Downloading PDB structure '1g6l'...\n",
+                        "Downloading PDB structure '1pbg'...\n",
+                        "Downloading PDB structure '1pgs'...\n",
+                        "Downloading PDB structure '1dkl'...\n",
+                        "Downloading PDB structure '2pgy'...\n",
+                        "Downloading PDB structure '2veg'...\n",
+                        "Downloading PDB structure '1rpl'...\n",
+                        "Downloading PDB structure '2znv'...\n",
+                        "Downloading PDB structure '2ajg'...\n",
+                        "Downloading PDB structure '1gxr'...\n",
+                        "Downloading PDB structure '1f1s'...\n",
+                        "Downloading PDB structure '2d5l'...\n",
+                        "Downloading PDB structure '1tvl'...\n",
+                        "Downloading PDB structure '3cgz'...\n",
+                        "Downloading PDB structure '2qj3'...\n",
+                        "Downloading PDB structure '2obl'...\n",
+                        "Downloading PDB structure '1uoc'...\n",
+                        "Downloading PDB structure '2ddm'...\n",
+                        "Downloading PDB structure '2lkf'...\n",
+                        "Downloading PDB structure '2qvl'...\n",
+                        "Downloading PDB structure '2hp3'...\n",
+                        "Downloading PDB structure '2i2w'...\n",
+                        "Downloading PDB structure '2d2e'...\n",
+                        "Downloading PDB structure '1w16'...\n",
+                        "Downloading PDB structure '1obp'...\n",
+                        "Downloading PDB structure '1na5'...\n",
+                        "Downloading PDB structure '3wrp'...\n",
+                        "Downloading PDB structure '2f08'...\n",
+                        "Downloading PDB structure '2quk'...\n",
+                        "Downloading PDB structure '2acf'...\n",
+                        "Downloading PDB structure '2i7h'...\n",
+                        "Downloading PDB structure '1ozt'...\n",
+                        "Downloading PDB structure '1uu0'...\n",
+                        "Downloading PDB structure '1beo'...\n",
+                        "Downloading PDB structure '2sbt'...\n",
+                        "Downloading PDB structure '1hxj'...\n",
+                        "Downloading PDB structure '1gy0'...\n",
+                        "Downloading PDB structure '1fqn'...\n",
+                        "Downloading PDB structure '2qvk'...\n",
+                        "Downloading PDB structure '1x8e'...\n",
+                        "Downloading PDB structure '2qbv'...\n",
+                        "Downloading PDB structure '2qzp'...\n",
+                        "Downloading PDB structure '2c7i'...\n",
+                        "Downloading PDB structure '2dg0'...\n",
+                        "Downloading PDB structure '2zf3'...\n",
+                        "Downloading PDB structure '2box'...\n",
+                        "Downloading PDB structure '2av8'...\n",
+                        "Downloading PDB structure '1jiq'...\n",
+                        "Downloading PDB structure '1psr'...\n",
+                        "Downloading PDB structure '2rca'...\n",
+                        "Downloading PDB structure '2yrf'...\n",
+                        "Downloading PDB structure '1iun'...\n",
+                        "Downloading PDB structure '1f2v'...\n",
+                        "Downloading PDB structure '2o70'...\n",
+                        "Downloading PDB structure '2vb3'...\n",
+                        "Downloading PDB structure '1avk'...\n",
+                        "Downloading PDB structure '2vw0'...\n",
+                        "Downloading PDB structure '1evq'...\n",
+                        "Downloading PDB structure '2eaw'...\n",
+                        "Downloading PDB structure '1mzl'...\n",
+                        "Downloading PDB structure '1o9n'...\n",
+                        "Downloading PDB structure '1jx1'...\n",
+                        "Downloading PDB structure '2e7i'...\n",
+                        "Downloading PDB structure '2oyc'...\n",
+                        "Downloading PDB structure '1mdf'...\n",
+                        "Downloading PDB structure '1w5r'...\n",
+                        "Downloading PDB structure '2zr3'...\n",
+                        "Downloading PDB structure '2iqy'...\n",
+                        "Downloading PDB structure '2bkb'...\n",
+                        "Downloading PDB structure '1vf8'...\n",
+                        "Downloading PDB structure '1fhm'...\n",
+                        "Downloading PDB structure '1usl'...\n",
+                        "Downloading PDB structure '2fyo'...\n",
+                        "Downloading PDB structure '2fp8'...\n",
+                        "Downloading PDB structure '2g6v'...\n",
+                        "Downloading PDB structure '3chi'...\n",
+                        "Downloading PDB structure '2byw'...\n",
+                        "Downloading PDB structure '2aej'...\n",
+                        "Downloading PDB structure '1wac'...\n",
+                        "Downloading PDB structure '1ncz'...\n",
+                        "Downloading PDB structure '1arl'...\n",
+                        "Downloading PDB structure '2f3n'...\n",
+                        "Downloading PDB structure '1juk'...\n",
+                        "Downloading PDB structure '2bw0'...\n",
+                        "Downloading PDB structure '2yyv'...\n",
+                        "Downloading PDB structure '2hkl'...\n",
+                        "Downloading PDB structure '2oam'...\n",
+                        "Downloading PDB structure '1kko'...\n",
+                        "Downloading PDB structure '2o6f'...\n",
+                        "Downloading PDB structure '1bt2'...\n",
+                        "Downloading PDB structure '1lkp'...\n",
+                        "Downloading PDB structure '1iad'...\n",
+                        "Downloading PDB structure '2p76'...\n",
+                        "Downloading PDB structure '2yu2'...\n",
+                        "Downloading PDB structure '1l7r'...\n",
+                        "Downloading PDB structure '2vzo'...\n",
+                        "Downloading PDB structure '1dcd'...\n",
+                        "Downloading PDB structure '2e3j'...\n",
+                        "Downloading PDB structure '2qev'...\n",
+                        "Downloading PDB structure '2vfw'...\n",
+                        "Downloading PDB structure '1mkb'...\n",
+                        "Downloading PDB structure '1fa8'...\n",
+                        "Downloading PDB structure '3c6y'...\n",
+                        "Downloading PDB structure '1qam'...\n",
+                        "Downloading PDB structure '2veo'...\n",
+                        "Downloading PDB structure '2i49'...\n",
+                        "Downloading PDB structure '1tee'...\n",
+                        "Downloading PDB structure '1hzt'...\n",
+                        "Downloading PDB structure '1hl0'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1snz'...\n",
+                        "Downloading PDB structure '1iiw'...\n",
+                        "Downloading PDB structure '2b3l'...\n",
+                        "Downloading PDB structure '2v28'...\n",
+                        "Downloading PDB structure '1esc'...\n",
+                        "Downloading PDB structure '2cwc'...\n",
+                        "Downloading PDB structure '2a0k'...\n",
+                        "Downloading PDB structure '2iw2'...\n",
+                        "Downloading PDB structure '1ilw'...\n",
+                        "Downloading PDB structure '3bbe'...\n",
+                        "Downloading PDB structure '1l5n'...\n",
+                        "Downloading PDB structure '3bf7'...\n",
+                        "Downloading PDB structure '1tzb'...\n",
+                        "Downloading PDB structure '1oi2'...\n",
+                        "Downloading PDB structure '2dec'...\n",
+                        "Downloading PDB structure '3bu9'...\n",
+                        "Downloading PDB structure '2f8h'...\n",
+                        "Downloading PDB structure '2qht'...\n",
+                        "Downloading PDB structure '1uj4'...\n",
+                        "Downloading PDB structure '1m14'...\n",
+                        "Downloading PDB structure '1mix'...\n",
+                        "Downloading PDB structure '1jrk'...\n",
+                        "Downloading PDB structure '1w59'...\n",
+                        "Downloading PDB structure '1g24'...\n",
+                        "Downloading PDB structure '1vz0'...\n",
+                        "Downloading PDB structure '2f6l'...\n",
+                        "Downloading PDB structure '2idh'...\n",
+                        "Downloading PDB structure '3dj1'...\n",
+                        "Downloading PDB structure '2hhl'...\n",
+                        "Downloading PDB structure '1w90'...\n",
+                        "Downloading PDB structure '2j3p'...\n",
+                        "Downloading PDB structure '2cua'...\n",
+                        "Downloading PDB structure '1u4r'...\n",
+                        "Downloading PDB structure '1i4s'...\n",
+                        "Downloading PDB structure '1sza'...\n",
+                        "Downloading PDB structure '1mmi'...\n",
+                        "Downloading PDB structure '1jqq'...\n",
+                        "Downloading PDB structure '1gaj'...\n",
+                        "Downloading PDB structure '1gnu'...\n",
+                        "Downloading PDB structure '5gal'...\n",
+                        "Downloading PDB structure '1vll'...\n",
+                        "Downloading PDB structure '3bzt'...\n",
+                        "Downloading PDB structure '2q04'...\n",
+                        "Downloading PDB structure '1il5'...\n",
+                        "Downloading PDB structure '1wn2'...\n",
+                        "Downloading PDB structure '2gkq'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2d59'...\n",
+                        "Downloading PDB structure '1wns'...\n",
+                        "Downloading PDB structure '2fcj'...\n",
+                        "Downloading PDB structure '1uuj'...\n",
+                        "Downloading PDB structure '2hts'...\n",
+                        "Downloading PDB structure '1w1h'...\n",
+                        "Downloading PDB structure '1yes'...\n",
+                        "Downloading PDB structure '2h74'...\n",
+                        "Downloading PDB structure '2c3g'...\n",
+                        "Downloading PDB structure '2ok3'...\n",
+                        "Downloading PDB structure '1m6t'...\n",
+                        "Downloading PDB structure '1orb'...\n",
+                        "Downloading PDB structure '1u8t'...\n",
+                        "Downloading PDB structure '2bl7'...\n",
+                        "Downloading PDB structure '2ccq'...\n",
+                        "Downloading PDB structure '2pe8'...\n",
+                        "Downloading PDB structure '1p9u'...\n",
+                        "Downloading PDB structure '2z42'...\n",
+                        "Downloading PDB structure '1nk1'...\n",
+                        "Downloading PDB structure '2d2q'...\n",
+                        "Downloading PDB structure '1l0h'...\n",
+                        "Downloading PDB structure '1xze'...\n",
+                        "Downloading PDB structure '2h68'...\n",
+                        "Downloading PDB structure '2bis'...\n",
+                        "Downloading PDB structure '1f46'...\n",
+                        "Downloading PDB structure '2c3v'...\n",
+                        "Downloading PDB structure '1i3c'...\n",
+                        "Downloading PDB structure '1z52'...\n",
+                        "Downloading PDB structure '1fil'...\n",
+                        "Downloading PDB structure '1gnd'...\n",
+                        "Downloading PDB structure '1yft'...\n",
+                        "Downloading PDB structure '1ox8'...\n",
+                        "Downloading PDB structure '2ecr'...\n",
+                        "Downloading PDB structure '1r6k'...\n",
+                        "Downloading PDB structure '1p5q'...\n",
+                        "Downloading PDB structure '1jwf'...\n",
+                        "Downloading PDB structure '2gvl'...\n",
+                        "Downloading PDB structure '1k9x'...\n",
+                        "Downloading PDB structure '2dcz'...\n",
+                        "Downloading PDB structure '1xqv'...\n",
+                        "Downloading PDB structure '1slc'...\n",
+                        "Downloading PDB structure '2fs5'...\n",
+                        "Downloading PDB structure '1yz4'...\n",
+                        "Downloading PDB structure '1lwb'...\n",
+                        "Downloading PDB structure '2d1z'...\n",
+                        "Downloading PDB structure '2ckd'...\n",
+                        "Downloading PDB structure '2hvf'...\n",
+                        "Downloading PDB structure '1pp3'...\n",
+                        "Downloading PDB structure '2bjw'...\n",
+                        "Downloading PDB structure '2gty'...\n",
+                        "Downloading PDB structure '2q5x'...\n",
+                        "Downloading PDB structure '1knl'...\n",
+                        "Downloading PDB structure '1lxt'...\n",
+                        "Downloading PDB structure '2rad'...\n",
+                        "Downloading PDB structure '1oee'...\n",
+                        "Downloading PDB structure '1t7n'...\n",
+                        "Downloading PDB structure '3c8n'...\n",
+                        "Downloading PDB structure '1vhr'...\n",
+                        "Downloading PDB structure '2zg2'...\n",
+                        "Downloading PDB structure '2gxu'...\n",
+                        "Downloading PDB structure '1gcu'...\n",
+                        "Downloading PDB structure '1qim'...\n",
+                        "Downloading PDB structure '4kiv'...\n",
+                        "Downloading PDB structure '3e2j'...\n",
+                        "Downloading PDB structure '1gxm'...\n",
+                        "Downloading PDB structure '2cbm'...\n",
+                        "Downloading PDB structure '2if8'...\n",
+                        "Downloading PDB structure '2z2n'...\n",
+                        "Downloading PDB structure '1ayf'...\n",
+                        "Downloading PDB structure '1fbt'...\n",
+                        "Downloading PDB structure '1cz3'...\n",
+                        "Downloading PDB structure '1x2j'...\n",
+                        "Downloading PDB structure '3dwh'...\n",
+                        "Downloading PDB structure '1qpo'...\n",
+                        "Downloading PDB structure '2awx'...\n",
+                        "Downloading PDB structure '1wgc'...\n",
+                        "Downloading PDB structure '2a6c'...\n",
+                        "Downloading PDB structure '1b6w'...\n",
+                        "Downloading PDB structure '1sqg'...\n",
+                        "Downloading PDB structure '1u24'...\n",
+                        "Downloading PDB structure '1glh'...\n",
+                        "Downloading PDB structure '2huz'...\n",
+                        "Downloading PDB structure '1f14'...\n",
+                        "Downloading PDB structure '2iru'...\n",
+                        "Downloading PDB structure '2h1v'...\n",
+                        "Downloading PDB structure '1ew4'...\n",
+                        "Downloading PDB structure '1jax'...\n",
+                        "Downloading PDB structure '1wcv'...\n",
+                        "Downloading PDB structure '1w79'...\n",
+                        "Downloading PDB structure '1nh1'...\n",
+                        "Downloading PDB structure '3cb6'...\n",
+                        "Downloading PDB structure '1gyj'...\n",
+                        "Downloading PDB structure '1zgr'...\n",
+                        "Downloading PDB structure '1kpc'...\n",
+                        "Downloading PDB structure '2byd'...\n",
+                        "Downloading PDB structure '1cmb'...\n",
+                        "Downloading PDB structure '1h09'...\n",
+                        "Downloading PDB structure '3cyp'...\n",
+                        "Downloading PDB structure '2nyh'...\n",
+                        "Downloading PDB structure '2jfd'...\n",
+                        "Downloading PDB structure '1ri5'...\n",
+                        "Downloading PDB structure '2ii2'...\n",
+                        "Downloading PDB structure '2i6i'...\n",
+                        "Downloading PDB structure '1tw7'...\n",
+                        "Downloading PDB structure '2atb'...\n",
+                        "Downloading PDB structure '1n57'...\n",
+                        "Downloading PDB structure '1qsa'...\n",
+                        "Downloading PDB structure '1xnh'...\n",
+                        "Downloading PDB structure '3cey'...\n",
+                        "Downloading PDB structure '2obr'...\n",
+                        "Downloading PDB structure '1ppn'...\n",
+                        "Downloading PDB structure '1tje'...\n",
+                        "Downloading PDB structure '1ah6'...\n",
+                        "Downloading PDB structure '2eak'...\n",
+                        "Downloading PDB structure '1wny'...\n",
+                        "Downloading PDB structure '1f6y'...\n",
+                        "Downloading PDB structure '1na8'...\n",
+                        "Downloading PDB structure '1ayx'...\n",
+                        "Downloading PDB structure '1h8u'...\n",
+                        "Downloading PDB structure '1bk7'...\n",
+                        "Downloading PDB structure '1k75'...\n",
+                        "Downloading PDB structure '2r7f'...\n",
+                        "Downloading PDB structure '1c3f'...\n",
+                        "Downloading PDB structure '2raf'...\n",
+                        "Downloading PDB structure '1w28'...\n",
+                        "Downloading PDB structure '1r7i'...\n",
+                        "Downloading PDB structure '2hzb'...\n",
+                        "Downloading PDB structure '2vfx'...\n",
+                        "Downloading PDB structure '3d9i'...\n",
+                        "Downloading PDB structure '1j85'...\n",
+                        "Downloading PDB structure '4ptd'...\n",
+                        "Downloading PDB structure '1twd'...\n",
+                        "Downloading PDB structure '1bdj'...\n",
+                        "Downloading PDB structure '2f5g'...\n",
+                        "Downloading PDB structure '1qjv'...\n",
+                        "Downloading PDB structure '2qgq'...\n",
+                        "Downloading PDB structure '2vfy'...\n",
+                        "Downloading PDB structure '1ww8'...\n",
+                        "Downloading PDB structure '3c8h'...\n",
+                        "Downloading PDB structure '1r6j'...\n",
+                        "Downloading PDB structure '1agj'...\n",
+                        "Downloading PDB structure '1v8q'...\n",
+                        "Downloading PDB structure '2d05'...\n",
+                        "Downloading PDB structure '2r88'...\n",
+                        "Downloading PDB structure '2eh1'...\n",
+                        "Downloading PDB structure '1gy7'...\n",
+                        "Downloading PDB structure '1l8f'...\n",
+                        "Downloading PDB structure '2fao'...\n",
+                        "Downloading PDB structure '1e9n'...\n",
+                        "Downloading PDB structure '4mat'...\n",
+                        "Downloading PDB structure '2j16'...\n",
+                        "Downloading PDB structure '2hqq'...\n",
+                        "Downloading PDB structure '1qj9'...\n",
+                        "Downloading PDB structure '1ohd'...\n",
+                        "Downloading PDB structure '2fbt'...\n",
+                        "Downloading PDB structure '1vz2'...\n",
+                        "Downloading PDB structure '3db4'...\n",
+                        "Downloading PDB structure '1czt'...\n",
+                        "Downloading PDB structure '2rem'...\n",
+                        "Downloading PDB structure '1nl3'...\n",
+                        "Downloading PDB structure '3c1z'...\n",
+                        "Downloading PDB structure '1uyp'...\n",
+                        "Downloading PDB structure '1wtj'...\n",
+                        "Downloading PDB structure '1xxl'...\n",
+                        "Downloading PDB structure '3bi9'...\n",
+                        "Downloading PDB structure '1cqz'...\n",
+                        "Downloading PDB structure '2hy7'...\n",
+                        "Downloading PDB structure '2d0a'...\n",
+                        "Downloading PDB structure '2uy2'...\n",
+                        "Downloading PDB structure '1uc8'...\n",
+                        "Downloading PDB structure '3sqc'...\n",
+                        "Downloading PDB structure '2glb'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2pfl'...\n",
+                        "Downloading PDB structure '2paw'...\n",
+                        "Downloading PDB structure '2q4o'...\n",
+                        "Downloading PDB structure '1lf6'...\n",
+                        "Downloading PDB structure '1fe4'...\n",
+                        "Downloading PDB structure '2ree'...\n",
+                        "Downloading PDB structure '2q6z'...\n",
+                        "Downloading PDB structure '2egt'...\n",
+                        "Downloading PDB structure '1ut9'...\n",
+                        "Downloading PDB structure '2gwm'...\n",
+                        "Downloading PDB structure '1i7a'...\n",
+                        "Downloading PDB structure '1qyo'...\n",
+                        "Downloading PDB structure '2f1v'...\n",
+                        "Downloading PDB structure '2bkn'...\n",
+                        "Downloading PDB structure '1ogm'...\n",
+                        "Downloading PDB structure '1f1m'...\n",
+                        "Downloading PDB structure '2e4p'...\n",
+                        "Downloading PDB structure '1ebb'...\n",
+                        "Downloading PDB structure '1o9z'...\n",
+                        "Downloading PDB structure '1l0x'...\n",
+                        "Downloading PDB structure '2jhj'...\n",
+                        "Downloading PDB structure '2cck'...\n",
+                        "Downloading PDB structure '3crm'...\n",
+                        "Downloading PDB structure '1plu'...\n",
+                        "Downloading PDB structure '3eo4'...\n",
+                        "Downloading PDB structure '1ll3'...\n",
+                        "Downloading PDB structure '1na3'...\n",
+                        "Downloading PDB structure '1ltu'...\n",
+                        "Downloading PDB structure '3d59'...\n",
+                        "Downloading PDB structure '1c3p'...\n",
+                        "Downloading PDB structure '1qba'...\n",
+                        "Downloading PDB structure '1l7j'...\n",
+                        "Downloading PDB structure '2hzr'...\n",
+                        "Downloading PDB structure '2e1y'...\n",
+                        "Downloading PDB structure '1eg3'...\n",
+                        "Downloading PDB structure '2d2r'...\n",
+                        "Downloading PDB structure '1bia'...\n",
+                        "Downloading PDB structure '2jcp'...\n",
+                        "Downloading PDB structure '1b73'...\n",
+                        "Downloading PDB structure '1va0'...\n",
+                        "Downloading PDB structure '2fv0'...\n",
+                        "Downloading PDB structure '1nw8'...\n",
+                        "Downloading PDB structure '3b9n'...\n",
+                        "Downloading PDB structure '1sgk'...\n",
+                        "Downloading PDB structure '1v43'...\n",
+                        "Downloading PDB structure '1dqg'...\n",
+                        "Downloading PDB structure '2g2j'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2ghr'...\n",
+                        "Downloading PDB structure '1xix'...\n",
+                        "Downloading PDB structure '2v3j'...\n",
+                        "Downloading PDB structure '1yks'...\n",
+                        "Downloading PDB structure '1h9s'...\n",
+                        "Downloading PDB structure '1edz'...\n",
+                        "Downloading PDB structure '2hbj'...\n",
+                        "Downloading PDB structure '2j0a'...\n",
+                        "Downloading PDB structure '2vx4'...\n",
+                        "Downloading PDB structure '3cxu'...\n",
+                        "Downloading PDB structure '2g0a'...\n",
+                        "Downloading PDB structure '1ty0'...\n",
+                        "Downloading PDB structure '1cem'...\n",
+                        "Downloading PDB structure '2jfu'...\n",
+                        "Downloading PDB structure '1zs7'...\n",
+                        "Downloading PDB structure '1kuf'...\n",
+                        "Downloading PDB structure '1mpg'...\n",
+                        "Downloading PDB structure '1q6h'...\n",
+                        "Downloading PDB structure '2yvn'...\n",
+                        "Downloading PDB structure '2p0f'...\n",
+                        "Downloading PDB structure '3cj1'...\n",
+                        "Downloading PDB structure '2bvy'...\n",
+                        "Downloading PDB structure '2cb9'...\n",
+                        "Downloading PDB structure '2hkn'...\n",
+                        "Downloading PDB structure '1w17'...\n",
+                        "Downloading PDB structure '1lbq'...\n",
+                        "Downloading PDB structure '1wxd'...\n",
+                        "Downloading PDB structure '1w9s'...\n",
+                        "Downloading PDB structure '153l'...\n",
+                        "Downloading PDB structure '2jh1'...\n",
+                        "Downloading PDB structure '2e1u'...\n",
+                        "Downloading PDB structure '1yd3'...\n",
+                        "Downloading PDB structure '1tf5'...\n",
+                        "Downloading PDB structure '2ciq'...\n",
+                        "Downloading PDB structure '2pgd'...\n",
+                        "Downloading PDB structure '1xw3'...\n",
+                        "Downloading PDB structure '3csr'...\n",
+                        "Downloading PDB structure '1smn'...\n",
+                        "Downloading PDB structure '2dpo'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1obs'...\n",
+                        "Downloading PDB structure '1wos'...\n",
+                        "Downloading PDB structure '2nsg'...\n",
+                        "Downloading PDB structure '1auo'...\n",
+                        "Downloading PDB structure '2r57'...\n",
+                        "Downloading PDB structure '1jly'...\n",
+                        "Downloading PDB structure '1i9y'...\n",
+                        "Downloading PDB structure '2fma'...\n",
+                        "Downloading PDB structure '2r60'...\n",
+                        "Downloading PDB structure '1g5r'...\n",
+                        "Downloading PDB structure '1jsy'...\n",
+                        "Downloading PDB structure '2r11'...\n",
+                        "Downloading PDB structure '2g7e'...\n",
+                        "Downloading PDB structure '1j23'...\n",
+                        "Downloading PDB structure '2o4u'...\n",
+                        "Downloading PDB structure '2vl3'...\n",
+                        "Downloading PDB structure '3byl'...\n",
+                        "Downloading PDB structure '1yqg'...\n",
+                        "Downloading PDB structure '2c4k'...\n",
+                        "Downloading PDB structure '2qtf'...\n",
+                        "Downloading PDB structure '3eua'...\n",
+                        "Downloading PDB structure '1hf8'...\n",
+                        "Downloading PDB structure '3c7m'...\n",
+                        "Downloading PDB structure '2q22'...\n",
+                        "Downloading PDB structure '1g0z'...\n",
+                        "Downloading PDB structure '2qb0'...\n",
+                        "Downloading PDB structure '1s20'...\n",
+                        "Downloading PDB structure '2eck'...\n",
+                        "Downloading PDB structure '1sz2'...\n",
+                        "Downloading PDB structure '1lfi'...\n",
+                        "Downloading PDB structure '1n0u'...\n",
+                        "Downloading PDB structure '6cts'...\n",
+                        "Downloading PDB structure '3czk'...\n",
+                        "Downloading PDB structure '2o0d'...\n",
+                        "Downloading PDB structure '2ihz'...\n",
+                        "Downloading PDB structure '2olr'...\n",
+                        "Downloading PDB structure '2j4e'...\n",
+                        "Downloading PDB structure '2prz'...\n",
+                        "Downloading PDB structure '1m83'...\n",
+                        "Downloading PDB structure '2pqc'...\n",
+                        "Downloading PDB structure '2gke'...\n",
+                        "Downloading PDB structure '2af3'...\n",
+                        "Downloading PDB structure '1pn4'...\n",
+                        "Downloading PDB structure '1o9l'...\n",
+                        "Downloading PDB structure '2h4z'...\n",
+                        "Downloading PDB structure '1jbw'...\n",
+                        "Downloading PDB structure '1ywt'...\n",
+                        "Downloading PDB structure '2hl0'...\n",
+                        "Downloading PDB structure '2e2o'...\n",
+                        "Downloading PDB structure '1pb1'...\n",
+                        "Downloading PDB structure '1xvt'...\n",
+                        "Downloading PDB structure '2f8z'...\n",
+                        "Downloading PDB structure '2zn9'...\n",
+                        "Downloading PDB structure '1vbi'...\n",
+                        "Downloading PDB structure '1ho5'...\n",
+                        "Downloading PDB structure '3d8n'...\n",
+                        "Downloading PDB structure '1zu0'...\n",
+                        "Downloading PDB structure '1z17'...\n",
+                        "Downloading PDB structure '1lct'...\n",
+                        "Downloading PDB structure '2gha'...\n",
+                        "Downloading PDB structure '2uvi'...\n",
+                        "Downloading PDB structure '2vqd'...\n",
+                        "Downloading PDB structure '1jvy'...\n",
+                        "Downloading PDB structure '1gky'...\n",
+                        "Downloading PDB structure '2jg1'...\n",
+                        "Downloading PDB structure '1lii'...\n",
+                        "Downloading PDB structure '2h9q'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1ef3'...\n",
+                        "Downloading PDB structure '1ojp'...\n",
+                        "Downloading PDB structure '1qkj'...\n",
+                        "Downloading PDB structure '2uyt'...\n",
+                        "Downloading PDB structure '2cnq'...\n",
+                        "Downloading PDB structure '2qrl'...\n",
+                        "Downloading PDB structure '2ouu'...\n",
+                        "Downloading PDB structure '1h72'...\n",
+                        "Downloading PDB structure '1yhm'...\n",
+                        "Downloading PDB structure '1j4r'...\n",
+                        "Downloading PDB structure '1rby'...\n",
+                        "Downloading PDB structure '2gcg'...\n",
+                        "Downloading PDB structure '1yyr'...\n",
+                        "Downloading PDB structure '2j62'...\n",
+                        "Downloading PDB structure '1u3g'...\n",
+                        "Downloading PDB structure '1g7t'...\n",
+                        "Downloading PDB structure '1bbu'...\n",
+                        "Downloading PDB structure '1ady'...\n",
+                        "Downloading PDB structure '2olv'...\n",
+                        "Downloading PDB structure '2ns8'...\n",
+                        "Downloading PDB structure '1zxy'...\n",
+                        "Downloading PDB structure '1bg0'...\n",
+                        "Downloading PDB structure '1s7n'...\n",
+                        "Downloading PDB structure '2dth'...\n",
+                        "Downloading PDB structure '1eeh'...\n",
+                        "Downloading PDB structure '1ynh'...\n",
+                        "Downloading PDB structure '1i52'...\n",
+                        "Downloading PDB structure '2nxe'...\n",
+                        "Downloading PDB structure '1l7e'...\n",
+                        "Downloading PDB structure '2gk6'...\n",
+                        "Downloading PDB structure '1w9j'...\n",
+                        "Downloading PDB structure '2h1f'...\n",
+                        "Downloading PDB structure '1taq'...\n",
+                        "Downloading PDB structure '2hhp'...\n",
+                        "Downloading PDB structure '1w2d'...\n",
+                        "Downloading PDB structure '2z5k'...\n",
+                        "Downloading PDB structure '1p8x'...\n",
+                        "Downloading PDB structure '1r22'...\n",
+                        "Downloading PDB structure '1tq6'...\n",
+                        "Downloading PDB structure '2pkn'...\n",
+                        "Downloading PDB structure '2iah'...\n",
+                        "Downloading PDB structure '3csb'...\n",
+                        "Downloading PDB structure '2gfa'...\n",
+                        "Downloading PDB structure '2ebf'...\n",
+                        "Downloading PDB structure '1mmt'...\n",
+                        "Downloading PDB structure '1e4g'...\n",
+                        "Downloading PDB structure '2ps0'...\n",
+                        "Downloading PDB structure '1guf'...\n",
+                        "Downloading PDB structure '1btg'...\n",
+                        "Downloading PDB structure '1tq9'...\n",
+                        "Downloading PDB structure '1rid'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2f5f'...\n",
+                        "Downloading PDB structure '1w8n'...\n",
+                        "Downloading PDB structure '1dyt'...\n",
+                        "Downloading PDB structure '1flz'...\n",
+                        "Downloading PDB structure '2cww'...\n",
+                        "Downloading PDB structure '1m0d'...\n",
+                        "Downloading PDB structure '1w1y'...\n",
+                        "Downloading PDB structure '2dpg'...\n",
+                        "Downloading PDB structure '1r15'...\n",
+                        "Downloading PDB structure '1u8e'...\n",
+                        "Downloading PDB structure '1lr8'...\n",
+                        "Downloading PDB structure '1mcs'...\n",
+                        "Downloading PDB structure '1jyr'...\n",
+                        "Downloading PDB structure '1l5b'...\n",
+                        "Downloading PDB structure '2qyu'...\n",
+                        "Downloading PDB structure '2zgv'...\n",
+                        "Downloading PDB structure '3dep'...\n",
+                        "Downloading PDB structure '2v8j'...\n",
+                        "Downloading PDB structure '3b9d'...\n",
+                        "Downloading PDB structure '2epf'...\n",
+                        "Downloading PDB structure '1oxu'...\n",
+                        "Downloading PDB structure '1t6c'...\n",
+                        "Downloading PDB structure '2z3c'...\n",
+                        "Downloading PDB structure '1jzr'...\n",
+                        "Downloading PDB structure '1jl5'...\n",
+                        "Downloading PDB structure '2rhu'...\n",
+                        "Downloading PDB structure '1uha'...\n",
+                        "Downloading PDB structure '1njt'...\n",
+                        "Downloading PDB structure '2qm7'...\n",
+                        "Downloading PDB structure '1wd9'...\n",
+                        "Downloading PDB structure '1f5n'...\n",
+                        "Downloading PDB structure '2one'...\n",
+                        "Downloading PDB structure '2hs4'...\n",
+                        "Downloading PDB structure '2g25'...\n",
+                        "Downloading PDB structure '3bwc'...\n",
+                        "Downloading PDB structure '2cn3'...\n",
+                        "Downloading PDB structure '2oz5'...\n",
+                        "Downloading PDB structure '2gpu'...\n",
+                        "Downloading PDB structure '1kph'...\n",
+                        "Downloading PDB structure '2zdp'...\n",
+                        "Downloading PDB structure '1t48'...\n",
+                        "Downloading PDB structure '1vcu'...\n",
+                        "Downloading PDB structure '2de3'...\n",
+                        "Downloading PDB structure '2nad'...\n",
+                        "Downloading PDB structure '2zim'...\n",
+                        "Downloading PDB structure '2dy5'...\n",
+                        "Downloading PDB structure '2vck'...\n",
+                        "Downloading PDB structure '2bu2'...\n",
+                        "Downloading PDB structure '2osx'...\n",
+                        "Downloading PDB structure '1x55'...\n",
+                        "Downloading PDB structure '1of6'...\n",
+                        "Downloading PDB structure '3dwr'...\n",
+                        "Downloading PDB structure '2q0e'...\n",
+                        "Downloading PDB structure '1pyy'...\n",
+                        "Downloading PDB structure '2za1'...\n",
+                        "Downloading PDB structure '1zen'...\n",
+                        "Downloading PDB structure '1b12'...\n",
+                        "Downloading PDB structure '2b3d'...\n",
+                        "Downloading PDB structure '2dkc'...\n",
+                        "Downloading PDB structure '2rkv'...\n",
+                        "Downloading PDB structure '1bio'...\n",
+                        "Downloading PDB structure '2jcj'...\n",
+                        "Downloading PDB structure '1rft'...\n",
+                        "Downloading PDB structure '2aq6'...\n",
+                        "Downloading PDB structure '2eb8'...\n",
+                        "Downloading PDB structure '3bqo'...\n",
+                        "Downloading PDB structure '2ag4'...\n",
+                        "Downloading PDB structure '2r1r'...\n",
+                        "Downloading PDB structure '1kmp'...\n",
+                        "Downloading PDB structure '1dj9'...\n",
+                        "Downloading PDB structure '1ime'...\n",
+                        "Downloading PDB structure '2f3e'...\n",
+                        "Downloading PDB structure '1ttj'...\n",
+                        "Downloading PDB structure '2a86'...\n",
+                        "Downloading PDB structure '1ea6'...\n",
+                        "Downloading PDB structure '1elz'...\n",
+                        "Downloading PDB structure '2ywf'...\n",
+                        "Downloading PDB structure '2gz1'...\n",
+                        "Downloading PDB structure '2f9w'...\n",
+                        "Downloading PDB structure '1q0q'...\n",
+                        "Downloading PDB structure '2iyx'...\n",
+                        "Downloading PDB structure '2zdq'...\n",
+                        "Downloading PDB structure '2aac'...\n",
+                        "Downloading PDB structure '1o0r'...\n",
+                        "Downloading PDB structure '1cjw'...\n",
+                        "Downloading PDB structure '1dqy'...\n",
+                        "Downloading PDB structure '1n8v'...\n",
+                        "Downloading PDB structure '2ilb'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1zui'...\n",
+                        "Downloading PDB structure '1se3'...\n",
+                        "Downloading PDB structure '2cl5'...\n",
+                        "Downloading PDB structure '3bqf'...\n",
+                        "Downloading PDB structure '2om9'...\n",
+                        "Downloading PDB structure '1rxe'...\n",
+                        "Downloading PDB structure '3bec'...\n",
+                        "Downloading PDB structure '1ww4'...\n",
+                        "Downloading PDB structure '1ktg'...\n",
+                        "Downloading PDB structure '2ixl'...\n",
+                        "Downloading PDB structure '2hv7'...\n",
+                        "Downloading PDB structure '2o0j'...\n",
+                        "Downloading PDB structure '1i5r'...\n",
+                        "Downloading PDB structure '1ein'...\n",
+                        "Downloading PDB structure '1l9w'...\n",
+                        "Downloading PDB structure '1bli'...\n",
+                        "Downloading PDB structure '1k52'...\n",
+                        "Downloading PDB structure '1rya'...\n",
+                        "Downloading PDB structure '2i4n'...\n",
+                        "Downloading PDB structure '2og7'...\n",
+                        "Downloading PDB structure '2iom'...\n",
+                        "Downloading PDB structure '1l7p'...\n",
+                        "Downloading PDB structure '1stb'...\n",
+                        "Downloading PDB structure '3brx'...\n",
+                        "Downloading PDB structure '2gj5'...\n",
+                        "Downloading PDB structure '2z8p'...\n",
+                        "Downloading PDB structure '2vrq'...\n",
+                        "Downloading PDB structure '2b7j'...\n",
+                        "Downloading PDB structure '1y1p'...\n",
+                        "Downloading PDB structure '2epn'...\n",
+                        "Downloading PDB structure '1juj'...\n",
+                        "Downloading PDB structure '1djz'...\n",
+                        "Downloading PDB structure '1q6f'...\n",
+                        "Downloading PDB structure '2j27'...\n",
+                        "Downloading PDB structure '2z1z'...\n",
+                        "Downloading PDB structure '2zcq'...\n",
+                        "Downloading PDB structure '1k8c'...\n",
+                        "Downloading PDB structure '1wpq'...\n",
+                        "Downloading PDB structure '1r4z'...\n",
+                        "Downloading PDB structure '2ze9'...\n",
+                        "Downloading PDB structure '2dpt'...\n",
+                        "Downloading PDB structure '2bir'...\n",
+                        "Downloading PDB structure '2b51'...\n",
+                        "Downloading PDB structure '2oo0'...\n",
+                        "Downloading PDB structure '1mqq'...\n",
+                        "Downloading PDB structure '2ob2'...\n",
+                        "Downloading PDB structure '2c9p'...\n",
+                        "Downloading PDB structure '2vdg'...\n",
+                        "Downloading PDB structure '1m21'...\n",
+                        "Downloading PDB structure '2vf5'...\n",
+                        "Downloading PDB structure '1foa'...\n",
+                        "Downloading PDB structure '2q1c'...\n",
+                        "Downloading PDB structure '1zao'...\n",
+                        "Downloading PDB structure '1jxi'...\n",
+                        "Downloading PDB structure '1lbm'...\n",
+                        "Downloading PDB structure '1akn'...\n",
+                        "Downloading PDB structure '9rub'...\n",
+                        "Downloading PDB structure '1f31'...\n",
+                        "Downloading PDB structure '3cc9'...\n",
+                        "Downloading PDB structure '1yvu'...\n",
+                        "Downloading PDB structure '1k3i'...\n",
+                        "Downloading PDB structure '1yvz'...\n",
+                        "Downloading PDB structure '2p7p'...\n",
+                        "Downloading PDB structure '1pw6'...\n",
+                        "Downloading PDB structure '1ef0'...\n",
+                        "Downloading PDB structure '2f48'...\n",
+                        "Downloading PDB structure '2ise'...\n",
+                        "Downloading PDB structure '2p50'...\n",
+                        "Downloading PDB structure '2e3p'...\n",
+                        "Downloading PDB structure '1tx2'...\n",
+                        "Downloading PDB structure '2sbl'...\n",
+                        "Downloading PDB structure '1set'...\n",
+                        "Downloading PDB structure '1s4c'...\n",
+                        "Downloading PDB structure '2qo0'...\n",
+                        "Downloading PDB structure '1v6u'...\n",
+                        "Downloading PDB structure '2dby'...\n",
+                        "Downloading PDB structure '2orz'...\n",
+                        "Downloading PDB structure '1re2'...\n",
+                        "Downloading PDB structure '1zyd'...\n",
+                        "Downloading PDB structure '1kc7'...\n",
+                        "Downloading PDB structure '1fhv'...\n",
+                        "Downloading PDB structure '2v6g'...\n",
+                        "Downloading PDB structure '2uwy'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1cy0'...\n",
+                        "Downloading PDB structure '2oxn'...\n",
+                        "Downloading PDB structure '1z2l'...\n",
+                        "Downloading PDB structure '1rg2'...\n",
+                        "Downloading PDB structure '2zif'...\n",
+                        "Downloading PDB structure '2ytz'...\n",
+                        "Downloading PDB structure '1uzj'...\n",
+                        "Downloading PDB structure '1dqe'...\n",
+                        "Downloading PDB structure '2f8d'...\n",
+                        "Downloading PDB structure '2d1e'...\n",
+                        "Downloading PDB structure '2qfb'...\n",
+                        "Downloading PDB structure '2ci6'...\n",
+                        "Downloading PDB structure '4jdw'...\n",
+                        "Downloading PDB structure '1u8u'...\n",
+                        "Downloading PDB structure '1snn'...\n",
+                        "Downloading PDB structure '2pqj'...\n",
+                        "Downloading PDB structure '2e0n'...\n",
+                        "Downloading PDB structure '1qhz'...\n",
+                        "Downloading PDB structure '1a8t'...\n",
+                        "Downloading PDB structure '2oyr'...\n",
+                        "Downloading PDB structure '1gvg'...\n",
+                        "Downloading PDB structure '2ojs'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2j6i'...\n",
+                        "Downloading PDB structure '1t15'...\n",
+                        "Downloading PDB structure '3c2g'...\n",
+                        "Downloading PDB structure '2dei'...\n",
+                        "Downloading PDB structure '2nrz'...\n",
+                        "Downloading PDB structure '1azx'...\n",
+                        "Downloading PDB structure '1h8s'...\n",
+                        "Downloading PDB structure '1mt6'...\n",
+                        "Downloading PDB structure '1rao'...\n",
+                        "Downloading PDB structure '2fop'...\n",
+                        "Downloading PDB structure '1lvb'...\n",
+                        "Downloading PDB structure '1g51'...\n",
+                        "Downloading PDB structure '2hrl'...\n",
+                        "Downloading PDB structure '1pz7'...\n",
+                        "Downloading PDB structure '1k4m'...\n",
+                        "Downloading PDB structure '2q7t'...\n",
+                        "Downloading PDB structure '1vsf'...\n",
+                        "Downloading PDB structure '1xtj'...\n",
+                        "Downloading PDB structure '1upk'...\n",
+                        "Downloading PDB structure '1fv3'...\n",
+                        "Downloading PDB structure '1sdw'...\n",
+                        "Downloading PDB structure '1g3y'...\n",
+                        "Downloading PDB structure '2gon'...\n",
+                        "Downloading PDB structure '2z76'...\n",
+                        "Downloading PDB structure '1qyy'...\n",
+                        "Downloading PDB structure '1x2h'...\n",
+                        "Downloading PDB structure '2fsn'...\n",
+                        "Downloading PDB structure '3dbs'...\n",
+                        "Downloading PDB structure '1ebf'...\n",
+                        "Downloading PDB structure '2jkg'...\n",
+                        "Downloading PDB structure '1n4a'...\n",
+                        "Downloading PDB structure '2gzs'...\n",
+                        "Downloading PDB structure '2a0n'...\n",
+                        "Downloading PDB structure '2oek'...\n",
+                        "Downloading PDB structure '2jeq'...\n",
+                        "Downloading PDB structure '1huj'...\n",
+                        "Downloading PDB structure '2j9t'...\n",
+                        "Downloading PDB structure '1k0n'...\n",
+                        "Downloading PDB structure '2dds'...\n",
+                        "Downloading PDB structure '2pmd'...\n",
+                        "Downloading PDB structure '3c94'...\n",
+                        "Downloading PDB structure '3d5w'...\n",
+                        "Downloading PDB structure '3c3o'...\n",
+                        "Downloading PDB structure '2vq3'...\n",
+                        "Downloading PDB structure '1od2'...\n",
+                        "Downloading PDB structure '1h78'...\n",
+                        "Downloading PDB structure '2qoq'...\n",
+                        "Downloading PDB structure '1fcv'...\n",
+                        "Downloading PDB structure '1hvc'...\n",
+                        "Downloading PDB structure '4pbg'...\n",
+                        "Downloading PDB structure '1pnf'...\n",
+                        "Downloading PDB structure '1dkq'...\n",
+                        "Downloading PDB structure '1r7y'...\n",
+                        "Downloading PDB structure '1nom'...\n",
+                        "Downloading PDB structure '2zcc'...\n",
+                        "Downloading PDB structure '2ajh'...\n",
+                        "Downloading PDB structure '2ce9'...\n",
+                        "Downloading PDB structure '1i8q'...\n",
+                        "Downloading PDB structure '2eep'...\n",
+                        "Downloading PDB structure '1yw1'...\n",
+                        "Downloading PDB structure '3cgy'...\n",
+                        "Downloading PDB structure '2obm'...\n",
+                        "Downloading PDB structure '2ddo'...\n",
+                        "Downloading PDB structure '3lkf'...\n",
+                        "Downloading PDB structure '2qv7'...\n",
+                        "Downloading PDB structure '2hp0'...\n",
+                        "Downloading PDB structure '2i22'...\n",
+                        "Downloading PDB structure '2d2f'...\n",
+                        "Downloading PDB structure '1w15'...\n",
+                        "Downloading PDB structure '1pbo'...\n",
+                        "Downloading PDB structure '1ido'...\n",
+                        "Downloading PDB structure '2oz9'...\n",
+                        "Downloading PDB structure '1xwv'...\n",
+                        "Downloading PDB structure '2quj'...\n",
+                        "Downloading PDB structure '2fav'...\n",
+                        "Downloading PDB structure '1spd'...\n",
+                        "Downloading PDB structure '1uu2'...\n",
+                        "Downloading PDB structure '1lri'...\n",
+                        "Downloading PDB structure '1ubn'...\n",
+                        "Downloading PDB structure '1v08'...\n",
+                        "Downloading PDB structure '1gxz'...\n",
+                        "Downloading PDB structure '1xev'...\n",
+                        "Downloading PDB structure '2qvm'...\n",
+                        "Downloading PDB structure '1x82'...\n",
+                        "Downloading PDB structure '2vkl'...\n",
+                        "Downloading PDB structure '1ve7'...\n",
+                        "Downloading PDB structure '2art'...\n",
+                        "Downloading PDB structure '2dso'...\n",
+                        "Downloading PDB structure '2zf4'...\n",
+                        "Downloading PDB structure '2bo2'...\n",
+                        "Downloading PDB structure '1pfr'...\n",
+                        "Downloading PDB structure '1nuh'...\n",
+                        "Downloading PDB structure '3psr'...\n",
+                        "Downloading PDB structure '2rcb'...\n",
+                        "Downloading PDB structure '2yvk'...\n",
+                        "Downloading PDB structure '1uk9'...\n",
+                        "Downloading PDB structure '1i1h'...\n",
+                        "Downloading PDB structure '2o74'...\n",
+                        "Downloading PDB structure '2vb2'...\n",
+                        "Downloading PDB structure '1ui7'...\n",
+                        "Downloading PDB structure '2vw1'...\n",
+                        "Downloading PDB structure '1qz3'...\n",
+                        "Downloading PDB structure '3bgg'...\n",
+                        "Downloading PDB structure '1fk1'...\n",
+                        "Downloading PDB structure '1ocl'...\n",
+                        "Downloading PDB structure '2e7j'...\n",
+                        "Downloading PDB structure '2p69'...\n",
+                        "Downloading PDB structure '1md9'...\n",
+                        "Downloading PDB structure '1w6f'...\n",
+                        "Downloading PDB structure '2dq0'...\n",
+                        "Downloading PDB structure '2iqx'...\n",
+                        "Downloading PDB structure '1za5'...\n",
+                        "Downloading PDB structure '1e9l'...\n",
+                        "Downloading PDB structure '1t9p'...\n",
+                        "Downloading PDB structure '2vvo'...\n",
+                        "Downloading PDB structure '2fw3'...\n",
+                        "Downloading PDB structure '2fp9'...\n",
+                        "Downloading PDB structure '2obc'...\n",
+                        "Downloading PDB structure '3cht'...\n",
+                        "Downloading PDB structure '2bui'...\n",
+                        "Downloading PDB structure '2aef'...\n",
+                        "Downloading PDB structure '1hhs'...\n",
+                        "Downloading PDB structure '5tnc'...\n",
+                        "Downloading PDB structure '1cpx'...\n",
+                        "Downloading PDB structure '2f44'...\n",
+                        "Downloading PDB structure '1lbl'...\n",
+                        "Downloading PDB structure '2cfi'...\n",
+                        "Downloading PDB structure '2yzo'...\n",
+                        "Downloading PDB structure '1zat'...\n",
+                        "Downloading PDB structure '2oa1'...\n",
+                        "Downloading PDB structure '1kkr'...\n",
+                        "Downloading PDB structure '2o6e'...\n",
+                        "Downloading PDB structure '1bug'...\n",
+                        "Downloading PDB structure '1dvb'...\n",
+                        "Downloading PDB structure '1iaa'...\n",
+                        "Downloading PDB structure '2oog'...\n",
+                        "Downloading PDB structure '2yu1'...\n",
+                        "Downloading PDB structure '1ju4'...\n",
+                        "Downloading PDB structure '2vzs'...\n",
+                        "Downloading PDB structure '1dxg'...\n",
+                        "Downloading PDB structure '2zjf'...\n",
+                        "Downloading PDB structure '2qeo'...\n",
+                        "Downloading PDB structure '2vg0'...\n",
+                        "Downloading PDB structure '1mka'...\n",
+                        "Downloading PDB structure '1f9z'...\n",
+                        "Downloading PDB structure '1yas'...\n",
+                        "Downloading PDB structure '1qaq'...\n",
+                        "Downloading PDB structure '2i4c'...\n",
+                        "Downloading PDB structure '1ted'...\n",
+                        "Downloading PDB structure '1r67'...\n",
+                        "Downloading PDB structure '1w8e'...\n",
+                        "Downloading PDB structure '1so0'...\n",
+                        "Downloading PDB structure '1ii5'...\n",
+                        "Downloading PDB structure '2b3h'...\n",
+                        "Downloading PDB structure '2v27'...\n",
+                        "Downloading PDB structure '1ese'...\n",
+                        "Downloading PDB structure '2yzv'...\n",
+                        "Downloading PDB structure '2f62'...\n",
+                        "Downloading PDB structure '2okn'...\n",
+                        "Downloading PDB structure '1im5'...\n",
+                        "Downloading PDB structure '3bbh'...\n",
+                        "Downloading PDB structure '1l5l'...\n",
+                        "Downloading PDB structure '3bf8'...\n",
+                        "Downloading PDB structure '1tzc'...\n",
+                        "Downloading PDB structure '1uod'...\n",
+                        "Downloading PDB structure '2df8'...\n",
+                        "Downloading PDB structure '3bu1'...\n",
+                        "Downloading PDB structure '2f7v'...\n",
+                        "Downloading PDB structure '2qhv'...\n",
+                        "Downloading PDB structure '1uj5'...\n",
+                        "Downloading PDB structure '2itp'...\n",
+                        "Downloading PDB structure '1miz'...\n",
+                        "Downloading PDB structure '1k2e'...\n",
+                        "Downloading PDB structure '1w5e'...\n",
+                        "Downloading PDB structure '1gzf'...\n",
+                        "Downloading PDB structure '2ao2'...\n",
+                        "Downloading PDB structure '2oei'...\n",
+                        "Downloading PDB structure '3diw'...\n",
+                        "Downloading PDB structure '1gwm'...\n",
+                        "Downloading PDB structure '2uus'...\n",
+                        "Downloading PDB structure '1u4m'...\n",
+                        "Downloading PDB structure '1rc5'...\n",
+                        "Downloading PDB structure '1ok7'...\n",
+                        "Downloading PDB structure '1n5z'...\n",
+                        "Downloading PDB structure '1g6h'...\n",
+                        "Downloading PDB structure '3d32'...\n",
+                        "Downloading PDB structure '4gal'...\n",
+                        "Downloading PDB structure '1omo'...\n",
+                        "Downloading PDB structure '3c03'...\n",
+                        "Downloading PDB structure '1apg'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2d3k'...\n",
+                        "Downloading PDB structure '2avr'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2d5a'...\n",
+                        "Downloading PDB structure '1wn7'...\n",
+                        "Downloading PDB structure '2i5r'...\n",
+                        "Downloading PDB structure '1fyk'...\n",
+                        "Downloading PDB structure '1w1d'...\n",
+                        "Downloading PDB structure '3bmy'...\n",
+                        "Downloading PDB structure '1tho'...\n",
+                        "Downloading PDB structure '2c3h'...\n",
+                        "Downloading PDB structure '2oju'...\n",
+                        "Downloading PDB structure '1lm3'...\n",
+                        "Downloading PDB structure '1dp2'...\n",
+                        "Downloading PDB structure '2bl8'...\n",
+                        "Downloading PDB structure '2hpl'...\n",
+                        "Downloading PDB structure '2peh'...\n",
+                        "Downloading PDB structure '2zaa'...\n",
+                        "Downloading PDB structure '1gmo'...\n",
+                        "Downloading PDB structure '2zpy'...\n",
+                        "Downloading PDB structure '2fae'...\n",
+                        "Downloading PDB structure '1xzk'...\n",
+                        "Downloading PDB structure '2g9a'...\n",
+                        "Downloading PDB structure '1y2f'...\n",
+                        "Downloading PDB structure '2c3w'...\n",
+                        "Downloading PDB structure '1jlk'...\n",
+                        "Downloading PDB structure '3c0o'...\n",
+                        "Downloading PDB structure '1awi'...\n",
+                        "Downloading PDB structure '1lv0'...\n",
+                        "Downloading PDB structure '1yfr'...\n",
+                        "Downloading PDB structure '1ox9'...\n",
+                        "Downloading PDB structure '2ed4'...\n",
+                        "Downloading PDB structure '1r6n'...\n",
+                        "Downloading PDB structure '1qz2'...\n",
+                        "Downloading PDB structure '1jwg'...\n",
+                        "Downloading PDB structure '2gvg'...\n",
+                        "Downloading PDB structure '1ka2'...\n",
+                        "Downloading PDB structure '2qz3'...\n",
+                        "Downloading PDB structure '1xrr'...\n",
+                        "Downloading PDB structure '1slb'...\n",
+                        "Downloading PDB structure '2ft0'...\n",
+                        "Downloading PDB structure '1kp4'...\n",
+                        "Downloading PDB structure '2d24'...\n",
+                        "Downloading PDB structure '2uyq'...\n",
+                        "Downloading PDB structure '2hba'...\n",
+                        "Downloading PDB structure '2oqn'...\n",
+                        "Downloading PDB structure '2c9c'...\n",
+                        "Downloading PDB structure '2hyr'...\n",
+                        "Downloading PDB structure '2q5y'...\n",
+                        "Downloading PDB structure '1mc9'...\n",
+                        "Downloading PDB structure '3pmg'...\n",
+                        "Downloading PDB structure '3b55'...\n",
+                        "Downloading PDB structure '1oek'...\n",
+                        "Downloading PDB structure '1ndi'...\n",
+                        "Downloading PDB structure '3b4y'...\n",
+                        "Downloading PDB structure '1j4x'...\n",
+                        "Downloading PDB structure '2zg1'...\n",
+                        "Downloading PDB structure '2gxs'...\n",
+                        "Downloading PDB structure '1lc3'...\n",
+                        "Downloading PDB structure '1zgc'...\n",
+                        "Downloading PDB structure '3kiv'...\n",
+                        "Downloading PDB structure '3e3z'...\n",
+                        "Downloading PDB structure '1gxo'...\n",
+                        "Downloading PDB structure '2cbo'...\n",
+                        "Downloading PDB structure '2z2p'...\n",
+                        "Downloading PDB structure '2bt6'...\n",
+                        "Downloading PDB structure '1c80'...\n",
+                        "Downloading PDB structure '1d1g'...\n",
+                        "Downloading PDB structure '1x2r'...\n",
+                        "Downloading PDB structure '3bi7'...\n",
+                        "Downloading PDB structure '1qpr'...\n",
+                        "Downloading PDB structure '2g2l'...\n",
+                        "Downloading PDB structure '2uvo'...\n",
+                        "Downloading PDB structure '1a7w'...\n",
+                        "Downloading PDB structure '1sqf'...\n",
+                        "Downloading PDB structure '1u26'...\n",
+                        "Downloading PDB structure '1byh'...\n",
+                        "Downloading PDB structure '2o28'...\n",
+                        "Downloading PDB structure '1f12'...\n",
+                        "Downloading PDB structure '2iry'...\n",
+                        "Downloading PDB structure '1c1h'...\n",
+                        "Downloading PDB structure '2eff'...\n",
+                        "Downloading PDB structure '1jay'...\n",
+                        "Downloading PDB structure '2bej'...\n",
+                        "Downloading PDB structure '1w8y'...\n",
+                        "Downloading PDB structure '2nun'...\n",
+                        "Downloading PDB structure '3cb5'...\n",
+                        "Downloading PDB structure '1gyx'...\n",
+                        "Downloading PDB structure '1zgs'...\n",
+                        "Downloading PDB structure '1kpf'...\n",
+                        "Downloading PDB structure '2c43'...\n",
+                        "Downloading PDB structure '1mjl'...\n",
+                        "Downloading PDB structure '2j8g'...\n",
+                        "Downloading PDB structure '3cyq'...\n",
+                        "Downloading PDB structure '2p8i'...\n",
+                        "Downloading PDB structure '2jfk'...\n",
+                        "Downloading PDB structure '1ri2'...\n",
+                        "Downloading PDB structure '2iic'...\n",
+                        "Downloading PDB structure '2i6p'...\n",
+                        "Downloading PDB structure '1rv7'...\n",
+                        "Downloading PDB structure '2asc'...\n",
+                        "Downloading PDB structure '1ons'...\n",
+                        "Downloading PDB structure '1sly'...\n",
+                        "Downloading PDB structure '1xng'...\n",
+                        "Downloading PDB structure '3dbb'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '2obt'...\n",
+                        "Downloading PDB structure '4pad'...\n",
+                        "Downloading PDB structure '1tkg'...\n",
+                        "Downloading PDB structure '1amw'...\n",
+                        "Downloading PDB structure '2eal'...\n",
+                        "Downloading PDB structure '1wk8'...\n",
+                        "Downloading PDB structure '2ogy'...\n",
+                        "Downloading PDB structure '1om9'...\n",
+                        "Downloading PDB structure '2f6d'...\n",
+                        "Downloading PDB structure '2brs'...\n",
+                        "Downloading PDB structure '1ucg'...\n",
+                        "Downloading PDB structure '1kae'...\n",
+                        "Downloading PDB structure '2r7d'...\n",
+                        "Downloading PDB structure '1c8y'...\n",
+                        "Downloading PDB structure '1w2o'...\n",
+                        "Downloading PDB structure '1t02'...\n",
+                        "Downloading PDB structure '2o2z'...\n",
+                        "Downloading PDB structure '3d9p'...\n",
+                        "Downloading PDB structure '1mxi'...\n",
+                        "Downloading PDB structure '1gym'...\n",
+                        "Downloading PDB structure '1x8c'...\n",
+                        "Downloading PDB structure '2a0b'...\n",
+                        "Downloading PDB structure '2f4f'...\n",
+                        "Downloading PDB structure '2nt9'...\n",
+                        "Downloading PDB structure '2vfk'...\n",
+                        "Downloading PDB structure '2dvm'...\n",
+                        "Downloading PDB structure '3c8d'...\n",
+                        "Downloading PDB structure '1oby'...\n",
+                        "Downloading PDB structure '1exf'...\n",
+                        "Downloading PDB structure '1qgi'...\n",
+                        "Downloading PDB structure '2r8a'...\n",
+                        "Downloading PDB structure '1gyb'...\n",
+                        "Downloading PDB structure '1oa7'...\n",
+                        "Downloading PDB structure '2faq'...\n",
+                        "Downloading PDB structure '2isi'...\n",
+                        "Downloading PDB structure '3mat'...\n",
+                        "Downloading PDB structure '2j17'...\n",
+                        "Downloading PDB structure '2hw1'...\n",
+                        "Downloading PDB structure '1qj8'...\n",
+                        "Downloading PDB structure '1ohe'...\n",
+                        "Downloading PDB structure '2fc0'...\n",
+                        "Downloading PDB structure '1o6g'...\n",
+                        "Downloading PDB structure '3db3'...\n",
+                        "Downloading PDB structure '1czs'...\n",
+                        "Downloading PDB structure '1nkt'...\n",
+                        "Downloading PDB structure '3c1y'...\n",
+                        "Downloading PDB structure '1w2t'...\n",
+                        "Downloading PDB structure '2cwh'...\n",
+                        "Downloading PDB structure '2glu'...\n",
+                        "Downloading PDB structure '3bib'...\n",
+                        "Downloading PDB structure '1ek2'...\n",
+                        "Downloading PDB structure '2q6v'...\n",
+                        "Downloading PDB structure '2d0c'...\n",
+                        "Downloading PDB structure '2uy3'...\n",
+                        "Downloading PDB structure '1uc9'...\n",
+                        "Downloading PDB structure '2sqc'...\n",
+                        "Downloading PDB structure '2p36'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1h16'...\n",
+                        "Downloading PDB structure '1efy'...\n",
+                        "Downloading PDB structure '2a33'...\n",
+                        "Downloading PDB structure '1lf9'...\n",
+                        "Downloading PDB structure '1fee'...\n",
+                        "Downloading PDB structure '2ref'...\n",
+                        "Downloading PDB structure '2q71'...\n",
+                        "Downloading PDB structure '2e8e'...\n",
+                        "Downloading PDB structure '1rq5'...\n",
+                        "Downloading PDB structure '2gwl'...\n",
+                        "Downloading PDB structure '1jbz'...\n",
+                        "Downloading PDB structure '2f1t'...\n",
+                        "Downloading PDB structure '2bko'...\n",
+                        "Downloading PDB structure '1ogo'...\n",
+                        "Downloading PDB structure '1h2f'...\n",
+                        "Downloading PDB structure '1o9w'...\n",
+                        "Downloading PDB structure '1l0y'...\n",
+                        "Downloading PDB structure '2jhn'...\n",
+                        "Downloading PDB structure '2ccj'...\n",
+                        "Downloading PDB structure '3crq'...\n",
+                        "Downloading PDB structure '2ewe'...\n",
+                        "Downloading PDB structure '1ll2'...\n",
+                        "Downloading PDB structure '1ltz'...\n",
+                        "Downloading PDB structure '3d5e'...\n",
+                        "Downloading PDB structure '1c3r'...\n",
+                        "Downloading PDB structure '1c7s'...\n",
+                        "Downloading PDB structure '1mmu'...\n",
+                        "Downloading PDB structure '2hzq'...\n",
+                        "Downloading PDB structure '2e20'...\n",
+                        "Downloading PDB structure '1eg4'...\n",
+                        "Downloading PDB structure '2dtn'...\n",
+                        "Downloading PDB structure '1bib'...\n",
+                        "Downloading PDB structure '2jcr'...\n",
+                        "Downloading PDB structure '1b74'...\n",
+                        "Downloading PDB structure '1v9a'...\n",
+                        "Downloading PDB structure '2fv1'...\n",
+                        "Downloading PDB structure '1nw5'...\n",
+                        "Downloading PDB structure '3b9o'...\n",
+                        "Downloading PDB structure '1ddt'...\n",
+                        "Downloading PDB structure '1vci'...\n",
+                        "Downloading PDB structure '1fwu'...\n",
+                        "Downloading PDB structure '2rb4'...\n",
+                        "Downloading PDB structure '2vdj'...\n",
+                        "Downloading PDB structure '1ne9'...\n",
+                        "Downloading PDB structure '2v3k'...\n",
+                        "Downloading PDB structure '1ymf'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1h9r'...\n",
+                        "Downloading PDB structure '1ee9'...\n",
+                        "Downloading PDB structure '2hbm'...\n",
+                        "Downloading PDB structure '2j0b'...\n",
+                        "Downloading PDB structure '2vx7'...\n",
+                        "Downloading PDB structure '2cjp'...\n",
+                        "Downloading PDB structure '2g09'...\n",
+                        "Downloading PDB structure '1ty2'...\n",
+                        "Downloading PDB structure '1kwf'...\n",
+                        "Downloading PDB structure '2jfv'...\n",
+                        "Downloading PDB structure '2cx1'...\n",
+                        "Downloading PDB structure '1kug'...\n",
+                        "Downloading PDB structure '1pvs'...\n",
+                        "Downloading PDB structure '1q6i'...\n",
+                        "Downloading PDB structure '2yvp'...\n",
+                        "Downloading PDB structure '2p0h'...\n",
+                        "Downloading PDB structure '3cja'...\n",
+                        "Downloading PDB structure '2bvt'...\n",
+                        "Downloading PDB structure '2cbg'...\n",
+                        "Downloading PDB structure '2hl3'...\n",
+                        "Downloading PDB structure '1w1a'...\n",
+                        "Downloading PDB structure '1l8x'...\n",
+                        "Downloading PDB structure '2ev9'...\n",
+                        "Downloading PDB structure '1w9w'...\n",
+                        "Downloading PDB structure '1lsp'...\n",
+                        "Downloading PDB structure '2jh7'...\n",
+                        "Downloading PDB structure '2e1t'...\n",
+                        "Downloading PDB structure '1yd4'...\n",
+                        "Downloading PDB structure '1tf2'...\n",
+                        "Downloading PDB structure '2cir'...\n",
+                        "Downloading PDB structure '1pgn'...\n",
+                        "Downloading PDB structure '3cyi'...\n",
+                        "Downloading PDB structure '3ct5'...\n",
+                        "Downloading PDB structure '1g8t'...\n",
+                        "Downloading PDB structure '2ep9'...\n",
+                        "Desired structure doesn't exists\n",
+                        "Downloading PDB structure '1ifu'...\n",
+                        "Downloading PDB structure '1wop'...\n",
+                        "Downloading PDB structure '2nsf'...\n",
+                        "Downloading PDB structure '1aur'...\n",
+                        "Downloading PDB structure '2r5m'...\n",
+                        "Downloading PDB structure '1jlx'...\n",
+                        "Downloading PDB structure '1i9z'...\n",
+                        "Downloading PDB structure '2fk1'...\n",
+                        "Downloading PDB structure '2r68'...\n",
+                        "Downloading PDB structure '1g5t'...\n",
+                        "Downloading PDB structure '1zsh'...\n",
+                        "Downloading PDB structure '2g7f'...\n",
+                        "Downloading PDB structure '1j25'...\n",
+                        "Downloading PDB structure '2o48'...\n",
+                        "Downloading PDB structure '2vl2'...\n",
+                        "Downloading PDB structure '3byn'...\n",
+                        "Downloading PDB structure '2ag8'...\n",
+                        "Downloading PDB structure '2qth'...\n",
+                        "Downloading PDB structure '1hg2'...\n",
+                        "Downloading PDB structure '1u4j'...\n"
+                    ]
+                }
+            ],
+            "source": [
+                "pdbl = PDBList()\n",
+                "pdb_list = pd.concat([structural_rearrangement_data['Free PDB'], structural_rearrangement_data['Bound PDB']]).unique()\n",
+                "\n",
+                "pdbl.download_pdb_files(pdb_list, obsolete=False, pdir='pdbs/', file_format='pdb', overwrite=True)\n",
+                "\n",
+                "#Rename PDB files from .ent to .pdb\\n\n",
+                "!cd pdbs/; for f in *.ent; do mv -- \"$f\" \"${f%.ent}.pdb\"; done\n",
+                "# Remove pdb prefix from PDB file names (e.g. pdb20jj.ent -> 20jj.pdb)\\n\",\n",
+                "!cd pdbs/; for x in *; do mv $x `echo $x | cut -c 4-`; done"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 27,
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "1541"
+                        ]
+                    },
+                    "execution_count": 27,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
+            ],
+            "source": [
+                "# Download Ligands"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 19,
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "## Make Graphs\n",
+                "import os"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 25,
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "Series([], Name: Free PDB, dtype: object)"
+                        ]
+                    },
+                    "execution_count": 25,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
+            ],
+            "source": [
+                "structural_rearrangement_data['Free PDB'].loc[structural_rearrangement_data['Free PDB'].isin(f)]"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 31,
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "43     2h98\n",
+                            "190    2gu9\n",
+                            "283    2bg1\n",
+                            "307    1q4o\n",
+                            "514    1il5\n",
+                            "625    3cey\n",
+                            "688    2glb\n",
+                            "739    1yks\n",
+                            "774    2dpo\n",
+                            "Name: Free PDB, dtype: object"
+                        ]
+                    },
+                    "execution_count": 31,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
+            ],
+            "source": [
+                "f = [f[:-4] for f in os.listdir('pdbs')]\n",
+                "structural_rearrangement_data['Free PDB'].loc[~structural_rearrangement_data['Bound PDB'].isin(f)]"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "metadata": {},
+            "outputs": [],
+            "source": []
+        }
+    ],
+    "metadata": {
+        "kernelspec": {
+            "display_name": "Python 3",
+            "language": "python",
+            "name": "python3"
+        },
+        "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.4"
+        },
+        "nbsphinx": {
+            "execute": "never"
+        }
+    },
+    "nbformat": 4,
+    "nbformat_minor": 4
+}
\ No newline at end of file
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 9ac89cb7..c3acfaf0 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -29,7 +29,7 @@
 author = "Arian Jamasb"
 
 # The full version, including alpha/beta/rc tags
-release = "1.2.0"
+release = "1.2.1"
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/graphein/__init__.py b/graphein/__init__.py
index f0f418aa..c7ba6032 100644
--- a/graphein/__init__.py
+++ b/graphein/__init__.py
@@ -13,5 +13,5 @@
 __author__ = "Arian Jamasb <arian@jamasb.io>"
 
 
-__version__ = "1.2.0"  # get_versions()["version"]
+__version__ = "1.2.1"  # get_versions()["version"]
 # del get_versions
diff --git a/graphein/ml/conversion.py b/graphein/ml/conversion.py
index 995da98b..53aee768 100644
--- a/graphein/ml/conversion.py
+++ b/graphein/ml/conversion.py
@@ -1,3 +1,11 @@
+"""Utilities for converting Graphein Networks to Geometric Deep Learning formats.
+"""
+# %%
+# Graphein
+# Author: Kexin Huang, 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
 from __future__ import annotations
 
 from typing import List, Optional
@@ -272,7 +280,7 @@ def convert_nx_to_pyg(self, G: nx.Graph) -> Data:
     @staticmethod
     def convert_nx_to_nx(G: nx.Graph) -> nx.Graph:
         """
-        Converts NetworkX graph (``nx.Graph``) to NetworkX graph (``nx.Graph``) object. Redundant - returns itself
+        Converts NetworkX graph (``nx.Graph``) to NetworkX graph (``nx.Graph``) object. Redundant - returns itself.
 
         :param G: NetworkX Graph
         :type G: nx.Graph
diff --git a/graphein/protein/edges/distance.py b/graphein/protein/edges/distance.py
index 96a7cedf..fea3c9de 100644
--- a/graphein/protein/edges/distance.py
+++ b/graphein/protein/edges/distance.py
@@ -8,7 +8,7 @@
 
 import logging
 from itertools import combinations
-from typing import Dict, List, Optional, Tuple
+from typing import Dict, List, Optional, Tuple, Union
 
 import networkx as nx
 import numpy as np
@@ -132,6 +132,9 @@ def add_hydrophobic_interactions(
     hydrophobics_df = filter_dataframe(
         rgroup_df, "residue_name", HYDROPHOBIC_RESIS, True
     )
+    hydrophobics_df = filter_dataframe(
+        hydrophobics_df, "node_id", list(G.nodes()), True
+    )
     distmat = compute_distmat(hydrophobics_df)
     interacting_atoms = get_interacting_atoms(5, distmat)
     add_interacting_resis(
@@ -180,6 +183,7 @@ def add_hydrogen_bond_interactions(
     # For these atoms, find those that are within 3.5A of one another.
     if rgroup_df is None:
         rgroup_df = G.graph["rgroup_df"]
+    rgroup_df = filter_dataframe(rgroup_df, "node_id", list(G.nodes()), True)
     HBOND_ATOMS = [
         "ND",  # histidine and asparagine
         "NE",  # glutamate, tryptophan, arginine, histidine
@@ -224,6 +228,7 @@ def add_ionic_interactions(
     if rgroup_df is None:
         rgroup_df = G.graph["rgroup_df"]
     ionic_df = filter_dataframe(rgroup_df, "residue_name", IONIC_RESIS, True)
+    ionic_df = filter_dataframe(rgroup_df, "node_id", list(G.nodes()), True)
     distmat = compute_distmat(ionic_df)
     interacting_atoms = get_interacting_atoms(6, distmat)
     add_interacting_resis(G, interacting_atoms, ionic_df, ["ionic"])
@@ -274,6 +279,9 @@ def add_aromatic_interactions(
     dfs = []
     for resi in AROMATIC_RESIS:
         resi_rings_df = get_ring_atoms(pdb_df, resi)
+        resi_rings_df = filter_dataframe(
+            resi_rings_df, "node_id", list(G.nodes()), True
+        )
         resi_centroid_df = get_ring_centroids(resi_rings_df)
         dfs.append(resi_centroid_df)
     aromatic_df = (
@@ -312,9 +320,12 @@ def add_aromatic_sulphur_interactions(
     aromatic_sulphur_df = filter_dataframe(
         rgroup_df, "residue_name", RESIDUES, True
     )
+    aromatic_sulphur_df = filter_dataframe(
+        aromatic_sulphur_df, "node_id", list(G.nodes()), True
+    )
     distmat = compute_distmat(aromatic_sulphur_df)
     interacting_atoms = get_interacting_atoms(5.3, distmat)
-    interacting_atoms = zip(interacting_atoms[0], interacting_atoms[1])
+    interacting_atoms = list(zip(interacting_atoms[0], interacting_atoms[1]))
 
     for (a1, a2) in interacting_atoms:
         resi1 = aromatic_sulphur_df.loc[a1, "node_id"]
@@ -339,9 +350,12 @@ def add_cation_pi_interactions(
     cation_pi_df = filter_dataframe(
         rgroup_df, "residue_name", CATION_PI_RESIS, True
     )
+    cation_pi_df = filter_dataframe(
+        cation_pi_df, "node_id", list(G.nodes()), True
+    )
     distmat = compute_distmat(cation_pi_df)
     interacting_atoms = get_interacting_atoms(6, distmat)
-    interacting_atoms = zip(interacting_atoms[0], interacting_atoms[1])
+    interacting_atoms = list(zip(interacting_atoms[0], interacting_atoms[1]))
 
     for (a1, a2) in interacting_atoms:
         resi1 = cation_pi_df.loc[a1, "node_id"]
@@ -411,7 +425,7 @@ def add_delaunay_triangulation(
 
     tri = Delaunay(coords)  # this is the triangulation
     log.debug(
-        f"Detected {len(tri.simplices)} simplices in the Delaunay Triangulaton."
+        f"Detected {len(tri.simplices)} simplices in the Delaunay Triangulation."
     )
     for simplex in tri.simplices:
         nodes = [node_map[s] for s in simplex]
@@ -439,10 +453,14 @@ def add_distance_threshold(
     :type threshold: float
     :return: Graph with distance-based edges added
     """
-    dist_mat = compute_distmat(G.graph["pdb_df"])
+    pdb_df = filter_dataframe(
+        G.graph["pdb_df"], "node_id", list(G.nodes()), True
+    )
+    dist_mat = compute_distmat(pdb_df)
     interacting_nodes = get_interacting_atoms(threshold, distmat=dist_mat)
     interacting_nodes = zip(interacting_nodes[0], interacting_nodes[1])
 
+    log.info(f"Found: {len(list(interacting_nodes))} distance edges")
     for a1, a2 in interacting_nodes:
         n1 = G.graph["pdb_df"].loc[a1, "node_id"]
         n2 = G.graph["pdb_df"].loc[a2, "node_id"]
@@ -456,7 +474,7 @@ def add_distance_threshold(
             abs(n1_position - n2_position) > long_interaction_threshold
         )
 
-        if condition_1 or (condition_2 and not condition_1):
+        if condition_1 or condition_2:
             if G.has_edge(n1, n2):
                 G.edges[n1, n2]["kind"].add("distance_threshold")
             else:
@@ -498,7 +516,10 @@ def add_k_nn_edges(
     :return: Graph with knn-based edges added
     :rtype: nx.Graph
     """
-    dist_mat = compute_distmat(G.graph["pdb_df"])
+    pdb_df = filter_dataframe(
+        G.graph["pdb_df"], "node_id", list(G.nodes()), True
+    )
+    dist_mat = compute_distmat(pdb_df)
 
     nn = kneighbors_graph(
         X=dist_mat,
@@ -512,8 +533,8 @@ def add_k_nn_edges(
     # 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)
-
+    interacting_nodes = list(zip(outgoing, incoming))
+    log.info(f"Found: {len(interacting_nodes)} KNN edges")
     for a1, a2 in interacting_nodes:
         # Get nodes IDs from indices
         n1 = G.graph["pdb_df"].loc[a1, "node_id"]
@@ -536,7 +557,7 @@ def add_k_nn_edges(
 
         # 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 condition_1 or condition_2:
             if G.has_edge(n1, n2):
                 G.edges[n1, n2]["kind"].add("k_nn")
             else:
@@ -639,7 +660,7 @@ def node_coords(G: nx.Graph, n: str) -> Tuple[float, float, float]:
 
 def add_interacting_resis(
     G: nx.Graph,
-    interacting_atoms: np.array,
+    interacting_atoms: np.ndarray,
     dataframe: pd.DataFrame,
     kind: List[str],
 ):
diff --git a/graphein/protein/subgraphs.py b/graphein/protein/subgraphs.py
index 460ab4a3..929fece1 100644
--- a/graphein/protein/subgraphs.py
+++ b/graphein/protein/subgraphs.py
@@ -62,7 +62,7 @@ def extract_subgraph_from_node_list(
             ]
         if update_coords:
             g.graph["coords"] = np.array(
-                d["coords"] for d in g.nodes(data=True)
+                [d["coords"] for _, d in g.nodes(data=True)]
             )
         if recompute_distmat:
             if not filter_dataframe:
diff --git a/notebooks/baseline.ipynb b/notebooks/baseline.ipynb
index 10993692..11d26c5a 100644
--- a/notebooks/baseline.ipynb
+++ b/notebooks/baseline.ipynb
@@ -1,615 +1,618 @@
 {
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "id": "8a146408",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "import sys\n",
-    "sys.path.append('../')\n",
-    "\n",
-    "import logging\n",
-    "logging.getLogger('matplotlib').setLevel(logging.CRITICAL)\n",
-    "logging.getLogger('graphein').setLevel(logging.INFO)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "59a32cc0-8bd2-4910-9cb6-980dd2476ff0",
-   "metadata": {},
-   "source": [
-    "# PSCDB - Baselines"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "id": "4ee700f8",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "RDKit WARNING: [23:36:27] Enabling RDKit 2019.09.3 jupyter extensions\n",
-      "[23:36:27] Enabling RDKit 2019.09.3 jupyter extensions\n"
-     ]
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "import pandas as pd\n",
-    "import numpy as np\n",
-    "\n",
-    "import torch\n",
-    "import torch.nn as nn\n",
-    "import pytorch_lightning as pl\n",
-    "from tqdm.notebook import tqdm\n",
-    "import networkx as nx\n",
-    "import torch_geometric\n",
-    "from torch_geometric.data import Data\n",
-    "from torch_geometric.utils import from_networkx\n",
-    "from sklearn.preprocessing import LabelBinarizer\n",
-    "from sklearn.metrics import f1_score\n",
-    "\n",
-    "import warnings\n",
-    "warnings.filterwarnings(\"ignore\")"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "80b5801a",
-   "metadata": {},
-   "source": [
-    "## Load dataset\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "id": "44af34a7",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "df = pd.read_csv(\"../datasets/pscdb/structural_rearrangement_data.csv\")\n",
-    "pdbs = df[\"Free PDB\"]\n",
-    "y = [torch.argmax(torch.Tensor(lab)).type(torch.LongTensor) for lab in LabelBinarizer().fit_transform(df.motion_type)]"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "595ee7c4",
-   "metadata": {},
-   "source": [
-    "## Transformation from Raw Structure to ML-ready Datasets Construction with Graphein"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "id": "65ac43fd",
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "{'granularity': 'CA', 'keep_hets': False, 'insertions': False, 'pdb_dir': PosixPath('../examples/pdbs'), 'verbose': False, 'exclude_waters': True, 'deprotonate': False, 'protein_df_processing_functions': None, 'edge_construction_functions': [functools.partial(<function add_k_nn_edges at 0x7fb4b22bbf70>, k=3, long_interaction_threshold=0)], 'node_metadata_functions': [<function meiler_embedding at 0x7fb4b22c7430>], 'edge_metadata_functions': None, 'graph_metadata_functions': None, 'get_contacts_config': None, 'dssp_config': None}\n"
-     ]
+    "cells": [
+        {
+            "cell_type": "code",
+            "execution_count": 1,
+            "id": "8a146408",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "import sys\n",
+                "sys.path.append('../')\n",
+                "\n",
+                "import logging\n",
+                "logging.getLogger('matplotlib').setLevel(logging.CRITICAL)\n",
+                "logging.getLogger('graphein').setLevel(logging.INFO)"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "59a32cc0-8bd2-4910-9cb6-980dd2476ff0",
+            "metadata": {},
+            "source": [
+                "# PSCDB - Baselines"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 2,
+            "id": "4ee700f8",
+            "metadata": {},
+            "outputs": [
+                {
+                    "name": "stderr",
+                    "output_type": "stream",
+                    "text": [
+                        "RDKit WARNING: [23:36:27] Enabling RDKit 2019.09.3 jupyter extensions\n",
+                        "[23:36:27] Enabling RDKit 2019.09.3 jupyter extensions\n"
+                    ]
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "import pandas as pd\n",
+                "import numpy as np\n",
+                "\n",
+                "import torch\n",
+                "import torch.nn as nn\n",
+                "import pytorch_lightning as pl\n",
+                "from tqdm.notebook import tqdm\n",
+                "import networkx as nx\n",
+                "import torch_geometric\n",
+                "from torch_geometric.data import Data\n",
+                "from torch_geometric.utils import from_networkx\n",
+                "from sklearn.preprocessing import LabelBinarizer\n",
+                "from sklearn.metrics import f1_score\n",
+                "\n",
+                "import warnings\n",
+                "warnings.filterwarnings(\"ignore\")"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "80b5801a",
+            "metadata": {},
+            "source": [
+                "## Load dataset\n"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 3,
+            "id": "44af34a7",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "df = pd.read_csv(\"../datasets/pscdb/structural_rearrangement_data.csv\")\n",
+                "pdbs = df[\"Free PDB\"]\n",
+                "y = [torch.argmax(torch.Tensor(lab)).type(torch.LongTensor) for lab in LabelBinarizer().fit_transform(df.motion_type)]"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "595ee7c4",
+            "metadata": {},
+            "source": [
+                "## Transformation from Raw Structure to ML-ready Datasets Construction with Graphein"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 4,
+            "id": "65ac43fd",
+            "metadata": {
+                "scrolled": true
+            },
+            "outputs": [
+                {
+                    "name": "stdout",
+                    "output_type": "stream",
+                    "text": [
+                        "{'granularity': 'CA', 'keep_hets': False, 'insertions': False, 'pdb_dir': PosixPath('../examples/pdbs'), 'verbose': False, 'exclude_waters': True, 'deprotonate': False, 'protein_df_processing_functions': None, 'edge_construction_functions': [functools.partial(<function add_k_nn_edges at 0x7fb4b22bbf70>, k=3, long_interaction_threshold=0)], 'node_metadata_functions': [<function meiler_embedding at 0x7fb4b22c7430>], 'edge_metadata_functions': None, 'graph_metadata_functions': None, 'get_contacts_config': None, 'dssp_config': None}\n"
+                    ]
+                },
+                {
+                    "data": {
+                        "application/vnd.jupyter.widget-view+json": {
+                            "model_id": "ff91e6386f7c422ba50479795794db33",
+                            "version_major": 2,
+                            "version_minor": 0
+                        },
+                        "text/plain": [
+                            "  0%|          | 0/891 [00:00<?, ?it/s]"
+                        ]
+                    },
+                    "metadata": {},
+                    "output_type": "display_data"
+                },
+                {
+                    "name": "stdout",
+                    "output_type": "stream",
+                    "text": [
+                        "URL Error [Errno 110] Connection timed out\n",
+                        "274 processing error...\n",
+                        "666 processing error...\n",
+                        "677 processing error...\n"
+                    ]
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "from graphein.protein.config import ProteinGraphConfig\n",
+                "from graphein.protein.edges.distance import add_hydrogen_bond_interactions, add_peptide_bonds, add_k_nn_edges\n",
+                "from graphein.protein.graphs import construct_graph\n",
+                "\n",
+                "from functools import partial\n",
+                "\n",
+                "# Override config with constructors\n",
+                "constructors = {\n",
+                "    \"edge_construction_functions\": [partial(add_k_nn_edges, k=3, long_interaction_threshold=0)],\n",
+                "    #\"edge_construction_functions\": [add_hydrogen_bond_interactions, add_peptide_bonds],\n",
+                "    #\"node_metadata_functions\": [add_dssp_feature]\n",
+                "}\n",
+                "\n",
+                "config = ProteinGraphConfig(**constructors)\n",
+                "print(config.dict())\n",
+                "\n",
+                "# Make graphs\n",
+                "graph_list = []\n",
+                "y_list = []\n",
+                "for idx, pdb in enumerate(tqdm(pdbs)):\n",
+                "    try:\n",
+                "        graph_list.append(\n",
+                "            construct_graph(pdb_code=pdb,\n",
+                "                        config=config\n",
+                "                       )\n",
+                "            )\n",
+                "        y_list.append(y[idx])\n",
+                "    except:\n",
+                "        print(str(idx) + ' processing error...')\n",
+                "        pass"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 44,
+            "id": "eb080ee0-555e-411c-a5e5-8539c97e998f",
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "'3e59'"
+                        ]
+                    },
+                    "execution_count": 44,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "pdbs[274]\n",
+                "#pdbs[266]\n",
+                "#pdbs[677]"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "4de24288",
+            "metadata": {},
+            "source": [
+                "## Convert Nx graphs to PyTorch Geometric"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 8,
+            "id": "cd343538",
+            "metadata": {},
+            "outputs": [
+                {
+                    "name": "stderr",
+                    "output_type": "stream",
+                    "text": [
+                        "Using backend: pytorch\n"
+                    ]
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "from graphein.ml.conversion import GraphFormatConvertor\n",
+                "\n",
+                "format_convertor = GraphFormatConvertor('nx', 'pyg', \n",
+                "                                        verbose = 'gnn', \n",
+                "                                        columns = None)"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 9,
+            "id": "a0f50771",
+            "metadata": {
+                "tags": []
+            },
+            "outputs": [
+                {
+                    "data": {
+                        "application/vnd.jupyter.widget-view+json": {
+                            "model_id": "563bbc190d4944c9af056dce12eddd39",
+                            "version_major": 2,
+                            "version_minor": 0
+                        },
+                        "text/plain": [
+                            "  0%|          | 0/888 [00:00<?, ?it/s]"
+                        ]
+                    },
+                    "metadata": {},
+                    "output_type": "display_data"
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "pyg_list = [format_convertor(graph) for graph in tqdm(graph_list)]"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 10,
+            "id": "79c6eb2e",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "for idx, g in enumerate(pyg_list):\n",
+                "    g.y = y_list[idx] \n",
+                "    g.coords = torch.FloatTensor(g.coords[0])"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 11,
+            "id": "642b78e3",
+            "metadata": {},
+            "outputs": [
+                {
+                    "name": "stdout",
+                    "output_type": "stream",
+                    "text": [
+                        "Data(coords=[10112, 3], dist_mat=[1], edge_index=[2, 120], name=[1], node_id=[1264], y=1)\n",
+                        "Data(coords=[820, 3], dist_mat=[1], edge_index=[2, 1431], name=[1], node_id=[808], y=2)\n",
+                        "Data(coords=[668, 3], dist_mat=[1], edge_index=[2, 1166], name=[1], node_id=[666], y=4)\n",
+                        "Data(coords=[2720, 3], dist_mat=[1], edge_index=[2, 3], name=[1], node_id=[340], y=5)\n"
+                    ]
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "for i in pyg_list:\n",
+                "    if i.coords.shape[0] == len(i.node_id):\n",
+                "        pass\n",
+                "    else:\n",
+                "        print(i)\n",
+                "        pyg_list.remove(i)"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "0d07dd30",
+            "metadata": {},
+            "source": [
+                "## Model Configuration"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 32,
+            "id": "e1ab2604",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "config_default = dict(\n",
+                "    n_hid = 8,\n",
+                "    n_out = 8,\n",
+                "    batch_size = 4,\n",
+                "    dropout = 0.5,\n",
+                "    lr = 0.001,\n",
+                "    num_heads = 32,\n",
+                "    num_att_dim = 64,\n",
+                "    model_name = 'GCN'\n",
+                ")\n",
+                "\n",
+                "class Struct:\n",
+                "    def __init__(self, **entries):\n",
+                "        self.__dict__.update(entries)\n",
+                "        \n",
+                "config = Struct(**config_default)\n",
+                "\n",
+                "global model_name\n",
+                "model_name = config.model_name"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "14cec1f0",
+            "metadata": {},
+            "source": [
+                "## Construct DataLoaders"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 33,
+            "id": "1d67359d",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "import numpy as np\n",
+                "np.random.seed(42)\n",
+                "idx_all = np.arange(len(pyg_list))\n",
+                "np.random.shuffle(idx_all)\n",
+                "\n",
+                "train_idx, valid_idx, test_idx = np.split(idx_all, [int(.8*len(pyg_list)), int(.9*len(pyg_list))])\n",
+                "train, valid, test = [pyg_list[i] for i in train_idx], [pyg_list[i] for i in valid_idx], [pyg_list[i] for i in test_idx]\n",
+                "\n",
+                "from torch_geometric.data import DataLoader\n",
+                "train_loader = DataLoader(train, batch_size=config.batch_size, shuffle = True, drop_last = True)\n",
+                "valid_loader = DataLoader(valid, batch_size=32)\n",
+                "test_loader = DataLoader(test, batch_size=32)"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 34,
+            "id": "a8d4193f",
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "Data(coords=[635, 3], dist_mat=[1], edge_index=[2, 1118], name=[1], node_id=[635], y=1)"
+                        ]
+                    },
+                    "execution_count": 34,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "pyg_list[0]"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "452acd73",
+            "metadata": {},
+            "source": [
+                "## Define Model"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 35,
+            "id": "53bd0370",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "from torch_geometric.nn import GCNConv, GATConv, SAGEConv, global_add_pool\n",
+                "from torch.nn.functional import mse_loss, nll_loss, relu, softmax, cross_entropy\n",
+                "from torch.nn import functional as F\n",
+                "from pytorch_lightning.metrics.functional import accuracy"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 36,
+            "id": "b6728d4f",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "class GraphNets(pl.LightningModule):\n",
+                "    def __init__(self):\n",
+                "        super().__init__()\n",
+                "        \n",
+                "        if model_name == 'GCN':\n",
+                "            self.layer1 = GCNConv(in_channels=3, out_channels=config.n_hid)\n",
+                "            self.layer2 = GCNConv(in_channels=config.n_hid, out_channels=config.n_out)\n",
+                "\n",
+                "        elif model_name == 'GAT':\n",
+                "            self.layer1 = GATConv(3, config.num_att_dim, heads=config.num_heads, dropout=config.dropout)\n",
+                "            self.layer2 = GATConv(config.num_att_dim * config.num_heads, out_channels = config.n_out, heads=1, concat=False,\n",
+                "                                 dropout=config.dropout)\n",
+                "            \n",
+                "        elif model_name == 'GraphSAGE':\n",
+                "            self.layer1 = SAGEConv(3, config.n_hid)\n",
+                "            self.layer2 = SAGEConv(config.n_hid, config.n_out)  \n",
+                "            \n",
+                "        self.decoder = nn.Linear(config.n_out, 7)\n",
+                "        \n",
+                "    def forward(self, g):\n",
+                "        x = g.coords\n",
+                "        x = F.dropout(x, p=config.dropout, training=self.training)\n",
+                "        x = F.elu(self.layer1(x, g.edge_index))\n",
+                "        x = F.dropout(x, p=config.dropout, training=self.training)\n",
+                "        x = self.layer2(x, g.edge_index)\n",
+                "        x = global_add_pool(x, batch=g.batch)\n",
+                "        x = self.decoder(x)\n",
+                "        return softmax(x)\n",
+                "\n",
+                "    def training_step(self, batch, batch_idx):\n",
+                "        x = batch   \n",
+                "        y = x.y\n",
+                "        y_hat = self(x)\n",
+                "        loss = cross_entropy(y_hat, y)\n",
+                "        acc = accuracy(y_hat, y)\n",
+                "\n",
+                "        self.log(\"train_loss\", loss)\n",
+                "        self.log(\"train_acc\", acc)\n",
+                "        return loss\n",
+                "\n",
+                "    def validation_step(self, batch, batch_idx):\n",
+                "        x = batch   \n",
+                "        y = x.y\n",
+                "        y_hat = self(x)\n",
+                "        loss = cross_entropy(y_hat, y)\n",
+                "        acc = accuracy(y_hat, y)\n",
+                "        self.log(\"valid_loss\", loss)\n",
+                "        self.log(\"valid_acc\", acc)\n",
+                "\n",
+                "    def test_step(self, batch, batch_idx):\n",
+                "        x = batch   \n",
+                "        y = x.y\n",
+                "        y_hat = self(x)\n",
+                "        loss = cross_entropy(y_hat, y)\n",
+                "        acc = accuracy(y_hat, y)\n",
+                "\n",
+                "        y_pred_softmax = torch.log_softmax(y_hat, dim = 1)\n",
+                "        y_pred_tags = torch.argmax(y_pred_softmax, dim = 1) \n",
+                "        f1 = f1_score(y.detach().cpu().numpy(), y_pred_tags.detach().cpu().numpy(), average = 'weighted')\n",
+                "\n",
+                "        self.log(\"test_loss\", loss)\n",
+                "        self.log(\"test_acc\", acc)\n",
+                "        self.log(\"test_f1\", f1)\n",
+                "\n",
+                "    def configure_optimizers(self):\n",
+                "        optimizer = torch.optim.Adam(self.parameters(), lr=config.lr)\n",
+                "        return optimizer"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 37,
+            "id": "970baced-e3c0-4a17-b0b9-36f5a5a8045d",
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "GraphNets(\n",
+                            "  (layer1): GCNConv(3, 8)\n",
+                            "  (layer2): GCNConv(8, 8)\n",
+                            "  (decoder): Linear(in_features=8, out_features=7, bias=True)\n",
+                            ")"
+                        ]
+                    },
+                    "execution_count": 37,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "GraphNets()"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 40,
+            "id": "42bc7e82",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "from pytorch_lightning.callbacks import ModelCheckpoint\n",
+                "import os\n",
+                "\n",
+                "file_path = './graphein_model'\n",
+                "if not os.path.exists(file_path):\n",
+                "    os.mkdir(file_path)\n",
+                "\n",
+                "checkpoint_callback = ModelCheckpoint(\n",
+                "    monitor=\"valid_loss\",\n",
+                "    dirpath=file_path,\n",
+                "    filename=\"model-{epoch:02d}-{val_loss:.2f}\",\n",
+                "    save_top_k=1,\n",
+                "    mode=\"min\",\n",
+                ")"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "3e552f8a",
+            "metadata": {},
+            "source": [
+                "## Train!"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": 41,
+            "id": "6e14192c",
+            "metadata": {},
+            "outputs": [
+                {
+                    "name": "stderr",
+                    "output_type": "stream",
+                    "text": [
+                        "GPU available: True, used: True\n",
+                        "TPU available: False, using: 0 TPU cores\n",
+                        "IPU available: False, using: 0 IPUs\n",
+                        "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n",
+                        "Traceback (most recent call last):\n",
+                        "  File \"<string>\", line 1, in <module>\n",
+                        "  File \"/home/atj39/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/spawn.py\", line 116, in spawn_main\n",
+                        "    exitcode = _main(fd, parent_sentinel)\n",
+                        "  File \"/home/atj39/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/spawn.py\", line 126, in _main\n",
+                        "    self = reduction.pickle.load(from_parent)\n",
+                        "AttributeError: Can't get attribute 'GraphNets' on <module '__main__' (built-in)>\n"
+                    ]
+                },
+                {
+                    "ename": "KeyboardInterrupt",
+                    "evalue": "",
+                    "output_type": "error",
+                    "traceback": [
+                        "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+                        "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
+                        "\u001b[0;32m/tmp/ipykernel_3426530/3685191286.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGraphNets\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mtrainer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTrainer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmax_epochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m200\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgpus\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcheckpoint_callback\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mtrainer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_loader\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalid_loader\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;31m# evaluate on the model with the best validation set\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, model, train_dataloaders, val_dataloaders, datamodule, train_dataloader)\u001b[0m\n\u001b[1;32m    551\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheckpoint_connector\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresume_start\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    552\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 553\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_run\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    554\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    555\u001b[0m         \u001b[0;32massert\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstopped\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, model)\u001b[0m\n\u001b[1;32m    916\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    917\u001b[0m         \u001b[0;31m# dispatch `start_training` or `start_evaluating` or `start_predicting`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 918\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dispatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    919\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    920\u001b[0m         \u001b[0;31m# plugin will finalized fitting (e.g. ddp_spawn will load trained model)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py\u001b[0m in \u001b[0;36m_dispatch\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    984\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maccelerator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_predicting\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    985\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 986\u001b[0;31m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maccelerator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    987\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    988\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mrun_stage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/accelerators/accelerator.py\u001b[0m in \u001b[0;36mstart_training\u001b[0;34m(self, trainer)\u001b[0m\n\u001b[1;32m     90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     91\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mstart_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m\"pl.Trainer\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 92\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraining_type_plugin\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrainer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     94\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mstart_evaluating\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m\"pl.Trainer\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/plugins/training_type/ddp_spawn.py\u001b[0m in \u001b[0;36mstart_training\u001b[0;34m(self, trainer)\u001b[0m\n\u001b[1;32m    156\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    157\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mstart_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 158\u001b[0;31m         \u001b[0mmp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mspawn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnew_process\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmp_spawn_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    159\u001b[0m         \u001b[0;31m# reset optimizers, since main process is never used for training and thus does not have a valid optim state\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    160\u001b[0m         \u001b[0mtrainer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptimizers\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/torch/multiprocessing/spawn.py\u001b[0m in \u001b[0;36mspawn\u001b[0;34m(fn, args, nprocs, join, daemon, start_method)\u001b[0m\n\u001b[1;32m    228\u001b[0m                ' torch.multiprocessing.start_processes(...)' % start_method)\n\u001b[1;32m    229\u001b[0m         \u001b[0mwarnings\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwarn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 230\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mstart_processes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnprocs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mjoin\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdaemon\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstart_method\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'spawn'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/torch/multiprocessing/spawn.py\u001b[0m in \u001b[0;36mstart_processes\u001b[0;34m(fn, args, nprocs, join, daemon, start_method)\u001b[0m\n\u001b[1;32m    177\u001b[0m             \u001b[0mdaemon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdaemon\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    178\u001b[0m         )\n\u001b[0;32m--> 179\u001b[0;31m         \u001b[0mprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    180\u001b[0m         \u001b[0merror_queues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merror_queue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    181\u001b[0m         \u001b[0mprocesses\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/process.py\u001b[0m in \u001b[0;36mstart\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    119\u001b[0m                \u001b[0;34m'daemonic processes are not allowed to have children'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    120\u001b[0m         \u001b[0m_cleanup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 121\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_popen\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_Popen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    122\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sentinel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_popen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msentinel\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    123\u001b[0m         \u001b[0;31m# Avoid a refcycle if the target function holds an indirect\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/context.py\u001b[0m in \u001b[0;36m_Popen\u001b[0;34m(process_obj)\u001b[0m\n\u001b[1;32m    282\u001b[0m         \u001b[0;32mdef\u001b[0m \u001b[0m_Popen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    283\u001b[0m             \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mpopen_spawn_posix\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPopen\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 284\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mPopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    285\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    286\u001b[0m     \u001b[0;32mclass\u001b[0m \u001b[0mForkServerProcess\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mBaseProcess\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/popen_spawn_posix.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m     30\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     31\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_fds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 32\u001b[0;31m         \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     33\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     34\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mduplicate_for_child\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/popen_fork.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m     17\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     18\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfinalizer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_launch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     20\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     21\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mduplicate_for_child\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/popen_spawn_posix.py\u001b[0m in \u001b[0;36m_launch\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m     60\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msentinel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparent_r\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     61\u001b[0m             \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparent_w\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'wb'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclosefd\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 62\u001b[0;31m                 \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetbuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     63\u001b[0m         \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     64\u001b[0m             \u001b[0mfds_to_close\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+                        "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
+                    ]
+                }
+            ],
+            "source": [
+                "# NBVAL_SKIP\n",
+                "# Train Model\n",
+                "model = GraphNets()\n",
+                "trainer = pl.Trainer(max_epochs=200, gpus=-1, callbacks=[checkpoint_callback])\n",
+                "trainer.fit(model, train_loader, valid_loader)\n",
+                "\n",
+                "# evaluate on the model with the best validation set\n",
+                "best_model = GraphNets.load_from_checkpoint(checkpoint_callback.best_model_path)\n",
+                "out_best_test = trainer.test(best_model, test_loader)[0]"
+            ]
+        }
+    ],
+    "metadata": {
+        "kernelspec": {
+            "display_name": "Python 3 (ipykernel)",
+            "language": "python",
+            "name": "python3"
+        },
+        "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.8.10"
+        },
+        "nbsphinx": {
+            "execute": "never"
+        }
     },
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "ff91e6386f7c422ba50479795794db33",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "  0%|          | 0/891 [00:00<?, ?it/s]"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "URL Error [Errno 110] Connection timed out\n",
-      "274 processing error...\n",
-      "666 processing error...\n",
-      "677 processing error...\n"
-     ]
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "from graphein.protein.config import ProteinGraphConfig\n",
-    "from graphein.protein.edges.distance import add_hydrogen_bond_interactions, add_peptide_bonds, add_k_nn_edges\n",
-    "from graphein.protein.graphs import construct_graph\n",
-    "\n",
-    "from functools import partial\n",
-    "\n",
-    "# Override config with constructors\n",
-    "constructors = {\n",
-    "    \"edge_construction_functions\": [partial(add_k_nn_edges, k=3, long_interaction_threshold=0)],\n",
-    "    #\"edge_construction_functions\": [add_hydrogen_bond_interactions, add_peptide_bonds],\n",
-    "    #\"node_metadata_functions\": [add_dssp_feature]\n",
-    "}\n",
-    "\n",
-    "config = ProteinGraphConfig(**constructors)\n",
-    "print(config.dict())\n",
-    "\n",
-    "# Make graphs\n",
-    "graph_list = []\n",
-    "y_list = []\n",
-    "for idx, pdb in enumerate(tqdm(pdbs)):\n",
-    "    try:\n",
-    "        graph_list.append(\n",
-    "            construct_graph(pdb_code=pdb,\n",
-    "                        config=config\n",
-    "                       )\n",
-    "            )\n",
-    "        y_list.append(y[idx])\n",
-    "    except:\n",
-    "        print(str(idx) + ' processing error...')\n",
-    "        pass"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 44,
-   "id": "eb080ee0-555e-411c-a5e5-8539c97e998f",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "'3e59'"
-      ]
-     },
-     "execution_count": 44,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "pdbs[274]\n",
-    "#pdbs[266]\n",
-    "#pdbs[677]"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "4de24288",
-   "metadata": {},
-   "source": [
-    "## Convert Nx graphs to PyTorch Geometric"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 8,
-   "id": "cd343538",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "Using backend: pytorch\n"
-     ]
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "from graphein.ml.conversion import GraphFormatConvertor\n",
-    "\n",
-    "format_convertor = GraphFormatConvertor('nx', 'pyg', \n",
-    "                                        verbose = 'gnn', \n",
-    "                                        columns = None)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 9,
-   "id": "a0f50771",
-   "metadata": {
-    "tags": []
-   },
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "563bbc190d4944c9af056dce12eddd39",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "  0%|          | 0/888 [00:00<?, ?it/s]"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "pyg_list = [format_convertor(graph) for graph in tqdm(graph_list)]"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 10,
-   "id": "79c6eb2e",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "for idx, g in enumerate(pyg_list):\n",
-    "    g.y = y_list[idx] \n",
-    "    g.coords = torch.FloatTensor(g.coords[0])"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 11,
-   "id": "642b78e3",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Data(coords=[10112, 3], dist_mat=[1], edge_index=[2, 120], name=[1], node_id=[1264], y=1)\n",
-      "Data(coords=[820, 3], dist_mat=[1], edge_index=[2, 1431], name=[1], node_id=[808], y=2)\n",
-      "Data(coords=[668, 3], dist_mat=[1], edge_index=[2, 1166], name=[1], node_id=[666], y=4)\n",
-      "Data(coords=[2720, 3], dist_mat=[1], edge_index=[2, 3], name=[1], node_id=[340], y=5)\n"
-     ]
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "for i in pyg_list:\n",
-    "    if i.coords.shape[0] == len(i.node_id):\n",
-    "        pass\n",
-    "    else:\n",
-    "        print(i)\n",
-    "        pyg_list.remove(i)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "0d07dd30",
-   "metadata": {},
-   "source": [
-    "## Model Configuration"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 32,
-   "id": "e1ab2604",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "config_default = dict(\n",
-    "    n_hid = 8,\n",
-    "    n_out = 8,\n",
-    "    batch_size = 4,\n",
-    "    dropout = 0.5,\n",
-    "    lr = 0.001,\n",
-    "    num_heads = 32,\n",
-    "    num_att_dim = 64,\n",
-    "    model_name = 'GCN'\n",
-    ")\n",
-    "\n",
-    "class Struct:\n",
-    "    def __init__(self, **entries):\n",
-    "        self.__dict__.update(entries)\n",
-    "        \n",
-    "config = Struct(**config_default)\n",
-    "\n",
-    "global model_name\n",
-    "model_name = config.model_name"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "14cec1f0",
-   "metadata": {},
-   "source": [
-    "## Construct DataLoaders"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 33,
-   "id": "1d67359d",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "import numpy as np\n",
-    "np.random.seed(42)\n",
-    "idx_all = np.arange(len(pyg_list))\n",
-    "np.random.shuffle(idx_all)\n",
-    "\n",
-    "train_idx, valid_idx, test_idx = np.split(idx_all, [int(.8*len(pyg_list)), int(.9*len(pyg_list))])\n",
-    "train, valid, test = [pyg_list[i] for i in train_idx], [pyg_list[i] for i in valid_idx], [pyg_list[i] for i in test_idx]\n",
-    "\n",
-    "from torch_geometric.data import DataLoader\n",
-    "train_loader = DataLoader(train, batch_size=config.batch_size, shuffle = True, drop_last = True)\n",
-    "valid_loader = DataLoader(valid, batch_size=32)\n",
-    "test_loader = DataLoader(test, batch_size=32)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 34,
-   "id": "a8d4193f",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "Data(coords=[635, 3], dist_mat=[1], edge_index=[2, 1118], name=[1], node_id=[635], y=1)"
-      ]
-     },
-     "execution_count": 34,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "pyg_list[0]"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "452acd73",
-   "metadata": {},
-   "source": [
-    "## Define Model"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 35,
-   "id": "53bd0370",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "from torch_geometric.nn import GCNConv, GATConv, SAGEConv, global_add_pool\n",
-    "from torch.nn.functional import mse_loss, nll_loss, relu, softmax, cross_entropy\n",
-    "from torch.nn import functional as F\n",
-    "from pytorch_lightning.metrics.functional import accuracy"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 36,
-   "id": "b6728d4f",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "class GraphNets(pl.LightningModule):\n",
-    "    def __init__(self):\n",
-    "        super().__init__()\n",
-    "        \n",
-    "        if model_name == 'GCN':\n",
-    "            self.layer1 = GCNConv(in_channels=3, out_channels=config.n_hid)\n",
-    "            self.layer2 = GCNConv(in_channels=config.n_hid, out_channels=config.n_out)\n",
-    "\n",
-    "        elif model_name == 'GAT':\n",
-    "            self.layer1 = GATConv(3, config.num_att_dim, heads=config.num_heads, dropout=config.dropout)\n",
-    "            self.layer2 = GATConv(config.num_att_dim * config.num_heads, out_channels = config.n_out, heads=1, concat=False,\n",
-    "                                 dropout=config.dropout)\n",
-    "            \n",
-    "        elif model_name == 'GraphSAGE':\n",
-    "            self.layer1 = SAGEConv(3, config.n_hid)\n",
-    "            self.layer2 = SAGEConv(config.n_hid, config.n_out)  \n",
-    "            \n",
-    "        self.decoder = nn.Linear(config.n_out, 7)\n",
-    "        \n",
-    "    def forward(self, g):\n",
-    "        x = g.coords\n",
-    "        x = F.dropout(x, p=config.dropout, training=self.training)\n",
-    "        x = F.elu(self.layer1(x, g.edge_index))\n",
-    "        x = F.dropout(x, p=config.dropout, training=self.training)\n",
-    "        x = self.layer2(x, g.edge_index)\n",
-    "        x = global_add_pool(x, batch=g.batch)\n",
-    "        x = self.decoder(x)\n",
-    "        return softmax(x)\n",
-    "\n",
-    "    def training_step(self, batch, batch_idx):\n",
-    "        x = batch   \n",
-    "        y = x.y\n",
-    "        y_hat = self(x)\n",
-    "        loss = cross_entropy(y_hat, y)\n",
-    "        acc = accuracy(y_hat, y)\n",
-    "\n",
-    "        self.log(\"train_loss\", loss)\n",
-    "        self.log(\"train_acc\", acc)\n",
-    "        return loss\n",
-    "\n",
-    "    def validation_step(self, batch, batch_idx):\n",
-    "        x = batch   \n",
-    "        y = x.y\n",
-    "        y_hat = self(x)\n",
-    "        loss = cross_entropy(y_hat, y)\n",
-    "        acc = accuracy(y_hat, y)\n",
-    "        self.log(\"valid_loss\", loss)\n",
-    "        self.log(\"valid_acc\", acc)\n",
-    "\n",
-    "    def test_step(self, batch, batch_idx):\n",
-    "        x = batch   \n",
-    "        y = x.y\n",
-    "        y_hat = self(x)\n",
-    "        loss = cross_entropy(y_hat, y)\n",
-    "        acc = accuracy(y_hat, y)\n",
-    "\n",
-    "        y_pred_softmax = torch.log_softmax(y_hat, dim = 1)\n",
-    "        y_pred_tags = torch.argmax(y_pred_softmax, dim = 1) \n",
-    "        f1 = f1_score(y.detach().cpu().numpy(), y_pred_tags.detach().cpu().numpy(), average = 'weighted')\n",
-    "\n",
-    "        self.log(\"test_loss\", loss)\n",
-    "        self.log(\"test_acc\", acc)\n",
-    "        self.log(\"test_f1\", f1)\n",
-    "\n",
-    "    def configure_optimizers(self):\n",
-    "        optimizer = torch.optim.Adam(self.parameters(), lr=config.lr)\n",
-    "        return optimizer"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 37,
-   "id": "970baced-e3c0-4a17-b0b9-36f5a5a8045d",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "GraphNets(\n",
-       "  (layer1): GCNConv(3, 8)\n",
-       "  (layer2): GCNConv(8, 8)\n",
-       "  (decoder): Linear(in_features=8, out_features=7, bias=True)\n",
-       ")"
-      ]
-     },
-     "execution_count": 37,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "GraphNets()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 40,
-   "id": "42bc7e82",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "from pytorch_lightning.callbacks import ModelCheckpoint\n",
-    "import os\n",
-    "\n",
-    "file_path = './graphein_model'\n",
-    "if not os.path.exists(file_path):\n",
-    "    os.mkdir(file_path)\n",
-    "\n",
-    "checkpoint_callback = ModelCheckpoint(\n",
-    "    monitor=\"valid_loss\",\n",
-    "    dirpath=file_path,\n",
-    "    filename=\"model-{epoch:02d}-{val_loss:.2f}\",\n",
-    "    save_top_k=1,\n",
-    "    mode=\"min\",\n",
-    ")"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "3e552f8a",
-   "metadata": {},
-   "source": [
-    "## Train!"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 41,
-   "id": "6e14192c",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "GPU available: True, used: True\n",
-      "TPU available: False, using: 0 TPU cores\n",
-      "IPU available: False, using: 0 IPUs\n",
-      "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n",
-      "Traceback (most recent call last):\n",
-      "  File \"<string>\", line 1, in <module>\n",
-      "  File \"/home/atj39/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/spawn.py\", line 116, in spawn_main\n",
-      "    exitcode = _main(fd, parent_sentinel)\n",
-      "  File \"/home/atj39/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/spawn.py\", line 126, in _main\n",
-      "    self = reduction.pickle.load(from_parent)\n",
-      "AttributeError: Can't get attribute 'GraphNets' on <module '__main__' (built-in)>\n"
-     ]
-    },
-    {
-     "ename": "KeyboardInterrupt",
-     "evalue": "",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
-      "\u001b[0;32m/tmp/ipykernel_3426530/3685191286.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGraphNets\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mtrainer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTrainer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmax_epochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m200\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgpus\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcheckpoint_callback\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mtrainer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_loader\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalid_loader\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;31m# evaluate on the model with the best validation set\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, model, train_dataloaders, val_dataloaders, datamodule, train_dataloader)\u001b[0m\n\u001b[1;32m    551\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheckpoint_connector\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresume_start\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    552\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 553\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_run\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    554\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    555\u001b[0m         \u001b[0;32massert\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstopped\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, model)\u001b[0m\n\u001b[1;32m    916\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    917\u001b[0m         \u001b[0;31m# dispatch `start_training` or `start_evaluating` or `start_predicting`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 918\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dispatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    919\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    920\u001b[0m         \u001b[0;31m# plugin will finalized fitting (e.g. ddp_spawn will load trained model)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py\u001b[0m in \u001b[0;36m_dispatch\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    984\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maccelerator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_predicting\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    985\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 986\u001b[0;31m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maccelerator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    987\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    988\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mrun_stage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/accelerators/accelerator.py\u001b[0m in \u001b[0;36mstart_training\u001b[0;34m(self, trainer)\u001b[0m\n\u001b[1;32m     90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     91\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mstart_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m\"pl.Trainer\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 92\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraining_type_plugin\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrainer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     94\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mstart_evaluating\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m\"pl.Trainer\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/pytorch_lightning/plugins/training_type/ddp_spawn.py\u001b[0m in \u001b[0;36mstart_training\u001b[0;34m(self, trainer)\u001b[0m\n\u001b[1;32m    156\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    157\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mstart_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrainer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 158\u001b[0;31m         \u001b[0mmp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mspawn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnew_process\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmp_spawn_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    159\u001b[0m         \u001b[0;31m# reset optimizers, since main process is never used for training and thus does not have a valid optim state\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    160\u001b[0m         \u001b[0mtrainer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptimizers\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/torch/multiprocessing/spawn.py\u001b[0m in \u001b[0;36mspawn\u001b[0;34m(fn, args, nprocs, join, daemon, start_method)\u001b[0m\n\u001b[1;32m    228\u001b[0m                ' torch.multiprocessing.start_processes(...)' % start_method)\n\u001b[1;32m    229\u001b[0m         \u001b[0mwarnings\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwarn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 230\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mstart_processes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnprocs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mjoin\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdaemon\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstart_method\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'spawn'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/site-packages/torch/multiprocessing/spawn.py\u001b[0m in \u001b[0;36mstart_processes\u001b[0;34m(fn, args, nprocs, join, daemon, start_method)\u001b[0m\n\u001b[1;32m    177\u001b[0m             \u001b[0mdaemon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdaemon\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    178\u001b[0m         )\n\u001b[0;32m--> 179\u001b[0;31m         \u001b[0mprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    180\u001b[0m         \u001b[0merror_queues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merror_queue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    181\u001b[0m         \u001b[0mprocesses\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/process.py\u001b[0m in \u001b[0;36mstart\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    119\u001b[0m                \u001b[0;34m'daemonic processes are not allowed to have children'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    120\u001b[0m         \u001b[0m_cleanup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 121\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_popen\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_Popen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    122\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sentinel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_popen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msentinel\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    123\u001b[0m         \u001b[0;31m# Avoid a refcycle if the target function holds an indirect\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/context.py\u001b[0m in \u001b[0;36m_Popen\u001b[0;34m(process_obj)\u001b[0m\n\u001b[1;32m    282\u001b[0m         \u001b[0;32mdef\u001b[0m \u001b[0m_Popen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    283\u001b[0m             \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mpopen_spawn_posix\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPopen\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 284\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mPopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    285\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    286\u001b[0m     \u001b[0;32mclass\u001b[0m \u001b[0mForkServerProcess\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mBaseProcess\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/popen_spawn_posix.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m     30\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     31\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_fds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 32\u001b[0;31m         \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     33\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     34\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mduplicate_for_child\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/popen_fork.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m     17\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     18\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfinalizer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_launch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocess_obj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     20\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     21\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mduplicate_for_child\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/anaconda3/envs/graphein-dev/lib/python3.8/multiprocessing/popen_spawn_posix.py\u001b[0m in \u001b[0;36m_launch\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m     60\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msentinel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparent_r\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     61\u001b[0m             \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparent_w\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'wb'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclosefd\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 62\u001b[0;31m                 \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetbuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     63\u001b[0m         \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     64\u001b[0m             \u001b[0mfds_to_close\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
-     ]
-    }
-   ],
-   "source": [
-    "# NBVAL_SKIP\n",
-    "# Train Model\n",
-    "model = GraphNets()\n",
-    "trainer = pl.Trainer(max_epochs=200, gpus=-1, callbacks=[checkpoint_callback])\n",
-    "trainer.fit(model, train_loader, valid_loader)\n",
-    "\n",
-    "# evaluate on the model with the best validation set\n",
-    "best_model = GraphNets.load_from_checkpoint(checkpoint_callback.best_model_path)\n",
-    "out_best_test = trainer.test(best_model, test_loader)[0]"
-   ]
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
-   "language": "python",
-   "name": "python3"
-  },
-  "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.8.10"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
+    "nbformat": 4,
+    "nbformat_minor": 5
+}
\ No newline at end of file
diff --git a/setup.py b/setup.py
index f4ead667..f21e6121 100644
--- a/setup.py
+++ b/setup.py
@@ -136,7 +136,7 @@ def run(self):
 
 setup(
     name="graphein",
-    version="1.2.0",
+    version="1.2.1",
     # versioneer.get_version(),
     # cmdclass=versioneer.get_cmdclass(),
     description="Protein & Interactomic Graph Construction for Machine Learning",


Test patch:
diff --git a/tests/protein/test_graphs.py b/tests/protein/test_graphs.py
index ba5c7232..447dcd14 100644
--- a/tests/protein/test_graphs.py
+++ b/tests/protein/test_graphs.py
@@ -265,3 +265,26 @@ def test_insertion_handling():
         g.graph["sequence_C"]
     ) + len(g.graph["sequence_D"]) + len(g.graph["sequence_E"]) == len(g)
     assert g.graph["coords"].shape[0] == len(g)
+
+
+def test_edges_do_not_add_nodes_for_chain_subset():
+    new_funcs = {
+        "edge_construction_functions": [
+            add_peptide_bonds,
+            add_hydrogen_bond_interactions,
+            add_disulfide_interactions,
+            add_ionic_interactions,
+            add_aromatic_interactions,
+            add_aromatic_sulphur_interactions,
+            add_cation_pi_interactions,
+        ],
+    }
+    config = ProteinGraphConfig(**new_funcs)
+    g = construct_graph(config=config, pdb_code="2vvi", chain_selection="A")
+    assert len(g) == 217
+    g = construct_graph(config=config, pdb_code="2vvi", chain_selection="B")
+    assert len(g) == 219
+    g = construct_graph(config=config, pdb_code="2vvi", chain_selection="C")
+    assert len(g) == 222
+    g = construct_graph(config=config, pdb_code="2vvi", chain_selection="D")
+    assert len(g) == 219
diff --git a/tests/protein/test_subgraphs.py b/tests/protein/test_subgraphs.py
index 8c177012..b39d3f76 100644
--- a/tests/protein/test_subgraphs.py
+++ b/tests/protein/test_subgraphs.py
@@ -5,6 +5,7 @@
 # Project Website: https://github.com/a-r-j/graphein
 # Code Repository: https://github.com/a-r-j/graphein
 
+import pickle
 from pathlib import Path
 from typing import List
 
@@ -356,5 +357,30 @@ def test_secondary_structure_subgraph():
             assert n in s_g.nodes()
 
 
+def test_successful_pickle():
+    """Tests subgraphs can be successfully pickled and unpickled"""
+    file_path = Path(__file__).parent / "test_data/4hhb.pdb"
+    config = ProteinGraphConfig(
+        graph_metadata_functions=[secondary_structure],
+        dssp_config=DSSPConfig(),
+    )
+    G = construct_graph(pdb_path=str(file_path), config=config)
+    s_g = extract_subgraph_from_residue_types(
+        G,
+        residue_types=["ALA", "SER", "MET"],
+        update_coords=True,
+        filter_dataframe=True,
+        recompute_distmat=True,
+    )
+
+    with open("/tmp/test_graph.p", "wb") as f:
+        pickle.dump(s_g, f)
+
+    with open("/tmp/test_graph.p", "rb") as f:
+        loaded_graph = pickle.load(f)
+
+    assert nx.is_isomorphic(s_g, loaded_graph)
+
+
 if __name__ == "__main__":
     test_extract_subgraph_from_sequence_position()