matteoferla/Fragmenstein

View on GitHub
documentation/notes/troubleshooting_example.md

Summary

Maintainability
Test Coverage
## Troubleshooting example

Say we run:
```python
from fragmenstein import Victor

victor = Victor(hits=[hit1, hit2],
      pdb_block=pdbblock)
victor.combine()
```
And it fails at the some step.

If the error is cryptic, turning on the logging to DEBUG may help.

```python
import logging

Victor.enable_stdout(level=logging.DEBUG)
```

If it fails at the `Monster` step, seeing the steps may help.
Whereas `Victor` has a `modifications` attribute,
this is filled only at the end, when `Monster` finishes.
As a result one has to look at the `modifications` attribute of `Monster` (`Dict[str, Chem.Mol]`) 
or of `Rectifier` (`List[Chem.Mol]`).

```python
from IPython.display import display

for k in victor.monster.modifications:
    print(k)
    mol = Chem.Mol(victor.monster.modifications[k])
    AllChem.Compute2DCoords(mol)
    display(mol)
```

The superscript, nominally the isotope represents the ring size.
Or seeing them in 3D:

```python
from IPython.display import display
import nglview as nv

for k in victor.monster.modifications:
    print(k)
    display(nv.show_rdkit(victor.monster.modifications[k]))
```
Note that there's no way to disable proximity bonding.